Skip to content
juzzlinPublic

About

A MIDI tracker and sequencer with built-in synths and effects written in C++/Qt/QML targeted for Linux.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Repository files navigation

Noteahead

Build Status

Noteahead is a pattern-based MIDI sequencer and music production environment for Linux, built around the tracker workflow: fast, keyboard-driven editing with the whole song in front of you.

It is also a complete studio. Eighteen internal instruments, an LFO modulator, a virtual device rack with per-device insert effects and sends, a mixer view, 45 rack effects and analyzers, and a sample-accurate offline renderer take a song from the first note to a finished master without ever leaving the application. Point it outwards instead and it drives a room full of MIDI hardware with the same precision — or does both at once, in the same song.

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.

What you can do with it

Produce entire songs in the box. Eighteen internal instruments cover a lot of ground: a six-voice virtual analog Synth, a Juno-60-style JU Synth, an eight-voice Wavetable Synth, a four-operator FM Synth, an acid Bass Synth, two Drum Synths and an FM drum machine, a 16-pad Sampler, three physically modelled pianos, a TR-808-style Kick808, four vintage string machines after the VP-330/VC340 and the Solina, and a formant speech synth. Each one sits in a slot of the Virtual Device Rack with its own insert effects, sends, fader, level meter and clip LED, and the LFO device can sweep any of their controls, or any effect's.

Mix and master without leaving the application. All 45 rack effects and analyzers are available both on the master bus and as per-device inserts: four EQs including an 8-band parametric with Mid/Side, two reverbs and an early-reflections room, single-band and multiband compression, a gate, a lookahead limiter, transient shaping, saturation and tube stages, a bit crusher, chorus, flanger, phaser and tremolo, an auto filter — plus LUFS, true-peak, RTA and goniometer metering, and reference monitoring to tell you where you stand. The Mixer view puts every device side by side as channel strips.

Sequence external gear. Noteahead began as a MIDI brain and is still a very good one. Ports are hot-plugged, every track routes to its own port and channel, and CC and pitch bend automation, an arpeggiator, chords, step recording and MIDI side-chaining are all there. Internal and external instruments live happily in the same song.

Finish and ship. The offline renderer writes a master mix or per-track stems to WAV or FLAC with sample-accurate timing, up to 4x oversampling, optional normalization, trim, fade out and tail silence, and a LUFS/LRA/dBTP loudness report. Songs export as SMF Type 1 too, automations included.

Who it is for

If you already think in patterns and rows rather than in a piano roll, you will be at home in minutes. If you own hardware synths and want a precise, reliable Linux sequencer to drive them, that is exactly where Noteahead started. And if you want neither — just to write music on Linux with open source software and a plain-text project format you can keep in Git — it does that too.

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.

However, these days I write complete songs with nothing but Noteahead's own instruments, which the demos below are there to prove.

Example Tracks and Videos

Demo and tutorial videos:

A short synth demo:

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

Albums:

All Arctic Music Project songs (sequenced or completely produced with Noteahead):

Features

