shazware.com - ditty ...Deal with it!

intro
download
did
do <=
design
tut_Config
tut_Play
tut_View
tut_Metronome
tut_Record
tut_Edit
tut_Print
tut_SFont
ref_MidiPath
ref_MidiCfg
ref_Ditty
ref_Tinker
ref_DrumTrak
ref_Txt2Trak
ref_SF2Lst
ref_SF2SFont
ref_SFontBank
ref_PsetEdit
ref_EdiSn
Do - The stuff I plan to DO to Ditty...

site - finish links to pianoinfo
       turn whole music_todo.txt => music.html
          list my sheet music (Gordon riffs, etc)
       add a dang money thing too

song db?
   .songlist per user/whatever:
      Artist        (part of filename)
      Year
      Album
      TrackNum
      TrackTitle
      Source        sheetmusicBook / website
                    Composer / Arranger
      Arrangement   Solo (piano only)
                    Lead (main instrument w/ exception of voice)
                    Comp (not main intrument of the band, etc)
      ArrangQuality awesome(pleased)/basic(good)/crappy(but don't toss it)
      PracMode      Learn   currently learning (new song)
                    RepMem  repertoire memorized
                    RepMus  repertoire but still require sheet music
                    ToRec   almost done, need to record it to .mid=>.mp3
                    Done    recorded and let go
                    Quit    don't like it after all
                    DoAgain come back when technique improves (future "Learn")
                    Do      future "Learn"
      LearnStartDate,End      (can be rough like 2008/10/?, list of these?)
      LastPlayDate
      BarsSheet               (w/out rep bars)
      BarsTotal               (including rep bars)
      RecordingFilename/Date  (maybe a list of em)
      CoverArtFilename        (maybe store fn ref in .mid?)
      DifficultyLevel?  TimesPlayed[song]?  TimesPlayed[per bar]?  :o

Ditty
   test - learn mode goes berzerk sometimes w CyndiLauper_TrueColors.mid - WHY??
   lrn@ mode notesoff prob with notes sustaining to the point of ANNOYINGness
      - NotesOff on 1st rcrd key post pause
        ok, but everything shushes (wierd soundin)
      - auto-mute nonLrn/nonRec tracks?
        prob is never hear ANY (accomp) tracks and Lrn notes still drag forever
   saving a learn mode song in prac.songlist
      update songlist w song@yymmdd.mid?
         store .songlist filename?  show in titlebar?
         delete non-1st song@yymmdd.mid
   spoonfeeder:
      red dot not so useful for midis recorded live...
         give some "play" to red/green dots?  lose red dots?
      LrnNote display
         sizing height dynamically?
         seperate window that sizes itself w wise, and h stepping in bars?
      l8r: have learn mode keep track of poorly played bars and suggest starting
         there.  Also, hop to a random bar to get a song down completely solid
   make "live editing" way better/simpler...
      use more than 8 notes of kbd for functions...?
         just edit=on/off and huge list of key=func (customizable how?)
      slider for ctrl_map?  (which dev?)
      pbend2 for sound picking?
      make a time control always avail...!  (maybe just the 4?)
   what's the bzzt during save??
   add RATS markers "now" in practice mode to mark "to work on" areas
   add .chnGrp, .recDev, .recChn to _trk[] ?
   keep DevName for save (so uses . instead of resolved devname)?
   l8r - never record over any existing note ever? (tricky-ish)

Tinker
   make section unwinder button (that copies each sect rep#)
      and section "rewinder" button (uses only 1st section rep#)
   keep tmpo,tsig in clip if avail
   note selecting...  TRANSPOSING SOMEhow
      Right dragging a rect turns enclosed notes to "selected" state
      moveTrack, delete, transpose, etc operate on these selected notes?
      select all/none buttons, etc, etc?
      delete;  movetrack ;  transposeUp;  transposeDown;
      veloScale ,  ??

PSetEdit
   get a list of all the normally responded to controllers for sfont
   rename to SF2somethingOrARather
      put SF2Lst, SF2SFont, SFontBank into it?
________________________________________________________________________________

- lyrc,mark are UNchan'd, same for tmpo/tsig/ksig?
- what about "extra" controls?  (not in cc.txt)  during Song2Mid/Mid2Song

hmmm...
   stv - CtlList - editing
      ui glitches
         when switching from one CtlList to another,
            ctlcmbo's main box doesn't show
         rightmost cell can expand beyond ctl when horiz scrolling
         probs w ins at end leaving an empty nonChk cell - del it?
         when click down in one cell, and let up in another
         how to tab out?  (to next/prev control)
         scrolling :(
   make a SOLID BSrch instead of plain loops...

Tinker
   showing unpaird noteon/offs "specially"...
   draw NPrs events as just lines on top of note bg...?
   printing - draw thin "line up the note starts" lines?
   custctrl makes keys do toolbar buttons, etc?  Bgn,End,etc...
   clipboard notegroup format for copy/pasting
   rats:
      how to edit overlapping markers and other ctrls
         (same time+trak - 2 events)
      tsig editing - what about when we delete drumtrack :/
      don't overlap onto notes on OTHER tracks sharing channel
      printpreview - what if memBmp needs WAY too much mem for machine?
   show durs in e,s,t,etc?  (with artic?  can't?)
   move velOn,velOff,moveTrack to "edit defaults" dialog?
   menus in tinker instead of a kajillion buttons?
   NoteChk:  ("sanitize notes")
      ons w no offs:
         add off for short dur or ending before next on
      extra up (off w no on):
         rare - toss last off?
      dual drums (dup notes on,on,off,off):
         lose 2nd (extra) on,offs
      overlapping notes on tracks sharing chan:
         put on sep chans if avail?
      progch probs:
      1) progch mid note sep'ing tracks on a chan
         - noteon on 1st, noteoff on 2nd:
         display prob, but technically correct
         move off to track w on
      2) [progch nonotes progch] making empty tracks
         move controllers to 2nd track
   calc fingering somehow?  user picks range of time for a hand pos
      "Right Now" a good test.
   time scaling:
      record midi with tempo sways as straight time (only way ya can)
      have user tap in beats and use these to
         make tempo changes and adjust note start+durs
   find some better distinct colors for byTrackNo/SoundNo coloring...
   kill - clean up to do only one EvDel
   printing
      drum notes need thicker velocity color (like nondrum notes)
      controllers lines are probably WAY too thin
      print preview???  or just a list of "pg 1.. - # cols" text listing?

Ditty
   EvRcrd
      play with changing map via MidiCfg before this...
         do CCMap editctrl
            CCMap      ;Top,<1,1>,Bot  (show it where?)
      for bar#1 evs - config in dev/cc.txt?
      valJ bender - "joggles" pos in Time, SndList?
      do ModStr in ccmap - NoRec,ValMax,ValMap,Dev,Chn,Dup?,Time?
      "compile" cci+ccmap? - in=rawcc, out=songcc/./cco + mod
      ...we NEVER want 2 devs' (keys or matching octrls) routed to same track
      loopOn,loopBgn,loopEnd while rec'ing (default: off,0,maxt)
      upon overlapping notes, split em into 2 preserving all on/off velos
      edit device/channel and changroup(+ vs .) and ins/del/scoot trk?
         or just in Tinker?
   strip soundname quietly if unknown to dev in DrumMap load?
   key editing - laid out in groups like edit ctrl
      for easy bar hoppin during practice instead of mouse/midikeys hassle
   songlist editing
      find freezes song playing and UI - gotta spin it off :/
      randomize / sort
      transition column l8r
   section editing
      trunc markers to bar boundary (on load?  in tinker?)
      cust CtlCmbo like songlist;  show 'section => nxtSection@time'?
      add filtering (mute/noteMod/veloMod per track - in .song fmt)
         dblclick a section to pop track filter edit (mute/velAdj/noteAdj/etc)
   transitions between songs
      pause after song
      wait x bars after song
      make a transition song composer thingy that makes a song/drumfill/etc
         with tempo transition from old song's tempo to new song's
   use MCC's init in MidiO.GMInit ?  or in Ditty?
   use mouse (joystick too?) as extra midiin controller?
   paged lyrics (toggled on/off over tracks display) w custom ctrl?
      and chord symbols?
      store PAGE sync commands in .trak?
   GS,XG devices...  wierd sysex CCs (GSMidi, XGMidi, combos or each?)

SF2SFont
   use Str so long dirs are ok and can fall back to GM easier

Txt2Trak
   riffs within same .txt file  (note subroutines?  syntax?)
      put stuff btw #riff  and #riffend in temp file and
         map  to tmpFN
      del temp fns at end
   hmm:
      how to do double gracenotes ??
      for crescendo/decr:  ctrl curves (from,to,dur,curvetype)
      chord/pattern syntax ?? - c+43 c+34 c+33 c+44 (maj, min, dim, aug)
         worth it??
      parallel tracks in same file starting in col40
         allowing blank lines n such??
      for vocal tracks, some kinda verse2 syntax for
         alternate tweaks to melody
         (like the teeny notes - on the 2nd rep, etc)
      notenotes and lyrics and markers in .txt to go to .song somehow ?
      new app - Tab2Song ??  Not really possible due to no timing info ?

DrumTrak
   kill off old DrumTrak.mid files in compose during save/send to ditty
   do multiple tracks??  like a bass track, etc, etc
   REPLACE drumtrack in ditty's current song (preserving all the other traks)

MidiCfg
   New button should keep existing config lines and only add/del

Mid2Song
   rename a song to .bad if can't be parsed.
   when programchange splits tracks sharing a channel
      can often move a noteoff that ideally is logically assoc'd w 1st track
      to 2nd track making "halfnotes"
      - need to doc this until fix.
      ideal fix would be make mid2song pair up noteon/offs into logical notes
      leaving any cruft where?  song file comments?
                   ulong time, dur;  ubyte note, velD, velU, fing;
         back to   ulong time;       ubyte ctrl, valu, val2, x;
         leaving NPrs events wherever :/
         similar to what tinker's NoteChk does...
            REREAD mididev's messages and tinker's draw code...
   make use of SB w lyrc,mark,etc,etc
   if < 16 chans used and have tracks sharing chan w progch, ungroup from chan

EdiSn
   keys play wave at preset piano note frqs
   button to move to next "post quiet" spot
   when going to mag=non0, keep pos of cursor not just leftmost spot on screen
   cache the full wav samples at current mag?  (depends on W)
   loop point view (end of loop on left half, begin loop on right half)
   # times to loop - configurable?
   fx processing, FFT, yadda yadda yadda, blah, blah, blah

SETUP
   make explorer rmb menu stuff optional

Updated: ; stephen.hazel over at gmail.com