FIXMES:
- fix forcing unique names for children of a project 
- fix glue gc assertion after sfi_glue_describe_proc("")
- change default zoom factor in sample view
- add Solo propety to tracks
- add frequency splitter/multiplier (plus cent-wise detune?)
- add frequency output, offering bpm, 1/1 1/4 1/3 notes frequencies
- fix BseAmplifier: defaults: gain=0, exponential-control=false
- add sfisclock.h to sfi.h
- <mg> quick rfe based on 0.5.3: implement multiple selection in the wave loader file selector and have an add button that does not close the dialog
- add demo song
- add Reset menu item to BseSource menu
- check whether */icons/Makefile.icons is included in dist tarball
- check whether plugins/Makefile.plugins is included in dist tarball
- fixup filemenu/dialog for WAVE recording
- fix undo for: BseDataPocket
- fix initial_granule in gslvorbis-cutter.c wrg page flushing
- rename gsl_strerror()
- fix 64bit v_int usage of GScanner in BSE?
- get rid of bse_procedure_execvl
- get rid of super->mod_time
- add BEAST_SAMPLE_DIRS, describe env variables in man page
- rename gslwave files appropriately
- don't always rebuild lib-list [Rebuild]-button
- nuke BSE file crawling functions
- fix API for file matching in SFI
- fix name of BSE_SNET_FLAG_USER_SYNTH
- fix BST_OP_PROJECT_SAVE
- add new test song containing a wave track
- implement (GUI for) locked properties
- register category IDs via ID mechanism
- register drivers with categories
- fix gsl wave osc
- install bsw/* into bse/.
- nuke SFI memblocks, malloc() is good enough
- GslModuleClass.free should be renamed free_user_data
- fix engine deinitialization warning in bseserver.c
- default saving (SFI_PARAM_SKIP_DEFAULT)
- match enum names on word boundaries only
- master tune slider in preferences (kammer ton)
- bsemididevice-oss throws warnings when compiled without midi support
- MidiEvent (serialization)
- make bst_catalog_get_action() always return an action, so callers don't need to check
- gxk_toolbar_append_stock() and bst_radio_tools_add_stock_tool() need context help id
- create modules via category identifier, not type name
- add IDs to part links in tracks
- allow .bse files to start out with #bsesh ?
- update /Help index to cover new docs
- insensitive gmasks should keep xframes sensitive for tooltips and rackeditor
- registering the same script function twice triggers GType assertion
- fix procbrowser
- fix bseplugin.c:bse_plugin_use():need_reinit
- fix uses of gsl_engine_tick_stamp_from_systime() in bstwaveeditor.c
- handle non-validated sequences and records in generation code (things
  can be demarshalled in non-validated form after incompatible changes)
- cleanup helper/util code in sfitype.h
- choice type should have validation function
- does BseMidiIController need a MIDI channel property?
- song->master volume doesn't affect anything
- fix and canonify decibell naming everywhere
- need volume properties per track
- pressing browsing hotkeys in release-notes dialog does stuff
- don't generate .markup files for NEWS and gsl-mplan.txt
- sample chunk display should show note names not only midi notes
- support [-- Raw --- (big/little) (c=2) (mix=44100) (8/12/16/32) ---] box in wave loader dialog
- RackEditor covers are broken for rack-items close to right table boundary
- delay class destruction and plugin unloading through async handlers (slight timeout)
- fix the word "tact" vs. measure
- need tact number entry widget
- object clippboard
- fade in/out of samples (sample editor)
- wave editor: provide transpose spinner for wave preview
- fix BseSong::denominator SpinButton arrows not working
* eliminate everything that fgrep -i fixme/hack reveals

TODO:
- implament humanizer scheme script that offsets notes by a few random ticks
- add text about MIDI realtime synthesis via external MIDI devices to beast overview paper

DOCS:
- fix umlauts in utf8 texi files [Alper]
- add QuickStart section on wave selection
- add QuickStart section on postprocessing effects
- make beast recognize and view .markup files from the command line
- add QuickStart section on piano roll usage, esp. copy+pasting
- implement Playback facility in doc browser for .bse file links
- try implementing some kind of table layout for tsmview [timj]
- add QuickStart-Samples docs once we support sample editing [timj]
- turn off word-wrapping for normal files (e.g. /etc/profile) in
  tsmview. then, gsl-mplan.txt and NEWS don't need anymore markup. [timj]
- report mising underline to havoc, alper has a tsmview example in
  Re: uref macro, document font Date: Thu, 5 Dec 2002 00:23:38 +0200
- nroff files need another build step to get final page numbers [alper]
- the FAQ entry 1.13 has an anchor of #node-2-13-0-0 instead of #node-1-13-0-0
  due to unnumbered sections being counted as well. unnumbered sections should
  be counted seperately (e.g. as #node-u1-0-0-0). [alper]

PianoRoll:
- implement HFlip selection script
- play notes when inserted into piano roll
- popdown piano roll when parts are removed
- fix piano rolldialog wrg GDK_Escape (ala trackroll)
- cleanup piano tick bar
- portamento-to-note in piano roll? probably need special effects
- add to piano roll dialog:
  part-link properties:
  - loop-count
  - length (tact-entry)
  - part coment
  this fixes tact-kind queries for piano roll editing
  and song position pointer placement
- hotkey in piano roll to replay project
- hscrollbar resizable (like cubase) or last-tick + 1 tact
- ctrl+move should copy (DND style modifier)
- tooltip follows mouse and shows current note/tact
- hotkey fuer play song
- play notes upon insert (click on piano roll window)
- two notes from 0..15 and 16..32 look like one
- ctrl/shift modifiers for selection
- fix hscrollbar  (BsePart end position implementation)
- select loop for playback during editing

Snet Router:
- ctrl+move should clone objects (DND style modifier) 
- support selections for group moves
- add property editor dialog which contains intersection of properties from selected objects
- middle mouse button on canvas background should scroll

TrackView:
- resizable scrollbar
- context menu with delete, move, insert (double click inserts?)

SClock:
- incremental sort for median
- calc non-linear slope in one go
- new clock type that switches to linear once >QUEUE_LENGTH

MEETING-RESULTS:
- piano and track roll scrolling implemented with secondary scrollbar
- piano roll dialog gains partlink property editor
- item links: (where (link 3 "TrackLink::LinkTrack::Cool"))
              (where (3 "tree:sopidgsdf:sdggsdf"))
              (where (link 3 "tree::sopidgsdf::sdggsdf"))
- prop flag: SFI_PARAM_SKIP_DEFAULT

Random:
- object tree backbone/trunk/tribe type for project, server and workbench
- item_get_toplevel() function for toplevel parent quries
- proxies get exported: if toplevel->use_count>0
- backbones exist only if they have a use_count
- forcefull alive keeping of objects if they have a use_count
- how export proxies of parents that don't have a use_count and are no backbones?
- emulate ref_count+::destroy semantics with use_count+::release? ala:
  - use_count prevents ::release emission
  - ::release on containers removes children
- implement remote use-count collection
- complete and intergrate piano-script
* move mix_freq and recording_freq into datahandle
* fix reversed data handle wrg n_channels
: propagate mtime changes through cascaded data handles (e.g. for dcache)
: gsldatacache.c: nuke blocks upon reopen if mtime changed
: clone handle caller must be fetched from stack
                            
General BSE:
- object tree backbone/trunk/tribe type for project, server and workbench (treeroot storageroot)
- item_get_toplevel() function for toplevel parent queries
- level-o-meter visualizer at links (adjustable?)
  needs linear (red >1) and logarithmic display
- frequency shifter/multiplier (*2 etc.)
- fix fine-tune settings (from gsl)
- replace gsl_signal_exp2() with gsl_approx_exp2() and audio test result
- provide proper dB functions in GSL
- adjust stepping and type for all percentage settings
- alive keeping for waves which are removed, but whose index is in use?
- loading (restore) may only work when not playing (to keep consistency
  and avoid lock contentions during playback)
- during playback the instrument set needs to be fixed on a song  
- BSE_SOURCE_GET_CLASS (source)->remove_input() add GslTrans* so clear_input removes really in batches
- add pre-amplification (0..1) to freeverb for clip prevention
- fix scanner error messages for deferred channel resolution to include the *correct* line number
- fix update_suspension_state() recursion for ordinary cycles
- replace Balance settings with 3d room position?
- BseSubInstrument contains pixel artefact
BseWaveChunk:
  if (pos > wchunk->tail.end)                                   /* outside wave boundaries */
    {
      iter->lbound = 0;
      iter->rel_pos = wchunk->n_pad_values;
      iter->ubound = iter->rel_pos + MIN (STATIC_ZERO_SIZE - 2 * wchunk->n_pad_values, pos - wchunk->tail.end);
      if (PRINT_DEBUG_INFO)
        g_print ("PHASE_UNDEF, post-tail %ld %ld %ld\n", iter->lbound, iter->rel_pos, iter->ubound);
      return PHASE_UNDEF (wchunk);
    }
  the "pos - wchunk->tail.end" is wrong for direction=+1, should be checked only for direction=-1 and
  then affect lbound
