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
- Introduction to SMS
[fr] Présentation de SMS - SMS Main features
[fr] Principales caractéristiques - Useful MIDI/Audio Tools in SMS
[fr] Jeu pratique d’outils MIDI/Audio - Download & Install SMS with Purr Data
[fr] Téléchargement & Installation de SMS avec Purr Data - Releases & Changes Log History
[fr] Historique des publications et Liste des changements - Middle C Octave # Clarification
[fr] Clarification concernant la notation du Do central - Create and/or edit MIDI.txt file compatible with SMS?
[fr] Créer et éditer un fichier MIDI.txt compatible avec SMS - SMS Examples / Screen captures / Progress
[fr] Exemples d’utilisation / Captures d’écran / Évolution
- Music Engraving Software?
[fr] Logiciels de notation musicale
♦ 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:
- Module 1: a realtime MIDI Sequencer,
- Module 2: a MIDI Activity Display,
- Module 3: a MIDI Controller,
- Module 4: an Audio Recorder/Player,
- Module 5: a Set of MIDI/Audio Tools,
- Module 6: a SoundFont (SF2) Synthesizer Manager – since v.0.2.60, and
- Module 7: a Multi-purpose MIDI Monitors – since v.0.2.70.
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.
[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
Who said that the free/libre GNU/Linux operation systems / distributions are not fully graphical?!
Simple MIDI Sequencer: ALSA/JACK Setup
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 ?
- Simple MIDI Sequencer v.0.2.70 – Project’s Patches (PDF) — 2022/09/05
An at-a-glance view to the internal structure / graphical data-flow programing of SMS.
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
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).
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)
- MIDI Tutorial — A look at this magical musical revolution.
- Somascape’s Guide to the MIDI Software Specification — A very good overview.
- For more in depth information, you can consult:
- The Complete MIDI v.1.0 Detailed Specification, or
- simply this Short summary.
♦ 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 ===> | simple-midi-sequencer-0273.zip | 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
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.
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
♦ MIDDLE C Octave # Clarification
There is no consensus among MIDI manufacturers and users regarding Middle C numbering.
For the MMA (MIDI Manufacturers Association) and MIDI.org, 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.
♦ 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
• SMS 0.2.61: Playing a MIDI file using the internal SoundFont Synthesizer
JACK Audio & ALSA MIDI connections
• SMS v.0.2.50: Playing a MIDI file with the Audio output of the internal Synthesizer monitored by its Audio module
Folks in the backstage
Patchage,
a modular patchbay for Audio & MIDI systems based on Jack & Alsa,
is used in parallel to QjackCtl
• SMS v.0.2.22: Playing MIDI files & Associated software
• Playing MIDI files with SMS: ALSA/JACK configuration example
• SMS v.0.2.21: Home Studio (CAM) in action under GNU/Linux
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.
• 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.
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
• SMS v.0.2.7: MIDI-to-Audio copy under GNU/Linux
with Virtual Midi Piano Keyboard (VMPK)
♦ 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.