Core / Performance

  • Sample-Accurate Timing
    • Jitter-free and drift-free internal timing strategy.
  • High-Precision Offline Renderer
    • Export songs to WAV or FLAC with sample-accurate timing, preserving all automations and parameters. Master mix or per-track stems, up to 4x oversampling, optional normalization, trim, fade out, tail silence and a LUFS/LRA/dBTP loudness report. A linear-phase master is put back in time, so the file starts with the song and keeps its length.
  • Native Audio Backend Selector
    • Explicit support for ALSA, PulseAudio, and JACK with optional transport synchronization.
  • Scalable Playback Quality
    • Oversampling for realtime playback is selectable (1x/2x/4x) independently of the export, and playback can be spread across CPU cores. Offline rendering always uses all cores.
  • Lightweight & Scalable
    • Fully scalable UI with a Debian package size of around 1 MB.
  • Themable UI
    • Accent and cursor colors, plus an accent blend that pulls the track and automation palette towards the accent hue. Pattern Peek and the automation drawing style (Tint or Curve) are configurable too.

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.
    • A track without a device gets one from its header icon or its right-click menu, which opens the rack and offers the device just added.
    • Every instrument but the Sampler and the drum machines has an Octave control, -2 to +2, saved with the project.
  • Synth
    • Polyphonic VA synthesizer (up to 6 voices) with four oscillators at organ footages (32'..2'), each with a low and a high pass of its own, a digital Multi engine with its own low and high pass, multi-mode filters with Drive, ADSR/Mod EGs, two LFOs that can modulate a single oscillator's pitch and that can be delayed, faded in, slowed by a rate divider and set to Free Run as one LFO for all the voices, Poly/Unison/Dual/Supersaw/Drift/Mono voice modes, Instability, Phase Sync and Phase Randomness, and a built-in Delay with its own filters and a Chorus.
  • Wavetable Synth
    • 8-voice wavetable synthesizer with two independent wavetable oscillators over six tables (Classic Morph, Spectral Additive, Pulse Width, Vocal Formant, Resonant Sweep, Organ Drawbar), noise generator, cascaded LPF/HPF filters, Amp and Mod EGs with velocity sensitivity, two LFOs with delayed and faded engagement, rate dividers and Free Run, and the shared voice modes with stereo pan spread and Phase Randomness. Features 2× oversampling, portamento, ten factory presets and presets of your own.
  • FM Synth
    • 8-voice four-operator phase-modulation synthesizer in the shape of Yamaha's four-operator machines. Eight algorithms with feedback on the top operator, eight operator waveforms, and per-operator ratio, detune, level, velocity sensitivity, key scaling and envelope. LPF/HPF, Amp and Mod EGs, two LFOs with delayed and faded engagement, rate dividers and Free Run, and the shared voice modes with Phase Randomness. Ships with sixteen factory presets and a button that assembles a playable patch at random.
  • JU Synth
    • Six-voice polysynth after the Juno-60 and JU-06A: one DCO per voice with saw, pulse with PWM, sub and noise, a self-oscillating four-pole ladder filter of its own, one shared ADSR, a free-running LFO with delay, the high pass on the voice sum, and the Juno's Chorus I, II and I+II. Pan Spread, twelve factory presets and presets of your own.
  • 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.
  • Drum Synth V2
    • A second Drum Synth to build on, kept separate so every kit in an existing project keeps playing the original. Adds a Rim voice and an amp envelope per voice — Attack, Hold, Decay and Curve — riding on top of what the voice already plays, so pulling Hold down tightens the drum.
  • FM Drums
    • A drum machine with the same four-operator FM voice on every one of its twelve pads, on Drum Synth V2's notes. Per pad an algorithm, four operators with their own envelopes, feedback, a pitch envelope and filtered noise that can modulate an operator, LPF/HPF, and its own insert effects and sends. Default, Analog and Percussion kits, and any kit's drum loadable onto any pad.
  • Sampler
    • 16-pad internal sampler for WAV and FLAC with per-pad pan, fader, LPF/HPF, tuning, an amp envelope with hold and curve, trimming, reverse, loop, normalize and choke groups, plus recording straight onto a pad with a metronome count-in. Pads can be sent to the global send buses one at a time, so a single pad sits in the reverb while the rest of the kit stays dry.
  • Piano Synth
    • Physically modelled (waveguide) piano with brightness, decay, inharmonicity, LPF/HPF shaping, release, and stereo pan spread.
  • Piano Synth V2
    • A larger physically modelled piano, voiced against a Yamaha CP-80 recording. A bank of resonators, one per partial, so that stiffness, per-partial decay, the two-stage decay of a struck unison and the weakly radiated bass fundamental are each modelled on their own. Hammer Hardness, Richness, Brightness, Inharmonicity, Unison Detune, Double Decay and Stretch Tuning.
  • Piano Synth V3
    • A corrected revision of the CP-80 model, kept as a separate device so songs written against V2 keep playing V2. The piezo pickup's alternating sign is preserved through the strike comb, a partial standing in for a unison pair carries the pair's weight, and the stringing is bichord over the whole compass, as a CP-80 is. Adds Velocity Sensitivity, defaulting to half, which lifts softer strikes toward the loud ones without changing their tone.
  • Kick808
    • TR-808-style bass drum built on a pulse-excited resonator, sweeping from a short click to a long sub boom. Pitched and monophonic, so Key Track and Glide let it play bass lines as well as drums, with Tuning, Tone, Decay, Drive and a pitch envelope.
  • 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 & Voice V2
    • The same ensemble rebuilt against a recording of the hardware. The Strings section carries the Upper and Lower switches the hardware has, saying which half of the split it sounds on, with Balance for how loud, and a Tone control fitted to that recording instead of V1's 8'/4' levels, which a VC340 does not have. Voices are summed rather than scaled by how many are sounding, so releasing part of a chord no longer lifts the notes still held, and a Velocity Sensitivity control spans both sections at once. V1 is untouched.
  • String & Voice V3
    • A further revision against the same recording, kept separate again so V2 is untouched. The register structure follows the hardware's: Lower Male at 8' and 4', Upper Male at 8' with Female at 4', and no Female 8' at all, because a VC340 does not have one.
  • 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.
  • Speech
    • Formant speech synthesizer that says a typed phrase, pitched to the notes played. English text is read by a letter-to-sound rule set with stress; anything between slashes is taken as literal phonemes, and an apostrophe marks the stressed syllable. Trigger a whole phrase from one note, a syllable per note, or a sentence per note so that one device carries a whole lyric — free-running, stretched to a set length, or fitted to the note that speaks it. Nine voice types, from Male and Female through Child, Deep and Breathy to Giant, Elder, Alien and Monster, the last of which growls on a doubled glottal period rather than on an unsteady one. Formant Shift, Glide, Sibilance, Breathiness, Intonation and a Portamento that slides between notes played over a line already being spoken.
  • 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.
  • LFO
    • A modulator rather than an instrument: four LFOs, each sweeping any device's or effect's parameter. Free, tempo-synced or one-shot, with a rate divider up to 64, Bipolar/Unipolar/Tremolo modes, delay, fade, phase, smoothing, and restart and velocity from the notes on its own track. It rides on top of the knob's setting, so the knob stays where it was set.
  • Phase LEDs
    • A red LED on every device LFO glows with its shape, so its rate and waveform can be read at a glance.
  • Dynamic Routing
    • Per-device Effect Sends for flexible mixing.
  • Mixer View
    • Every device side by side as channel strips, with the same Gain, Fader and Pan as the device's own dialog, its meter and clip LED, and shortcuts to the device, its insert rack and its sends.
  • Song Overview
    • A signal-flow map of the whole project, drawn as the engine actually runs it. Each device's chain is laid out in its real order, so a device whose fader sits after its inserts reads differently from one whose fader comes first, and sends leave from the tap they are taken at, labelled pre- or post-fader. Hovering a device lights its whole route to the master and dims the rest; clicking a box opens that device's editor.

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. Effects with built-in presets take presets of your own as well.
  • 8-Band Parametric EQ
    • High-precision equalizer with multiple filter types (Bell, Shelf, Cut, Notch) per band and Mid/Side processing modes.
  • 32-Band Graphical EQ
    • Third-octave mastering equalizer, 16 Hz to 20 kHz at ±12 dB, whose curve passes through its sliders. Mid/Side modes and an optional Linear Phase mode.
  • 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.), fine-grained controls and a Solo to hear the tail alone.
  • Ambience
    • A short, dense space to glue a mix and take the dryness off, rather than a tail to be heard: input diffusion, an early field of irregular reflections and a short tail that drifts slowly so it never rings, with the space's own low and high cut.
  • Endless Reverb
    • Large ambient reverb built on an 8-line modulated Householder FDN with input diffusion, plus a Freeze switch for an infinite tail.
  • Early Reflections
    • The room a sound is in, without a tail: the first arrivals off the walls, with Size, Diffusion, Damping, Pre-Delay, Width and a Solo for hearing only the reflections.
  • Compressor
    • Feed-forward compressor with soft-knee interpolation, lookahead support, Peak/RMS detection, side-chain source selection, and real-time gain reduction metering.
  • Multiband Compressor
    • Three bands split by Linkwitz-Riley crossovers that sum back flat, with per-band threshold, ratio, knee, attack, release, makeup, bypass, solo and gain reduction metering. The side chain source is split by the same crossovers.
  • 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.
  • Gate
    • Noise gate and downward expander in one. Ratio sets how steeply the level falls away below the Threshold, and Range floors it, so a drum can be tightened by twelve dB rather than silenced. Hold and a fixed six dB of hysteresis keep a level sitting near the threshold from rattling the gate open and shut.
  • 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.
  • Tube Stage
    • Valve preamp stage with a Bias control for the operating point, so the same drive can run from nearly symmetric to hard against cutoff, plus Triode/Pentode curves, a tilt Tone control and oversampled shaping.
  • Drive
    • Overdrive with Drive amount, dry/wet Mix and output Gain, in Soft (tanh), Hard (clip), Fold (wavefolder) and Dist algorithms.
  • Bass Grinder
    • Split-band bass preamp distortion: Split keeps the fundamental out of an asymmetric diode clipper so a kick or a bass stays weighty while the band above it is ground up, with Blend, Drive, a Color voicing and a three-band tone stack.
  • Analog Fuzz
    • A synth's drive knob rather than a pedal in front of one: the fuzz stage sits inside the filter it overdrives, so the resonance gives way under drive instead of screaming, and the harmonics come out filtered rather than laid on top. Drive, Fuzz, Bias, Cutoff, Resonance, Mix and Output.
  • Bit Crusher
    • Word length and sample rate thrown away separately. Fewer bits is grit that follows the signal; a lower rate folds everything above its new Nyquist back down as aliases, which is the metallic half of the sound. Deliberately not oversampled, because unlike every other nonlinear effect here its aliases are the point.
  • Wave Designer
    • Transient shaper with Attack and Sustain, level-independent by design, plus Gain, Mix and a gain meter. Not a compressor: it acts on how sharply the signal changes, never on how loud it is.
  • Stereo Exciter
    • Aural exciter that distorts the band above Tune and adds the harmonics back, for air and detail that was never in the signal. Odd/even Timbre blend, Harmonics, Mix and a Solo mode.
  • Stereo Enhancer
    • Psychoacoustic "psycho EQ" with saturated bass harmonics, a midrange dip, a top band and a side-only Spread that leaves a mono source mono.
  • 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.
  • Flanger
    • A swept short delay summed back with the dry signal. The fixed time offset combs at harmonically spaced notches and sweeping it drags the whole series along, which the ear follows as one moving resonance — the jet whoosh a phaser cannot do, because its notches are not harmonically related. Bipolar Feedback, since the two polarities comb at different frequencies, plus a Rate Divider up to 64.
  • Tremolo
    • Level modulated by an LFO, downward only, so turning Depth up never turns the track up. At a Stereo Phase of 180 degrees the two channels duck in opposition and the sound swings between the speakers while its mono sum stays put — which a panner, moving the sound itself, does not do.
  • Auto Filter
    • Cutoff and resonance sweeps that belong to the rack rather than to the instrument. LPF/HPF/BPF/Notch at 12 or 24 dB/oct, two LFOs with the Synth's waveforms and tempo sync (one on the cutoff, one on the resonance), an envelope follower with attack and release, bipolar non-linear intensities, a stereo phase offset for wide sweeps, gain and mix.
  • Phaser
    • 2 to 12 all-pass stages, one notch per pair, swept by an LFO with the Synth's waveforms and tempo sync. Centre frequency, Depth, bipolar Feedback, a stereo phase offset defaulting to quadrature, gain and mix, plus a Rate Divider (1 to 64) for sweeps lasting minutes or several bars.
  • Panner & Auto Panner
    • Static stereo panning plus an LFO-driven auto panner, the latter with tempo sync and a Rate Divider up to 64 for pans that sweep over several bars.
  • Stereo Widener
    • Width set per band, so the bottom can be held in the middle while everything above it opens out.
  • Dimension
    • Builds width out of a mono source rather than widening one that already has it.
  • Reference & Crossfeed
    • Reference plays the mix as another system would — Car, Club, Phone, Laptop, Hall, Boombox, Earbuds, TV or Nearfield. Crossfeed puts back the far-ear arrival that headphones do not give you. Neither is ever printed into a render.
  • Monitor
    • Mono and single-channel fold-downs for checking a mix by ear, also never printed into a render.
  • All-Pass Filter
    • Multi-stage all-pass filter for phase shaping.
  • Dynamic EQ
    • A single Bell, Low Shelf, High Shelf or Flat band that stays flat until its detector goes over the threshold and then moves by up to its Gain, cutting or boosting. The detector hears this signal or a side chain, through the band only or the full range, in Stereo, Mid or Side, with a level meter and a Listen switch to find the frequency to react to.
  • Phase Scope
    • Polarity, channels, width, bass mono, sample-exact delay and gain, with a scope that freezes the signal against a reference, such as the kick against the bass, on every hit and reads out whether the two reinforce or cancel.
  • Gain
    • A plain level trim, for gain staging into the rest of the chain.
  • Metering & Analysis
    • LUFS loudness meter with a live gated integrated reading, dBTP true-peak meter, a real-time analyzer (RTA), and a Stereo Field Meter with goniometer and correlation.

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.
  • Parameter Automation
    • Drive any instrument's or effect's controls directly, in their own units (Hz, ms, dB) rather than 128 MIDI steps, absolutely or relative to the knob's own setting. Sampler pads and drum machine drums are targets of their own.
  • Pattern-Based Sequencing
    • Flexible play order management with independent pattern lengths.
  • Track & Column Management
    • Cut, copy, paste and transpose a column or a track in all patterns at once, in one undo step.
    • Move tracks and note columns left or right, wrapping around the ends, and delete a column. Deleting is a soft delete: adding a column back restores the most recently deleted one with its notes, automations and mixer settings, and the columns left behind keep their own.
  • 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, Note frequency and dB-to-linear Gain converters.
  • 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

