Last updated:

MIDI Notes Sequence with JSFX: Demo on Makey Makey

Introduction

Few days ago, I successfully moded my Makey Makey board firmware so it can now send MIDI data. I also created a set of Makey Makey JSFX scripts (effects as simple text files, which can be loaded on any DAW with ReaPlugs ReaJS VST).

I made few controllers and was able to play melodies with it as a regular MIDI controller.

That’s very cool, but the Makey Makey has only 18 output, and only 6 are accessible simultaneously with the cables from the box. If that sounds enough, it is only one octave and half: we are more close to the flute than to the 88 notes piano.

Concepts

There is different ways to generate extra notes with MIDI effects. All of these are very cool but I needed something a bit more different. Arpegiators and sequencers are often based on a limited number of steps and don’t allow to dynamically load a melody from a file, randomizator are a bit too random, and chords generator doesn’t help to play melody.
I needed something capable of playing a pre-recorded/composed sequence of notes, leaving the user to do the tempo/rythm. I want to have a set of notes in order, and to trigger them successively, respecting the order of the list, from one key input only. For Makey Makey, the velocity could be pre-defined as well. As I didn’t find that on the internet well… why not continue the JSFX experimentation and try to build this MIDI notes sequencer from notes file myself ?

Usages

  • you want to humanize a melody
  • you have a controller with not enough output to do what you want
  • you want to work your rythm
  • you want to impress you friends by playing Chopin’s melodies with one note of your keyboard only

Demo

It took 1 complete day to do it but… here it is!

As you can see, we can play full melodies, in free tempo, with only few keys! 😛

Main part of the controller was designed by Henri using a cereal box. Good job!

Note: I edited this video on HitFilm Express (free video editing software with compositing capabilities), which I used for the first time. It has some interesting features, but I definitely missed more professional features especially for syncing audio. I may try the extended version one day, but it is not free. I don’t plan to make more detailed reviews of these software at this time).

Thanks JamesHE, geraintluff and Tale for the help on some MIDI and JSFX tricks on REAPER forum 😛

Tools

Here are the scripts I made for this to be possible:

  • MIDI notes sequence from CSV file.jsfx
    The effects that change notes  destination.
  • Export first selected item as CSV of notes and velocity.lua
    A script to export a MIDI file from REAPER, formatted for the above JSFX.

If you want to create your own MIDI files, without the lua script dedicated to this (if you don’t use REAPER for example), follow this format:


48.090
49.090

This is a C3 at 90 velocity, following by a C#. One instruction per line. No empty line at the end.

For the full Makey Makey to MIDI setup, please refer to my JSFX Effects for MIDI Makey Makey tutorial.

Features

JSFX

The JSFX in action.
The JSFX in action.
  • Channel Filter
  • Note Filter
  • Forward play
  • Backward play
  • Velocity from file (optional) – So yes, you have a velocity map for Makey Makey (which is cool as Makey Makey is not pressure sensitive)
  • Cue point mark and load
  • Reset progression
  • File Loader

It still has some few bugs (avoid pressing several trigger at the same times, or you may hanging notes), but it is usable. Participation on code is welcome!

Export Script

The export script is pretty basic, I could make it work on several selected items, with only notes visible within item boundaries etc… I may extend it if other people request it.

Export is made on the Data/MIDI sequences subfolder of REAPER resources directory as .txt file.

Ticks

  • You can use several instances of the plugin and play several melody at the same time
  • You can even put a chord generator or an arpegioator on one of the instance
  • Put the JSFX as InputFX so that notes are recorded with the output you want !

Download

Scripts can be downloaded from REAPER with ReaPack, or manually on my GitHub for other DAW users (only download the JSFX in your case). They should be put online in few hours, for free.

Have fun!

Links