Jump to content

Midi router


troek

Recommended Posts

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 by troek
Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...