Jump to content

Change MBSID midi channel without control surface, sysex or midi cc options?


natemccoy
 Share

Recommended Posts

Is there a way to change the MIDIBox SID MIDI channel to something else than the default #1 without a control surface interface? i do not have a control surface but if there was some document that would explain how to change the midi channel by using midi cc or sysex commands that would be great. any help is appreciated. thank you.

Link to comment
Share on other sites

So long the SysEx editor is not finished, it only works with direct SysEx accesses, e.g. sent with the SysEx tool of MIDI-Ox

The SysEx parameters are documented here

Changing the MIDI-Channel of SID1, Instrument 1:

F0 00 00 7E 4B 00 06 70 00 10 00 00 F7      for Channel #1

F0 00 00 7E 4B 00 06 70 00 10 01 00 F7      for Channel #2

F0 00 00 7E 4B 00 06 70 00 10 02 00 F7      for Channel #3

F0 00 00 7E 4B 00 06 70 00 10 03 00 F7      for Channel #4

F0 00 00 7E 4B 00 06 70 00 10 04 00 F7      for Channel #5

F0 00 00 7E 4B 00 06 70 00 10 05 00 F7      for Channel #6

F0 00 00 7E 4B 00 06 70 00 10 06 00 F7      for Channel #7

F0 00 00 7E 4B 00 06 70 00 10 07 00 F7      for Channel #8

F0 00 00 7E 4B 00 06 70 00 10 08 00 F7      for Channel #9

F0 00 00 7E 4B 00 06 70 00 10 09 00 F7      for Channel #10

F0 00 00 7E 4B 00 06 70 00 10 0A 00 F7      for Channel #11

F0 00 00 7E 4B 00 06 70 00 10 0B 00 F7      for Channel #12

F0 00 00 7E 4B 00 06 70 00 10 0C 00 F7      for Channel #13

F0 00 00 7E 4B 00 06 70 00 10 0D 00 F7      for Channel #14

F0 00 00 7E 4B 00 06 70 00 10 0E 00 F7      for Channel #15

F0 00 00 7E 4B 00 06 70 00 10 0F 00 F7      for Channel #16

F0 00 00 7E 4B 00 06 70 00 10 00 10 F7      to disable instrument

Best Regards, Thorsten.

Link to comment
Share on other sites

You have to send the SysEx command which matches with the MIDI channel you want to use, e.g. for MIDI Channel 3, send only:

F0 00 00 7E 4B 00 06 70 00 10 02 00 F7

and nothing else - don't send all commands I listed - I hope that you get the point ;)

I assume that you are using the MBSID V2 firmware, for V1 it's different.

If you expect more help, you need to specify some more details, because the method described above works fine at my side, and I doubt that anybody but me can help you on such excotic topics ;)

Best Regards, Thorsten.

Link to comment
Share on other sites

I guess i should be more thorough. ;)

I opened midi-ox and navigated to the sysex console.

i then proceeded to paste only one line of the specific channel i require which happens to be midi channel number six which corresponds to "F0 00 00 7E 4B 00 06 70 00 10 05 00" if i am not mistaken.

i then click send sysex.

On the LCD the Chn # is "1" and does not change...

I proceeded to try and change it again with any other sysex commands on the list you provided.

i choose channel #7 by pasting and sending "F0 00 00 7E 4B 00 06 70 00 10 06 00"

the chan # stayed "1" on the LCD.

I tried both times after sending the commands to play something on that specific channel with an external midi keyboard controller.

they only responeded on channel 1, which seemed the obvious outcome.

i can send and recieve sysex correctly from my boss dr-202, is there any other special settings i may need to configure in midi-ox with this purpose?

Also, i am running mios v1.9f and using the software from the release "midibox_sid_v1_7303c"

if there is any more information i can give that may help i would gladly write it, just let me know.

thank you very much.

Link to comment
Share on other sites

...

I assume that you are using the MBSID V2 firmware, for V1 it's different.

...

...

Also, i am running mios v1.9f and using the software from the release "midibox_sid_v1_7303c"

...

for v1 use (from midibox_sid_sysex_implementation.txt - included in midibox_sid_v1_7303c.zip)

  g) F0 00 00 7E 46 <device-number> 0D 02 00 <channel> F7

      Change the MIDI channel

Link to comment
Share on other sites

oh great, thank you. i will try it ;D

ok the results...

i tried to send the command "F0 00 00 7E 46 00 0D 02 00 05 F7" but it does not change the channel, i assume the default device id is "00" and that "05" is representitive of midi channel 6.

when i send this command it just changes the patch sound a little and not the midi channel.

is there a different default device ID #? ??? ??? ???

Link to comment
Share on other sites

I noticed, that the document is incomplete, because meanwhile we can select the channels of all three oscillators seperately. The change will take place with the next patch change.

