[yoshimi] Fun times ahead

  • From: Will Godfrey <willgodfrey@xxxxxxxxxxxxxxx>
  • To: yoshimi@xxxxxxxxxxxxx
  • Date: Thu, 17 Nov 2016 00:47:00 +0000

For some time I've been working on a system for creating lists of data blocks
that are extendible, editable and quickly readable. It just so happens that the
new direct access work forms such data blocks, so the idea is to combine these.

For anyone who hasn't twigged yet, I'm talking about MIDI learn :)

In my test program I generate approximately 500 entries - many similar but no
two identical. If I deliberately search for the very last one (or a non-existent
one) it takes just 20uS.

Direct access still isn't ready for full GUI control, but it is more than good
enough for at least basic MIDI learn, so as this is *well* overdue I'll start
working on that. Initially it will only be able to handle controls that have an
actual range of 0 to 127.

However, some clarification on just what I'm eventually hoping to provide.

Your first action will be to right-click on a knob/slider while holding down
the 'ctrl' key, this will put you into learn mode if the knob is learnable. If
not you'll get a popup message.

As soon as you move the external control or send any controller MIDI message,
this will be grabbed, a new window will open called something like 'MIDI list'
and Yoshimi will go back to normal operation.

You will now see a line entry with the incoming CC number, the incoming
channel number, Min and Max values, and some switch check boxes. Finally there
will be a text field that will show in human readable form exactly what control
has been grabbed. All of these will be editable.

You will be able to stack up message lines that have the same CC and channel,
so a single incoming can change a part volume and at the same time change the
filter cutoff and with a third line change the panning of a *different* part.

Multiple lines will always be displayed (and actioned) in ascending order of
CC, then channel number 


CC: This can be changed to any valid CC

Channel: This can be changed to any incoming one or to 'all'

Min/Max: These will default to 0 & 127, but can be set to any value in that
range. If Min is greater than Max, then the incoming CC value will be inverted
and Min & Max swapped.

Switches:
    Mode: Limit/Compress.
        Set to 'limit'. The min/max will be hard cutoffs. e.g. min is 20
incoming is 5. result is 20. Set to 'compress'. The incomming will be converted
to fit the range. e.g. min is 32, max is 95. Incomming 0 will be 32, incomming
2 will be 33 etc.

    Mute: completely ignore this entry, but don't delete it.

    Block: ignore all later entries that have the same channel and CC. This
    will include the defaults like volume and pan, but not root/bank/program
    changes, nor any NRPNs.

    Delete: removes the line completely (with a warning)


I'll start working out how to shoehorn this in, but at first, although you'll be
able to set up lines, you won't be able to see them or remove them. Indeed
there won't be a window at all!

Apart from anything else, at the moment I have no idea how to implement a
varible length list of controls in FLTK.


As usual, comments welcome.


-- 
Will J Godfrey
http://www.musically.me.uk
Say you have a poem and I have a tune.
Exchange them and we can both have a poem, a tune, and a song.
Yoshimi source code is available from either: 
http://sourceforge.net/projects/yoshimi
Or: https://github.com/Yoshimi/yoshimi
Our list archive is at: https://www.freelists.org/archive/yoshimi
To post, email to yoshimi@xxxxxxxxxxxxx

Other related posts:

  • » [yoshimi] Fun times ahead - Will Godfrey