20070707:
- Lots of new tools, select options, edit functions. Basically, it is full-fledged now
  20070b2B3 BUGFIXES:
   -fixed the BB_SeedRand happening with same numbers every BB_InitVoices
  20070b2B3 BUGFIXES:
   -made engine more efficient
   -implemented thread-safety booleans BB_PauseFlag and BB_InCriticalLoopFlag to avoid "data-nulled" segfaults 
  20070b2B2 BUGFIXES:
   -found a simple but bad bug in SG_ConvertYToData_SelectedPoints that was making balances below middle line diminish with changes in volume graph.
   -discovered and fixed a massive memory leak in BB (wasn't cleaning voices before init'ing because voicecount was zero'd before cleaning)
   -changed BB's find-current-datapoint routine to remember last known one (large DP counts would slow it down to a crawl). Unfortunately, this introduced a ton on new bugs, but was necessary
  
20070620:
- implemented Undo/Redo (only goes back one step)
- implemented basic handling Voice Description strings

TODO:
- Algorithms under Tools/Select/Edit menu:
  - [Tools] Scale schedule duration to an exact time
  - [Tools] Y-axis "Smooth" selected DPs 
  - [Tools] Invert Voice
  - [Tools] Select by Duration
  - [Edit] Paste to end
  - [Select] All points below given duration
- In opening files, don't let discrepancy between <totalentrycount> and real total entry count wreck the read (easy, just work to read twice)
- In the main_VoicePropertiesDialog, give some info about the voice (number of DPs, etc.)
- In "add random duration" it can only make schedules longer, because it doesn't subtract from point before; lousy feature, change
- In "add random Y" it bottoms out on the bottom because it can't go below zero; might want to use some sort of algo

BUGS:

Indentation:
-nbad -bap -nbc -bl -bli0 -bls -ncdb -nce -cp1 -cs -di1 -ndj -nfc1 -nfca -hnl -i1 -ip0 -lp -pcs -nprs -psl -saf -sai -saw -nsc -nsob -nut -npsl -nbbo

