; ------- Bome MIDI Translator: signed project file ; ------- You can modify this file as you like, but that will invalidate the ; ------- signature so that it cannot be opened in the BomeBox or MT Player anymore. ; [Preset.0] Active=1 Comments= Incoming0=EnDi02 Incoming1=KAM10000KSQ1000201B21B Incoming2=Tim0TimT0004Init Incoming3=MID3 Name=Init Name0=Project Opened Name1=ESC Init Name2=Set Globals Name3=Swallow Aftertouch Options0=Actv01Stop00OutO00 Options1=Actv01Stop00OutO00 Options2=Actv01Stop00OutO00StMa0000002Alabel002C__cmt>// Type of control -1=none 1=note 2=ccga=-1label0018__cmt>// gb MIDI Channelgb=0label0019__cmt>// Note or cc valuegc=0label0015__cmt>// down countergd=0label0013__cmt>// up counterge=0label002E__cmt>// 1=press and hold 2= press and releaselabel003D__cmt>// 3= double press and hold 4= double press and releaselabel0028__cmt>// 5= release after press and holdlabel002F__cmt>// 6= release after double press and holdgf=0label0006__cmt>label001A__cmt>// last note pressedgg=0label0006__cmt>label0028__cmt>// At the end of this gf = gesturelabel001F__cmt>// ga is the control typelabel001F__cmt>// gb is the MIDI channellabel0021__cmt>// gc is the control numberlabel0017__cmt>// gf is gestuirelabel0019__cmt>// 1= down and holdlabel0018__cmt>// 2= single presslabel0020__cmt>// 3= double down and holdlabel0018__cmt>// 4= double presslabel0027__cmt>// 5= release after down and holdlabel002E__cmt>// 6= release after double down and holdlabel0018__cmt>// 7= triple presslabel0021__cmt>// 8= triple press and holdlabel002E__cmt>// 9= relase after triple press and holdlabel0006__cmt>label0006__cmt>label0016__cmt>// button 1 noteg0=0label0014__cmt>// button 2 ccg1=1label0016__cmt>// button 3 noteg2=2label0006__cmt> Options3=Actv01Stop01OutO00 Outgoing0=Tim0TimS0004Init1:0:1 Outgoing1=Tim0TimS0004Init1:0:1 Outgoing2=None Outgoing3=None PresetSwitchIgnore=0 [Preset.1] Active=1 Comments= DefaultInPorts=MIDA0001000DMy Controller DefaultOutPorts=MIDA0001000BApplication Incoming0=MID1ooppqq Incoming1=MID1oopp Incoming10=Tim0TimT0012Gesture Dispatcher Incoming11=Tim0TimT0012Gesture Dispatcher Incoming12=Tim0TimT0012Gesture Dispatcher Incoming13=Tim0TimT0012Gesture Dispatcher Incoming14=Tim0TimT0012Gesture Dispatcher Incoming15=None Incoming16=Tim0TimT0012Gesture Dispatcher Incoming17=Tim0TimT0012Gesture Dispatcher Incoming18=Tim0TimT0012Gesture Dispatcher Incoming19=MID3---------------------------------------------------- Incoming2=Tim0TimT0008Evaluate Incoming20=Tim0TimT0012Gesture Dispatcher Incoming21=Tim0TimT0012Gesture Dispatcher Incoming22=Tim0TimT0012Gesture Dispatcher Incoming23=Tim0TimT0012Gesture Dispatcher Incoming24=Tim0TimT0012Gesture Dispatcher Incoming25=Tim0TimT0012Gesture Dispatcher Incoming26=Tim0TimT0012Gesture Dispatcher Incoming3=None Incoming4=Tim0TimT0012Gesture Dispatcher Incoming5=Tim0TimT0012Gesture Dispatcher Incoming6=Tim0TimT0012Gesture Dispatcher Incoming7=MID3---------------------------------------------------- Incoming8=Tim0TimT0012Gesture Dispatcher Incoming9=Tim0TimT0012Gesture Dispatcher Name=Gesture Manager Name0=3 Byte Button Press Name1=2 Byte Button Press Name10=Double Press and hold button one Name11=Release after Double Press and hold button one Name12=Triple Press button one Name13=Triple Press and hold button one Name14=Release after Triple Press and hold button one Name15=--- Second Note ---------------------------------------------------- Name16=Single Press button two Name17=Press and Hold button two Name18=Release after Press and Hold button two Name19=The below translators handle note-and then note-off after a delay Name2=Set Gesture Name20=Double Press button two - Note On Name21=Double Press button two - Note Off Name22=Double Press and hold button two Name23=Release after Double Press and hold button two Name24=Triple Press button two Name25=Triple Press and hold button two Name26=Release after Triple Press and hold button two Name3=--- First Note ----------------------- Name4=Single Press button one Name5=Press and Hold button one Name6=Release after Press and Hold button one Name7=The below translators handle note-and then note-off after a delay Name8=Double Press button one - Note On Name9=Double Press button one - Note Off Options0=Actv01Stop00OutO00StMa00000043label0034__cmt>// Must be same note or PC number as last timeif(pp==gg)goto0007Processlabel0027__cmt>// Capture new note for next timegg=pplabel001A__cmt>// Down counter to 1gd=1label0019__cmt>// Clear up counterge=0label0015__cmt>// clear gestergf=0noexecutelabel0006__cmt>label0007Processlabel001A__cmt>// determine controlgc=pplabel001F__cmt>// determine MIDI Channellabel0006__cmt>gb=oo&15label0006__cmt>label0025__cmt>// Look for note-on or note offrr=oo&224if(rr==128)ga=1if(rr==128)goto0004notelabel0006__cmt>label0014__cmt>// Look for CCrr=oo&176if(rr==176)ga=2if(rr==176)goto0002cclabel0006__cmt>label0002cclabel0016__cmt>// Press counterif(qq>0)gd=gd+1label0018__cmt>// Release Counterif(qq==0)ge=ge+1label0006__cmt>goto0004donelabel0006__cmt>label0004noterr=oo&240rr=rr>>4label0006__cmt>label001F__cmt>// increment down counterlabel0030__cmt>// if velocity is 0, then must be note offif(qq==0)sk2iplabel0011__cmt>// note offif(rr==8)skipgd=gd+1label0006__cmt>label0006__cmt>label0028__cmt>// increment up counter (note off)label0006__cmt>label0023__cmt>// If 8 or 9 with velocity 0label0006__cmt>label0029__cmt>// Zero velocity is always note offif(qq==0)ge=ge+1label002E__cmt>// if velocity 0, then don't do it againif(qq==0)skiplabel0042__cmt>// must be 8 with velocity > 0, also note off (AKA APC MINI)label0037__cmt>// APC MINI sents not off with velocity 7F for upif(rr==8)ge=ge+1label0006__cmt>label0006__cmt>label0006__cmt>label0006__cmt>label0006__cmt>label0006__cmt>label0004done Options1=Actv00Stop00OutO00 Options10=Actv00Stop01OutO00StMa0000000Alabel0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel0021__cmt>// single press and releaseif(gf!=3)noexecutegf=6 Options11=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel0021__cmt>// single press and releaseif(gf!=6)noexecute Options12=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel0021__cmt>// triple press and releaseif(gf!=7)noexecute Options13=Actv00Stop01OutO00StMa0000000Alabel0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel001D__cmt>// triple press and hodif(gf!=8)noexecutegf=9 Options14=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel002B__cmt>//release after triple press and holdif(gf!=9)noexecute Options15=Actv00Stop00OutO00 Options16=Actv01Stop00OutO00StMa0000000Clabel0030__cmt>// Look for note if ga=1 2 then it is a CCif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0028__cmt>// Example below is MIDI Channel 9label0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel0046__cmt>// Note g0 (as set up in init global variables translator rules)label004E__cmt>// gc is the current note so if it is not for this translator, then skipif(gc!=g1)noexecutelabel0021__cmt>// single press and releaselabel0022__cmt>// gf is the type of gestureif(gf!=2)noexecute Options17=Actv00Stop01OutO00StMa0000000Alabel0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel0021__cmt>// single press and releaseif(gf!=1)noexecutegf=5 Options18=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel0021__cmt>// single press and releaseif(gf!=5)noexecute Options19=Actv00Stop00OutO00 Options2=Actv01Stop00OutO00StMa00000040label0035__cmt>// If down is 1 and up is 0 then press and holdif(gd!=1)skiplabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel0006__cmt>label001A__cmt>//if ge==0 then gf=1label0035__cmt>// if down is 1 and up is 0 then press and holdif(gd!=1)skipif(ge==0)gf=1label0038__cmt>// if down is 1 and up is 1 then press and releaseif(gd!=1)skipif(ge==1)gf=2label003C__cmt>// if down is 2 and up is 1 then double press and holdif(gd!=2)skipif(ge==1)gf=3label003F__cmt>// if down is 2 and up is 2 then double press and releaseif(gd!=2)skipif(ge==2)gf=4label003C__cmt>// if down is 3 and up is 2 then triple press and holdif(gd!=3)skipif(ge==2)gf=8label003F__cmt>// if down is 3 and up is 3 then triple press and releaseif(gd!=3)skipif(ge==3)gf=7pp=gflabel0006__cmt>label0024__cmt>// release after down and holdif(gf!=1)skipif(gd==ge)pp=5label0006__cmt>label0006__cmt>label002B__cmt>// release after double down and holdif(gf!=3)skipif(gd==ge)pp=6label0006__cmt>label002C__cmt>// release after triple press and holdif(gf!=8)skipif(gd==ge)pp=9label0006__cmt>gf=pplabel0006__cmt>label0011__cmt>// Set backlabel0006__cmt>gd=0ge=0label0006__cmt>label0028__cmt>// At the end of this gf = gesturelabel001F__cmt>// ga is the control typelabel001F__cmt>// gb is the MIDI channellabel0021__cmt>// gc is the control numberlabel0017__cmt>// gf is gestuirelabel0019__cmt>// 1= down and holdlabel0018__cmt>// 2= single presslabel0020__cmt>// 3= double down and holdlabel0018__cmt>// 4= double presslabel0027__cmt>// 5= release after down and holdlabel002E__cmt>// 6= release after double down and holdlabel0018__cmt>// 7= triple presslabel0022__cmt>// 8= tripple press and holdlabel002E__cmt>// 9= relase after triple press and holdlabel0006__cmt>label0006__cmt>label0006__cmt> Options20=Actv01Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel0021__cmt>// single press and releaseif(gf!=4)noexecute Options21=Actv01Stop00OutO00Dlay250:MillisStMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel0021__cmt>// single press and releaseif(gf!=4)noexecute Options22=Actv00Stop01OutO00StMa0000000Alabel0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel0021__cmt>// single press and releaseif(gf!=3)noexecutegf=6 Options23=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel0021__cmt>// single press and releaseif(gf!=6)noexecute Options24=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel0021__cmt>// triple press and releaseif(gf!=7)noexecute Options25=Actv00Stop01OutO00StMa0000000Alabel0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel001D__cmt>// triple press and hodif(gf!=8)noexecutegf=9 Options26=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g1)noexecutelabel002B__cmt>//release after triple press and holdif(gf!=9)noexecute Options3=Actv00Stop00OutO00 Options4=Actv01Stop00OutO00StMa0000000Clabel0030__cmt>// Look for note if ga=1 2 then it is a CCif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0028__cmt>// Example below is MIDI Channel 9label0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel0046__cmt>// Note g0 (as set up in init global variables translator rules)label004E__cmt>// gc is the current note so if it is not for this translator, then skipif(gc!=g0)noexecutelabel0021__cmt>// single press and releaselabel0022__cmt>// gf is the type of gestureif(gf!=2)noexecute Options5=Actv00Stop01OutO00StMa0000000Alabel0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel0021__cmt>// single press and releaseif(gf!=1)noexecutegf=5 Options6=Actv00Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel0021__cmt>// single press and releaseif(gf!=5)noexecute Options7=Actv00Stop00OutO00 Options8=Actv01Stop00OutO00StMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel0021__cmt>// single press and releaseif(gf!=4)noexecute Options9=Actv01Stop00OutO00Dlay250:MillisStMa00000009label0016__cmt>// Look for noteif(ga!=1)noexecutelabel002F__cmt>// uncomment below to target MIDI channellabel0023__cmt>// otherwise any MIDI channellabel0036__cmt>//if gb!=8 then exit rules, skip outgoing actionlabel000D__cmt>// Noteif(gc!=g0)noexecutelabel0021__cmt>// single press and releaseif(gf!=4)noexecute Outgoing0=Tim0TimS0008Evaluate1:300:1 Outgoing1=None Outgoing10=MID3 Outgoing11=MID3 Outgoing12=MID3 Outgoing13=MID3 Outgoing14=MID3 Outgoing15=None Outgoing16=MID3 Outgoing17=MID3 Outgoing18=MID3 Outgoing19=None Outgoing2=Tim0TimS0012Gesture Dispatcher1:0:1 Outgoing20=MID3 Outgoing21=MID3 Outgoing22=MID3 Outgoing23=MID3 Outgoing24=MID3 Outgoing25=MID3 Outgoing26=MID3 Outgoing3=None Outgoing4=MID3 Outgoing5=MID3 Outgoing6=MID3 Outgoing7=None Outgoing8=MID3 Outgoing9=MID3 PresetSwitchIgnore=0 [Project] Author=Steven J. Caldwell AuthorContact=bome@sniz.biz AuthorCopyright=2021 Comments=To manage gestures of controllers that send notes or CC. Only one button can be pushed at a time.\nHandles:\nsingle press and release\nsingle press and hold\nrelease after single press and hold\ndouble press and release\ndouble press and hold\nrelease after double press and hold.\nDisable any translators that you don't want to take action.\nSet incoming type (note or cc) and which cc or note (0-127) for action.\n DefaultInPorts=MIDA0001000DMy Controller DefaultOutPorts=MIDA00010022Bome MIDI Translator 1 Virtual Out Version=2 [Signatures] SigName-1=[Midi Translator Pro Internal] Signature-1=rwYSzwo/nfX5nnAeLxVlcRclQbB85q2unEn8EU3EgO2B3c2FIZe38V+IeZ4nM7e1YA9r9uPHARdnyGQq5Uoye2eHwzB1/fUtce0qvZCn9NGgDgwsJlOin4xxBXXp1RcnEHIwe5hGQPTS05sH5a390UnfKg2EMGynDLBkfxTHDC8= SignedBy-1=Steve Caldwell