# TODO

    OBOY! Theres a lot to do still. The list just gets longer and longer.
    Lately, I haven't even bothered writing down all the ideas I get. Now I
    just want to use this program, and remove bugs. This have been quite some
    work and I'm pretty tired now. If theres any programmer out there
    that wants to work on this program and is able to read my code, help is
    really welcome.

    The code needs a major clean-up, and I even think a gradually transform
    to C++ could be a very good idea.

    --------------------------------------

    Urgent:

    FIXED (hacks replaced with hopefully better hacks)-That GetReallineY1 bug strikes again. When odd font height and scrolling
     to the top from last realline.

    DONE (not very good, though) -Instrument needs to handle some saving/loading.

    --------------------------------------

    Most important list in short:

    INWORK-Instrument config window.
    -Proper midi-input.
    -Get rid of the RAD: usage.
    DONE-Fix up loading/saving to support the new features in 0.29
    DONE-Continue song.
    DONE-Delete Block.
    -Delete Patch.

    --------------------------------------

    Most important list:

    DONE-When editing fx, name of fx must come up too.

    DONE-Window-title shows current playlist too. And another key-combination
     than ctrl+(a/f) switch to next/previous block in playlist.

    DONE-Polyphonic aftertouch.

    DONE-Midi fx clean-up.

    DONE-Patch Properties have sliders for:
     -chorus
     -reverb
     -attack
     -release
     -cutoff
     -reconance
     -Var level.
     -Modulation

    -Block-selector. (asl-requester)

    CANCELLED -Undo track-width stuff.

    CANCELLED -Think it could be a bit too risky saving when out of memory. Must
     at least do a lot of clean-up first.

    DONE-Undo/Redo for trackvolume and trackpan.

    DONE-load/save for trackvolume and trackpan.

    SEEMS TO WORK NOW-Replace those asl-things with new procedures. Something isn't working
     properly.

    FIXED-Bug. Strange things happens with the tracknames when undoing.

    FIXED-Play song suddenly only plays the first block, and it does not
     change block to the first one either.

    FIXED (not the quick solution, but I'm not quite trusting the solution used) -Error when fontheight is even number. (I see a quick solution coming up. :)

    NO IT SHOULDNT-The Tracker_Windows probably needs a semaphore.

    FIXED. No crash anymore! Ptask2Mtask.c may have syncronization problems with the player.
     Could be the reason for crashing.

    FIXED -PEQ_calc.c suffer from overflow problems! (try to find some 64 bit functions
     on aminet)

    DONE-Like it is now, it just make midi go at full capasity.
     I guess it could be smart to someway lower the traffic a bit.

    DONE-Strongly suspect that the camd-buffer becomes full pretty quick
     with all the cc's, pitching, and such. Have to do some check.

     Guess thats whats happening, yes. The program does not crash
     when I don't send to out when treating lot of effects really
     fast. But unfortunately, doing the GetMidiErr-check doesnt
     work!

     It could be:
     -Driver, TPP driver may contain bugs...

    BOOL FOR EDIT DONE-One bool for edit and one for recording.

    DONE-Must come sound when adding notes.

    FIXED -Bug. When pressing del in the first temponode-realline.

    INWORK-Make a thread-save function for midi/etc. input.

    DONE (insert) -Track insert/delete

    FIXED (Right shift used for notes instead) -A crash in the key-bindings. Ctrl can ofcourse not be used for
     other than notes. Now, it is used for lots of block-stuff. Change
     to left shift instead.

    FIXED (quick, and very good, solution)-A very serious bug when pressing undo. Often, the gfx-data is
     not there when selecting another block than the current.
     Don't know how I will do it yet. (ofcourse, there are various
     solutions to the problem. The best is to make a general
     up-drawing function, but I'm not shure if I bother doing that
     yet)

    INWORK-Fix editing while playing

    DONE-Play song

    DONE (I hope)-Fix pitch playing bug

    DONE-INWORK-Loading/saving

    DONE -Continue play block/song

    DONE (cut cancelled)-INWORK-cut/paste/copy block

    DONE-cut/paste/copy track

    DONE-name of the tracks is patch name for the track (for now, maybe for good)

    DONE-instrument config window

    INWORK-midi editing input.

    DONE-transpose range/track

    DONE-transpose block

    DONE-keyboard note inserting stuff

    DONE-blockselect window show current block

    DONE - DELAYED (graphical zoom implemented now, so its not that important)-font select for tracker-window.

    DONE - HALF DONE-Error-messages need to come in a new window. But it must also be
     printed to stderr, so that it doesn't have to wait for the user
     to press 'OK' (or something) for each error that appears.

    DONE-Various tempo-stuff.

    CANCELLED -Quitting stuff. (Note, when a sudden quit has to be done, just start up the program again with the temp-name as argument)

    DONE-Try to make the program pass parameters via registers. (remove all clib/*s with proto/*s and compile up gc with parm=both)

    SEEMS TO BE DONE-When changing number of visible lines, make shure that all tob-realline, bot-realline and num_visiblelines parameters are set correct.
     Do this when resizeing window and changing fontheight, and also when changing current realline.

    -Do some check that PlaceFirstPos really is firstpos, sometimes.

    -------------------------------

    Notes for myself:

    -Possible to have the patch properties window at the workbench-screen.

    -Double click a playlist-element, gives a requester questioning how many times.

    -Playlist listview shows length of element.

    -Playlist window title shows total playing time.

    DONE-Function to minimize all wtracks.

    DONE-Use the two-charachter notes. Pretty easy to implement.

    CANCELLED, didn't work-Have one font for header and one for editing.

    DONE-Easy Swapping of tracks. (Left alt + s)

    -Function to select what velocities are supposed to do. (instrument plug-in does this, maybe, no.)

    DONE-Fix up the gc_alloc_atomic mess in trackreallineelemts.c.
     gc_alloc_atomic_uncollectable is now compiled into gc.lib.

    CANCELLED -Not very good that keys like 'a','f' and '1' does anything. (accidential
     pressing of such keys is quite common).

    -Bug. Backspace on a line where a note is ending, causes the note
     to end one line earier.

    -While changing velocity/etc., play something so its easier to tune.

    FIXED-WBlock name doesn't have to be saved/loaded.

    DONE-Quantitize for input. A global changeable variable showed somewhere
     in the tracker-window. 0 is not quantitize, 0.5 is half line, 1 is line,
     2 is each second line, etc.

    CANCELLED-The numeric pad can be used to place placements. While pressing right shift
     + 1, you place it to the first line. left alt moves it down. While pressing
     2 instead, you place it to the next/prev half position, 3 the next/prev 1/3
     position, and so on.

    DONE-Delete block

    -Delete patch

    FIXED-A very ugly bug when notes and other things are placed on a line
     that is local zoomed, and when adding lines above it. There is
     nothing wrong with the notes placing, but something is wrong
     in the gfx-update routines somewhere or something.

    CANCELLED-When the TRE needs garbage-collecting, or it is time
     to quit and save, those functions should be put in os-spesific
     functions that can signal its own task.

    DONE, EXCEPT FOR DOING BLOCK INSTEAD OF SONG -Main-tempo function. (in the player.c file, the function multiplies
     time with a variable (counter/dividor type), easy as that. Must also check that time
     isn't the same as the last time.)

    -Call the legalize-functions after a file has been loaded, to eleminate
     some possible errors if the temporary save-file function was called in the
     middle of handling an event. More such legalize-functions should be
     made also, like number of wtracks in all wblocks matches number of
     tracks in the blocks, number of reallines, etc. etc.

    CANCELLED -When no more memory from GC, and the out-of-memory buffer is empty, use
     malloc() and after that again, AllocMem, just to be even more shure that
     the program doesn't have to quit and save in the middle of
     handling an event.
     VERY IMPORTANT! When the program has started using malloc and/or
     AllocMem, it must not use any of GC's memory-allocation functions anymore.
     (there might be a function to turn off gc's garbage-collecting, though)

    CANCELLED -Do also fopen the temporary save-file when the
     program starts, to be shure that fopen doesn't fail when its urgent
     important and necesarry to have it open. Infact, the program could
     refuse to start if fopen-ing of the temporary save-file fails.

    DONE-Legalize functions for ao. velocities,temponodes and fxnodelines.
     Remove fxs with only one fxnodeline, remove velocities
     that points to the start of the note, equal positioned
     fxnodelines and velocities, etc. etc.
     Like it is now, there is potensial for crashes. (not big chance, but
     the program is not ment to handle such cases, so everything could
     theoretical happen).

    PERHAPS -Gliding scroll.

    DONE -Functions for black boxes. (the boxes are very small now)

    ISN'T NEEDED (EHEM)-Graphic refresh function.

    DONE -Menues, telling what short-cut to be used and maybe some online-help.
     Include in parent-program.

    CANCELLED -Keep track of max number of tracks. (pretty important (no, it isn't)).

    DONE-Insert lines.

    DONE-Zoom in/out.

    DONE -Up/Down octaves.

    DONE -Edit on/off.

    DONE -c#3 and such notes.

    INWORK-Function to set a note/etc. to start of line/half line/etc.

    -Bug in PEQvelocities.c: When two nodes in a row has the same velocity,
     it sends out to of the same. (not very important)

    DONE-Make a new PlaceSetFirstPos function that returns a place set to first.

    FIXED -Bug in the player_calc file. (cant use 14 bits numbers for x)

    -RangePasting doesn't scale velocity to fit the new tracks instruments maxvel.
     (don't bother until instrument plug-in system is implemented)

    -FX-range is copied, but never pasted. Perhaps they shouldn't be copied either...
     (something has to be done, thats for shure).

    EHM -When pressing a qualifier-key, a window showing the current keybinding-
     alternatives could show up.

    PROBABLY NOT NECESARRY -Make an allocation function that can use GC even when not called from
     the main-task. (must check that it isn't called from the main-task allready
     to prevent dead-lock)

    -As an option: Show time for each realline.

    -Independent fonts for each wblock.

    FIXED-When not on the first track and update (f.ex ctrl+q), the temponode-track
     dissapears. But it doesn't seem to do anything else though, so its
     probably not an important bug.

HTML Conversion by AG2HTML.pl V2.941126c, perl 5.00404 & witbrock@cs.cmu.edu