Here the update:


   g) F0 00 00 7E 46 <device-number> 0D 02 00 <OSC1 channel> F7
      F0 00 00 7E 46 <device-number> 0D 01 00 <OSC2 channel> F7
      F0 00 00 7E 46 <device-number> 0D 00 00 <OSC3 channel> F7
      Change the MIDI channel
      Value 00 (for Channel #1) .. 0F (for Channel #16) is expected.
      Note that the channels of the oscillators can be changed
      seperately. In normal cases, all channels should be set to the
      same value.

      The values are stored in EEPROM, accordingly there must be
      a delay of at least 5 mS between each SysEx command, otherwise
      data gets lost

      The change will take place with the next Patch selection.
      E.g., you could send a program change (e.g. C0 <patch>) after
      the SysEx commands.

      Example for configuring MIDI channel #16 on SID1:
      F0 00 00 7E 46 00 0D 02 00 0F F7
      F0 00 00 7E 46 00 0D 01 00 0F F7
      F0 00 00 7E 46 00 0D 00 00 0F F7
      C0 00
[/code]

Best Regards, Thorsten.

Link to comment
Share on other sites

Ok so i tried exactly as specified for the three OSC's. here is the command which i sent.

F0 00 00 7E 46 00 0D 02 00 05 F7

F0 00 00 7E 46 00 0D 01 00 05 F7

F0 00 00 7E 46 00 0D 00 00 05 F7

C0 00

it worked great and changed the MIDI channel to #6 just as i wanted but after shutting down the MBSID and restarting, the setting went back to the default of MIDI channel #1.

Is there a command to write the changes to the EEPROM? is that possible?

i would much rather it work on channel #6 by default, if not, i can do other things to make my setup work correctly.

thank you guys so much for all the help.

Link to comment
Share on other sites

The MIDI channels are stored in EEPROM, but there is a sideeffect with the control surface handler.

I assume, that you uploaded "setup_6581.hex" or "setup_8580.hex" instead of "setup_6581_without_cs.hex" or "setup_8580_without_cs.hex"

The CS will load the MIDI channel selections of master and slaves from BankStick, and overrule the previously stored EEPROM settings

Solution: open cs_menu_bank.inc, search for "CS_MENU_BANK_RestoreCfg", and add "        return" below this label

(the spaces are important)


S_MENU_BANK_RestoreCfg
        return
[/code]

Thereafter rebuild the .hex files

Or: upload a precompiled "*_without_cs.hex" variant (this will also disable the LCD, therefore the code modification is maybe the prefered solution)

Best Regards, Thorsten.

Link to comment
Share on other sites

The CS will load the MIDI channel selections of master and slaves from BankStick, and overrule the previously stored EEPROM settings

So if i do not have a bankstick then this option will not work correct? Because i do not have one. I just want to clarify. i will try this once i have a working bankstick. thank you.

Link to comment
Share on other sites

I'm not sure if it depends on the BankStick. :/

Here an approach which should work under all circumstances: instead of hassling with SysEx requests and functions which are overwriting the previously written value, just define the MIDI channel directly in the CS_MENU_BANK_RestoreCfg function, and you are done :)

Code:


S_MENU_BANK_RestoreCfg
        movlw   0x05 ;; for channel 6
        movwf   CS_MENU_SID_M_CHN   ;; used as SID master MIDI channel
        return
;;; rest of original code...
[/code]

Best Regards, Thorsten.

Link to comment
Share on other sites

just define the MIDI channel directly in the CS_MENU_BANK_RestoreCfg function, and you are done :)

Best Regards, Thorsten.

Ok i tried to do this exactly as you said.

I think this is the best idea because it is permanent and i am not worried about changing it again.

but i ran into some problems...

i changed the cs_menu_bank.inc file to say this exactly as you specified

i read the tutorial on http://www.ucapps.de/howto_tools_gpasm.html

i followed the instructions

here is the way the change looked in the "inc" file.

CS_MENU_BANK_RestoreCfg
	movlw   0x05 ;; for channel 6
	movwf   CS_MENU_SID_M_CHN   ;; used as SID master MIDI channel
	return

but when i try to compile the code i get this error via command prompt.

"cs_menu_bank.inc:164:Error [113] Symbol not previously defined (CS_MENU_BANK_)."

is there a place where i have not defined it? what should i do?

i am no programmer but i am quite capable if lead in the right direction.

is the syntax incorrect? i used tab once in the spots with the spaces.

thank you very much.

Link to comment
Share on other sites

Guessing by the original length of 160 lines, and your error at 164, that must be the very end of the file. Does it still look like this:

	return

	clrf	CS_MENU_REINIT_CFG_CTR
	goto	CS_MENU_BANK_RestoreCfg

Note the empty line at the end. You need that. Seems like something's been diced off the end?

Link to comment
Share on other sites

i went over the syntax again and realized it was just missing one letter.

i uploaded the new file and viola! it is on midi channel 6 by default.

the problem now is when i write a patch to the internal memory it does not stay in memory.

when i write a patch i works until i turn it off again. is this due to the syntax of the sysex being sent? do i have to change the patch so that it encompasses the midi channel as well?

thanks, i am so close i can taste it! i really really am grateful!

Link to comment
Share on other sites

the problem now is when i write a patch to the internal memory it does not stay in memory.

Actually i was wrong. the patch does stay in memory on power off but the name of the patch does not. it reverts back to the default name which is <new patch> or something like that...

here is the code from "cs_menu_bank.inc" of "midibox_sid_v1_7303c"

;; --------------------------------------------------------------------------
;;  Restore channel and patch numbers from BankStick
;;  (called after startup and BankStick exchange)
;; --------------------------------------------------------------------------
CS_MENU_BANK_RestoreCfg
	movlw	0x05
	movwf	CS_MENU_SID_M_CHN
	return
	clrf	CS_MENU_SID
CS_MENU_BANK_RestoreCfg_Loop
	BRA_IFCLR SID_BANKSTICK_STATUS, 0, ACCESS, CS_MENU_BANK_RestoreCfg_LoopNoBS

	;; select first BankStick, verify off
	movlw	0x80
	call	MIOS_BANKSTICK_CtrlSet
;; rest of original code etc etc etc...

even if the patch name doesnt stay i dont really care. just as long as it works on midi channel 6 or higher by default. so this is great! i got exactly what i needed. ive been making some new sounds and am really happy with the results. thanks everyone!  :) ;) :D ;D :) ;) :D ;D

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...
 Share

×
×
  • Create New...