Jump to content

Recommended Posts

Posted

Hi,

I have a Fostex G16S Tape Recorder, wich is a quite nice machine, I think, but it has one big problem:

it dosn't understand MMC command, only the old Fostex Sysex commands.

The newest sequencer software I know that sends these is Logic 5, wich is obviously not the most up to date version.

After days of searching on the net I managed to find the an implementation chart for the most basic Fostex commands and now I want to write an application, that reads MMC and outputs the Fostex commands to my G16S.

I'd appreciate if someone could help me, as I'm not the toughest in writing C.

Regards, Florian

Posted

Best would be the application. ;D

i would be like the cc to nprn conversion, I think.

what I want to do:

for example, the sequencer sends a MMC play command [tt]F0 7F 7F 06 02 F7[/tt] and I want it have converted to a Fostex play command [tt]F0 51 7F 11 15 F7[/tt]

Posted

Do you think I am on the right way with this beginning:

[tt]void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2, unsigned char evnt3, unsigned char evnt4, unsigned char evnt5) __wparam

{

if(evnt0 == 0xF0 & evnt1 == 0x7F) //Only if SysEx & MMC

{

  evnt1 = 0x51; //Conversion MMC to Fostex

  evnt2 = 0x7F;

  evnt3 = 0x11;

 

  if(evnt4 != 0x44) //NOT Goto-Message

  {

    switch(evnt4)

{

  case 0x01: evnt4 = 0x12; //Stop

  case 0x02: evnt4 = 0x15; //Play

  case 0x04: evnt4 = 0x19; //FFW

  case 0x05: evnt4 = 0x1A; //REW

}

  }

 

  else //Goto-Message

  {

    evnt3 = 0x12;

evnt4 = 0x18;

evnt5 = 0x42;

  MIOS_MIDI_TxBufferPut(evnt0);

  MIOS_MIDI_TxBufferPut(evnt1);

  MIOS_MIDI_TxBufferPut(evnt2);

  MIOS_MIDI_TxBufferPut(evnt3);

  MIOS_MIDI_TxBufferPut(evnt4);

  MIOS_MIDI_TxBufferPut(evnt5);

}[/tt]

Posted

Well yes and no... The thing is that NotifyReceivedEvnt only has three bytes, not 6... Because sysex strings can be different lengths, it's not practical to have a function to handle them in such a way.

What this means is that you need to monitor every byte with NotifyReceivedByte, and if you get F0, you know a sysex string is beginning, and you can monitor the following bytes; until you get F7, and you know the sysex has ended. The bytes in the middle can be handled in different ways according to your needs, similarly to what you have posted above.

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