Skip to content

Repository files navigation

Noteahead

Build Status

Noteahead is a lightweight, pattern-based MIDI sequencer and "half-daw" for Linux, designed for musicians who prefer the tracker workflow but want a modern, self-contained production environment.

While it excels as a dedicated MIDI "brain" for external synthesizers and drum machines, Noteahead now features a powerful suite of internal instruments, a studio-quality virtual rack for mixing, and high-precision rendering capabilities.

Noteahead is written in Qt/QML/C++20 on top of RtMidi back-end + RtAudio. It builds with CMake and uses CTest + Qt Test framework for unit tests.

Who is it for?

While many musicians rely on complex DAWs, Noteahead is for Linux musicians who enjoy the precision and keyboard-driven workflow of trackers but want something more integrated than a simple MIDI sequencer. It is the perfect middle ground—a "half-daw" that can act as the central brain of a MIDI setup or as a standalone production tool using its built-in software synths and effects.

Whether you are sequencing external vintage gear via USB-MIDI or building entire tracks in the box, Noteahead offers a clear interface with studio-quality features like 8-band parametric EQ, feedback delay network reverbs, and a high-precision offline renderer.

My own setup runs Noteahead on Ubuntu 24.04 LTS with all gear connected via USB-MIDI hubs. Synths are routed to an external digital mixer connected to the PC via USB. I record with Noteahead and master in Audacity using LSP (mostly) plugins. I have already produced several songs with it, available on SoundCloud, YouTube Music, and Spotify (see links below).

I now also write songs with the internal instruments only. It has been a huge effort to make this possible.

Example Tracks

Some example tracks sequenced and recorded with Noteahead (usually mastered in Audacity).

A short synth demo:

Songs with Noteahead's built-in synths and drums only:

Noteahead with hardware synths:

All Arctic Music Project songs:

Features

Core / Performance

  • Sample-Accurate Timing
    • Jitter-free and drift-free internal timing strategy.
  • High-Precision Offline Renderer
    • Export songs to WAV with sample-accurate timing, preserving all automations and parameters.
  • Native Audio Backend Selector
    • Explicit support for ALSA, PulseAudio, and JACK with optional transport synchronization.
  • Lightweight & Scalable
    • Fully scalable UI with a Debian package size of around 1 MB.

Internal Instruments (Virtual Device Rack)

  • Virtual Device Rack
    • Central hub for managing multiple independent instances of internal instruments.
    • Per-slot level meter with a gain staging marker, a load readout, and a clip LED that latches on any full-scale output until clicked.
    • Faders run from -inf to +10 dB, with unity three quarters up the throw, on devices and Sampler pads alike.
  • Synth
    • Polyphonic VA synthesizer (up to 6 voices) with dual oscillators, multi-mode filters, ADSR/Mod EGs, LFO, and built-in Delay.
  • Wavetable Synth
    • 8-voice wavetable synthesizer with two independent wavetable oscillators (Classic and Spectral sets), noise generator, cascaded LPF/HPF filters, Amp and Mod EGs, LFO, and Poly/Unison voice modes with stereo pan spread. Features 2× oversampling and portamento.
  • Bass Synth
    • Monophonic acid-style synthesizer with sub-oscillator, resonant 24dB LPF, and TB-303 style accent/slide.
  • Drum Synth
    • Multi-engine drum machine with 11 independent voices (Kick, Snare, Toms, etc.) and dedicated per-voice controls.
  • Sampler
    • 16-pad internal sampler with WAV support, dual filters, and per-sample panning/volume.
  • Piano Synth
    • Physically modelled (waveguide) piano with brightness, decay, inharmonicity, LPF/HPF shaping, release, and stereo pan spread.
  • String & Voice
    • Vintage string/choir ensemble inspired by the Roland VP-330 / Behringer VC340, with strings and voice registers, BBD ensemble chorus, and a sidechain vocoder.
  • String Ensemble
    • Divide-down string machine in the Solina tradition: twelve master oscillators tapped at 16'/8'/4' by every key, so octaves stay phase-locked and polyphony is unlimited. Bass section (Contrabass, Cello) below the split with its own Volume Bass, upper section (Horn, Viola, Trumpet, Violin) above it, plus Crescendo/Sustain Length, ensemble chorus and a swept phaser.
  • Sub Mixer
    • Groups other devices so a whole set is mixed and processed as one entity, with its own insert effects, Volume, Gain and Pan. Members keep their own reverb sends, Sub Mixers can be nested, and Volume/Pan can be ridden from a track over MIDI CC.
  • Dynamic Routing
    • Per-device Effect Sends for flexible mixing.

