Share this project

Done

Share this project

Done
Photo original
AvecSynth is an Arduino form-factor MIDI synthesizer that can be for embedded projects OR as a stand-alone MIDI music synthesizer.
Created by

Keith Williams

81 backers pledged $5,080 to help bring this project to life.

Recent updates

Follow-up on earlier information

I've had a chance to go back and look through the backlog of postings that people have made.  I really appreciate the way some of you have stepped up to help others. 

At this point, it is not clear to me who still has issues and who continues to struggle to bring the units up.

Can I ask that anyone who is still having issues to please re-message me directly or as a response to this post?  This would greatly improve my helping those ASAP that continue to have problems.

-Keith

Hopefully Helpful information

I hope that at this point most of you have received your boards.  The following should help with regards to some of the issues that I've seen a couple of you message about.  I am trying to go back through and clear my inbox to answer each of you directly....my travel schedule has put me several thousand emails behind, but I will get back with you.

First, the boards have all been QC'd multiple times.  Every time we had a failure not seen before, we went back and re-QC'd the entire lot to make sure that failure mode was not seen again. 

Toward the bottom of this update, there is some Arduino code that plays a chromatic scale.  This is the exact code that was used for a portion of the QC, so it was known to work as written with the synth board.

Next, there are three main reasons why the board may not make sound.  First, the RESET and POWER_DOWN lines are both tied to Port Pins and must be driven high.  If you are using the board in a stand alone fashion, these pins still need to be pulled high.  You can see in the copied arduino code where those are driven high, just inside the main loop. 

Second, J1 and J2 need to be in the correct orientation for playback.  J1 needs to stay as shipped (closest two pins toward the MIDI connector).  J2 should be in either Arduino mode (toward P1 on the Arduino interface) or MIDI mode (toward the MIDI connector and in-line with the J1 connector).  The only time J1 would change is if you wanted to route the MIDI input through to the Arduino interface to 'capture' MIDI commands.

Finally, if you are using MIDI input, your MIDI source must be configured properly.  I have used both Finale (you can download an evaluation copy) and also MuseScore to drive the board from a PC and MIDI files.  Finale worked out-of-the-box.  MuseScore required a second MIDI mapper program (I used Jack)...this was a bit messy and always seemed to take some playing around with to get it to work.  Additionally, Finale seemed to be much better at automatically mapping the sounds to the correct channels.  MuseScore never seemed to sound right because of the mis-mapping of sounds.

I have seen a couple of questions regarding J3 and J4.  With no jumper installed the unit defaults to its lowest noise setting.  These jumpers feed the Dither inputs on the chip.  This is a random noise generator that make sure that the DAC output of the synthesizer does not alias and generate unwanted waveforms.  Based on the settings of J3 and J4, the level of this 'noise' is controlled.  You can reduce the chance of aliasing by increasing the level of the noise, but at a cost to SNR, etc.  I would refer you to the chip's datasheet for further information.

Here is the Arduino code snippet:

/*
MIDI note player

This sketch shows how to use the serial transmit pin (pin 1) to send MIDI note data.
If this circuit is connected to a MIDI synth, it will play
the notes F#-0 (0x1E) to F#-5 (0x5A) in sequence.


The circuit:
* digital in 1 connected to MIDI jack pin 5
* MIDI jack pin 2 connected to ground
* MIDI jack pin 4 connected to +5V through 220-ohm resistor
Attach a MIDI cable to the jack, then to a MIDI synth, and play music.

created 13 Jun 2006
modified 2 Jul 2009
by Tom Igoe

This example code is in the public domain.

http://www.arduino.cc/en/Tutorial/MIDI

*/

void setup() {
// Set MIDI baud rate:
Serial.begin(31250);
}

void loop() {
// play notes from F#-0 (0x1E) to F#-5 (0x5A):
digitalWrite(2, HIGH);
digitalWrite(4,HIGH);
PCSend(0, 0x01);
PCSend(1, 0x05);
PCSend(2, 0x10);
PCSend(3, 0x25);
for (int note = 0x1E; note < 0x5A; note ++) {
//Note on channel 1 (0x90), some note value (note), middle velocity (0x45):
noteOn(0x90, note, 0x45);
noteOn(0x91, note+4, 0x45);
noteOn(0x92, note, 0x45);
noteOn(0x93, note+4, 0x45);
delay(100);
//Note on channel 1 (0x90), some note value (note), silent velocity (0x00):
noteOn(0x90, note, 0x00);
noteOn(0x91, note+4, 0x00);
noteOn(0x92, note, 0x00);
noteOn(0x93, note+4, 0x00);
delay(100);
}
}

// plays a MIDI note. Doesn't check to see that
// cmd is greater than 127, or that data values are less than 127:
void noteOn(int cmd, int pitch, int velocity) {
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);
}

void PCSend( int cmd, int sound){
Serial.write(0xc0+cmd);
Serial.write(sound);
}

Some units shipping tomorrow and follow-on schedule.

0 Comments

For backers only. If you're a backer of this project, please log in to read this post.

Close-up Board pics to help with kit users

Here are some close-up pics to help those of you still assembling the units. 

This particular board does not have the reverse polarity diode mounted by the optocoupler.  The stripe on the diode should be on the end tied to pin one of the optocoupler (also next to and attached to resistor R1).

I hope these are helpful.

-Keith

  • Image 112942 original
  • Image 112943 original
  • Image 112944 original

Quick build progress

1 Comment

For backers only. If you're a backer of this project, please log in to read this post.