Introduction: DoReMiQuencer - Programmable MIDI Sequencer With Keyboard

This device was created for use with VCVRack, a virtual modular synthesizer created by VCV, but can serve as a general purpose MIDI controller.

It serves as a MIDI sequencer or keyboard, depending on the selected mode. The MIDI notes mapped to the keys are Do, Re, Mi, Fa, Sol, La, Ti, Do', hence the name.

In sequencer mode, it loops through 16 programmed notes in either 'single' or 'continous' mode, selectable via switch.

To program a sequence, the device needs to be switched into 'record' mode, where pressing the note buttons creates the sequence.

Of course, the device can be customized to suit your needs and is designed in a modular way for that reason.

This is my first Instructable and constructive criticism and honest compliments are highly appreciated.

Step 1: Materials and Tools

Components:

  • Arduino Nano
  • 3-Position-Switch *3
  • Button *10 (11 if you want an extra reset button)
  • 100k Resistor *10
  • SSD1306 Display
  • SN74HC165 Parallel-In-Serial-Out Shift Register
  • 16pin Socket (optional but recommended)
  • Breadboard or PCB
  • Casing or Baseplate
  • Male and Female Pin Headers (optional)
  • LEDs and matching resistors (optional)

Tools:

  • Soldering Iron
  • USB cable for the Arduino
  • Laptop or PC with Arduino IDE

Step 2: Module: Keyboard

Components:

  • Button *10
  • SSD1306 Display
  • Breadboard or PCB
  • 100k Resistor *10
  • Male Pin Headers (optional)

Mount 8 buttons in a configuration in which you find them to be a suitable keyboard, I recommend a 1- or 2-row setup.

Mount the remaining 2 buttons where you want your BPM control to be.

Mount the display where you want it on the keyboard.

Solder the resistors to the buttons and connect the buttons and display according to the schematic either to a header or directly to the shift register and Arduino.

Step 3: Module: Control Panel

Components:

  • 3-Position-Switch *3
  • Breadboard or PCB
  • Button (optional)
  • Male Pin Headers (optional)

Mount the switches on the breadboard.

Optionally, you can add the reset button on the panel as well.

Further additions could be status LEDs wired to the buttons.

Connect the switches and additional components according to the schematic either to a pin header or directly to the Arduino.

Alternatively, the control panel can be integrated into the keyboard.

Step 4: Module: Motherboard

Components:

  • Arduino Nano
  • SN74HC165 Shift Register
  • 16pin DIP Socket (optional but recommended)
  • Breadboard or PCB
  • Female Pin Headers (optional)

Mount the Arduino and the shift register or socket on the board. When using a socket, insert the register into the socket.

When using pin headers to connect the modules, mount the female headers on the board.

Solder the components according to the schematic.

Step 5: Code

Install the attached code on the Arduino.

Positions for objects on screen as well as the pinout and configuration are handled via #DEFINEs.

The start() method just initializes the pins and display as well as the array for the notes.

The printBPM() method handles the writing of the BPM to the screen. It is necessary to increase usability when setting the BPM, allowing for the value to be changed rapidly instead of requiring one button press for every single BPM.

The writeMIDI() method handles sending the MIDI commands via serial.

The loop() method contains the 'sequencer' mode as well as the 'keyboard' mode. It handles the functions of the device, checking the control panel inputs to determine which mode to execute and reading the shift register to get the keyboard input.

Changing the number of steps or notes to be played, adjustments to screen positions may be necessary.

Step 6: Casing

Components:

  • Casing or Baseplate
  • Assembled device
  • Additional components depending on your design, such as screws.

Mount the device into the casing or on the baseplate depending on your design.

I chose a 3D-printed baseplate, which I later needed to adjust to hold the device.

Step 7: Usage

Select your desired mode by using the switches on the control panel.

In keyboard mode, press the button with the note you want to play. The display should show, which note is being played.

In sequencer mode, the device will run by itself when in play mode.

In 'record' mode, you can program a sequence by pressing the buttons on the keyboard.

In 'play' mode, the device will send the played note over serial. If the same note is played and the device is in 'continous' mode, the note will not be stopped and played again, otherwise the note will be stopped and the next will be played.

Arduino Contest 2019

Participated in the
Arduino Contest 2019