* wavechunk, fill-block:
  wpos.loop_count = loop_count;
  dnode = gsl_data_cache_ref_node (wchunk->dcache, 0, TRUE);
  s/0/wpos.pos/ or offset
- notifier wakeup is disabled in bsemidireceiver.c
  ('cause gsl_thread_main needs to be replaced by bse_main_thred() or somesuch)

GSL:
* sample loader currently hard codes 440.0 for osc_freq
  Person        S T
- [stw]         2 9 LP -> LP transforms or zero/poles
- [stw]         1 8 3-stage joining FFT code
- [stw]         4   /usr/share/doc/sfftw-dev/README.hacks
- [stw]         1 7 FFT L-case optimiaztions
- [stw]         5 1 .PAT loader (move)
- [stw/timj]      9 port plugins listed in plugins/Makefile.am:UNPORTED
- [stw/timj]    6 3 1) OscTableEntry sizes (wave_table_size ())
- [stw/timj]    7 3 2) development of gsl_osc_table_create() frequencies
- [stw/timj]    4 4 3) PWM scaling
- [stw/timj]    6 6 Filter boundary conditions?
                    Also, need 2stage filters with way smaller errors
                    Filter: Oppenheim Schaefer page.441 2stage filters implementation
                        (2stage pair finding by single (zero, pole) pair plus
                        conj. complex pair)
