Offline
4444

y0 //

i built arduino boy for synching (LSDj master sync)  my gameboy with roland mc-303
for some time it worked perfectly .. now it sends WIERD MIDI NOTE messages to groovebox and it plays low notes randomly -- same when trying to sync with yamaha qy70 // but midi clock is in sync and working

maybe someone had problem like this already ?

Offline
4444

Offline

I did notice that the arduinoboy does send some random notes and program changes every now and then if it's in midi-out mode. Haven't had that problem with master sync tho.

It seems to work best when the batteries of my DMG are completely full. Somehow that generates less errors.

Other than that, I'm surprised that it even sends note data in mastersync mode. Shouldnt do that...

Offline
4444

oh im running dmg from wall adapter , maybe i should try to run it with batteries //
the signals it sends is not actually normal midi notes - - -but sum really weird low arps or something ; D i call them acid farts haha

++ another weird thing is that arduinoboy only works propertly when powered from USB -- if i power it from AC adapter the synch goes offbeat after first beats


dafuq ? maybe i should reinstall firmware ?

Offline
Los Angeles

No. Arduinoboy sends a note # that corresponds to the row # you started on when the clock starts (when you hit start) on MIDI channel 16. I should of had that as a option and not always on, for dumb devices that respond to all MIDI channels. You can comment out that code or remove that code, it's 3 lines in the "Mode_LSDJ_MasterSync" tab when you open up the arduinoboy code in the arduino software. At the bottom of the file you'll see this:

 /*
  sendMidiClockSlaveFromLSDJ waits for 8 clock bits from LSDJ,
  sends the transport start command if sequencer hasnt started yet,
  sends the midi clock tick, and sends a note value that corrisponds to
  LSDJ's row number on start (LSDJ only sends this once when it starts)
 */
void sendMidiClockSlaveFromLSDJ()
{
  if(!countGbClockTicks) {      //If we hit 8 bits
    if(!sequencerStarted) {         //If the sequencer hasnt started
      Serial.write((0x90+memory[MEM_LSDJMASTER_MIDI_CH])); //Send the midi channel byte
      Serial.write(readGbSerialIn);                //Send the row value as a note
      Serial.write(0x7F);                          //Send a velocity 127
      
      Serial.write(0xFA);     //send MIDI transport start message 
      sequencerStart();             //call the global sequencer start function
    }
    Serial.write(0xF8);       //Send the MIDI Clock Tick
    
    countGbClockTicks=0;            //Reset the bit counter
    readGbSerialIn = 0x00;                //Reset our serial read value
    
    updateVisualSync();
  }
  countGbClockTicks++;              //Increment the bit counter
 if(countGbClockTicks==8) countGbClockTicks=0; 
}

change it to this:

 /*
  sendMidiClockSlaveFromLSDJ waits for 8 clock bits from LSDJ,
  sends the transport start command if sequencer hasnt started yet,
  sends the midi clock tick, and sends a note value that corrisponds to
  LSDJ's row number on start (LSDJ only sends this once when it starts)
 */
void sendMidiClockSlaveFromLSDJ()
{
  if(!countGbClockTicks) {      //If we hit 8 bits
    if(!sequencerStarted) {         //If the sequencer hasnt started
      Serial.write(0xFA);     //send MIDI transport start message 
      sequencerStart();             //call the global sequencer start function
    }
    Serial.write(0xF8);       //Send the MIDI Clock Tick
    
    countGbClockTicks=0;            //Reset the bit counter
    readGbSerialIn = 0x00;                //Reset our serial read value
    
    updateVisualSync();
  }
  countGbClockTicks++;              //Increment the bit counter
 if(countGbClockTicks==8) countGbClockTicks=0; 
}

As far as battery vs usb vs wallwart, that shouldn't matter, as long as the battery or wallwart is supplying enough power.

Offline
4444

IT WORK$ !!1 A W E S O M E ! ! ! 

THANK YOU MA$TER !  :  )

Last edited by KODEK (Mar 30, 2012 9:39 pm)