troek Posted August 18, 2010 Report Share Posted August 18, 2010 (edited) I have build the router and... its working!!!!! all poorts are sending from and to with on an off. IIC2 its sending chn.<9 to INT0 and >9 to IIC0 and IIC1, thats all right. But the keybord on IIC3 DON'T split anyway its sending all notes to same . I have software versie from midi_router_v1.1c. (v1.1b working de rotary/encoder not good) please help :sad: Best Regards, Troek Edited August 18, 2010 by troek Quote Link to comment Share on other sites More sharing options...
Shuriken Posted August 20, 2010 Report Share Posted August 20, 2010 First of all, please don't cross post. It won't get you any more responses. I must say i don't have any experience with the midibox router project. However the info you provide is quite minimal. Have you checked the following page?: http://www.ucapps.de/howto_debug_midi.html Also did you check all the boards have the correct voltages? Quote Link to comment Share on other sites More sharing options...
nILS Posted August 20, 2010 Report Share Posted August 20, 2010 Cross post deleted (I kept the one in the netherlands-section, doesn't count as a cross-post) and thread moved to a more fitting board. Quote Link to comment Share on other sites More sharing options...
Shuriken Posted August 20, 2010 Report Share Posted August 20, 2010 Cross post deleted (I kept the one in the netherlands-section, doesn't count as a cross-post) and thread moved to a more fitting board. Ok, but i am not going to answer there in dutch :laugh: Quote Link to comment Share on other sites More sharing options...
troek Posted August 23, 2010 Author Report Share Posted August 23, 2010 hi i'm sorry for the crossing The router works great except the note splitting on the last input. All midi signals on input 5 is going directly to output 4 and 5 without the note and following channel split. Quote Link to comment Share on other sites More sharing options...
TK. Posted August 23, 2010 Report Share Posted August 23, 2010 Port #3 is working like intended - from router.c: void ROUTER_Rx_IIC3(unsigned char ptype, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { unsigned char transposed_note; // IIC3: connected to my Yamaha AN1x // lock/release this routing path on SysEx streams ROUTER_LockPathOnSysEx(PORT_IIC3, ptype); // filter clock if( evnt0 == 0xf8 ) return; if( ptype >= 0x08 && ptype <= 0x0e ) { // check if channel should be forced to specific value if( router_flags.IIC3_FWD_FORCE_CHN ) { evnt0 = (evnt0 & 0xf0) | (router_iic3_fwd_force_channel & 0xf); } // check if note should be transposed if( router_iic3_fwd_transpose != 8 && ptype <= 0x09 ) { if( router_iic3_fwd_transpose >= 8 ) { evnt1 += (router_iic3_fwd_transpose-8)*12; // if value >= 0x80, decrement 12 until we have reached the range <= 0x7f again while( evnt1 & 0x80 ) evnt1 -= 12; } else { evnt1 -= (8-router_iic3_fwd_transpose)*12; // if value < 0, add 12 until we have reached the range >= 0 again while( evnt1 & 0x80 ) evnt1 += 12; } } if( router_flags.IIC3_FWD_MBSID ) ROUTER_Tx_IIC0(ptype, evnt0, evnt1, evnt2); if( router_flags.IIC3_FWD_MBFM ) ROUTER_Tx_IIC1(ptype, evnt0, evnt1, evnt2); if( router_flags.IIC3_FWD_MBSEQ ) ROUTER_Tx_IIC2(ptype, evnt0, evnt1, evnt2); } // forward data (also) to the Core MIDI OUT #if 1 // if no FE if( evnt0 != 0xfe ) #endif if( !router_flags.IIC3_FWD_MBSID && !router_flags.IIC3_FWD_MBFM && !router_flags.IIC3_FWD_MBSEQ ) ROUTER_Tx_INT0(ptype, evnt0, evnt1, evnt2); } [/code] If you want a similar behaviour like for IIC2 (note splitting; just replace the code of ROUTER_Rx_IIC3 by the code you will find in ROUTER_Rx_IIC2 [code] void ROUTER_Rx_IIC2(unsigned char ptype, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { // IIC2: connected to my MIDIbox SEQ // lock/release this routing path on SysEx streams ROUTER_LockPathOnSysEx(PORT_IIC2, ptype); // forward MIDI clock/start/stop/continue to all IIC modules if( evnt0 >= 0xf8 && evnt0 <= 0xfc ) { ROUTER_Tx_IIC0(ptype, evnt0, evnt1, evnt2); ROUTER_Tx_IIC1(ptype, evnt0, evnt1, evnt2); ROUTER_Tx_IIC2(ptype, evnt0, evnt1, evnt2); ROUTER_Tx_IIC3(ptype, evnt0, evnt1, evnt2); } // if IIC2_FWD_CHN8_16 flag set: if( router_flags.IIC2_FWD_CHN8_16 && (ptype >= 0x08 && ptype <= 0x0e) && ((evnt0 & 0x0f) >= MIDI_CHN9) ) { // directly forward MIDI channel #9..#16 messages to MIDIbox SID and MIDIbox FM only ROUTER_Tx_IIC0(ptype, evnt0, evnt1, evnt2); ROUTER_Tx_IIC1(ptype, evnt0, evnt1, evnt2); } else { // forward all other events to the Core MIDI OUT ROUTER_Tx_INT0(ptype, evnt0, evnt1, evnt2); } } or create your own "routing logic" - by changing the source code this MIDI Router is completely configurable! :) Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
troek Posted August 24, 2010 Author Report Share Posted August 24, 2010 hi thanks for the fast respons :thumbsup: but its not what i was looking for :unsure: on the site i've found a block diagram which says on input iic3 -> only channel 16 -> split notes <c-4 or >=c-4 and then change the channel and send them to ouputs iic3 an iic2. I can't find this in the code. It might be possible that the code has changed without changing the diagram grtz Quote Link to comment Share on other sites More sharing options...
TK. Posted August 24, 2010 Report Share Posted August 24, 2010 Yes, the released code always contains the current routing I'm using by myself. I don't see a need for keeping the diagram up-to-date, since every user would adapt the routing for his own requirements anyhow. I'm not sure if you are asking for somebody who programs the code for you, or if you just only wanted to mention the differences. If you need a different implementation, you could consider to customize the routing as you really need it - the routing in the diagram is only an example, there are many more possibilities. Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
troek Posted August 24, 2010 Author Report Share Posted August 24, 2010 Hi, Very tricky from me :shocked: ,But do you have some old code ?????? with that function that whe can experince? C programs is not my thing. :blush: thanks Quote Link to comment Share on other sites More sharing options...
TK. Posted August 24, 2010 Report Share Posted August 24, 2010 No, I don't have the old code anymore !!!!!! But probably it looked somehow like this one ?????? void ROUTER_Rx_IIC3(unsigned char ptype, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { unsigned char transposed_note; // IIC3: connected to my Yamaha AN1x // lock/release this routing path on SysEx streams ROUTER_LockPathOnSysEx(PORT_IIC3, ptype); // filter clock if( evnt0 == 0xf8 ) return; // apply exactly the routing as documented under http://www.ucapps.de/midi_router/midi_router_default.gif // note: parameters selectable on the UI are not taken into account here // if this is desired, replace constants by router_flags.* variables as in the original router.c file if( ptype >= 0x08 && ptype <= 0x09 ) { if( (evnt0 & 0x0f) == MIDI_CHN16 ) { if( evnt1 < 0x3c ) { ROUTER_Tx_IIC0(ptype, (evnt0 & 0xf0) | MIDI_CHN9, evnt1, evnt2); transposed_note = evnt1 + 2*12; // if value >= 0x80, decrement 12 until we have reached the range <= 0x7f again while( transposed_note & 0x80 ) transposed_note -= 12; ROUTER_Tx_IIC2(ptype, (evnt0 & 0xf0) | MIDI_CHN1, transposed_note, evnt2); } else { ROUTER_Tx_IIC1(ptype, (evnt0 & 0xf0) | MIDI_CHN13, evnt1, evnt2); } } } // forward data (also) to the Core MIDI OUT #if 1 // if no FE if( evnt0 != 0xfe ) #endif ROUTER_Tx_INT0(ptype, evnt0, evnt1, evnt2); } [/code] Best Regards, Thorsten. Quote Link to comment Share on other sites More sharing options...
troek Posted August 25, 2010 Author Report Share Posted August 25, 2010 Thanks a lot It works great. Thanks 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.