Effects Racks

  • Master and Per-Device Effect Racks
    • Studio-quality effects hub with support for multiple independent instances. Every effect below is available in both the master rack and each device's insert rack.
  • 8-Band Parametric EQ
    • High-precision equalizer with multiple filter types (Bell, Shelf, Cut, Notch) per band and Mid/Side processing modes.
  • Vintage Passive EQ
    • Passive "program equalizer" in the EQP-1A tradition, with interacting low Boost/Atten shelves, a high bell Boost with Bandwidth, and a separate high Atten shelf.
  • Air Band EQ
    • Six-band parallel-summed "air band" equalizer whose fixed bands (Sub, 40 Hz, 160 Hz, 650 Hz, 2.5 kHz) are taps added back to the dry signal rather than a cascade.
  • Simple EQ
    • A single "Sounds Good" knob sweeping a fixed loudness-smile curve: low-shelf body, a gentle low-mid scoop and a high-shelf air lift.
  • FDN Reverb
    • High-quality Feedback Delay Network algorithm with 8 studio presets (Hall, Cathedral, etc.) and fine-grained controls.
  • Endless Reverb
    • Large ambient reverb built on an 8-line modulated Householder FDN with input diffusion, plus a Freeze switch for an infinite tail.
  • Compressor
    • Feed-forward compressor with soft-knee interpolation, lookahead support, and real-time gain reduction metering.
  • Auto Ducker
    • Side-chain driven level rider with Threshold, Knee, Attack, Hold and Release. Amount is signed, so the same effect ducks the signal out of the way or lifts it with the side chain.
  • Limiter
    • Lookahead brickwall peak limiter with Threshold, Ceiling, Release and Lookahead controls, a Boost switch for maximum loudness, and gain reduction metering.
  • Clipper
    • Hard/soft clipper with adjustable threshold and output gain.
  • Saturator
    • Multi-mode saturation/distortion for adding harmonics and warmth.
  • Drive
    • Overdrive with Drive amount, dry/wet Mix and output Gain, in Soft (tanh), Hard (clip), Fold (wavefolder) and Dist algorithms.
  • Chorus
    • Stereo chorus with rate, depth, delay, width, and LPF/HPF shaping.
  • Delay
    • Studio-standard delay with feedback, tempo sync, and Mono/Ping-Pong/Tape modes.
  • Panner & Auto Panner
    • Static stereo panning plus an LFO-driven auto panner.
  • All-Pass Filter
    • Multi-stage all-pass filter for phase shaping.
  • Metering & Analysis
    • LUFS loudness meter, dBTP true-peak meter, and a real-time analyzer (RTA).
  • Integrated Effects
    • Includes High-Pass/Low-Pass filters and Panning/Volume utilities.

Editing & Sequencing

  • Keyboard-Driven Workflow
    • Fast, tracker-style editing using decimal values (0-127).
  • Advanced Automation
    • Linear, Sine wave, and Random modulation for MIDI CCs and Pitch Bend.
  • Pattern-Based Sequencing
    • Flexible play order management with independent pattern lengths.
  • Arpeggiator & Chords
    • Integrated arpeggiator with multiple patterns (Up, Down, Random) and customizable chord offsets.
  • MIDI Side-Chain
    • Trigger MIDI CC events based on other tracks or columns.
  • Step Recording
    • Record notes directly from a MIDI controller into the editor.

MIDI & Connectivity

  • MIDI Hot-Plug
    • Automatic detection and setup of MIDI devices as they go online/offline.
  • Virtual MIDI Out
    • Use Noteahead to control other software or external hardware.
  • Wide Hardware Support
    • Tested with a vast range of Arturia, Behringer, Korg, Roland, and Yamaha gear.
  • Standard Exports
    • Export to MIDI File Format 1 (SMF Type 1) including automations.