On other distributions, use the AppImage. It carries its own Qt and needs nothing installed beyond the graphics and audio libraries a desktop already has. JACK is optional: a copy is bundled and used only if the system has none, so the system's own JACK is always preferred when it is there.

$ chmod +x Noteahead-7.0.0-x86_64.AppImage
$ ./Noteahead-7.0.0-x86_64.AppImage

It requires glibc 2.38 or newer, which covers Ubuntu 24.04, Debian 13 and Fedora 39 onwards.

To build one yourself, run ./scripts/build-appimage-docker in the project root. It builds in an Ubuntu 24.04 container, so the AppImage stays portable whatever the host happens to be. There is also ./scripts/build-appimage, which builds directly on the host: quicker to iterate on, but the result only runs on hosts at least as new as the one that built it.

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 qt6-l10n-tools 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

Noteahead's own translations are compiled into the binary, but the strings Qt itself supplies (standard dialog buttons and the like) come from Qt's translation catalogues:

$ sudo apt install qt6-translations-l10n

Without it the application is still fully translated; only those Qt-supplied strings stay in English.

Build and run on CLI

$ mkdir build && cd build

$ cmake -GNinja ..

$ ninja

$ ./noteahead

Optionally install locally:

$ ninja install

Run unit tests on CLI

$ ctest

