YAAMI-DRUM, a 52 analog inputs trigger-to-midi drummachine

Hi,
it's not really new... A project to build another midi drumset, with some special features. New is that it is open source.

  • Optical hihat -> infrared sensor: Can produce up to 10 different HiHat Sounds.
  • save hihat calibration values to eeprom.
  • 48 analog inputs to connect piezos or other analog sensors to the arduino.
  • midi in
  • midi out
  • cymbal choke

You can find explanations and some vids here -> Arduino midi e-drum | Künstliche Intelligenz, 3D-Druck, Open Source und Linux .
Get the source code on sourceforge -> YAAMIDRUM download | SourceForge.net
If you are interested in building this project yourself I'll post some instructions on how to do that.

Great drum !!!

I dislike shields (love to build stuff my self), but it certainly gave me more info on building a "silent" drum one day !
Which day ? I unfortunately don't know yet, too busy with other projects.

I'd love to play more though and... tease my neighbours as little as possible, so this is one for the bookmarks !

Thanks,
I know that most of the arduino developers don't like shields.
Here's a link for building one on a breadboard or soldering it together yourself -> Arduino Multiplexing Example 1 | Miu Ling Lam

This is only one of many examples you'll find if you'll ask your favorite search engine.

For people who have problems with the midi-to-serial things: Please have a look at this -> http://arduino.cc/blog/2011/04/01/hiduino-arduino-talking-midi/
It could improve performance, but I didn't try it out.

AHAHAHAHAHAHAHHAHAHAHAH! That is soooooooOOOOOO cooool!

This is what i was working on lately. But i was trying to integrate few assignment button (up/down/left/right).

I am new to the arduino world and my son and I are learning everydays. I found several drum recipe but never that close to what i was looking for.

Is there an efficient schematic available somewhere, and a part list? If not, i'll start working on it and maybe a PDF with the PCB.

Let me know!!!

ThanX

Eric

Hi,

there's a new version which is compatible to Arduino IDE 1.0 and the recent Pololu lib -> Pololu - Arduino Library for the Pololu QTR Reflectance Sensors . You can download it here->

Have fun!

Hi,

This looks very fun but for the life of me I can't get any midi output over the TX pin into my pc nor with TTYMIDI in ubuntu or windows.

I have an Arduino Uno rev3 and the Mayhew MUX shield using Arduino IDE 1.0 and your latest YAAMI 1.2.

Serial monitor shows some random characters and nothing registers when I smash on a piezo.

Any help would be lovely!

Thanks :smiley:

Hi johnnypig.

Using TTYMIDI requires to change the baudrate from 31250 to 115200. Then start TTYMIDI with a line like this ->

ttymidi -s /dev/ttyACM0 -b 115200 -n yaamidrum -v

Change the tty device to what your os uses in /dev (maybe /dev/ttyUSB0).

For debugging you have to alter some lines of the .ino code like this

Change

//Serial.begin(9600);                                   // connect to the serial port 9600 (for debug)
//Serial.begin(57600);                                  // connect to the serial port 57600
Serial.begin(31250);                                 // connect to the serial port (31250) //midi standard
//Serial.begin(115200);                                   // connect to the serial port 115200

to

Serial.begin(9600);                                   // connect to the serial port 9600 (for debug)
//Serial.begin(57600);                                  // connect to the serial port 57600
//Serial.begin(31250);                                 // connect to the serial port (31250) //midi standard
//Serial.begin(115200);                                   // connect to the serial port 115200

and

void MIDI_TX(unsigned char MESSAGE, unsigned char PITCH, unsigned char VELOCITY) 
{
  status = MESSAGE + midichannel;
  Serial.write(status);
  Serial.write(PITCH);
  Serial.write(VELOCITY);
}

to

void MIDI_TX(unsigned char MESSAGE, unsigned char PITCH, unsigned char VELOCITY) 
{
  status = MESSAGE + midichannel;
  Serial.write(" Status=");
  Serial.print(status,DEC);
  Serial.write(" Pitch=");
  Serial.print(PITCH,DEC);
  Serial.write(" Velocity=");
  Serial.print(VELOCITY,DEC);
}

Make shure that the baud rate in the serial monitor window of the arduino ide is set to 9600.

How did you connect your piezos to the shield? It is important that you have to connect ALL inputs of the shield to piezos or you have to bridge the free inputs. You can simply use a small wire to connect the inner and outer inputs (not the middle) of the shield if there is no piezo connected to it. Otherwise it won't work.

Now it should work and hitting a piezo should result in various numbers in the serial monitor window. Please let me know the result cause I don't actually have the possibility to test the code on an Arduino Uno rev3.

Feel free to insert a switch in the code that decides if u debug or write the midi notes to serial out.

Thanks.

Thanks for your reply. I do have all the pins grounded and my piezo is on pin0 of the shield. I tried other inputs at random but there's no output except occasionally it will say something like this: "Status=144 Pitch=42 Velocity=70 Status=128 Pitch=42 Velocity=127" but not in response to hitting the piezo. That's using your debug MIDI message code at 9600 baud.

It's strange and maybe Uno Rev3 doesn't like the Mayhew MUX shield, although it does work with the analog in test code from their site.

I'll order a Duemilanove to play with next week and try it out again.

Hi johnnypig,

I'll order a Duemilanove to play with next week and try it out again.

I wouldn't do that. There must be something wrong with your hardware setup.
How is the piezo connected to your shield exactly? Can you give some information about your Setup, Arduino Ide, OS, Midi etc.?

Thanks.

I'm connecting the piezo with a 1meg resistor between output and ground to pin0 on the shield.

My pc is an i7 running win7 (my laptop runs ubuntu), Arduino IDE 1.0 but I've also tried IDE 0.0022 to test YAAMI 1.1.

For MIDI I've tested using TTYmidi on my laptop with YAAMI at 115200 baud, and Hairless serial to midi on win7. I've also tried my RME 9652 midi input with a cable from the Arduino TX output at 32500 baud.

Testing other projects like the Sparkfun midi drum without the MUX shield went fine and I also tested some homemade pressure sensors using Processing without any problems.

I can run the Mayhew MUX analog input example code with the shield and get some response from the piezos as well.

Not quite sure what I'm doing wrong but I am an Arduino noob though I'm still having fun :smiley:

Thanks for your help!

-robo

Hi Guys, sorry to butt in.

I've got two piezos hooked up directly to an arduino, with no mux shield, and no other sensors. Could someone advise how to just take the code necessary to process the hits from these and send the midi out? There's alot of other things going on in that sketch and it's confusing me!

Thanks

Hi,

you are the 2 first one's who posted about problems with the sketch.

To start learning something about the early beginnings of that sketch take a look at ->

For further understanding please read EVERYTHING of that sketch (especially hints about other sources mentioned inside the sketch).
Please try to find out which pins belong to piezos and which pin belongs to e.g. the pololu infrared sensor (pin0). You can do so by reading the source carefully.
The sketch is not a "plug'nplay" solution. You should know what you are doing.

If you have any problems related to the code PLEASE DON'T POST here but here->

Have fun.

hi there, did anyone actually get a working schematic at all, as the mix shield has a lot of inputs, i can't tell just from the code which pins to connect everything too.

any help would be great.

many thanks

marc

please. help us by posting your schematics and other details. thank you so much. :slight_smile:

SERVE THIS SCHEME IN WINDOWS? :roll_eyes:

Has anyone made progress getting this script to work with the analog pins instead of the mux? As mrboni talked about above, I too am interested in this and have been editing on the code with no success yet. Are there any experts that could chime in on the approach to this?