FC300 Patchname editor for Mac

Started by sixeight, October 06, 2013, 08:11:10 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

sixeight

Today I wrote a script to enter patch names from my Mac to the FC-300 in patch mode.
It will only work on Mac, as it makes use of midipipe and applescript.

Here is how to works:
1) Download midipipe (Check https://www.vguitarforums.com/smf/index.php?topic=1175.0 for more details)
2) Load Control FC300.mipi into midipipe (unzip the attached file to find it)
3) Connect the VG99 through USB to the Mac. FC300 is connected to the VG99 through RRC.
4) Check MIDI routing according to the attached image (unzip the attached file to find it)
5) Start the FC300 patch namer script and run it. Doubleclicking the script will load Applescript Editor
6) Set the FC300 mode to patch.
7) Now enter a name in the script and press enter. The name should appear on the FC300.
8) Press Write three times on the FC300 to save the name.

Finally I can quickly enter my patchnames in patch mode.

Elantric

Thanks for creating this excellent utility for FC300 users.

sixeight

This utility also works without the VG99. Connect the FC300 via an USB to midi interface, load Control FC300.mipi in midipipe and change the Midi Output to your midi interface.

drbill

GP-10, KPA
BM i2.13p, '76 Les Paul Deluxe w/GK-3, MiM RRS, Ibanez RG420GK, Charvel strat copy w/GK-2a, FTP

sixeight

Here is an alternative FC300 patch rename utility, which should work on windows too (but I have not tested it.)
This one is programmed in ctrlr. See http://ctrlr.org/ for the package in which you can open the attached panel.

gumtown

I'm working on something stand alone for the FC-300, finding the midi implementation a bit confusing though,
 how there are two sections "1E" an "20" where the FC-300 is logically two different devices.
Free "GR-55 FloorBoard" editor software from https://sourceforge.net/projects/grfloorboard/

teejay

Quote from: gumtown on May 27, 2023, 05:29:43 PMI'm working on something stand alone for the FC-300, finding the midi implementation a bit confusing though,
 how there are two sections "1E" an "20" where the FC-300 is logically two different devices.

Already think you're a hero......
Pull this off and you'll become a superduperhero !! 😂🎶🎸
Custom KGB headless, internal GK2a and sustainiac stealth plus. GR55 straight into PA.   Guitar out (COSM) feeding digitech VL4 vocal harmoniser.

sixeight

#7
Quote from: gumtown on May 27, 2023, 05:29:43 PMI'm working on something stand alone for the FC-300, finding the midi implementation a bit confusing though,
 how there are two sections "1E" an "20" where the FC-300 is logically two different devices.

There is a seperate sysex protocol for communication with the VG99/VB99/GTpro in sysex mode. There is some handshake going on between VG99 and FC300, that I have never understood, but it needs to be done in order to simulate the FC300.

FLASHMEM void MD_VG99_class::check_SYSEX_in_fc300(const unsigned char* sxdata, short unsigned int sxlength) { // Check incoming sysex messages from VG99/FC300. Called from MIDI:OnSysEx/OnSerialSysEx

  // Check if it is a message from a VG-99 in FC300 mode.
  if ((sxdata[1] == 0x41) && (sxdata[3] == 0x00) && (sxdata[4] == 0x00) && (sxdata[5] == 0x20)) {
    uint16_t address = (sxdata[7] << 8) + sxdata[8]; // Make the address 16 bit

    // Check if it is a data request - here we have to fool the VG99 into believing there is an FC300 attached
    // I found the numbers by packet sniffing the communication between the two devices. The addresses are not mentioned in the FC300 manual.

    if (sxdata[6] == 0x11) {
      if (address == 0x0000) { // Request for address 0x0000
        //        VG99_FC300_mode = true; //We are in FC300 mode!!!
        write_sysexfc(0x0000, 0x01, 0x00, 0x00); // Answer with three numbers - 01 00 00
        DEBUGMSG("VG99 request for address 0x0000 answered");
      }
      if (address == 0x0400) { // Request for address 0x0400
        //write_sysexfc(0x0400, 0x03); // Answer with one number - 03
        DEBUGMSG("VG99 request for address 0x0400 answered");
      }
      if (address == 0x0600) { // Request for address 0x0600
        write_sysexfc(0x0600, 0x10, 0x02, 0x08); // Answer with three numbers - 10 02 08
        DEBUGMSG("VG99 request for address 0x0600 answered");
        fix_reverse_pedals();
      }
    }
  }
}