Simple MIDI Sequencer (SMS) v.0.2.12 with Audio Recorder (cross-platform)

This new version of SMS is now enough stable for being used on a daily basis. Its 4 main modules have been improved making it suitable for amateur musicians and home studio performers

Simple MIDI Sequencer is a real-time MIDI & Audio Sequencer offering all the ‘basic functions’ needed by musicians for easily recording and playing back their performances on any computer (cross-platform GNU/Linux, macOS or Windows).

SMS is a free/libre (open source) software published under GPL v3 license written with Purr Data (Pd-l2ork v2), an improved fork (modern GUI written in JavaScript using NW.js) of Pure Data Vanilla.

=> Look at the previous articles about Simple MIDI Sequencer v.0.2.9, 0.2.7 & 0.2.5.

Content of this article about SMS v.0.2.12 (4th release)

  • SMS Control Panel
  • MIDI Sequencer & Player
  • MIDI Flow Display
  • MIDI PC & CC Controllers
  • Audio/Voice Recorder & Player
  • Audio/MIDI Toolbox
  • SMS Help
  • SMS βeta v.0.2.12 – Download

This new version 0.2.12 (1st βeta) of Simple MIDI Sequencer introduces some bugs fix and functions improvement as well as it’s strengthening its overall functioning.

As always, SMS can be used as it is or freely modified – adapted by anyone to her/his particular taste. Do It Yourself (DIY) and tailor Simple MIDI Sequencer to your particular needs and to your MIDI/Audio environment.

♦ SMS Control Panel

There is no major change in the SMS’s GUI, except some adds to the Display and Audio modules (see later down). The minor changes were mostly cosmetic ones.

Simple MIDI Sequencer – v.0.2.12 | A simple Control Panel under GNU/Linux (zoom level x10)

The Control Panel of Simple MIDI Sequencer is zoomable on 15 levels plus full screen, without any definition loss. This is true on all the 3 supported operating systems: GNU/Linux, macOS and Windows. Thanks to Purr Data’s modern GUI which is using the latest Web technology.

♦ MIDI Sequencer & Player

No major change was done in this module (sub-patch).
Look at previous SMS articles for more details about its overall functioning.

Simple MIDI Sequencer – v.0.2.12 | A universal MIDI Sequencer in zoomed mode

How to manually create and/or edit a MIDI.txt file compatible with SMS?

As described in previous articles, SMS records MIDI messages in real time into PC RAM and then the performer saves them within a file into the PC disk (internal or external).

The saved files with SMS can have 2 kinds of structure:
– the 1st one is SMF (Standard MIDI File with .mid extension) which is difficultly editable, and
– the 2nd one is pure Text (Purr Data / Pure Data format with .txt or .xyz extension) which is very easily editable with a simple text editor.

All numbers into these Text files (with MIDI messages) are – must be in DECIMAL(d).

The Cyclone’s [seq] object is able to properly handle Standard MIDI Files (SMF):
– it reads single track (format 0 = 1 track / 16 channels) and multiple tracks (format 1 = 16 tracks / 16 channels), but
– it writes only single track (format 0).

And it can also read and write Text Files in which each line consists of a Start time in milliseconds (the time elapsed since the beginning of the sequence T0) followed by the (space-separated) bytes of any MIDI message (Note, PC, CC, SysEx) recorded at that Start time. Each line ends with a semicolon (;) delimiter.

So it’s easy to read as well as to modify and/or to write Text files (.txt or any user convenient extension) with MIDI content as long as the performer respects the correct entry syntax when using a simple text editor. Thus, we can create from scratch any kind of MIDI.txt files like chord progressions, musical scales, music sheet transcriptions, our own compositions, and much more.

An example:
Sends a Control change number 7 with value 100 on Channel 1:
0 176 7 100;
=> Message Start time=0 ms – Control change=On (CC) on Channel #=1 (B0h), with CC number=7 (Channel Volume) and Value=100

Then plays the Middle C note on Channel 1 for one second:
0 144 60 112;
=> Message Start time=0 ms – Note=On on Channel #=1 (90h) – Note #=60 – Note Velocity=112
1000 144 60 0;
=> Message Start time=1 s – Note=On on Channel #=1 (90h) – Note #=60 – Note velocity=0; i.e. = Note Off

Then half a second later changes to Program number 31 (PC) on Channel 1:
1500 192 31;
=> Message Start time=1.5 s – Program Change=On on Channel #=1 (C0h) – PC #=31

And plays again Middle C note for one second:
1500 144 60 112; => as above
2500 144 60 0; => as above

8520.27 146 40 67;
8798.91 146 40 0;
9077.55 146 40 66;
9286.53 177 1 8;
9379.41 146 40 0;
9379.41 177 1 4;
9449.07 144 59 0;
9518.73 145 62 0;
9658.05 146 40 68;
9658.05 224 0 56;
9658.05 144 59 108;
9658.05 177 1 0;
9726.26 224 0 64;
9936.69 146 40 0;
10238.5 145 62 103;
10238.5 144 59 0;
10238.5 146 40 64;
10308.2 177 1 8;
10354.6 177 1 16;
10517.2 146 40 0;

A same Start time can have several MIDI messages but they must be put on several successive lines in the right order, like in the above two examples.

Usually, we put at the beginning of the MIDI file all the needed messages to properly configure the connected synthesizer / MIDI equipment. Thus, most often we find (at least) the Program Change (PC) messages for selecting the desired instruments (voices selection) for each used MIDI channel.

Start time -always 1st in each line and cumulative from T0- is expressed in milliseconds on 6 bits or like:
– 0.00000 (0) ms, 0.00001, 1.00001, 10.0001, 100.001, 1000.01, 10000.1, 100000, 999999 ms; i.e. up to 16mn:40s (0h:16:20),
– 1.00000e+06 ms, 1.00001e+06, 1.00010e+06, 1.00100e+06, 1.01000e+06, 1.10000e+06, 1.20001e+06, 1.99999e+06 ms; i.e. up to 33mn:20s (0h:33:20),
– 2.00000e+06 ms, 3.00001e+06, 4.00010e+06, 5.00100e+06, 6.01000e+06, 7.10000e+06, 8.20001e+06, 9.99999e+06 ms; i.e. up to 166mn:40s (2h:46:40),
– 1.00000e+07 ms, 1.00001e+07, 1.00010e+07, 1.00100e+07, 1.01000e+07, 1.10000e+07, 1.20001e+07, 1.99999e+07 ms; i.e. up to 333mn:20s (5h:33:20),
– and so on; up to much more hours (is it really needed?).

— Summary of MIDI Status Bytes —
Status Byte Nb of Description
Hex Decimal Binary Data Bytes Note: nnnn 0-15 = MIDI channel 1-16
8n 128-143 1000nnnn 2 Note Off
9n 144-159 1001nnnn 2 Note On (a velocity of zero = Note Off)
An 160-175 1010nnnn 2 Polyphonic Key Pressure (Aftertouch)
Bn 176-191 1011nnnn 2 Controller – First data byte = 0-119
Cn 192-207 1100nnnn 1 Program Change (i.e. instrument/voice selection)
Dn 208-223 1101nnnn 1 Channel Pressure (Aftertouch)
En 224-239 1110nnnn 2 Pitch Bend
Channel Mode Messages    
Bn 176-191 1011nnnn 2 Select Channel Mode – First data byte = 120-127
For more information on MIDI specification including SysEx messages, see the excellent:

♦ MIDI Flow Display

This module was completed by adding an On/Off switch, a MIDI-In/Out (Midi-Thru) capability and the possibility to display SysEx-In traffic (if any), all on the right side.

As SMS can also record SYSEX messages, in add to standard MIDI messages (Notes, PC, CC), sx-in displays in real-time the incoming SysEx flow, if any, in decimal(d) rather than in hexadecimal(h) values. Note that SysEx messages always start with F0h / 240d and end with F7h / 247d, with Manufacturer ID + any values between these two depending on the connected MIDI equipment.

Look at previous SMS articles for more details about its overall functioning.

Simple MIDI Sequencer – v.0.2.12 | A MIDI Flow Display in zoomed mode

What about free/libre Music Engraving Software?

LilyPond, one popular among them, is a computer program and file format for music engraving. One of LilyPond‘s major goals is to produce scores that are engraved with traditional layout rules, reflecting the era when scores were engraved by hand. LilyPond is devoted to producing the highest-quality sheet music possible. It brings the aesthetics of traditionally engraved music to computer printouts. LilyPond processes text input, which contains all information about the content of the score.
LilyPond is free software and part of the GNU Project. It’s cross-platform (GNU/Linux, macOS and Windows), and it’s released under the terms of the GNU General Public License.
LilyPond is mostly written in C++ and uses Scheme (interpreted by GNU Guile) as its extension language allowing for user customization, as well as Python code. It’s used by many other specialized music software as their embedded music engraving engine.

Frescobaldi is an editor for LilyPond music files. It aims to be powerful, yet lightweight and easy to use. Frescobaldi is free software, freely available under the GNU General Public License. It’s designed to run on all major operating systems (GNU/Linux, macOS and Windows). It is named after Girolamo Frescobaldi, an Italian composer of keyboard music in the late Renaissance and early Baroque period.
Frescobaldi can import LilyPond, MusicXML, MIDI and ABC files.
Frescobaldi is written in Python and uses PyQt4 for its user interface.

Denemo is a free music notation program for GNU/Linux, macOS and Windows that lets you rapidly enter notation which it typesets using the LilyPond music engraver. Music can be typed in at the PC keyboard, or played in via MIDI controller, or input acoustically into a microphone plugged into your computer’s sound card. The program plays back via an internal sampler and can act as a JACK/MIDI client. Denemo includes scripts to run music tests and practice exercises for educational purposes.
Denemo can import LilyPond, MusicXML, and MIDI files.
Denemo is written in C and uses GTK. A Scheme scripting interface is also available, and commands written in Scheme can be placed in the system menu or as dockable palettes.

♦ MIDI PC & CC Controllers

No major change was done in this module. This sub-patch can be used as a simple MIDI control surface.
Look at previous SMS articles for more details about its overall functioning.

Simple MIDI Sequencer – v.0.2.12 | A PC & CC Controllers in zoomed mode

For those willing to go further, Purr Data’s graphical object oriented programming can be used for expanding the MIDI control capabilities of this module as well as for embedding Audio control possibilities, and both can be synchronized with the MIDI sequencer.

♦ Audio/Voice Recorder & Player

This module can deal with two kind of codecs:
– the 1st one is for .wav (Microsoft) + .aif (Apple) + .au & .snd (Sun) sound files, and
– the 2nd one is now for .ogg
(free and open format) sound files.
The Audio file format, for both Recording and Playing, is selected with the File Type switch. This module can also playback compatible sound files which were recorded with other audio recorders.

The Vorbis project produces an audio coding format and software reference encoder/decoder (codec) for lossy audio compression (better in terms of quality and compression rate than MP3 format). Vorbis is most commonly used in conjunction with the Ogg container format and it is therefore often referred to as Ogg/Vorbis (*.ogg file extension).

Look at previous SMS articles for more details about its overall functioning.

Simple MIDI Sequencer – v.0.2.12 | An Audio/Voice Recorder & Player in zoomed mode

Note that for respecting the project philosophy, .ogg (compressed) / .wav (uncompressed) audio files created with SMS have a default setup which produces CD quality audio.

For those willing to have their own audio quality level, the default setup can be modified by editing (DIY) this Audio module, then by reading the Help integrated into Purr Data and finally by making the necessary changes.

♦ Audio/MIDI Toolbox

In this module (sub-patch), Midi-In On/Off switches were added to both Chords Detector/Guesser and Midi-To-Frequency Converter tools.
Look at previous SMS articles for more details about its overall functioning.

Simple MIDI Sequencer – v.0.2.12 | A MIDI/Audio Toolbox

♦ SMS Help

SMS Help is directly accessible from within the software by clicking on the [pd help] button.

Simple MIDI Sequencer – v.0.2.12 | User Quick Guide easily accessible

♦ SMS βeta v.0.2.12 – Download

Once Purr Data v.2.10.0 or higher is installed on your computer and tested (Menu -> Media -> Test Audio & Midi), you can download the SMS project below.
Unzip the folder and put its 2 files (program + image) into the same directory of your choice on your computer under GNU/Linux, macOS or Windows operating system. And you are ready to go!

• Simple MIDI Sequencer / βeta v.0.2.12

DOWNLOAD ===> Build.20200212 File size ~ 44 KB

• Bugs Tracker / Wish List

Feel free to report about your installation and usage concerns, the bugs you may encounter and suggestions you can have for improving the SMS project. My email address is inside the program. If you have any questions before that, go through the form on the Contact page of this site.

♦ Visit SMS dedicated page

for following the evolution of this MIDI/Audio project.

Simple MIDI Sequencer (SMS) is a Work in Progress…