Project showcase
VOLCADE - Arcade Scale Progression Controller

VOLCADE - Arcade Scale Progression Controller © MIT

VOLCADE is a MIDI controller for volca built with 7 arcade control board that switches between chord progressions using the arcade joystick.

  • 380 views
  • 0 comments
  • 0 respects

Components and supplies

A000066 iso both
Arduino UNO & Genuino UNO
×1
14218 01 update
SparkFun micro:arcade kit
I used 7 arcade buttons and a 4 pullup switch joystick
×6
Mfr 25frf52 10k sml
Resistor 10k ohm
×11
4415447 jg5sklyzsj
Resistor 220 ohm
×2
5 PIN DIN midi cable
×1
5 PIN DIN jack
×1

About this project

Korg Volcas are great, affordable, analogue synthesizers for anyone, from people who has just joined the world of electronic music, to experienced music pros that found in them the beauty and simplicity that they provide.

After playing with them a while you get to see some limitations (I don't mean a limitation creativity-wise. People are creating great stuff with out of the box volcas.) such as a small keyboard, and another one (in my case) is the lack of knowledge on music theory. You soon want to create complex chords and different "movement" on your jams and not stick to the 16 beat integrated sequencer. (I repeat, this doesn't mean that you can't create great sound s with them).

I started to experiment on notes that just sounded good with each other and that took me to start reading on why this phenomenon happens. After reading some of https://en.wikipedia.org/wiki/Music_theory everything just made sense. I wanted to create some note combinations, transpose them to another scale, go back and then go to another scale. To achieve this instrument domain skill it takes years of practice (and that's just part of music).

Okay, so I noticed I'm a better software developer as I'm a Musician. So why not let a program do that for me. So some minutes on web searches and arduino uno r3was the best option and just some clicks away.

The main objective of the project is to re use an old arcade controls that where rusting at home and use the 7 buttons and 8 position joystick to move in one (for now) chrod progression and map the seven notes of the selected scale to the arcade buttons to send MIDI signal to the KORG volcas.

So, in schematics (Soon i'll upload a complete image) you can see how MIDI cable is connected using pin 1 for serial output. In code below there are two options for serial baud configuration that can be switched for midi (31250) or for the arduino IDE serial monitor that works on a different baud rate (last one is helpful for debugging purposes i.e. prtinting out "i pushed a button".).

Since buttons are digital input, each one of them must be connected to ground when they are not pressed, so ,a 10K resistor must be connected to the signal of the button. Please refer to diagram below on how its done.

Pins 2,3,4,5,6,7 and 8 will correspond to each one of the arcade buttons.

The joystick of this old arcade consists of 4 switches triggered by a stick providing us a set of combinations that we interpret as joystick positions.

The UP, DOWN, LEFT, RIGHT switches are connected to pins 8,9,10 and 11. Respectively.

MIDI information is written on pin 1 , used for serial output. This por is used also for uploading the sketch files, so be ware that a midi signal might be sent to a connected device if it's turned on. I repeatedly locked my volca when I was developing the software.

first steps. Checking if MIDI data is sent and recieved by synth.

So after wiring everything up I'll tell you what's going on on the code.

First, As I mentioned before, chord progressions are the structure of many songs and they rely on some defined structures or scales. You can get the concept of it in the following video by Fretjam :

some chord progression explanation.

So if we take a look on our base note (f# in code, you can replace it by any other.), there's a scale related to it. This scale is given by half tone or whole tone increments. So to solve this there is an integer array representing the lenght "jumps" that are required from the base note to each one of the resulting scale note. So, the first element of the array is 0, because we do not need to add anything to the base note.

Also let's consider that there are several types of scales in our example we will need only these three for now. Each one with a different distance between notes.

So who says which type of scale will be used? the progression, so there is another array for it.

Initially i was using chars to select the type but its much easier to use 1-3 integers for it.

In this case I used the Ionian Progression, which has seven steps with a different mode assigned to each one. So, Joystick has 8 positions considering the ones that are between up, down, left and right.

Each time joystick is moved, the algorithm will calculate the offset for every button and map a note to it.

first approach here i only mapped 4 joystick positions

playing when it had 4 scales mapped to joystick position.

And that's it!

Here's a demo with the complete button mapping.

Code

Schematics

MIDI connection
this is only for the serial midi output
Screenshot from 2020 04 26 16 47 36 nswvaa9dn5
Schematic for each button 7 pullup and 4 for the joystick
Button zhj81q22ip

Comments

Similar projects you might like

RGB LED Button Controller

Project showcase by Re

  • 13,542 views
  • 2 comments
  • 17 respects

Making a Cheap Aquarium Parameters Controller

Project tutorial by Boisse Martin

  • 10,423 views
  • 4 comments
  • 21 respects

Circuito Arduino Controller Pad

Project tutorial by AhmedAzouz

  • 4,625 views
  • 1 comment
  • 9 respects

Watersource Controller

Project showcase by designedrat

  • 6,779 views
  • 0 comments
  • 19 respects

Arduino UNO Fan Controller Education Kit

Project showcase by ArdLab_Gent

  • 3,464 views
  • 1 comment
  • 15 respects
Add projectSign up / Login