To-Do Items
Chris Ahlstrom
2016-12-03 to 2017-05-05

Debian packaging:

    *   Need a Sequencer64-debian project to hold packages for convenience.
    -   Update documentation for the build processes.

Rtmidi implementation issues to work out:

    -   Support for passing along the BPM and PPQN
        -   At startup time
        -   When changed in the GUI
    -   Add Windows implementation and build files.
    -   Remove PortMidi implementation after Windows implementation.
    -   Make the STRIP_MUTES option permanent.

Puzzles:

    -   The Shift Key processing of Seq64 is different from Seq24.  For
        example, implementing Mod Replace with "{" (Shift-[) in Seq24
        basically works, but in Seq64 it unmutes all other patterns!
        Using a non-shift character seems to work in both, though in Seq64 the
        repeat-key rate seems to show up as an mildly annoying jitter.
    -   Toggle JACK keys does nothing.
    -   Need to disable ALSA button on playback as well, and document it
        in sequencer64-doc.
    -   No song, press Space to start.  The buttons disable.  Press space
        again, and the buttons enable, though app is still playing (the pill
        is moving.).

Tests:

    -   Test the assertion that queuing also works for "groups".
    -   Test how seq24 handles screen-sets and playback; does it restrict
        playing to the current screen-set only?

Active GitHub Issues:

 *  Actually, some of these are fixed, need to update them.

    1 rhetr : nsm support

    2 TDeagan : Install-recursive and .seq24rc equivalent

    4 TDeagan : Would like unique set of mute groups per screen (1024 instead
                of 32)

    14 ssj71 : [feature request] Plugin version

    16 F0rth : [feature request] script language

    Just thought I'd pop in here to say I'd rather all sequencer64's features
    be exposed via OSC such that the system could be scripted from any
    language.

    Just thought I'd pop in here to say I'd rather all sequencer64's features
    be exposed via OSC such that the system could be scripted from any
    language.

    FYI ZynAddSubFX switched to a decoupled interface which uses OSC to
    control everything in 2.5.x. Maybe you can get some useful info from
    their code or contact them for any tips.

    27 teamblubee : [Question] OSS support and other things

    34 smondet : [feature request] Tempo Track?

    36 y1ds : stop playback and jack transport

    38 AndrewPy : Small quirks in event editor

    41 AndrewPy : Sometimes "play cursor" shows wrong position in main window

 *  45 simonvanderveldt : JACK MIDI support

    48 ahlstromcj : JACK transport as non-Master does not work with seq32 JACK
                    support not built in.

    49 simonvanderveldt : Drop LASH support?

        I doubt there are a lot of people of people left using liblash
        though, since LADISH does more, all GUI front-ends switched to
        LADISH and the command-line `ladish_control` offers a lot more options
        than `lash_control` ever did.                                                          
        I do not think untouched  code in itself is an issue, but if it relies
        on external libraries that get replaced it does become a problem).         
        I just built the `fixups` branch and tried it, the LASH stuff works
        fine now :) There's only one thing standing out: sequencer64 doesn't
        show the filename in the title bar when used in a LASH session. This
        does not happen when using sequencer64 normally/within a LADISH
        session.

        P.S. If you reference an issue in a commit message using the `#`
        notation (like #49) GitHub will make it a link when browsing the
        commits and also add a link to that commit in the referenced issue.

    50 muranyia : occasional segfault or ui freeze when changing MIDI Bus

    51 muranyia : Double clicking track vs hi-freq mute-unmute clicking

    52 simonvanderveldt : No cursor in sequence name field

 *  53 simonvanderveldt : pattern midi control controlling wrong pattern/not
                          working for some patterns

    54 F0rth : [feature request] recording live sessions

    What I envisionned was a record button next to the play and stop buttons
    in the main window. In live mode, when the record button is armed it
    behaves as you said "replace or add to the triggers shown in the
    Performance/Song Editor".            

 *  55 muranyia : bootstrap mentions 'enable-seq43jack'

    56 muranyia : [feature request] New midi control mod params: Rec Arm, Solo

    Just a quick try with wip and MIDI pause:

    MIDI pause works fine on start                                              

    There seems to be a state mismatch between a pattern being black and the
    "Sequence dumps data to MIDI bus". Turning on/off it in the editor window
    turns it on/off in the main window, but turning on/off in the main window
    doesn't turn it on/off in the editor window. Not actually sure if that's
    new though,...

    (
        This occurs in seq24 as well. It is NOW FIXED in seqedit.
    )
    
    ...more paying attention to figure out what causes the following.
    Clicking "incoming midi passes through" and the pause midi control stops
    doing anything. Unclicking it and the app stays unresponsive to midi
    pause.

    (
        Checked usage of sequence::get_thru()...  I ended up enabled
        the Stazed Seq32 fixes for thru/record handling in seqedit.

        The enabling of MIDI pass-thru still blocks MIDI control.
        But disabling it now brings MIDI control back.  Still need to
        see if why we do not handle MIDI control when dumping.
        It looks like we could do both!  WILL TRY THIS EXPERIMENT, but only
        if it makes sense to users.
    )

    Click "record incoming midi data" and pressing midi pause (or any other
    MIDI key/knob/fader) advances the pattern by one note, with keys adding a
    note but CC buttons/pots/faders (including MIDI pause) not being recorded
    as a CC event.

    57 y1ds : [Feature request] CC sequencing

    58 georgkrause : [Feature request] midi control out

       Is there any possibility to have midi outputs for the controls? i want
       to "print" the state of the patterns to my apc mini.

       i see it like @muranyia, all those controllers have specific mappings.
       my apc mini sends note on/off instead of control changes, so we need a
       system like the midi mapping for incoming midi

       That feature would be awesome for controllers like the APC mini or
       Novation's     Launchpad.  @ahlstromcj I don't think there is a
       standard. Here is the spec for the Launchpad :

       https://d19ulaff0trnck.cloudfront.net/sites/default/files/novation/downloads/10529 /launchpad-mk2-programmers-reference-guide-v1-02.pdf

 +  59 georgkrause : Recording improvements

    And it would be nice if there would be another recording mode, where is
    start the recording on the next loop (like queue) and end it at the end of
    the loop.  even better would be to set the length while recording. so you
    start the recording and when you press the record toggle again, it ends on
    the end of the current loop. while you record the pattern is getting
    longer and longer.  but this isnt that important. But it would be nice if
    I could set the default pattern length in the config file.

    The workflow I imagine would be:

    -   start sequencer64
    -   select input device in settings. this is fine.
    -   start transport
    -   toggle a recording modifier
    -   trigger a pattern
    -   the recording will start at the beginning of the next bar
    -   the pattern gets longer and longer until...

    60 georgkrause : change speed while running

    i know, this might be pretty hard to do. but it would be really really
    cool if you could adjust the playback speed while the transport is
    rolling. this would give us some nice possibilities for live performances,
    and i would really love it.        

    More:

    Okay, thanks for the reply! I already red most of the manual and its
    great! thank you for this!                                                                     
    re 1.: i got how recording works, and i used it. no technical problems.
    but the workflow is pretty unhandy. i try to make music without touching
    the mouse or keyboard a lot and this is nearly impossible with
    sequencer64 at the moment.      
    the workflow i imagine would be:                                                  
    1. start sequencer64                                                              2. select input device in settings. this is fine.                                 3. start transport                                                                4. toggle a recording modifier                                                    5. trigger a pattern                                                              6. the recording will start at the beginning of the next bar                      7. the pattern gets longer and longer until...                                    8. trigger the pattern again to stop recording on the next bar                    
    this would be the best case i can imagine, but maybe its a good idea to
    split things at implement on after another. the flexible length of the
    patterns seems a bit critical for me to implement so it might be a good
    idea to move this to the future.

    an alternative, maybe easier way to implement:                                    
    1. start sequencer64
    2. select input
    3. select default length for patterns
    4. start transport
    5. toggle recording modifier
    6. trigger a pattern
    7. now the pattern records exactly one loop, than recording stops                 
 *  61 georgkrause : Jack MIDI Client Naming

 *  62 georgkrause : Jack Midi auto connect

    63 milkmiruku : [Feature request] tempo to two decimal places

       Being able to set the tempo to two decimal places would be very handy
       for beatmatching and mixing with an audio source, either live or
       recorded.

       Nearly done!  Seems to work!

    64 y1ds : [Feature request] No gui

    I remember reading somewere of plans to make it possible to run without
    gui. I was wondering if this is gonna happen cause it would be really
    helpfull for my raspberry pi drumcomputer project, if someone could give
    me some  hints I could also have a try at it, but my coding skills are not
    that great                    

    65 muranyia : [Feature request] Fullscreen mode

    By no means to overwhelm you, rather to throw this into the buffer so you
    can evaluate and eventually prioritize... :)
    I'm thinking about putting sequencer64 on a dedicated PI box with a small
    LCD display, and fullscreen mode (perhaps switchable by F11 and/or a
    command line option) would come very handy.
    Thank you for all the great work you've done so far, sir!

    66 milkmuruku : [Feature request] 'Focus' an 'Close' options in right
    click menu for sequences with opened edit windows 

 *  67 no midiclock output on rtmidi 0.90.1

 *  68 XRUNS ... (turned out to be realtime system settings for user)

 *  69 milkmuruki : 'pass through' button activates 'record incoming', does
    not pass MIDI through

 *  70 milkmuruki : Hovering pointer over an active toggle button gives the
    same graphic as an inactive button, confusing

 *  71 milkmuruki : On start; activated patterns become inactive on play
    (once)

 *  72 Animtim : ghost mute group always coming back in rc

 *  Fixed, not yet closed.

    73 Animtim : Jack midi less precise than alsa midi

    Oh, I just noticed this timing issue is highly depending on jack buffer
    size.  I initially had it set to 1024 (and 3 periods). Issue is subtle but
    can be heard.  Then I tested with 256, and couldn nott really hear the issue
    (but then I have occasional xruns, very few but still).  Then I tested
    with 2048, and the issue gets really worse, really easy to hear it.

    74 georgkrause : cant use replace in queue mode

	-	start queue mode with \ (keep-queue, not queue, which is Ctrl-R)
	-	try to replace running pattern with replace_mod + pattern_key.  This
        should be Ctrl-L + pattern key.
    -	expected: after the current cycle, only the toggled pattern should run
	-	what happens: all running pattern still run + the toggled pattern

    It works the same way in seq24.

 *  75 Animtim : jack midi: Program Change events not sent

    Fixed, but not yet closed.  Was due to filtering 1-data-byte events
    inadvertently.

 *  76 layk : latest wip -ed -er seq64 crash when button 'Jack Transport
    Connect' is used.

Upgrades:

    -o, --options:

        We want to support app-specific options:

        seq64cli:

            -   daemonize.  Need to figure out when to daemonize, and
                to what value the current working directory should be
                set [e.g. rc().last_used_dir], or do we need another
                directory option value?
            -   file list ?

        seq64rtmidi:

            -   no GUI (daemonize)? :-D

# vim: sw=4 ts=4 wm=4 et ft=sh
