The No.1 Website for Pro Audio
 Search This Thread  Search This Forum  Search Reviews  Search Gear Database  Search Synths for sale  Search Gearslutz Go Advanced
My Arduino Step Sequencer, Arpeggiator, Recorder, MIDI Gauge, and Control Surface Modular Synthesizers
Old 26th October 2016
  #1
Lives for gear
My Arduino Step Sequencer, Arpeggiator, Recorder, MIDI Gauge, and Control Surface

Edit

The Website is up!

http://cs.gmu.edu/~sean/projects/gizmo/

Includes a manual, all the code and instructions, and one demo video (I'll make a few more).

Original Message

I am nearing completion (coding is done, debugging is ongoing) of an open-source general-purpose MIDI utility device which just barely fits in an Arduino Uno. It's packed with a bunch of applications that I thought would be fun to build, and it's designed to be moderately easy to develop more. The project uses an Arduino Uno or Mega 2560, a SparkFun MIDI Shield, and an Adafruit 16x8 1.2" LED matrix, plus two optional Adafruit DAC boards and heavy reliance on the FortySevenEffects Arduino MIDI Library. The device has:
  • A full-featured Arpeggiator, with up/down/up-down/random plus ten user-defined arpeggios, each up to 32 notes long, with up to 15 unique notes plus rests. Arpeggios are edited by the user on the device and stored in Flash memory. You can specify latching behavior, degree of swing, note length, the root note, MIDI in and out, tempo, and note value (from 1/24 of a quarter note clear to double whole notes). Arpeggios are displayed on-screen.
  • A pretty decent Step Sequencer, which can do 12 track 16-note sequences, or 8-track 24-note, or 6 track 32-note. Each note can have a unique MIDI pitch and velocity, or be a rest or a continuation ("keep playing the previous note"). Each track can specify a default velocity, MIDI out, mute, and 16-level fader. A full sequence has MIDI in, default MIDI out, degree of swing, note length, tempo, and note value. Tracks are displayed and edited on-screen and played in real time. Editing can be done note-by-note or by setting different steps individually. You can store up to 2 sequences in Flash on the Uno (in addition to the arpeggios) or 10 sequences on the Mega.
  • A little Note Recording Sequencer, which can record, store, and play back up to 64 notes (pitch, velocity, and any length quantized 1/24 of a quarter note) spread out over 21 measures. It's not a lot but enough to do a little ditty. I plan to offer repeating sequences and coarser quantization, which shouldn't be tough. The sequencer has MIDI In and Out. You can store up to two recordings on the Uno or 10 on the Mega. I might set up things later so that you can record significantly longer sequences on the Mega.
  • A MIDI Gauge, which will display information on every incoming MIDI command. You can specify MIDI In, including Omni.
  • A mini Control Surface, which lets you assign two pots and two buttons to any NRPN, RPN, CC, or PC message on any MIDI out channel.
  • An area for MIDI Utilities. I've built one so far: a utility to convert NRPN signals to SysEx commands to control my old Kawai K4, which has no NRPN, nor can easily be set up via SysEx for control from (say), a Novation SL. Thinking about another one for my Matrix 1000.
  • Voltage Output via MIDI notes. An outgoing MIDI note (up to 5 octave range) can also produce a 0-5V voltage output on two different (optional) I2C-based DACs, one for pitch and the other for velocity or mod-wheel (hmmm, or maybe pressure?) I thought this might be useful for the early Moog or Arpers among us.
  • Various Other Stuff: bypass mode, sync to external MIDI clock, MIDI clock generation, and full NRPN remote control of the device.

Did I mention that all of this fits, just barely, into 32K of code space, 2K of static RAM, and 1K of Flash? (More is available on the Mega if you want to extend it). All told about 10,000 lines of code, not including the MIDI library and Arduino support libraries.

Obviously this is a little gadget, but I've been casting about for other Arduino-based step sequencers, arpeggiators, and general MIDI devices, and haven't found much with this level of complexity. I'll be releasing source code fairly soon when I have it somewhat debugged, and then promptly leaving for Italy for six months and be completely unavailable to debug and do further testing. :-) I was hoping someone might be interested in it.

Also, I'm looking for a name for this thing. Its codename is Gizmo. Suggestions?
Old 26th October 2016
  #2
Gear Head
 

Nice work. You're right. There are a few Arduino based sequencers about but nothing as feature packed. I'm in the beginning stages of designing my OP-1 a-like ($1000 worth of kit if much easier to sneak into the house if it comes in $10 packets) and this could give me a leg up. My plan is to end up with a portable, battery powered, playable device with a more "live" style sequencer incorporated. Kinda like a MidiRex but with editing capabilities.

As usual along the way I'll scope creep to include Arp's and lots of other things that look good on paper but has to be coded in.

Why Uno and not Teensy? Lots more oomph in the new Teensy 3.6's
Old 26th October 2016
  #3
Lives for gear
Quote:
Originally Posted by mongrol View Post
Why Uno and not Teensy? Lots more oomph in the new Teensy 3.6's
(1) Got lots of arduinos lying around. (2) Teensy is 3.3v. (3) No off-the-shelf pluggable MIDI hardware solutions for the Teensy, making it much tougher for Joe Average to deploy my code. Similarly the Arduino Due is lots faster but it's 3.3v.
Old 26th October 2016
  #4
Gear Head
 
pluto_ro's Avatar
 

Very nice

Can you port all the apps from Midibud (Midipal):

https://midisizer.com/other/midibud/

Will be great to have all those midi utilitaries in the same time, like random, harmony, midi filters, midi merger, midi routers etc all being multichannel (in the same time on different midi channels).

Thanks
Old 26th October 2016
  #5
Gear Addict
That's awesome and interesting. I don't know much about these types of boards yet. There is also Raspberry Pi and Axoloti, so I wonder why you chose Arduino. Was it because the MIDI interface board was available?. RPi has way more power and memory. Axoloti has MIDI and audio built in but I presume isn't nearly as popular.
I wonder if RPi is not only overkill but may be too much bloat for a MIDI application were you want low latency and good timing. Also, I don't know if there is any ready-made MIDI interface for it.
Old 26th October 2016
  #6
Lives for gear
Quote:
Originally Posted by pluto_ro View Post
Can you port all the apps from Midibud (Midipal):
No; they're completely different platforms. But I can steal a few ideas, like velocity modulation on the arpeggiator. The Midibud sequencer is pretty weird, it's hard to see what its purpose is, but it certainly could be reproduced, and my recorder does similar things (though to get to 300 notes like on the Midibud, you'd need an Arduino Mega).

Quote:
Will be great to have all those midi utilitaries in the same time, like random, harmony, midi filters, midi merger, midi routers etc all being multichannel (in the same time on different midi channels).
I don't see any information on the utilities at all. Could you be more specific?

Edit I see them. Most of the utilities would all be very simple to add: but I'm not sure I have space if I want to stay on an Uno [or time before I head to Italy]
Old 26th October 2016
  #7
Gear Maniac
 
gjvti's Avatar
 

No name suggestions at this point, but just curious, can Arduino platform handle much more advanced thing of this type - full scale live midi processor?
Old 26th October 2016
  #8
Lives for gear
 
Rusty_OHara's Avatar
 

Interesting / Following / Need more coffee
Old 26th October 2016
  #9
Gear Addict
 

Following
Old 26th October 2016
  #10
Gear Maniac
wow. id love to see the final result. video + pics please

good luck tho
Old 26th October 2016
  #11
Lives for gear
So looking at the various loadable applications on the midipal. Ignoring the Arpeggiator, the Sequencers, the Monitor, and the CC Knob / Controller, which of the remaining applications would you find the most helpful? Give me your top five. I have a very small amount of remaining memory on the Uno (like 1K) but could maybe cram in two or three little guys. Other apps would have to go on a Mega (and wait until I come back in many moons).
Old 26th October 2016
  #12
Gear Addict
 

what you gonna do in Italy?
Old 26th October 2016
  #13
Gear Maniac
 

Very interesting project!
Do you plan to add support for the elicktronics awesome shields?
Arduino midi controller DIY sequencer - e-licktronic

Quote:
Originally Posted by feijai View Post
The Midibud sequencer is pretty weird
Peter has made the sourcecode of his MidiGAL various firmwares public:
https://midisizer.com/2016/10/23/mid...q-source-code/
I just love this thing to clock my gear.
https://midisizer.com/midigal/
Old 26th October 2016
  #14
Lives for gear
Quote:
Originally Posted by Alex.G View Post
what you gonna do in Italy?
I'm a computer science and robotics professor, and will be on sabbatical. Probably without my MIDI gear so the project will be in haitus. Hence I'm rushing to get the project out now.

Quote:
Originally Posted by Poumtschak View Post
Very interesting project!
Do you plan to add support for the elicktronics awesome shields?
Those *are* awesome. But I don't have any so at present, no. But it should be pretty trivial to modify the code to support them though.
Old 27th October 2016
  #15
Gear Nut
 
timespy's Avatar
Quote:
Originally Posted by feijai View Post
So looking at the various loadable applications on the midipal. Ignoring the Arpeggiator, the Sequencers, the Monitor, and the CC Knob / Controller, which of the remaining applications would you find the most helpful? Give me your top five. I have a very small amount of remaining memory on the Uno (like 1K) but could maybe cram in two or three little guys. Other apps would have to go on a Mega (and wait until I come back in many moons).
What I use my midipal for the most is simply as a
MIDI clock generator to send clock to multiple sequencers all in sync. That doesn't look like it would take a lot of memory although the midipal version has some fun twists like adding groove and swing. One limitation of the midipal is that (in accordance with the midi spec but sadly not with my needs) it can't send midi clock out without first sending a START signal.
Old 27th October 2016
  #16
Wow, amazing work! Really looking forward to seeing what Gizmo can do!
Old 27th October 2016
  #17
RiF
Lives for gear
 
RiF's Avatar
Following...
Old 2nd November 2016
  #18
Lives for gear
Quote:
Originally Posted by minorguy View Post
There is also Raspberry Pi and Axoloti, so I wonder why you chose Arduino. Was it because the MIDI interface board was available?.
Well, Axoloti has a MIDI interface. But it's $80, plus it's 3.3v and has no dials or switches, so you'd have to add that. As to a Raspberry Pi: it has few advantages: no built-in hardware at all.

Basically I targeted Arduino because it's ubiquitous and 5v. But you never know, might move the code to something else one day.
Old 2nd November 2016
  #19
Gear Addict
Got it, thanks. I think I'm going to get an Arduino. I have one or two ideas to try. It seems simpler than the RPi and nostalgic for me when I used to do firmware back in the 80's and 90's.
Old 3rd November 2016
  #20
Lives for gear
Status report.
  1. All the basic behaviors and options debugged. Added and debugged the option to automatically transpose and/or change the volume of any outgoing note.
  2. The interface is working great, except that the pots are noisy which creates some annoyances.
  3. Arpeggiator now more or less debugged. You can create ten arpeggios of your own design (and see them displayed as you build them). These arpeggios can contain 32 notes and rests including up to 15 unique notes, and you can specify which of those 15 notes should be mapped to the root of your chord. You can also choose basic arpeggios: UP, DOWN, UP/DOWN, RANDOM, and CHORD. Chord just plays your chord over and over again. Random plays random notes, but tries not to play the same note twice in a row. You can stretch this over six octaves, and can specify the note length, the note value, the tempo, and degree of swing.
  4. Recorder written but not debugged.
  5. Step sequencer written but not debugged.
  6. I'm running out of memory! Debugging the arpeggiator was a bear, significantly increasing my memory footprint. I may not be able to fit both the recorder and the step sequencer (plus the arpeggiator and various options) on a single Arduino Uno. We'll see. If not, I'll probably push the recorder to the Arduino Mega version. :-(
Old 3rd November 2016
  #21
Lives for gear
 

I'd potentially be keen on a PCB/Enclosure type deal
Old 3rd November 2016
  #22
Gear Maniac
 
KingVidiot's Avatar
 

good idea, keep the updates coming

I have a MIDIpal but this looks promising.
Old 3rd November 2016
  #23
Lives for gear
 
Cornish1999's Avatar
Great post OP. Looking forward to final version , any build pics available ?
Old 7th November 2016
  #24
Lives for gear
Quote:
Originally Posted by feijai View Post
5. Step sequencer written but not debugged.
Step sequencer now largely debugged and seems to work. Two outstanding minor bugs left (beats are misaligned with the pulse light, and real-time entry gets quantized wrong). To save space on an Uno, I've removed the voltage output option (for now). Also I've got about half of the manual written.

Now on to the recorder. Should be the easiest to debug of the three main apps. I'm still under the memory limit so here's hoping I can cram it in. No build pics yet but I should have something soon.

The result is just going to be a bare arduino + shield + 4 wires + LCD screen, no custom PCB, no enclosure. I'm a software guy. A cleaner hardware build will be for someone else I'm afraid.
Old 8th November 2016
  #25
Gear Head
 

Is the source available anywhere yet? I wouldn't mind having a snufty at it and porting to Teensy.
Old 8th November 2016
  #26
Gear Addict
 

Github?
Old 8th November 2016
  #27
Lives for gear
 
Cornish1999's Avatar
Quote:
Originally Posted by feijai View Post
Step sequencer now largely debugged and seems to work. Two outstanding minor bugs left (beats are misaligned with the pulse light, and real-time entry gets quantized wrong). To save space on an Uno, I've removed the voltage output option (for now). Also I've got about half of the manual written.

Now on to the recorder. Should be the easiest to debug of the three main apps. I'm still under the memory limit so here's hoping I can cram it in. No build pics yet but I should have something soon.

The result is just going to be a bare arduino + shield + 4 wires + LCD screen, no custom PCB, no enclosure. I'm a software guy. A cleaner hardware build will be for someone else I'm afraid.
Keep up the great work and thanks for the update
Old 19th November 2016
  #28
Lives for gear
The first version of the code is finished! I have committed it to this github repository. There is a partially written and messed up manual in there too (in PDF), plus some extra Kawai K4 code which is not part of the project at present. There are one or two minor outstanding bugs but basically it seems to work pretty well.

I'll build a webpage in a bit, finish up the manual, and shoot a video or two.
Old 19th November 2016
  #29
Lives for gear
 
Cornish1999's Avatar
Quote:
Originally Posted by feijai View Post
The first version of the code is finished! I have committed it to this github repository. There is a partially written and messed up manual in there too (in PDF), plus some extra Kawai K4 code which is not part of the project at present. There are one or two minor outstanding bugs but basically it seems to work pretty well.

I'll build a webpage in a bit, finish up the manual, and shoot a video or two.
Well done op, looking foward to seeing this. I'm just starting out with board projects and this has been inspirational. Just hope my skills are up to it
Old 22nd November 2016
  #30
Lives for gear
The Website is up!

http://cs.gmu.edu/~sean/projects/gizmo/

Includes a manual, all the code and instructions, and one demo video (I'll make a few more).

Should I make a new thread to announce this? Dunno.
Topic:
Post Reply

Welcome to the Gearslutz Pro Audio Community!

Registration benefits include:
  • The ability to reply to and create new discussions
  • Access to members-only giveaways & competitions
  • Interact with VIP industry experts in our guest Q&As
  • Access to members-only sub forum discussions
  • Access to members-only Chat Room
  • Get INSTANT ACCESS to the world's best private pro audio Classifieds for only USD $20/year
  • Promote your eBay auctions and Reverb.com listings for free
  • Remove this message!
You need an account to post a reply. Create a username and password below and an account will be created and your post entered.


 
 
Slide to join now Processing…
Thread Tools
Search this Thread
Search this Thread:

Advanced Search
Forum Jump
Forum Jump