Guest didifeed Posted June 28, 2004 Report Share Posted June 28, 2004 hi again !i'm having a little bit problems asssigning the reason controllers. following things belong to the standard midi mapping of reason.the green bordered buttons in the picture are no problem because i simply can make them work via a toogle function of a button.the selections which are marked with a red border in the picture are a big problem because when i assign them via the standard mapping they only go to the first and the last selection with @toggle. so they seem to need a value depending on the number of selections which can be made.if i assign them via midi remote mapping it works. also with a button configured as @onoff note. i tried several things like poly aftertouch etc.i think i would need a meta event which makes a incremental value. i have programming skills but i don't know how to get this things working. i could assign them via the midi learn but i that is not really what i want. i would have to assign it in every new project :(perhaps somebody knows a easier way than implementing a meta event.thx Quote Link to comment Share on other sites More sharing options...
TK. Posted June 29, 2004 Report Share Posted June 29, 2004 Hi,you don't need a meta event, you only have to specify different "velocity" values for the note which controls the radio button section. And you have to set the button mode to "OnOnly", so that no Note Off (with zero velocity) is sent when the button is released.Example (in midibox64.ini format).I'm assuming that the radio button group is assigned to Note Number 0x30 (C-3). Of course, you can do the same with CC's... # The first five Buttons control the Shaper mode 1 = 90 30 00 @OnOnly 2 = 90 30 20 @OnOnly 3 = 90 30 40 @OnOnly 4 = 90 30 60 @OnOnly 5 = 90 30 7F @OnOnly Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
uclaros Posted June 29, 2004 Report Share Posted June 29, 2004 Hi!Well in that way you'll need five buttons to controll it!To solve this in Reason, I use a pot instead of buttons. Set minimum value to 0 and max to 4! Quote Link to comment Share on other sites More sharing options...
Guest didifeed Posted June 29, 2004 Report Share Posted June 29, 2004 thx thorsten!yes ... throstens way is nice but much buttons are wasted in this way. i also assigned a pot to it with a max value of the number of selections. my box has only 32 pots+32buttons and so i didn't want to waste pots for such functions. but i found that i have pots left even if i assign the selections to some. so its not the best but a good solution.my other problem is that i don't understand how to work with the bankstick at all. it's a little bit crappy because i don't have a lcd on my box and to this end i can't see what i'm doing hehe Quote Link to comment Share on other sites More sharing options...
TK. Posted June 29, 2004 Report Share Posted June 29, 2004 Ok, then I will just give you an example for a meta event: open mb64_meta.inc, search for "MB64_META_Handler_10" and replace it by: MB64_META_Handler_10 ;; do nothing if button released (button value == 0x00) movf MIDI_EVNT_VALUE, W bz MB64E_META_Handler_10_End ;; increment variable incf MY_BUTTON_TOGGLE_STATE, F ;; reset to zero if value >= 5 movlw 0x05 IFGEQ MY_BUTTON_TOGGLE_STATE, ACCESS, clrf MY_BUTTON_TOGGLE_STATE ;; send value movlw 0xb0 call MIOS_MIDI_TxBufferPut movlw 0x10 call MIOS_MIDI_TxBufferPut movf MY_BUTTON_TOGGLE_STATE, W call MIOS_MIDI_TxBufferPut MB64_META_Handler_10_End return This will send CC#16 with values 0, 1, 2, 3, 4, 0, 1, 2, ... every time you press the single button. Thereafter locate the variable to a free address, open app_defines.h, search for an unused address (lets say 0x03c) and write: MY_BUTTON_TOGGLE_STATE EQU 0x03c The meta event has to be assigned to the button with 1 = F0 10 7F @OnOff You could also assign it directly in the source code (see mb64_presets.inc), this saves some effort.There are several ways to implement this for more toggle buttons, the most simple way is to add a dedicated meta function for each one. For this, you have to enhance the lookup table at the beginning of mb64_meta.incBankStick: each bank contains a complete setup (SysEx dump). If no LCD is available, you could also switch between the banks with a Program Change event over MIDI Channel 16 (coming from external), or you could assign some buttons to special functions like described here: http://www.ucapps.de/midibox/midibox64_sfb_table.txtYou are right, without a LCD it isn't easy to understand all the possibilities of the application!Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest didifeed Posted June 30, 2004 Report Share Posted June 30, 2004 thx a lot for the functionbut it doesn't work :o(mplab tells me some errors when building. Error[113] D:\MIDIBOX64_V2_3\MB64_META.INC 244 : Symbol not previously defined (MB64E_META_Handler_10_End)Error[126] D:\MIDIBOX64_V2_3\MB64_META.INC 244 : Argument out of range (-13725 not between -128 and 127)Warning[207] D:\MIDIBOX64_V2_3\MB64_META.INC 258 : Found label after column 1. (MB64_META_Handler_10_End)have inserted it as explainedbankstick: i'm already trying to get a cheap lcd because reichelt doesn't send orders below 100 euro to austria :( so i have to look for one at ebay. my problem is that mios is a really complex and powerfull tool (well done by you) and i have a little bit problems to understand the structure ... it's also a little bit hard because i don't understand assembler code. i think i'll open a new thread for understanding mios and the bankstick things.what i also don't understand is how a memory dump is defined. it's a simple syx file isn't it? i want to make my configurations with the mk_syx and then uploading to banks ... is this right? but i don't know how to tell the box to which bank the syx file should be uploaded. it's no problem to send it with midiox but then i would only have one "master-config" on the box.thx for tha help and wasting your time for usgreez Quote Link to comment Share on other sites More sharing options...
TK. Posted June 30, 2004 Report Share Posted June 30, 2004 There are two problems, you have to rename "MB64E_META_Handler_10_End" by "MB64_META_Handler_10_End" (typing error), and you have to ensure that both labels are beginning at the first column.Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
Guest didifeed Posted June 30, 2004 Report Share Posted June 30, 2004 hehe .... ok thx ... stupid that i haven't seen that greez Quote Link to comment Share on other sites More sharing options...
Guest didifeed Posted July 7, 2004 Report Share Posted July 7, 2004 hi and thx one more for your cool meta-eventbut i would like to know if and how i can tell the event on which midi channel it sendsthx Quote Link to comment Share on other sites More sharing options...
TK. Posted July 7, 2004 Report Share Posted July 7, 2004 Hi,replace 0xb0 by 0xb1 for channel 1, 0xb2 for channel 2, ... 0xbf for channel 16You could also specify the channel with the Meta Event, e.g. if you replace "movlw 0xb0" by "movf MIDI_EVNT_VALUE, W", "andlw 0x0f", "iorlw 0xb0" the specified button value (should be within 00 and 0F) will be addedBest Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.