Public projects 1

Arduino MIDI Stepper Synth

Project tutorial by Jonathan Kayne

  • 13,268 views
  • 12 comments
  • 47 respects

Toolbox 1


Replicated projects 0

 Jonathan Kayne hasn't replicated any projects yet.

Respected projects 0

 Jonathan Kayne hasn't respected any projects yet.
  • Arduino MIDI Stepper Synth 3 months ago

    Glad to hear that it's working!
    Yes, I do believe 12V 20A would be sufficient to drive 10 stepper motors. I assume that each motor draws 1.5A. They probably draw less since they don't have any load on then, but better to have more current than not enough...

  • Arduino MIDI Stepper Synth 3 months ago

    So to answer your questions:
    1. MIDI Performance supports up to 127 channels if I am not mistaken. If you look at the code, all you need to do is define the appropriate IO (#define stepPin # and pinMode(stepPin, OUTPUT); ) the array size, and call singleStep in the main loop.
    Let's say you want to have 10 stepper motors, The code would look like this:
    #define stepPin_M1 2
    #define stepPin_M2 3
    .....
    #define stepPin_M10 11

    unsigned long motorSpeeds[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //eleven zeros
    unsigned long prevStepMicros[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};

    pinMode(stepPin_M1, OUTPUT);
    ...
    pinMode(stepPin_M10, OUTPUT);

    singleStep(1, stepPin_M1);
    ....
    singleStep(10, stepPin_M10);

    Hope that helps with that.

    1. Unfortunately, as soon as a motor turns, the drivers are enabled and current is supplied, even when in idle. I usually press the reset button on the arduino as soon as I am done playing a song or when the motors are in idle for long periods on time.
      You might want to ensure that your current is set correctly on the driver. For me, I set VREF to 0.65V. You do this by measuring the voltage between ground and the SMD Pot on the A4988. Use an alligator clip to connect your multimeter probe to a screwdriver.
      I will note that these stepper motors can usually handle higher temperatures than "hot to the touch". They can handle temps above 100C, so you don't have to worry unless you are being burnt by your stepper motors.
      It should be noted that you should NEVER run a stepper driver without a motor attached, as it can damage the driver.
      All this being said, I was actually planning on adding a timeout to the motors so that they disable after being idle for a certain period of time. That is a challenge within itself, but I might figure it out and add to V2.

    2. I added a folder on GitHub called MIDI files, where I will add the MIDI to all the songs I feature. I create these in a program called "MuseScore 2" (free and open source) then import the MIDI file into Ableton Live 9 and assign each voice to its own MIDI channel.

    Hope that helps!

  • Arduino MIDI Stepper Synth 3 months ago

    The speed that the stepper is tuned to shouldn't be motor specific. If you use tone(stepPin, 440) you should get an A440 note. What I am essentially saying is that the pitch values in pitches.h are the note periods in microseconds.

    Try using a number from the pitches.h file.
    Also, you could run the MIDI Serial Test (Serial_Stepper.ino) and see if that produces a sound. The difference between the TuneStepper and SerialStepper is that one takes a speed and the other takes the actual MIDI note.

    So Speed value 2273 should give you an A4 (440 Hz), MIDI note 69.
    I also found that my pitches.h was an outdated version in the test code, so I have updated it on the GitHub.

Add projectSign up / Login