- [timj]        9   Buffered data handles for coarse seek
- [timj]        8   WaveOsc: prop for stereo channel
- [timj]        2 9 API for lp/hp/bp/bs generation from array of roots and poles
                    (requires zero and poles with ->im != 0 to occour in
                    conjugated complex pairs)
- [timj]        6   in API and docs, s/roots/zeros/
- [timj]        4   gsltests: change freq input, so that [0..1] => [0..pi]
- [timj]        5   gsltest: swap epsilon and steepness params for t2* filters
- [timj]        7 6 Async DCache read-ahead thread creation
- [stw/timj]    6 5 filter evaluate function (to draw graph)

GUI features:
- entry focus watcher: for property editing entries, do:
  ::focus_in   - set changed_flag=0
  ::changed    - set changed_flag=1
  _apply_value - set changed_flag=0
  ::focus_out  - only re-apply value if changed_flag!=0
- XFrames should highlight like buttons in EDIT mode?
- Module Menu: add EDIT
- part editor needs play position
- track editor needs play position
- Modul BseTranspose, inputs: frequency, outputs: frequency, property: semitones
- part-view: double click on list items should fire up editor
- BstToolbar, drop-down selections work only after button release
- support GUI info about what PCM device is opened r/w and about midi devices (some have just PCM)
- fix data cache seeks to skip the -64 byte offset at block boundaries

Effects:
* BLIT, band-limited impulse train oscillator
- device monitor latency setting should be persistent in .bserc
- implement filters from http://www.harmony-central.com/Computer/Programming/Audio-EQ-Cookbook.txt
  (main source for http://zynaddsubfx.sourceforge.net)

sfidl:
  fixes:
  - support N/A choice values, currently hardcoded for BseErrorType
  - syntax for neutral values in choices
  - allow enum prototypes?
  extensions:
  - need support for real enums in bserecords.sfidl
  - choices need support for icons per value
  - choices need support for tooltips per value
  - signals should be specified in idl files (and have to be documentable)
  - procedure skeletons should be specified in idl files
  parsing:
    - plural generator
  code generation:
    - namespace substitution that works for both, C and C++
    - restructure name generation to example-based output:
      foo-bar, foo_bar, fooBar, FOO_BAR, FooBar
  C language binding:
    - review ParamSpec/Record primitive types
    - new enum syntax for value; nick
      YES,
      YES = 1,
      YES = "Yes",
      YES = (1, "Yes"),
      YES = Neutral,
      YES = (Neutral, "Yes"),
  Qt language binding:
    - everything

LEGAL:
- email RMS about plugins covered by patents

vim:set ts=8 sts=2 sw=2:
