SMS (Simple MIDI-Audio Sequencer) built with Purr Data / Pd-L2Ork (Pd engine)

  • Last SMS Project Updates
        – 2022/09/18: v.0.2.73 — Maintenance Release
        – 2022/09/05: v.0.2.70 — Added Module: Multi-purpose MIDI Monitors
        – 2022/08/27: v.0.2.61 — Added Module: SoundFont (SF2) Synthesizer Manager

◊ Table of contents
    [fr] Au sommaire

♦ Simple MIDI-audio Sequencer (SMS)

• A true real-time MIDI Sequencer (not a step sequencer!) compliant with the General MIDI Level 1 (GM-L1) specifications

Today, it is offering:

SMS is providing all the basic functions needed by the amateur musicians & home studio performers for easily recording their performances (keyboard, synthesizer, drum pad, voice, etc.) and playing them back on any computer (Computer-aided music (CAM) – Home Studio) under free/libre GNU/Linux, and proprietary macOS & Windows operating systems.

Simple MIDI Sequencer – v.0.2.73 — GNU/Linux | Its simple but complete Control Panel (zoom level x9)

[fr] Simple MIDI-audio Sequencer (SMS)
SMS est un vrai séquenceur MIDI temps réel
(pas un séquenceur pas-à-pas !) conforme aux spécifications General MIDI Level 1 (GM-L1).
• Aujourd’hui, il offre :
  – Module 1 : un Séquenceur MIDI temps réel,
  – Module 2 : un Afficheur d’activité MIDI,
  – Module 3 : un Contrôleur MIDI,
  – Module 4 : un Enregistreur/Lecteur Audio,
  – Module 5 : un Jeu d’outils MIDI/Audio,
  – Module 6 : un Gestionnaire de Synthétiseur SoundFont (SF2) – depuis v.0.2.60, et
  – Module 7 : un Jeu de Moniteurs MIDI multi-usage – depuis v.0.2.70.

SMS propose toutes les fonctions de base nécessaires aux musiciens amateurs et aux performeurs en home studio pour enregistrer facilement leurs performances (clavier, synthétiseur, contrôleur à pad, voix, etc.) et les reproduire sur n’importe quel ordinateur (Musique assistée par ordinateur (MAO) – Home Studio) sous les systèmes d’exploitation libres GNU/Linux, et propriétaires macOS & Windows.

Simple MIDI Sequencer v.0.2.51 under GNU/Linux: a short presentation
(3.8 MB .webm – 10 ips – without sound for limiting the video file size)


NOTE that SMS is not aimed to be a professional piece of software but rather a ‘home made’ one (DIY – Do It Yourself) serving the purpose to democratize software coding by using a free/libre visual programing environment that everyone can master.

[fr] REMARQUE : SMS n’est pas destiné à être un logiciel professionnel mais plutôt un logiciel « fait maison » (DIY – Faites-le par vous-même) servant à démocratiser le codage logiciel en utilisant un environnement libre/gratuit de programmation visuelle que tout le monde peut maîtriser.

Simple MIDI Sequencer is a free/libre (open source) software published under GPL v3 license written with Purr Data / Pd-L2Ork v.2, an improved fork (with a modern HTML5 GUI written in JavaScript using the NW.js framework & Chromium engine) of Pure Data Vanilla (Pd).
The GUI of Purr Data / Pd-L2Ork is currently available in 3 languages: English (default), German and French.

SMS is a cross-platform project which is working with the same features under at least free/libre GNU/Linux including Raspberry Pi OS (ARM), and proprietary macOS & Windows operating systems.

[fr] Simple MIDI Sequencer est un logiciel libre (à code source ouvert) publié sous licence GPL v3 écrit avec Purr Data / Pd-L2Ork v2, un fork amélioré (avec une interface graphique HTML5 moderne écrite en JavaScript utilisant le framework NW.js et le moteur Chromium) de Pure Data Vanilla (Pd).
L’interface graphique utilisateur de Purr Data / Pd-L2Ork est actuellement disponible en 3 langues : Anglais (défaut), Allemand et Français.

SMS est un projet multi-plateforme qui fonctionne avec les mêmes fonctionnalités sous au moins les systèmes d’exploitation libres GNU/Linux incluant Raspberry Pi OS (ARM), et propriétaires macOS & Windows.

⇒ The performers who are willing to test the SMS project
and to give feedback are the welcome!

[fr] Les performeurs qui sont désireux de tester le projet SMS
et de donner un retour d’information sont les bienvenu·e·s !

• Simple MIDI Sequencer project under GNU/Linux

SMS (64-bit) has been successfully tested under the following distributions (64-bit):
 [fr] SMS (64 bits) a été testé avec succès sous les distributions suivantes (64 bits) :
  • Linux Mint  19 / 20 / 21 Cinnamon (based on Ubuntu 18.04 / 20.04 / 22.04 and Debian 10 / 11),
  • Ubuntu Studio  20.04 Xfce / 22.04 KDE Plasma (based on Ubuntu 20.04 / 22.04 and Debian 10 / 11),
  • Manjaro Linux  20 / 21 / 22 KDE Plasma and Cinnamon (a rolling release distribution based on Arch Linux), and
  • Raspberry Pi OS  10 / 11 ARM (today only 32-bit! based on Debian 10 / 11).
  • Note: SMS should be also compatible with other and/or more recent GNU/Linux distributions.
Simple MIDI Sequencer in action under Manjaro Linux 21 Cinnamon

Simple MIDI Sequencer – v.0.2.73 — GNU/Linux | Playing a MIDI file => Internal SF2 Synthesizer while Copying it into an Audio file, Displaying its notes on VMPK & JACK MIDI Flow Monitor

Who said that the free/libre GNU/Linux operation systems / distributions are not fully graphical?!

Simple MIDI Sequencer: ALSA/JACK Setup

Simple MIDI Sequencer – v.0.2.73 — GNU/Linux | Audio/MIDI Configuration for QjackCtl / Patchage + Purr Data (Pd-L2Ork) + VMPK + JMeters + GMidiMonitor

Other graphical MIDI and/or Audio Patchbays are also available — ALSA Sequencer (Patchbay), Catia (Cadence Suite), Patchance, PatchMatrix, etc.

Graphical Audio Mixers/Monitors software — For more flexibility, the performer can use with the MIDI/Audio Patchbays for ALSA Audio: QasMixer -and- for JACK Audio: JackEQ, Jack Mixer, JAMin, Zita-mu1, etc.

• Simple MIDI Sequencer project under Windows 10

SMS (32/64-bit) has been successfully tested under the following versions of Windows 10 (64-bit):
 [fr] SMS (32/64 bits) a été testé avec succès sous les versions suivantes de Windows 10 (64 bits) :
  • 1909  (November 2019 Update),
  • 2004  (May 2020 Update),
  • 20H2  (October 2020 Update),
  • 21H1  (May 2021 Update),
  • 21H2  (November 2021 Update), and
  • 22H2  (October 2022 Update).
  • Note: SMS should be also compatible with more recent Windows versions.

♦ SMS Main Features  (PDF version to be updated)
   [fr] Principales caractéristiques

A free/libre cross-platform, general purpose, true real-time MIDI Sequencer with internal SoundFont Synthesizer & Audio Recorder/Player for your Home Studio (CAM) tested with the MIDI/USB interfaces: M-Audio MidiSport Uno 1×1 & MidiSport 2×2 AE -and- Roland UM-ONE mk2.
 [fr] Un vrai séquenceur généraliste MIDI temps réel avec Synthétiseur SoundFont & un Enregistreur/Lecteur Audio, libre et gratuit, multi-plateforme et polyvalent pour votre Home Studio (MAO) testé avec les interfaces MIDI/USB : M-Audio MidiSport Uno 1×1 & MidiSport 2×2 AE -et- Roland UM-ONE mk2.

  • Compatible with at least GNU/Linux including Raspberry Pi OS + macOS + Windows Operating systems (Thanks to Purr Data / Pd-L2Ork and their Pure Data Vanilla engine)
  • Compliant with General MIDI Level 1 (GM 1) specifications based on Standard MIDI-File (SMF) Format Spec. 1.1
  • GUI with 15x Zoom levels + Full screen view
  • Modular design architecture allowing easy and freely reuse of modules (patchs/sub-patchs) in other projects
  • 7x Main Modules with GOP (Graph-on-Parent – GUI): [pd seq] + [pd display] + [pd ctrls] + [pd audio] + [pd sf-mgr] + [pd monitors] + [pd dt]
  • 3x Additional Modules (without GOP): [pd help] + [pd tools] + [pd license]
  • Module 1: MIDI Sequencer & Player (General Purpose) — [pd seq]
    • MIDI-In/Out Sequencer for real-time performances
    • Record 1x Track / 16x Channels (Type 0) + SYSEX (System Exclusive)
    • Play SMF (Standard MIDI File) Types 0 (mono-track) and 1 (multi-track) & Text files (Purr Data format) + SYSEX (System Exclusive)
    • Read/Write MIDI files (.mid, .kar & .txt) from/to RAM/HDD-SSD-USB
    • Playback Tempo from 40 to 240-480 BPM
    • Record/Play Chronograph (mm:ss) up to several hours / file
    • Banner for MIDI & Audio messages from SMS to the performer
  • Module 2: MIDI-In & Sequencer-Out Activity — [pd display]
    • Displays MIDI Messages in real-time
    • •Notes: Channel (1-16) / Pitch nb (0-127) / Velocity (0-127) / Bend (only MSB 0->63<-127) / After-touch & Breath like (0-127) / Name (C-to-B) / Octave (with P#60=C4: #0-8 & P-Scale#12-119), •Volume and Expression (CC): Channel (1-16) & Levels (0-127), •Control Changes (CC): Channel (1-16) / Number (0-127) / Value (0-127), •Program Changes (PC): Channel (1-16) / Number (0-127), •SysEx In/Out: flow (240d…xxx…247d / F0h…xx…F7h)
  • Module 3: GM Controllers – PC & CC MIDI-Out — [pd ctrls]
    • 1x Program Change (PC) + 12x Control Change (CC) Controllers
    • Send predefined & user defined GM Controllers messages to internal/external MIDI equipment: •CC Channel (1-16) / Number (0-127) / Value (0-127) with the possibility to combine MSB & LSB values -and- •PC Channel (0-127) / Number (0-127)
  • Module 4: Audio/Voice Recorder & Player — [pd audio]
    • Direct to/from disk
    • Record/Play stereo Audio tracks with CD/DVD quality (16-bit resolution with user defined 44.1 or 48 kHz sample rate based on Nyquist–Shannon sampling theorem)
    • Write/Read Audio files: free/libre .OGG (Vorbis), Microsoft .WAV, Apple .AIF, Sun/Next .AU and .SND
    • Write Audio files: .MP3… but .MP3 Read is not available yet!
    • Synchronized Copy of MIDI-to-Audio files: Read/Play MIDI from Disk/RAM => Internal or external Synthesizer / SoundFont => Write Audio to Disk
    • Recorder/Player Stereo Vu-Meters & Graphs
    • Record/Play Chronograph (mm:ss) up to several hours / file
  • [pd dt]  — Display current Date & Time (useful when SMS is in full screen view)
  • [pd help] — An embedded help on How-To use SMS (today only in English)
  • Module 5: 5x useful MIDI/Audio Tools — [pd tools]

    • MIDI Chords Detector/Guesser (up to 6 notes with Highest MIDI note number limit)
    • MIDI Notes Scaler (scales a stream of numbers to a MIDI note number)
    • MIDI-to-Frequency Converter (convert MIDI Note Nbs to Wave/Signal Frequency Nbs)
    • Frequency-to-MIDI Converter (convert Wave/Signal Frequency Nbs to MIDI Note Nbs)
    • 7x MIDI Channel Status / Hex(16)-to-Decimal(10) Converters
  • Module 6: SoundFont Synthesizer Manager — [pd sf-mgr] since v.0.2.60
    • Manage 2x separate SF2 SoundFont Synthesizers, one for the internal MIDI Sequencer and an other one for external MIDI Devices (keyboard, sequencer, drum machine, etc.).
    • Both SF2 can be used at the same time; i.e. with 2x different MIDI sources.
    • Under GNU/Linux, the ‘FluidR3_GM.sf2’ soundfont will be automatically loaded from ‘/usr/share/sounds/sf2/’ for both synthesizers. Other SF2 SoundFonts can be loaded regardless of the used operating system. One of my preferred, multi-purpose and  free SF2 is ‘Timbres of Heaven (XGM)’ v.3.4 (~ 395 MB) or 4.0 (~ 440 MB).
    • This module is a kind of light ‘Qsynth’ but still powerful.
  • Module 7: Multi-purpose MIDI Monitors — [pd monitors] since v.0.2.70

    • Today only GNU/Linux is operational. macOS and Windows will come later on!
    • Under GNU/Linux: GMidiMonitor (OS), MidiSnoop (OS), QMidiRoute (OS), ReceiveMIDI (portable s/w) and SendMIDI (portable s/w) are hard-coded within SMS. The user has the possibility to enter any other MIDI Monitors in the (?) [symbol] field; e.g. kmidimon (OS) or ~/kmidimon.AppImage (portable s/w).
      Note: KMidiMon (getting obsolete) is currently replaced DrumStick MIDI Monitor (new developer).
    • ReceiveMIDI is mainly intended for quickly monitoring the messages (in a terminal) that are sent to the computer from a particular MIDI device. By providing filter commands, it’s possible to focus only on particular type of MIDI messages.
    • SendMIDI is a command-line tool (in a terminal) making it very easy to quickly send MIDI messages to MIDI devices from the computer.
      • ReceiveMIDI and SendMIDI, each in its own terminal window, can also work together for giving even more monitoring power to the SMS users.
      • All the heavy lifting is done by the wonderful JUCE library, a leading framework for multi-platform Audio applications. Both ReceiveMIDI and SendMIDI use the Personal Free version 6.x of JUCE (Licenses: GNU GPL and commercial).

• What’s going on under the hood?
   [fr] Que se passe-t-il sous le capot ?

Discover how the SMS project is built using standard graphical objects from various specialized libraries which are installed by default under Purr Data / Pd-L2Ork. The Graphical User Interfaces (GUI) are designed using the Graph-On-Parent (GOP) concept. Each module has its own GUI and all of them put together lead to the SMS Control Panel used by the Performer.

SMS Control Panel GUI = [pd seq] + [pd display] + [pd ctrls] + [pd audio] + [pd sf-mgr] + [pd monitors] GUIs.

As Purr Data / Pd-L2Ork are using the modern HTML5 SVG technology (rather than the old Tcl/Tk one of Pure Data Vanilla) for building these GUIs, the Performer has always a clear and sharp image of the SMS Control Panel on her/his screen, even for the highest zoom-in level on big monitors.

• SMS v.0.2.50: Zoom-in / Zoom-out (16x levels)
Different zoom levels with a fixed window size under GNU/Linux

Simple MIDI Sequencer – v.0.2.50 | A simple Control Panel under GNU/Linux with Zoom levels x1 – x7 – x13

SMS’s GUI is optimized for 16/9 screens with 1,920 x 1,080 resolution. As its GUI is freely zoomable on 15 levels + full screen without any definition loss (thanks to its SVG GUI), the performer can easily adapt it to her/his specific screen/taste. Bigger will be the screen better will be the readability!
As for all MIDI/Audio environment and Home Studio, I suggest you to split SMS and the associated software across multiple screens and/or multiple virtual desktops (like under GNU/Linux systems).

[FR] L’interface graphique de SMS est optimisée pour des écrans 16/9 avec une résolution de 1.920 x 1.080. Comme son interface graphique est librement zoomable sur 15 niveaux + plein écran sans aucune perte de définition (grâce à son interface SVG), le performeur peut facilement l’adapter à son écran/goût spécifique. Plus grand sera l’écran, meilleure sera la lisibilité !
Comme pour tout environnement MIDI/Audio et Home Studio, je vous suggère de diviser SMS et les logiciels associés sur plusieurs écrans et/ou plusieurs bureaux virtuels (comme sous les systèmes GNU/Linux).

♦ Useful MIDI/Audio Tools in SMS

The [pd tools] module, directly accessible from the Control Panel, offers 5x useful functions to the performer:

  • Chords Detector/Guesser — from any MIDI source (like a keyboard, a synth or a file)
    The [chord] object tries to detect in real time as many chords (notes + chord name) as possible (few hundreds) like:
    – ‘C : C unison’ -or- ‘Eb : Eb unison’ -or- ‘F# : F# unison’, …
    – ‘E G# B : E major’ -or- ‘C Eb : C minor’ -or- ‘G F# : G major F 7th’, …
    – ‘E G B D# : E minor/major 7th’ -or- ‘Eb G B : Eb augmented’ -or- ‘E G# B D# A : E major 11th’, …
    – And so on…
  • Notes Scaler — from Input range slider to Output range slider
    The [notescale] object scales a stream of numbers (input slider range 0-1) to a MIDI note numbers (output range slider 0-127 or performer defined range).
  • MIDI-to-Frequency Converter — from any MIDI source or manual entry (number) -to- AUDIO (DSP)
    The [mtof] object transposes a Midi value into a Frequency in Hertz, so that ’69’ goes to ‘440’. You can specify microtonal pitches as in ‘69.5’ (a quarter tone higher than ’69’).
  • Frequency-to-MIDI Converter – AUDIO manual entry (number) -to- any MIDI equipment
    The [ftom] object transposes a Frequency in Hz into a Midi value, so ‘440’ goes to ’69’. For microtonal control, see the comment in the here below screen capture.
  • 7x MIDI Channel Status / Hex(h16)-to-Decimal(d10) Converters (internally SMS / Purr Data and Pd-L2Ork are using Decimal values)
    These 7x Hex-to-Dec converters will help you to find easily from Hexadecimal values their right Decimal values to put in Note, CC, PC, etc. objects and messages.
    They can be used within patchs design and/or for manual entry into a MIDI.txt file (compatible with SMS):
    Note Off/On (8nh/9nh), Poly Key AfterTouch (Anh), Control Change (CC) On (Bnh), Program Change (PC) On (Cnh), Channel AfterTouch (Dnh) and Pitch Bend (Enh).

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

Note: If needed, these functions can be easily modified for adapting them to any particular purpose.
If the performer is often using one or more of them, these functions can be directly integrated (DIY) within the SMS Control Panel with its-their own GUIs.

• About Musical Instrument Digital Interface (MIDI)

♦ Download & Install SMS with Purr Data
  [fr] Téléchargement et Installation de SMS avec Purr Data

• The SMS current version is the 0.2.73 βeta – Build 2022/09/18

Versus the previous v.0.2.70 (2022/09/05), the current βeta is mainly a maintenance release with many GUI tweaks and some operation optimizations.

DOWNLOAD ===> Build.20220918 File size ~ 126 KB

• SMS zipped file

The SMS project consists of 9 files: the main program (a module with about 10 integrated sub-modules), an external Pd clock patch and 7 images. The whole thing weighs only about 126 KB zipped and 255 KB unzipped, of which 1/3rd for the images. These 9 files, after decompression, are to be deposited into the same folder of your choice on your computer (GNU/Linux, macOS or Windows). Once on your computer with Purr Data installed, to run SMS, simply double-click on its ‘simple-midi-sequencer-xyz.pd’ file which will first launch Purr Data and then the program itself. And you are ready to go!

As always, the SMS project 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.

[fr] Le projet SMS se compose de 9 fichiers : le programme principal (un module avec environ 10 sous-modules intégrés), un patch Pd clock externe et de 7 images. Le tout ne pèse qu’environ 126 Ko zippé et 255 Ko décompressé, dont 1/3 pour les images. Ces 9 fichiers, après décompression, sont à déposer dans le même dossier de votre choix sur votre ordinateur (GNU/Linux, macOS ou Windows). Une fois sur votre ordinateur avec Purr Data installé, pour lancer SMS, double-cliquez simplement sur son fichier ‘simple-midi-sequence-xyz.pd’ qui ouvrira d’abord Purr Data puis le programme lui-même. Et vous êtes prêt à passer en mode utilisation !

Comme toujours, le projet SMS peut être utilisé tel quel ou librement modifié – adapté par n’importe qui à son goût spécifique. Faites-le par vous-même (DIY) et adaptez Simple MIDI Sequencer à vos besoins particuliers et à votre environnement MIDI/Audio.

PURR DATA (or Pd-L2Ork v.2) Installation

Purr Data — Walking Cat

NOTE that Simple MIDI Sequencer (SMS) is running inside Purr Data or Pd-L2Ork -but not- Pure Data Vanilla (Pd).
Therefore, Purr Data v.2.17.0 or higher (a free/libre graphical data-flow programming environment which is geared towards real-time interactive computer music and multimedia applications) must be first downloaded (~ 100 MB) then installed (~ 300 MB) on your computer under:
– either GNU/Linux including Raspberry Pi OS (Debian) with the recommended OBS/JGU (Open Build System / Johannes Gutenberg University) procedure,
– or Apple macOS,
– or Microsoft Windows.
See below the installation procedure of Purr Data.

[fr] Nota bene : Simple MIDI Sequencer (SMS) s’exécute à l’intérieur de Purr Data ou Pd-L2Ork.
De ce fait, Purr Data v.2.17.0 ou version ultérieure (un environnement libre de programmation de flux de données graphiques qui est orienté vers des applications de musique et multimédia interactives en temps réel) doit être d’abord téléchargé (~ 100 Mo) puis installé (~ 300 Mo) sur votre ordinateur (GNU/Linux incluant Raspberry Pi OS (Debian), macOS ou Windows).
Voir ci-dessous la procédure d’installation de Purr Data.

Make sure to read at least the following chapters of Purr Data Installation for setting up your fresh install:
[fr] Assurez-vous de lire au moins les chapitres suivants de l’Installation de Purr Data pour configurer votre nouvelle installation :
  • GNU/Linux (Arch Linux / Manjaro Linux, Debian & derivatives / Raspberry Pi OS / etc., OpenSUSE, Ubuntu & derivatives / Linux Mint / etc.)
  • macOS & Windows
  • Running Purr Data: First-Time Setup, macOS and Windows Users, Linux Users, Using JACK MIDI with Purr Data
  • -as well as- ‘Meet the Cat’ Tutorial – A quick introduction to Purr Data, how it came about, and how to practise it for ready-to-use patchs and/or to build your own ones, including Configuration: Audio and MIDI Devices, GUI and Startup Options and Getting Help
  • [fr]Rencontrez le Chat : Introduction rapide à PURR DATA (vs Pd-L2Ork vs Pd-extended vs Pure Data) – Cet article fournit aux nouveaux et potentiels utilisateurs de Purr Data une introduction en douceur au programme et quelques informations utiles pour commencer à utiliser des patches existants (comme ici SMS ou MDR-E+) et/ou à programmer des patches (modules) avec les centaines d’objets graphiques internes et externes (bibliothèques) disponibles

• Purr Data (or Pd-L2Ork) Audio/MIDI Preferences & Test

Audio drivers

Purr Data / Pd-L2Ork can use a variety of Audio drivers to connect to your computer soundcard. So your first step is to chose the correct one. This can be done via its Edit / Preferences menu:
– GNU/Linux: Audio tab -> OSS / ALSA / JACK* (QJackCtl),
– macOS: Audio tab -> PortAudio* / JACK (JackOSX but it’s getting very old), or
– Windows: Audio tab -> MMIO (to avoid) / ASIO* (ASIO4ALL via PortAudio) / JACK* (JackWIN via PortAudio).
• The performers are encouraged to investigate and to use when it’s possible JACK* (Jack Audio Connection Kit), an efficient Audio server which allows, among other features, different Audio applications to be connected with ‘virtual cables’ inside your computer!

[fr] Purr Data / Pd-L2Ork peuvent utiliser une variété de pilotes Audio pour se connecter à la carte son de votre ordinateur. Donc, votre première étape est de choisir le pilote approprié. Cela peut être fait via son menu Édition / Préférences :
– GNU / Linux : onglet Audio -> OSS / ALSA / JACK* (QJackCtl),
– macOS : onglet Audio -> PortAudio* / JACK (JackOSX mais il est très ancien), ou
– Windows : onglet Audio -> MMIO (à éviter) / ASIO* (ASIO4ALL via PortAudio) / JACK* (JackWIN via PortAudio).
Les performeurs sont encouragés à investiguer et à utiliser quand c’est possible JACK* (Jack Audio Connection Kit), un serveur Audio efficace qui permet, entre autres fonctionnalités, de connecter différentes applications Audio avec des ‘câbles virtuels’ à l’intérieur de votre ordinateur.

Simple MIDI Sequencer — Purr Data | Configure the Audio & MIDI inputs and outputs, GUI and Startup (here an example under GNU/Linux)

Audio sample rate & delay

Make sure the Audio sample rate (ASR) is set at the same value all across your system: Purr Data, SMS, JACK and/or ALSA server·s! For recording MIDI and voice performances an ASR setup with 44,100 Hz (44.1 KHz – CD quality) or 48,000 Hz (48 KHz – DVD quality) is just fine. The latest choice is better for preventing audible aliasing (Nyquist frequency = sampling frequency / 2).
The Audio delay is set by default at 20 ms. This value can be decreased or increased depending of the configuration and performance (quality) of your total Audio chain.

[fr] Assurez-vous que le taux d’échantillonnage Audio (ASR) est réglé à la même valeur dans tout votre système : Purr Data, SMS, serveur·s JACK et/ou ALSA ! Pour enregistrer des performances MIDI et vocales, une configuration ASR avec 44.100 Hz (44,1 KHz – qualité CD) ou 48.000 Hz (48 KHz – qualité DVD) conviendra très bien. Ce dernier choix est meilleur pour éviter le crénelage audible (fréquence de Nyquist = fréquence d’échantillonnage / 2).
Le délai-retard Audio est réglé par défaut à 20 ms. Cette valeur peut être diminuée ou augmentée en fonction de la configuration et de la performance (qualité) de toute votre chaîne Audio.

♦ Releases & Changes Log History
  [fr] Historique des publications et Liste des changements

SMS v.0.2.73 -- 2022/09/18
– βeta version / Maintenance release.
– Many GUI tweaks in all Modules.
– Operation optimizations such as:
   . [clock] object has been modified into [clock-sms] for allowing MIDI / Pd clocks synchronization in [pd seq] / [pd seq-prog] modules.
   . [pd seq]: The PLAY time is now accurately displayed when using the 6x Tempo presets, which is not the case yet with the Tempo slide-bar (it will be fixed in a future release).
   . [pd seq]: The PAUSE Led is now flashing when the playing is in pause.
   . [pd audio]: The PLAY Leds are now flashing when the playing is in pause.
   . [pd display]: CHannel numbers are now displayed in front of VOLume & EXPression values.
SMS v.0.2.70 -- 2022/09/05
– βeta version.
–  A ‘Multipurpose MIDI Monitors’ module was added
   . Today it’s operational only for GNU/Linux. For macOS and Windows, it will come later on.
   . Several types of Monitors are handled, installed ones in the OS as well as portable software (AppImage, FlatPak, Snap).
   . ALSA and/or JACK MIDI interfaces can be used.
[pd sf-mgr] — Now both last used SF2 soundfonts can be saved at the end of a session, so they can be automatically loaded when starting a new session.
   . The automatisation between the internal MIDI sequencer commands and the synthesizer has been improved.
– Some cosmetic changes and functionalities fine tuning.
SMS v.0.2.61 -- 2022/08/27
– βeta version.
–  A ‘SoundFont Synthesizer Manager’ module was added
   . Availability to handle 2x different SoundFonts (SF2 format), one for the internal MIDI Sequencer and the other one for external MIDI Devices (like keyboards, sequencers, drum machines, etc.).
   . Both SoundFonts can be used simultaneoussly and their PC (sounds) can be changed individualy by the performer.
[pd audio] — [adc~] & [dac~] objects numbers were updated due to the add of [pd sf-mgr].
[pd display] — Now displaying all 16 channels activity rather than the last used channel, but no change for the notes and other MIDI messages where it’s always the last one which is displayed.
– Some cosmetic changes and functionalities fine tuning.
SMS v.0.2.50 -- 2020/10/17
– βeta version.
– Some GUI tweaks and colors change accross the project
GM Controllers / PC & CC MIDI-Out
   . Bug fix: RST was sending a Rctrls to the connected MIDI equipment (Synth) instead of just reseting the GUI of this module.
   . Bug fix: Correction of PC-Out value which was wrongly sending PC Nb+1.
MIDI-In & Sequencer-Out Activity
   . Added: Pitch Bend horizontal slider with its decimal value.
   . Added: Decimal value for Pitch Velocity and Pitch AfterTouch to their horizontal sliders.
   . Added: Decimal value display to the LVL (level) vertical slider for VOL (volume) and EXP (expression).
SMS v.0.2.42 -- 2020/09/30
– βeta version.
ALL Modules — Cosmetic improvements including colors changes code.
Audio/Voice Recorder/PlayerAdded MP3 codec support for recording Audio from any available source (synthesizer, microphone, etc.) to SMS while writing-saving it directly to disk.
Note that reading-playing MP3 files is not supported yet! (could come later on).
MIDI-In/Out Sequencer — The banner will now display the MIDI file name.ext during playback.
MIDI-In/Out Sequencer — In this module the banner for the MIDI messages to the performer will now also display the Audio messages when actions are done within Audio/Voice Recorder/Player.
Display MIDI-In/Out Activity — Now by default the MIDI messages on CHannel 10 (Drums) are not displayed. If the performer wants to add it to the MIDI messages flow, she/he can switch the Vradio (at the left/top) to the ’10_on’ position for doing so.
Display MIDI-In/Out Activity — The display of CHannel number has been added to CC Nb-Val and PC Nb.
SMS v.0.2.30 -- 2020/09/14
– βeta version.
[all modules] — Cosmetic improvements.
[pd display] — Added a vertical slider for displaying both Volume (CC 7) and Expression (CC 11) levels (0-127) on all channels (1-16).
[pd audio]Both VU-Meters have been re-calibrated as they were displaying incorrect dB values and now the Graphs gain is not impacting anymore the dB levels.
GUI Zoom-Out — In Purr Data v.2.13+ the Ctrl (+) keys combination bug has been frozen on non-QWERTY keyboards. Now, use Ctrl (+) Mouse wheel for GUI Zoom In/Out.
– Minor bugs fix & some tweaks added.
SMS v.0.2.21 -- 2020/05/11
– βeta version.
[pd seq] & [pd audio] — These 2 modules have been reorganized into Russian (nested) dolls architecture (GOP + separated main program) for better real-time performances (less stress on CPU load), especially when moving the mouse across them.
[pd tools] — Added MIDI Channel Status / HEX-to-DECIMAL Converters which will help you to find the right decimal values to put in Note, CC, PC and so on messages. They can also be used for manual entry into a MIDI.txt file (compatible with SMS / Purr Data) using a simple text editor.
[pd help] — Its content was updated.
– Minor bugs fix & some tweaks added.
Known bug — GUI Zoom Out: Ctrl (+) keys combination is not working as expected on non-QWERTY keyboards but rather adds a [dropdown] object to SMS. This is a Purr Data bug which will be fixed later. Until then, the best is to use Ctrl (+) Mouse wheel for GUI Zoom In/Out.
SMS v.0.2.12 -- 2020/02/13
– 1st βeta version.
– The Control Panel 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.
– Manually create and/or edit a MIDI.txt file compatible with SMS.
MIDI Flow Display 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).
– Tips about free/libre Music Engraving Software.
Audio/Voice Recorder & Player support now two kind of codecs:
   . 1st one is for .ogg (free and open format) sound files, and
   . 2nd one is for .wav (Microsoft) + .aif (Apple) + .au & .snd (Sun) sound files.
This module can also playback compatible sound files which were recorded with other audio recorders.
Audio/MIDI Toolbox has now Midi-In On/Off switches for both Chords Detector/Guesser and Midi-To-Frequency Converter tools.
SMS v.0.2.9 -- 2020/01/30
– αlpha version.
Audio Module
   . A second VU-Meter was added. Now VUs display both left and right audio channels level.
   . The Stereo/Mono switch works now correctly in all Recording / Playing / Monitoring modes.
– Some minor tweaks have been also done by adding dedicated status Leds for REC/PLAY in both Sequencer and Audio modules.
MIDI/Audio Tools module was added offering 4 useful functions to the performer:
   . Chords Detector/Guesser
   . Notes Scaler
   . MIDI-to-Frequency Converter
   . Frequency-to-MIDI Converter
SMS v.0.2.7 -- 2020/01/19
– 1st αlpha version.
Universal MIDI Sequencer
   . A RST (reset button) was added.
   . Now LOAD File & SAVE File stop the Recording / Playing operation in progress, if any.
MIDI Flow Display
   . Bug fix: wrong display of the Octave Nb if it was different of Middle C = 4. The Octave range has also been extended from 8 to 9 by adding one low octave.
   . SX-IN (system exclusive) values display was added as SMS can also record SYSEX messages, in add to standard MIDI messages (Notes, PC, CC).
MIDI PC & CC Controllers: The performer can now set up individually the Channel Nb for each of the 5 pairs of CC (Control Change) controllers. This allows, when needed, for the 4 pairs of CC (1-8) to easily manage the MSB/LSB values for a given pair of CC.
Audio/Voice Recorder/Player
   . It can be used in Standalone or in Synchro mode (the MIDI switch) with the MIDI sequencer. In both cases, the Audio is recorded (with CD quality) and saved directly to disk. DSP (the Audio engine of Purr Data) is automatically put in either ON or OFF mode when the performer is doing appropriate actions.
   . Bug fix: removed a constant time shift of 2 seconds in both Recording and Playing mode.
SMS v.0.2.5 -- 2020/01/10
– 1st release — pre-αlpha.
– POC — Proof of concept.

♦ MIDDLE C Octave # Clarification

There is no consensus among MIDI manufacturers and users regarding Middle C numbering.
For the MMA (MIDI Manufacturers Association) and, Middle C is always Note Number #60. In SMS, the Performer can change the display of Middle C Octave numbering (range of +/- 2) accordingly to her/his preferences-needs.

French / English musical notation correspondence with MIDI note number

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

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 / Pd-L2Ork / 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).

It writes and reads 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:

♦ Examples / Screen Captures / Progress
  [fr] Exemples d’utilisation / Captures d’écran / Évolution

• SMS 0.2.70: Multi-purpose MIDI Monitors added
SMS can display / map / modify / translate / route -in real-time- all kind of MIDI messages and data

Simple MIDI Sequencer – v.0.2.70 — GNU/Linux | MIDI Monitors in action

• SMS 0.2.61: Playing a MIDI file using the internal SoundFont Synthesizer

Simple MIDI Sequencer – v.0.2.61 — GNU/Linux | Playing a MIDI file & displaying its notes on VMPK => Internal SF2 Synthesizer => Internal Audio Monitor

JACK Audio & ALSA MIDI connections

Simple MIDI Sequencer – v.0.2.61 — GNU/Linux | Audio/MIDI Configuration for QjackCtl + Purr Data + VMPK

• SMS v.0.2.50: Playing a MIDI file with the Audio output of the internal Synthesizer monitored by its Audio module

Simple MIDI Sequencer v.0.2.50 – Purr Data 2.15.2 (with Pure Data 0.48.0 engine) under Linux Mint 20.0 Cinnamon LTS — in action associated with Qsynth + SoundFont .sf2 + VMPK + Jmeters (1st Working space)

Folks in the backstage

Simple MIDI Sequencer v.0.2.50 – Purr Data 2.15.2 (with Pure Data 0.48.0 engine) under Linux Mint 20.0 Cinnamon LTS — in action associated with QjackCtl + Qsynth + SoundFont .sf2 + MidiSnoop (2nd Working space)

a modular patchbay for Audio & MIDI systems based on Jack & Alsa,
is used in parallel to QjackCtl

Simple MIDI Sequencer v.0.2.50 – Purr Data 2.15.2 (with Pure Data 0.48.0 engine) under Linux Mint 20.0 Cinnamon LTS — in action associated with Patchage (3rd Working space)

• SMS v.0.2.22: Playing MIDI files & Associated software

Lecture de fichiers MIDI avec Simple MIDI Sequencer et QJackCtl (serveur Audio JACK) + QSynth (gestion de SoundFonts) + VMPK (affiche les notes MIDI lues) + JMeters (affiche niveaux Audio JACK) sous Manjaro Linux 20 (Bureau n° 1)

• Playing MIDI files with SMS: ALSA/JACK configuration example

Configuration ALSA/JACK pour la lecture de fichiers MIDI avec Simple MIDI Sequencer sous Manjaro Linux 20 (Bureau n° 2)

• SMS v.0.2.21: Home Studio (CAM) in action under GNU/Linux

Simple MIDI Sequencer v.0.2.21 – Purr Data 2.10.1 (with Pure Data 0.48.0 engine) under Ubuntu Studio 20.04 LTS — in action associated with Qsynth + SoundFont .sf2 + VMPK (1st virtual desktop)

Simple MIDI Sequencer can be used in a Home Studio (computer-aided music) under GNU/Linux. The same thing can be also achieved under macOS and Windows.

Simple MIDI Sequencer v.0.2.21 – Purr Data 2.10.1 (with Pure Data 0.48.0 engine) under Ubuntu Studio 20.04 LTS — in action associated with Ubuntu Studio Controls + Carla + QasMixer + MidiSnoop (2nd virtual desktop)

• SMS v.0.2.9: MIDI/Audio configuration example under GNU/Linux
   M-Audio Uno + VMPK + Catia (Cadence) + jackEQ + Qsynth

Catia (a member of Cadence bundle from KXStudio) is a nice JACK Patchbay, with some neat features like A2J (ALSA to JACK) Bridge support and JACK Transport. It’s supposed to be as simple as possible, so it can work nicely on Linux and non-Linux platforms. It’s compatible with GNU/Linux and Windows.

Catia is an alternative to Patchage which is running under GNU/Linux and macOS but not Windows.

Simple MIDI Sequencer – Alpha v.0.2.9 | MIDI & AUDIO Test configuration under GNU/Linux with Catia

This is one example of possible MIDI/AUDIO connections under GNU/Linux using Catia and jackEQ (a JACK mixer for routing and manipulating Audio from/to multiple input/output sources including a simple 3 bands equalizer).

QjackCtl (GNU/Linux) / Jack Control (Windows) – JACK Audio Connection Kit – Qt GUI Interface – provides a simple GUI dialog for setting several JACK daemon parameters, which are properly saved between sessions, and a way to control the status of the Audio server daemon. With time, this primordial interface has become richer by including an enhanced Audio/MIDI patchbay and connection control features (can be used instead of or with Catia).

• SMS v.0.2.5: MIDI/Audio configuration example under GNU/Linux
   M-Audio Uno + Patchage + jackEQ + Qsynth

Simple MIDI Sequencer – Alpha v.0.2.5 | MIDI & AUDIO Test configuration under GNU/Linux

• SMS v.0.2.7: MIDI-to-Audio copy under GNU/Linux
   with Virtual Midi Piano Keyboard (VMPK)

Simple MIDI Sequencer – Alpha v.0.2.7 in action with VMPK (Virtual MIDI Piano Keyboard) v.0.7.1

♦ 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; i.e. 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 like 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.