KeyboardMaestroMidiCommandInterface: Difference between revisions
(If delta < lastDifference { <take newString as command> else <use it for typing> }) |
mNo edit summary |
||
Line 7: | Line 7: | ||
q: And the text is? | q: And the text is? | ||
f: | |||
"""" | |||
KeyboardMaestroMidiCommandInterface. | KeyboardMaestroMidiCommandInterface. | ||
Line 48: | Line 51: | ||
} | } | ||
""" | |||
work in progress | work in progress | ||
//// | //// |
Revision as of 20:48, 11 March 2018
f: Watching the video KeyboardMaestroMidiTrigger
https://www.youtube.com/watch?v=ug-pE8La8OQ
f prepared the following comment as an idea that would make KbMaestro more valuable for musicians.
q: And the text is?
f:
"""" KeyboardMaestroMidiCommandInterface.
Hello, dear Adam Courtemanche,
thank you for your contribution.
What about having an extended TimeKeeper, completely written in KbMaestro, that takes as input source a MidiKeyboard and produces a sequence of OnOffNoteEvents, shown in the ExtendedTimeKeeperWindow:
On/Off, MidiNumber, Volume, Time.
...........................................................
Such a KbMaestroMidiMonitor would allow making KbMaestro into a valuable CmdInterface increasing the user value KbMaestro.
At moment we can use something similar with KbHotstrings. Unfortunately, those HotStrings produce a StringOutput, restricting the hotkeys to text input (otherwise those emitted chars could produce side effects in other
contexts than TextInputFields).
Using a MidiKeyboard, you can use it e.g. as a mnemonic InputCommandInterface.
E.g. Map the Alphabet to the following KeyboardKeys
c2=c, c2#=i, d2=d, d2#=s, e2=e, f2=f, f2#=j, g2=g, g2#=k, a2=a, a2#=b2 (in German for h flat), h2=h, c3=l, c3#=m, d3=n, d3#=o, e3=p, f3=q, f#=r, g3=s ( the map doesn't need to be injective) ,
g3#=t, a3=u, a3#=v, b3=w, c3=x, c3#=y, d3=z
If the volume is about a threshold, then make the letter an uppercase, else lowercase.
Sketch:
lastDifference = the time difference between On and Off of the last note timeThreshold = time threshold accumulatedString = string of accumulated notes newString = accumulatedString accumulatedString = "" If delta < lastDifference { <take newString as command> else <use it for typing> }
"""
work in progress ////