Tools & Experimental

  • Audio Recorder
    • Direct-to-disk recording from the selected audio source.
  • Calculators
    • Built-in Delay time and Note frequency calculators.
  • Experimental MIDI Import
    • Initial support for importing Standard MIDI Files.

Future dreams (NOT YET IMPLEMENTED):

  • Horizontal visualization / Piano Roll

Some important design choices

Software framework

Noteahead is written in Qt/QML/C++20, because it's a relevant, stable, and well-known technology stack especially in the Linux-world. Qt also has a very good support for safe threads and it performs well. The MIDI backend is currently based on RtMidi, but the architecture is such that it can be easily changed.

Tracks and note columns

Only one "instrument" can be set per track (it's possible to change patch on-the-fly, however). I don't like the traditional concept where each note includes the instrument number and can be inserted anywhere. In my opinion this easily leads into a mess and the workflow is clumsy.

All values are entered in decimal format, typically ranging from 0 to 127 to align with the MIDI protocol and also used in many synthesizers. I've never been a fan of the hexadecimal notation commonly used in trackers.

Internal timing strategy

The song is rendered into events just before playing. Accurate timestamps are calculated for each event beforehand in order to achieve a drifting-free timing. The player thread syncs to these event timestamps.

Project file format

Noteahead reads and saves to a custom XML-based format. This has several pros:

  • It supports more feature than just a simple MIDI-file.
  • A plain text project file works well with version control systems like Git. You can immediately see what you have changed in the project. A binary-formatted project file is a black box and a PITA.

Several..? That was only two, come on!

License

Noteahead's source code is licensed under GNU GPLv3. See COPYING for the complete license text.

Install instructions

Currently Debian packages for Ubuntu 24.04 LTS and Ubuntu 26.04 LTS are provided. Installation, for example:

$ sudo apt install ./noteahead-0.1.0-ubuntu-24.04_amd64.deb

Build instructions

Currently Noteahead depends on Qt >= 6.4. Actually that's the only thing that defines the Ubuntu version if stock Qt is to be used.

Noteahead is currently being developed on Ubuntu 24.04 LTS and on Ubuntu 26.04 LTS with the stock Qt 6 from repositories.

Build dependencies on Ubuntu (>= 24.04)

Packages needed for building:

$ sudo apt install build-essential cmake pkg-config ninja-build qt6-base-dev qt6-declarative-dev qt6-tools-dev librtmidi-dev librtaudio-dev libsndfile-dev libjack-jackd2-dev

Note: As we are in the middle of the PipeWire transition, the Jack development files might not be needed.

Additional packages needed to run:

$ sudo apt install qml6-module-qtcore qml6-module-qtqml qml6-module-qtqml-workerscript qml6-module-qtquick qml6-module-qtquick-controls qml6-module-qtquick-dialogs qml6-module-qtquick-layouts qml6-module-qtquick-templates qml6-module-qtquick-window

Build and run on CLI

$ mkdir build && cd build

$ cmake -GNinja ..

$ ninja

$ ./noteahead

Optionally install locally:

$ ninja install

Run unit tests on CLI

$ ctest

Create a Debian package

$ cpack -G DEB

User manual

Noteahead ships with a complete user manual, available in the application under Help => User Manual.... It has a table of contents, follows the current theme, and covers everything in detail: the toolbar, the editor columns, every internal device and effect, automations, synchronization, and audio rendering.

The manual source lives in src/view/qml/Manual.html.

A quick keyboard shortcut reference is also available under Help => Shortcuts....

The section below is only a quick start — the manual is the authoritative reference.

Basic usage

Quick start

1) Give a track a sound. Click the settings icon on a track header to open Track Settings. A track plays either an external MIDI instrument or one of Noteahead's internal devices:

  • External MIDI: pick the MIDI output port and channel of your synth or drum machine. Devices are hot-plugged, so they appear as they come online.
  • Internal device: click Device Rack... in the same dialog (also under Devices => Device rack...), press (+) on a free slot, pick an instrument from the Device Gallery — Synth, Wavetable Synth, Bass Synth, Drum Synth, Sampler, Piano Synth, String & Voice, String Ensemble or Sub Mixer — and then select its internal port (e.g. Noteahead Synth 1) back in Track Settings. Nothing external is needed; Noteahead renders these itself.

2) Set up the track. Click the track name to rename it. [+]/[-] in the track header adds or removes note columns.

3) Sequence. Press ESC to enter edit mode and use your PC keyboard as a virtual "piano": Z..M is the lower octave (Z is "C"), Q..U the higher one. The STEP, VEL and OCT spinners in the toolbar control the cursor advance, the default velocity and the base octave.

4) Play. Press SPACE or use the play buttons.

5) Build the song. In the Pattern section, the PAT spinner selects the pattern being edited (increase it to create a new one) and LEN sets its length in lines — each pattern can have its own. Click the pattern name to rename it. In the Song section, POS selects the position in the play order, PAT the pattern assigned to it, and LEN the song length. Right-click a position button to mark it as skipped.

6) Mix. Each device rack slot has Insert FX for its own effect rack, Sends for the shared send effects, and a fader with a level meter and clip LED for gain staging. The master rack is under Effects => Master effect rack....

7) Export. File => Render audio... renders offline to WAV or FLAC, either as a master mix or as per-track stems, with optional normalization and a loudness report. File => Export MIDI file... writes an SMF Type 1 file including automations.

Editor columns

Each note column line has four fields:

C-4 100 00 064
  • Note: pitch and octave, or OFF for a note off event.
  • Velocity: 000..127.
  • Delay: sub-line timing offset for humanizing.
  • Pan: 000..127, sent as MIDI CC #10. Only on the first note column of a track; the others show ---.

Context menu

The main context menu is accessed by right-clicking on the editor view. Its actions are grouped by scope — Line, Column, Track, Pattern, Song and Selection — and cover cut/copy/paste, transposition, note-off insertion, velocity and pan interpolation, MIDI CC and pitch bend automations, and line events such as patch changes. Lines that have an event assigned are rendered in an accent color.

Most important "special" keys

Key Action
ESC Toggle edit mode
SPACE Toggle play mode
INSERT Insert an empty line and move subsequent lines down
BACKSPACE Delete the current line and pull subsequent lines up
DELETE Clear the current event
A Insert a note off event
F3 / F4 Decrease / increase the current octave
Z..M Play/insert notes of the lower octave
Q..U Play/insert notes of the higher octave

Cut/Copy/Paste (also available via right-clicking on the editor):

Scope Cut Copy Paste
Selection Ctrl + X Ctrl + C Ctrl + V
Column Alt + F3 Alt + F4 Alt + F5
Track Shift + F3 Shift + F4 Shift + F5
Pattern Ctrl + F3 Ctrl + F4 Ctrl + F5

Transposition (also available via right-clicking on the editor):

Scope -1 semitone +1 semitone -12 semitones +12 semitones
Column Alt + F9 Alt + F10 Alt + F11 Alt + F12
Track Shift + F9 Shift + F10 Shift + F11 Shift + F12
Pattern Ctrl + F9 Ctrl + F10 Ctrl + F11 Ctrl + F12

Real-world test cases

I have tested Noteahead with at least these devices (USB MIDI):

  • Arturia Keystep
  • Behringer DeepMind 6
  • Behringer Model D
  • Behringer RD-6
  • Behringer RD-8 MK II
  • Behringer RD-9
  • Behringer Solina String Ensemble
  • Behringer TD-3-MO
  • Behringer VC340
  • Eventide SPACE
  • Korg Electribe 2
  • Korg KROSS
  • Korg Minilogue XD
  • Korg Monologue
  • Novation Bass Station II
  • Roland SP-404 MK II
  • Roland TR-8S
  • Yamaha CP4

Why am I doing this?

First of all, I'm a tracker musician and also a professional software engineer.

  1. I don't want to depend on closed source software with closed file formats for my music work.

  2. Because I can.

  3. Because I want to live in the past.