Skip to content

MIDI

  • midi.vrand midi.vrand randomizes the velocity in a NOTE VELOCITY [DUR] list and outputs the list with its note and optional duration preserved.
  • fd_midiread fd_midiread is a wrapper for mrpeach/midifile that loads and plays a MIDI file, though the help patch notes it is still a work in progress.
  • mono mono is a Pure Data object designed to emulate monophonic synthesizer behavior from polyphonic MIDI note input.
  • play2 play2 plays a note whenever a key number is sent to its left inlet.
  • midi.prg2str midi.prg2str converts a General MIDI instrument number from 1 to 128 into its instrument name.
  • proto.whammy proto.whammy controls a DigiTech Whammy pedal and outputs a raw MIDI float stream suitable for midiout.
  • midi-sync midi-sync receives transport information from an external MIDI source, outputting play/stop state, an approximate tempo in BPM, and bangs on rhythmic steps for use instead of metro.
  • note2cents note2cents shows how many cents correspond to a MIDI note number.
  • midi.event2ctl midi.event2ctl converts a MidiEvent message into a controller number/value pair.
  • bend.in bend.in extracts MIDI Pitch Bend messages from either an internal MIDI device or an external raw MIDI data stream.
  • mapping2midi mapping2midi converts numbers from the mapping range into MIDI values.
  • mk mk provides a visual display of MIDI input, showing the controller number and its MIDI value.
  • chair.transpose-oct chair.transpose-oct transposes MIDI notes up or down by octaves.
  • music.voice2midi music.voice2midi converts a voice-music note list into MIDI values.
  • pm6.m~ The pm6.m~ object is a 6-operator phase modulation (FM) synthesizer, inspired by the Yamaha DX7, producing stereo audio.
  • midi.out The midi.out object sends "cooked" MIDI messages (Note On/Off, Control Change, Program Change, Aftertouch, Pitch Bend) to a connected MIDI device, unlike midiout which handles raw data.
  • chord chord tries to detect chords from MIDI note numbers and note velocities, such as those supplied by notein.
  • sfz~ The sfz~ object is an SFZ player that loads and interprets SFZ instrument definitions, which can include samples, internal oscillators, and synthesis parameters like ADSR and filters.
  • makenote2 The makenote2 object generates MIDI note-on and note-off messages from an input list containing pitch, velocity, and duration.
  • midi-panic-ch midi-panic-ch sends a MIDI panic message and all-notes-off on a specified channel to reset MIDI voices.
  • midi2note The midi2note object converts MIDI pitch values (0-127) into standard musical note names (e.g., Eb3), supporting quarter tones and a range from octave 0 to 8.
  • borax The borax object processes incoming MIDI note and velocity data, providing detailed reports on individual note events.
  • midi The midi object in Pure Data is a versatile tool for handling MIDI data.
  • midiparse The midiparse object receives a raw MIDI data stream and parses it into various MIDI messages, such as note messages, control changes, program changes, and pitch bend.
  • midiformat The midiformat object receives various MIDI messages (note on/off, polyphonic aftertouch, control change, program change, channel aftertouch, pitch bend) through its inlets and formats them into a raw MIDI message output.
  • chord-make chord-make repackages individual MIDI notes into lists representing notes at simultaneous time stamps, with the aim of processing homophonic MIDI data.
  • microp microp performs microtonal pitch transfer by taking note values and dividing/scaling their pitch.
  • midi-polyin midi-polyin receives MIDI note-on messages and provides note, velocity, and trigger outputs.
  • notescale notescale scales a stream of numbers to MIDI note values, taking floats through its inlet and producing floats at its outlet.
  • m-i m-i simulates a MIDI controller and automatically converts its values to a specified range, outputting a scaled float alongside the direct MIDI input.
  • conv.bits2note conv.bits2note converts an input list of bits into note events, mapping bit positions to the note keys supplied as arguments or through @keys and using @vel for output velocity.
  • n2m n2m converts note names or lists of note names into MIDI note numbers.
  • sysrt.out The sysrt.out object formats and sends raw MIDI system and real-time messages.
  • pluck.m~ The pluck.m~ object is a polyphonic wrapper for the pluck~ object from the ELSE library, designed for physical modeling synthesis of plucked string sounds.
  • gamme gamme is a musical scale selector that uses a 12-note key set for filtering, arpeggiation, or note rounding, producing a semitone result.
  • note2frq note2frq converts a note value—either a MIDI key number or MIDI cents—into a frequency.
  • note.out The note.out object formats and sends MIDI pitch messages, including Note On and Note Off events, to Pure Data's MIDI output or its outlet.
  • ceammc.proto ceammc.proto is a collection of protocol-related objects in the ceammc library, covering MIDI and SysEx processing, hardware control, media-player control, encoding, and decoding.
  • pgm.in The pgm.in object extracts MIDI Program Change messages from either a connected MIDI device or an external raw MIDI data stream.
  • chair.hex-tuning chair.hex-tuning converts a hexagon ID into a MIDI note according to a tuning defined in a text file, enabling custom mappings for a hexagonal pattern.
  • suspedal The suspedal object in Pure Data holds MIDI Note Off messages when active, releasing them when deactivated.
  • midi.key2str midi.key2str converts a standard MIDI key number in the range 0–127 to an SPN key name according to the current tonality.
  • midi.split midi.split routes MIDI note messages to separate outlets according to specified pitch split points.
  • voices The voices object manages voice allocation for polyphonic synthesizers, similar to poly but with enhanced features.
  • noteinfo The noteinfo object tracks active MIDI note events, outputting the MIDI pitch, velocity, and the total number of active voices.
  • show-pitchclass show-pitchclass shows the pitch class of a MIDI note number.
  • key-estimate key-estimate estimates the key of incoming MIDI note-and-velocity data using profile matching, outputting both an integer key ID (0–11 major, 12–23 minor) and a key symbol.
  • pitch pitch analyzes a MIDI note number and outputs the MIDI note number, note name, pitch class, interval from the previous note, and note register.
  • midifile midifile reads and writes MIDI files, supporting playback, recording, track selection, and MIDI/meta-event output.
  • proto.arturia.minilab proto.arturia.minilab provides simple SysEx control for the Arturia MiniLab, accepting commands to set its MIDI channel, control pad backlighting and colors, and set or request knob values.
  • bl.saw~ bl.saw~ is a bandlimited, anti-aliased sawtooth oscillator designed for high-quality synthesis.
  • mpe.in The mpe.in object processes raw MIDI data, specifically designed for MPE (MIDI Polyphonic Expression) input.
  • midi-sort-events midi-sort-events orders homophonic MIDI events so that note-off events come first.
  • keynote keynote tracks a computer keyboard key code and outputs a MIDI note and velocity pair.
  • midi.ctl2str midi.ctl2str converts a Standard MIDI Controller number into its controller name.
  • xbendout2 The xbendout2 object formats and sends 14-bit pitch bend messages as two 7-bit values: a Most Significant Byte (MSB) and a Least Significant Byte (LSB).
  • note2midi The note2midi object converts musical note names (e.g., C4, G#5, Abb3) into their corresponding MIDI pitch values.
  • proto.midi proto.midi is a raw MIDI encoder and parser: it accepts raw MIDI bytes and outputs both raw bytes and parsed, selector-based messages, while its methods generate common channel, system, real-time, and SysEx messages.
  • ctl.out The ctl.out object formats and sends raw MIDI control messages.
  • retune The retune object remaps incoming MIDI pitches to a custom scale.
  • gain2~ gain2~ is a stereo gain control object for Pure Data, designed to adjust the amplitude of stereo audio signals.
  • mono~ The mono~ object emulates monophonic synthesizer behavior, processing MIDI note messages to output pitch and velocity signals.
  • m2f~ m2f~ converts a MIDI pitch signal to a frequency signal in hertz.
  • histogram The histogram object counts the occurrences of incoming positive integer values, storing them as indices in an internal table.
  • midi-stream2notes midi-stream2notes converts a stream of MIDI note-on and note-off events into completed note records, as illustrated by the output 74 112 226741 226920 (pitch, velocity, start time, and end time).
  • assign assign is a MIDI-assignment tool for Pure Data, intended to map MIDI input to a control or a VST parameter used through DEAPvst~.
  • midi-note-duration midi-note-duration receives incoming MIDI note data, such as data from a notein object, and reports the duration of a MIDI note event.
  • sliders sliders provides a GUI of sliders for incoming MIDI data, creating a configurable number of channels up to 511.
  • bend.out The bend.out object formats and sends MIDI pitch bend messages.
  • voices~ The voices~ object is a polyphonic voice manager that generates multichannel signals for controlling pitch and gate.
  • chair.rotary-relative chair.rotary-relative turns a MIDI rotary control into a relative controller.
  • midi.learn The midi.learn object dynamically learns and stores incoming MIDI messages, such as control changes, program changes, notes, and bends.
  • touch.out The touch.out object formats and sends MIDI channel aftertouch messages.
  • midi-out midi-out takes MIDI note-pitch information and gate information as inputs for MIDI output.
  • fd_pno fd_pno provides a clickable piano keyboard interface that outputs a MIDI pitch-and-velocity pair as a list.
  • plaits.m~ plaits.m~ is a versatile multi-synthesis engine for Pure Data, wrapping the functionality of Mutable Instruments' Plaits module.
  • midi.oct midi.oct transposes MIDI note values by octaves, accepting either a float note value or a NOTE VELOCITY [DUR] list and outputting a transposed list.
  • frq2note frq2note converts a frequency into a note represented as a MIDI key number.
  • midi.clock The midi.clock object provides an abstraction for handling MIDI clock signals.
  • midi.sustain midi.sustain emulates a sustain pedal for MIDI note/velocity lists: while the pedal is on, it suppresses note-offs, then outputs all sustained note-offs when the pedal is turned off.
  • rec2 The rec2 object (or record) records sequences of musical events, specifically MIDI pitch and velocity, into a [text] object.
  • proto.midi.cc proto.midi.cc encodes and parses raw MIDI Control Change data, accepting raw MIDI bytes and outputting lists or parsed selector messages.
  • aconnects aconnects is aconnect with support for symbolic identifiers, allowing MIDI clients and ports to be connected by names such as “Pure Data” and “Pure Data Midi-Out 1.” Send reset to re-read the symbolic identifiers; ordinary messages accepted by aconnect work as expected..
  • fd_ma fd_ma assigns incoming MIDI values from a specified MIDI input object, such as ctlin, to as many as nine corresponding outlets.
  • array-ftom Upon receiving a bang, array-ftom converts every value in the currently referenced array from frequency to MIDI units.
  • vftom vftom converts frequency values to MIDI note numbers.
  • conv.degree2key conv.degree2key converts a scale degree or list of degrees into key values for the selected scale.
  • xnotein The xnotein object processes raw MIDI data streams, providing more detailed information than notein.
  • freq2midi The freq2midi object converts frequency values (in Hz) to MIDI note numbers, similar to the ftom object.
  • ptouch.out The ptouch.out object formats and sends raw MIDI polyphonic aftertouch messages.
  • seq The seq object plays and records raw MIDI data streams, functioning as a MIDI sequencer.
  • noteson noteson keeps track of which notes are currently being played and outputs the active-note list from its left outlet.
  • xbendin The xbendin object retrieves 14-bit pitch bend messages from raw MIDI input, outputting the pitch bend value (0-16383) and optionally the MIDI channel.
  • midi-in midi-in receives MIDI note, gate, and velocity data.
  • midi.file midi.file reads and writes Standard MIDI Files (SMF), storing their contents and outputting them as a MidiFile data type on bang.
  • ui.midi ui.midi is a UI viewport for displaying incoming MIDI messages and provides a MIDI output.
  • midisettings midisettings queries and manipulates Pd’s MIDI settings, including the available drivers and input/output devices for the current driver.
  • xbendout The xbendout object formats and sends 14-bit MIDI pitch bend messages, ranging from 0 to 16383, to a specified MIDI channel.
  • DEAPmidiin DEAPmidiin receives and formats MIDI messages for DEAPvst~.
  • get-midi-dialog get-midi-dialog retrieves Pd’s MIDI settings so they can be saved as part of a patch.
  • pitch2note pitch2note combines a pitch class and register into a note number, such as a MIDI key number.
  • chair.14bit-ctlin chair.14bit-ctlin reads 14-bit MIDI controller values.
  • vmtof vmtof converts a vector (list) of MIDI note numbers to their corresponding frequencies, for control-rate MIDI-to-frequency conversion.
  • midi-quantizer midi-quantizer receives packed MIDI note data and quantizes it to a selected rhythmic division, with quaver as the default.
  • kbd kbd maps computer-keyboard input to MIDI notes, with octave shifting and inhibited repetition.
  • pgm.out The pgm.out object formats and sends MIDI program change messages (0-127) to Pd's configured MIDI output device.
  • midi.kbd midi.kbd turns computer-keyboard input into MIDI note and velocity output.
  • midi-player midi-player is a MIDI file player and analyzer based on mrpeach/midifile; it filters out non-note information and outputs notes in Pd style, along with file timing information, flushed note data, and an end-of-file bang.
  • sustain The sustain object emulates a MIDI sustain pedal, holding noteoff messages while active and releasing them when deactivated.
  • aconnect aconnect manages ALSA sequencer connections, allowing Pd to connect or disconnect clients and to query available clients, ports, and current connections.
  • note.in note.in extracts MIDI pitch and velocity information from connected MIDI devices or external raw MIDI data streams.
  • xbendin2 The xbendin2 object parses incoming raw MIDI data to extract the Most Significant Byte (MSB) and Least Significant Byte (LSB) of pitch bend messages, which can be combined to form a 14-bit value.
  • fd_cuacua fd_cuacua quantizes MIDI-note values to quarter-tone steps, providing one inlet and one outlet.
  • sfont~ The sfont~ object is a sampler synthesizer that plays SoundFont (.sf2 or .sf3) files, based on FluidLite.
  • panic The panic object functions as a "panic button" for MIDI notes.
  • array-mtof array-mtof converts every value in the currently referenced array from MIDI note values to frequency units when it receives a bang.
  • impulse~ impulse~ (or imp~) is an impulse oscillator that generates a signal when its phase cycles.
  • key2pc key2pc converts a key-name symbol, such as C#, Bbm, or Gbm, into the key’s tonic pitch class (0–11) and modality.
  • proto.xtouch_ext proto.xtouch_ext implements the MIDI connection protocol for a Behringer X-Touch Extender, translating raw MIDI input into control messages and producing raw MIDI output for the device.
  • flush The flush object acts as a "panic button" for MIDI notes.
  • conv.midi2freq conv.midi2freq converts a MIDI pitch or a list of MIDI pitches to frequency values in hertz.
  • reloaded reloaded extends Automatonism 3.1 with parent-patch state saving and a MIDI learn feature.
  • midi2freq The midi2freq object converts MIDI note numbers into their corresponding frequencies in Hertz.
  • proto.midi.sysex proto.midi.sysex encodes and parses raw MIDI System Exclusive (SysEx) data, accepting raw MIDI bytes as floats or lists and outputting raw MIDI or parsed selector messages.
  • abs.pd~ The abs.pd~ object loads a Pure Data patch as a subprocess, similar to pd~, providing 2 audio inputs and 2 audio outputs.
  • midi.arp midi.arp is a MIDI arpeggiator that takes NOTE/VELOCITY lists and plays chord notes in selectable modes such as up, down, triangle, or random.
  • ui.keyboard ui.keyboard is a piano-keyboard widget that outputs a two-element list containing MIDI pitch and velocity when notes are played with the mouse.
  • pimp~ pimp~ is a signal generator combining phasor~ and else/imp~, outputting both a phase signal (0-1) and an impulse at each cycle's start.
  • fluid~ fluid~ is a FluidSynth-based SoundFont 2 player for playing MIDI-controlled instruments and producing stereo audio.
  • pluck~ The pluck~ object implements the Karplus-Strong algorithm for plucked string synthesis, featuring a 1st order lowpass filter in its feedback loop.
  • keymap The keymap object translates computer keyboard presses into MIDI note on/off messages, mapping keys to specific pitches across two rows (e.g., 'z' row for C3, 'q' row for C4).
  • nano nano expands the control capabilities of a Korg nanoKONTROL2 surface, allowing its controls, such as button 1, to be mapped to parameters.
  • autotune The autotune object retunes incoming MIDI pitches to the closest step within a specified musical scale.
  • DEAPnote DEAPnote receives and formats MIDI note data for deapvst~.
  • sysrt.in The sysrt.in object detects and outputs system and real-time MIDI messages.
  • ptouch.in The ptouch.in object extracts MIDI polyphonic aftertouch messages from raw MIDI input.
  • ctl.in The ctl.in object extracts MIDI Control Change (CC) information from either an automatically connected MIDI device or an external raw MIDI data stream.
  • DEAPkey DEAPkey turns a QWERTY keyboard into a MIDI controller.
  • f2note f2note converts an input frequency in Hz into a floating-point MIDI pitch and a note with its deviation in cents.
  • midi.vramp midi.vramp applies a crescendo or diminuendo to a flow of MIDI note/velocity messages by ramping velocity from a start value to an end value over a specified number of steps.
  • keyboard The keyboard object provides an interactive graphical MIDI keyboard within Pure Data, allowing users to generate MIDI note and velocity messages through mouse clicks and drags.
  • midiflush The midiflush object acts as a "panic button" for raw MIDI data streams, preventing hanging notes.
  • midi.cc midi.cc is an enhanced version of vanilla ctlin that receives MIDI controller input and outputs a float value.
  • chair.mtocv~ chair.mtocv~ converts MIDI note values to a virtual control-voltage representation for pitch control.
  • proto.midi.casio proto.midi.casio generates control messages for Casio Privia MIDI instruments, including instrument selection and chorus and reverb settings.
  • midi.modus midi.modus snaps or skips incoming MIDI pitches according to a selected scale and root key, providing accepted notes at its first outlet and discarded messages at its second.
  • midi.sysex midi.sysex parses SysEx input messages and outputs each message as a list of SysEx bytes.
  • synth~ synth~ is a Pure Data object that simplifies the creation and management of polyphonic or monophonic synthesizers.
  • sendmidi The sendmidi object is a helper abstraction designed to forward MIDI messages to a pd~ sub-patch.
  • conv.cc2amp conv.cc2amp converts a MIDI Control Change value in the 0–127 range to a configurable output range, defaulting to 0–1.
  • conv.pitch2midi conv.pitch2midi converts Scientific Pitch Notation pitch names to MIDI note numbers.
  • macro-xy-control macro-xy-control is an extended version of macro-control that acts as a virtual MIDI controller and adds two XY pads linked to parameters.
  • midi.tuning midi.tuning applies tuning deviations to MIDI note/velocity messages.
  • midi-noteson midi-noteson receives incoming MIDI data from a notein object and outputs lists containing all currently sounding note-on notes.
  • midi2pc midi2pc converts MIDI note numbers into their corresponding pitch classes.
  • midi.in The midi.in object processes incoming MIDI data, converting raw MIDI streams into "cooked" data with type symbols, values, and channel information.
  • midi.event2note midi.event2note converts a MidiEvent message into a MIDI note/velocity pair.
  • midi-panic-all midi-panic-all sends a MIDI panic message and all-notes-off across all MIDI channels to reset all MIDI voices.
  • midi.event2prg midi.event2prg converts a MidiEvent message into a MIDI program-change value.
  • note2pitch note2pitch converts a note or key number into a pitch-class name, such as D#.
  • midi.track midi.track extracts and plays a selected track from a midi.file, outputting each MidiEvent along with the time in milliseconds until the next event.
  • xnoteout The xnoteout object sends MIDI Note On and Note Off messages, uniquely supporting both Note On and Note Off (release) velocities for enhanced control.
  • macro-control macro-control is a no-input virtual MIDI controller whose four sliders output their positions as V1–V4 voltages in the 0–1 range, allowing control of parameters in Automatonism modules.
  • ceammc.midi ceammc.midi is the ceammc library’s MIDI toolbox, providing objects for arpeggiation, MIDI clock handling, controller and event conversion, note processing, tuning, SysEx, and Standard MIDI File operations.
  • nname nname converts an integer MIDI key number received at its inlet into a symbol representing a note name.
  • seq8.m~ The seq8.m~ object is a simple 8-step sequencer that generates musical sequences.
  • touch.in The touch.in object extracts MIDI Aftertouch information from either a connected MIDI device or an external raw MIDI data stream.
  • piano~ piano~ is a piano instrument voice that produces audio from MIDI note input.
  • midi.note.pass midi.note.pass filters MIDI note lists of the form PITCH VELOCITY [DUR] using an expression and outputs the lists that pass.