Modules
Music written as Elixir code.
Reads ABC notation written one system of music at a time, and writes the systems out as one MusicXML score.
Starts mx with an empty supervisor; each session starts its own processes.
Reads WAV and AIFF recordings, in mono or stereo, at any sample rate, as one channel of samples from -1 to 1.
Runs Audiveris, the optical music recognition program, on page images, and gathers the MusicXML it writes for each page into one score.
Plays a song's loops together, each in its own process, against one shared beat.
The Unix time in microseconds mx plays against: the system's, or while a song renders offline, the time its render has reached.
The boundary between mx and the engine that makes its sound.
mx's engine on mxs, mx's sound engine in Rust, through a NIF.
The functions mxs, the Rust engine, provides as NIFs.
The spectrum of a stretch of samples, through a Hann window, as the magnitude of each frequency bin up to half the sample rate.
Searches for the values of a synth's controls that bring its held notes closest to recordings of them, as mix mx.fit does.
Files of public GitHub repositories, downloaded into the user's cache, for samples a song names as {:github, repo, ref, path} and collections downloaded ahead of time.
Turns a recording of one voice humming, singing or whistling a melody into notes on beats, and writes them as a song.
Records a hum against a click and turns it into a song, for mix mx.hum --record.
Keeps the latest value of every input from outside mx, and the values loops share.
Synths written in Elixir, as defsynth, which mxs builds when a note starts; the guide "Instruments" introduces them.
A value a defsynth works out from the note's options: one option, or a call of the vocabulary on its arguments and named arguments.
The arithmetic a defsynth's operators become: on numbers it is Elixir's own, and on anything worked out from the note it records the operation.
The nodes and functions a defsynth builds its sound from, named by what they do, with each argument named by its unit.
Plays one loop of a song, pass after pass.
Measures recordings of single notes, plucked or struck, so a synth's design can be compared with a real instrument's.
Measures recordings of held notes, bowed, blown or played on an organ, so a synth's design can be compared with a real instrument's.
Measures recordings of hits, struck bars, bells, drums and scrapers, with or without a pitch, so a synth's design can be compared with a real instrument's.
Measures recordings of an instrument played in strokes that run into one another, such as the rubs of a cuíca's stick, so a synth can play a stroke back as it was measured.
Music as values: notes and rests joined one after another or at once, repeated, moved and placed, and played by parts.
Music of a length whose items start at their beats from its start.
A change to every sound of a part still playing, or to one of its effects, with target being the part's name or {name, effect}.
Music that runs a function for each pass of some beats and plays the music it returns, a number of times or as long as the music beside it; or, with on:, a pass for each input it waits for.
A pass of a loop refused after its function returned, with the line of the song that wrote the loop.
A MIDI note sent for some beats, with its velocity and channel.
A step that takes no time: a MIDI controller change, an OSC message, or a value shared with the other loops.
A note: its pitch, a number, a list of numbers or :own_note for a drum, its length in beats and its options.
Music played by one player, with its synth and the loop options it takes.
Music played a number of times in a row, or until mx stops with times: :forever.
Silence lasting some beats.
A sample by name or path, lasting some beats, with the options samples take.
Music played one item after another.
The value a song file ends with: its settings, and its music split into sections, each part's notes in each.
Music whose notes start at the beat a function returns for the beat they were written on.
A change of the whole song's tempo to bpm, at once or evenly over over beats.
Music whose items all start at once.
Small helpers a song's functions use to choose and tune notes: stepping through a list, drawing seeded random numbers, and intervals in cents or ratios.
Note names, chords and scales, worked out as plain MIDI note numbers.
Encodes and decodes the OSC messages and bundles mx exchanges with other programs.
Sends MIDI and OSC to other devices and programs at their time.
Writes a song as one HTML page that plays it and shows each part's notes on a timeline, for mix mx.page.
Runs one pass of a loop and returns what it played, with each note's beat within the pass.
What record_play, record_sample and effect return: the events or effect a later control step changes, and the synth whose options they are.
Music written as words, which ~MX reads when the song compiles and Mx.steps/3 gives its sounds.
Plays a song file until Enter is pressed or its music ends, and plays each saved version of it, for mix mx.play and the mx command.
Checks where a session can be recorded, and reads the length, peak and clips of a recording.
Renders a song file offline to a stereo WAV file, as fast as the machine renders it and with no sound card, for --render.
A sampled instrument: recordings of an instrument one key at a time, often at several strengths and in several takes, played as a part plays a synth.
Sonic Pi's sample pack, which is under Creative Commons 0, and the files a song plays as samples: the pack's by name, a file by path, or a file of a public GitHub repository as {:github, repo, ref, path}.
Prepares scanned score pages for optical music recognition by Audiveris.
A MusicXML score read into parts of bars, each bar a list of voices and each voice a list of notes and rests in order.
Plays one song file: the engine, the band, and the watcher that hands each saved version to the band.
The pieces the measuring of plucked notes, held notes and hits share: filtering, spectra, finding where sounds start, and fitting a fade.
A song loaded from a file: its tempo and its parts, each played as a loop, in the order of the song.
tempos holds the tempo changes its music writes, each section's as Mx.Tempo takes them, or nil when it writes none.
A live audio input the song declares: the sound card input it plays, in mono or stereo, with its options and effects.
A part of the song played as a loop, with the music it replays and the samples it uses.
Draws a spectrogram of a recording into a PNG image: seconds across, at 100 pixels a second unless per_second: gives another count, and frequency up the side on a scale of octaves.
The synths mx ships, with the options each one takes and their defaults, as mxs lists them.
The tempo over a song's beats: the timeline the band plays against, and the tempo changes a song's music writes in its sections.
Transcribes images of single systems of printed music to ABC notation with a vision-language model, which Mx.ABC turns into a score.
Loads a song file again whenever its content changes, and hands each
version that loads to on_song. A version that does not load prints its
error, and the playing version stays.
Mix Tasks
Searches for the values of a synth's controls that bring its held notes closest to recordings of them, as Mx.Fit describes.
Reads a recording of one voice humming, singing or whistling a melody, and writes it as a song beside the recording.
Reads a MusicXML score and writes it as a song beside it, one part per part of the score, that plays the whole score once.
Measures recordings of single notes, plucked or struck, and prints the median fade time and level of their harmonics in each frequency band.
Writes a song file as one HTML page, which plays the song's render and shows each part's notes on a timeline.
Plays the loops a song file describes until Enter is pressed, or until the song's music ends.
Prints each part's notes with their beats from the start of the song, through the whole of its music once, and makes no sound.
Given --pass, it prints that pass of each part, a pass being a section, or the length of the longest loop in music that plays until mx stops.
Downloads a collection of samples into the user's cache, so songs play them with no network access.
Prepares the pages of a scanned score, reads the music on them with Audiveris or with a transcription model, and writes it as MusicXML beside the scan, ready for mix mx.import.
Draws a spectrogram of a WAV or AIFF recording into a PNG image, with seconds across and octaves up the side.