KeyboardMaestroMidiCommandInterface: Difference between revisions

From fridemar.ai
Jump to navigation Jump to search
mNo edit summary
m (format)
Line 19: Line 19:


  On/Off, MidiNumber, Volume, Time.  
  On/Off, MidiNumber, Volume, Time.  
  ...........................................................  
  ...........................................................  


Line 45: Line 44:
   newString = accumulatedString
   newString = accumulatedString
   accumulatedString = ""
   accumulatedString = ""
If delta < lastDifference {
  If delta < lastDifference {
  <take newString as command>   
  <take newString as command>   
else  
  else  
  <use it for typing>
  <use it for typing>
  }
  }


Line 54: Line 53:
   
   
work in progress
work in progress
////
///

Revision as of 20:49, 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 ///