Updating translations

The translation sources live in src/translations as one .ts file per language. They are checked in, and only lrelease runs during a normal build, so nothing regenerates them by accident.

After adding or changing a translatable string, rescan the sources:

$ ninja update_translations

That runs lupdate over src/application, src/common, src/domain, src/infra and src/view, picking up both tr() in C++ and qsTr() in QML. It writes without location comments on purpose: line numbers shift on unrelated edits and turn every translation merge into a conflict.

The target uses the lupdate belonging to the Qt this project is configured against, not whatever is first on PATH. On a system with qtchooser the one on PATH is Qt 5's, whose QML parser silently drops strings from files it cannot parse.

Translate the .ts files with Qt Linguist:

$ sudo apt install qt6-l10n-tools linguist-qt6

$ linguist src/translations/noteahead_fi.ts

To add a language, add its .ts to the TS list in src/CMakeLists.txt and its locale name to Constants::Language::supportedLanguages(). language_service_test fails if the two disagree.

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..., and Help => What's New... shows what changed in the current version.

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, FM Synth, JU Synth, Bass Synth, Drum Synth, Drum Synth V2, FM Drums, Sampler, Piano Synth, Piano Synth V2, Piano Synth V3, Kick 808, String & Voice, String & Voice V2, String & Voice V3, String Ensemble or Speech, or the Sub Mixer or LFO — 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. Devices => Mixer... shows every device side by side as channel strips for balancing the whole thing at once. 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, on any note column and on any line, with or without a note. MIDI CC #10 is channel-wide, so if several columns carry a pan value on the same line their average is what gets sent — for independently panned parts use separate tracks or the Panner rack effect.

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.

About

A MIDI tracker and sequencer with built-in synths and effects written in C++/Qt/QML targeted for Linux.

Topics

Resources

Stars

73 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages