Audio node
Audio Player
Professional audio file playback as an ordinary Input node — the audio-only sibling of Video Player. Loop modes, an In/Out region, a 0–1 scrub timeline, variable speed with a choice of tape varispeed or pitch-preserving stretch, and a built-in peak-decay Level output that drives visuals without any analysis node. Underneath, it renders inside Grafit's shared audio engine: one clock for every player, filter and output, so nothing drifts.
Inputs
| Port | Type | Default |
|---|---|---|
| FileThe audio file this node plays. Normally chosen with the file button, but a cabled path switches files live for playlists. An empty path releases the player. | string | |
| EnableOff stops playback and lets the transport rest without tearing the loaded file down. | bool | true |
| PlayRuns or pauses the transport. Pausing holds the position rather than rewinding. | bool | true |
| SpeedPlayback rate — 1 is normal, 2 double, 0.5 half. Clamped to 0.03125…32 by magnitude; below about 0.03 it acts as a pause, and reverse playback is not supported. | float | 1.0 |
| Pitch ModeHow Speed treats pitch: Varispeed is tape-style, so faster means higher; the two Keep Pitch modes hold the original pitch, HQ at more cost. Anything other than Varispeed keeps pitch. | int | 0 |
| Time ModeTransport plays normally; Scrub turns the file into a position you drive by hand with the Scrub value; Trigger arms the clip silently — every rising edge on Restart fires it from the In Point, sampler-style. Loop Mode still applies: Once plays through and re-arms, Loop keeps going until the next trigger. | int | 0 |
| ScrubPosition in the file as a fraction of its length, used only in Scrub mode. Clamped to 0…1. | float | 0 |
| Loop ModeLoop repeats the in-out region forever; Once — Stop plays it through and halts. Other values behave as Loop. | int | 0 |
| In PointStart of the played region as a fraction of the file. Clamped to 0…1; if it sits after the Out Point the two simply swap. | float | 0 |
| Out PointEnd of the played region as a fraction of the file. Clamped to 0…1, and always kept a hair after the In Point. | float | 1 |
| RestartA rising edge jumps back to the In Point and plays again — and in Trigger mode this IS the trigger: cable a Keyboard key, a MIDI note or a beat, and every press fires the clip from the start. | bool | false |
| VolumePlayback level. Clamped to 0…1. | float | 1.0 |
| MuteSilences the output while the transport keeps running, so the position and Level timing stay in step. | bool | false |
| Start AtCable Sync Trigger's Fire Time (host seconds). The player waits silent at the In Point and its first sample sounds exactly at that moment on every Grafit with the same trigger; a moment already past skips the elapsed audio. Each new moment restarts from In. | any | — |
Outputs
| Port | Type |
|---|---|
| Audio | structure |
| Level | float |
| Time | float |
| Progress | float |
| Duration | float |
| Playing | bool |
| Finished | bool |
| Info | structure |
How It Works
One node owns one audio file, chosen in the inspector or driven by a path cable; many nodes play many files simultaneously. Playback happens inside the shared AVAudioEngine graph rather than in a private engine of its own. That single architectural fact explains most of the node's behaviour.
One clock. Every Audio Player, every audio filter node and every Audio Output live in the same render tree with the same hardware clock. Two independent clocks can drift against each other and crackle; one cannot. Loops are scheduled sample-exactly with a one-ahead queue, so they are gapless and click-free at any loop length.
DAW routing semantics. A player is silent until an enabled Audio Output routes it — exactly like a channel strip in a DAW with no output assigned. This is not a bug to work around: monitoring and analysis stay live regardless, so an unrouted player still feeds Audio FFT, Audio Analysis and the ML analysis nodes at full fidelity. One source can also fan out into several filter chains in parallel — the cables you draw are the engine wiring, and any topology change rebuilds the whole engine graph from its declarative description in one coalesced pass, so filters spliced in mid-playback simply work and playback resumes from the same position.
Millisecond analysis. Analysis hooks fire per real render quantum — a few milliseconds — instead of the system's 100 ms tap minimum, so FFT-driven visuals react to a file as fast as they react to the microphone.
Transport semantics. Time Mode selects the world:
- Transport (0) —
Playruns or pauses,Speedsets the rate,In Point/Out Point(0–1 fractions of the full duration) mark the region that plays, andLoop Modedecides the end behavior. - Scrub (1) — the
Scrubport is the timeline: 0 is the start, 1 the end, and any meaningful change seeks immediately. Drive it from an LFO, a fader or an EEG channel to scratch audio.
Loop modes: 0 = Loop (seamless, sample-accurate return to the In point) and 1 = Once — Stop. Ping-Pong is not offered here because the underlying player node cannot render audio in reverse; a value of 2 falls back to plain looping.
Pitch Modes decouple speed from pitch:
Pitch Mode | Value | Character |
|---|---|---|
| Varispeed (tape) | 0 | Speed changes pitch, exactly like a tape machine — the honest, artifact-free option |
| Keep Pitch | 1 | Time-domain stretch: speed changes, pitch stays. Low CPU |
| Keep Pitch (HQ) | 2 | The same, with a higher-overlap, higher-quality setting |
The mode is switchable live, and the unused unit is bypassed rather than left idling — an idle time-pitch unit smears transients even at rate 1.0, which is why beat detection on files now matches live input. Speed itself is clamped to the range 1/32× to 32×.
Events. Restart is edge-triggered: a rising edge seeks back to the In point. Finished is a one-frame pulse per the event-logic conventions, fired when the play region ends — including on loop wraps, so it doubles as a cycle tick.
Level is a peak-decay RMS of the playing signal: instant rise, musical fall. It gives you loudness-driven brightness or scale without wiring an FFT at all.
File handling. Browsing in the inspector stores a security-scoped bookmark with the project, so the file remains readable after a relaunch under sandboxing. A picked file takes effect immediately. A cabled File path takes priority; otherwise the node's own stored value is used, which is what keeps a disabled player from rebuilding its whole session (file, chain, ring buffer) every frame.
Parameters in Depth
| Port | Type | Default | Meaning |
|---|---|---|---|
File | String | "" | Path to the audio file. A cable takes priority over the inspector's Browse selection — wire a String switcher for playlists. |
Enable | Bool | true | Off stops playback and releases the engine chain, keeping the loaded file. |
Play | Bool | true | Run/pause in Transport mode. Inert in Scrub mode. |
Speed | Float | 1.0 | Playback rate, clamped to 1/32×…32×. Its effect on pitch depends on Pitch Mode. |
Pitch Mode | Int | 0 | 0 = Varispeed (tape), 1 = Keep Pitch, 2 = Keep Pitch (HQ). Live-switchable dropdown. |
Time Mode | Int | 0 | 0 = Transport, 1 = Scrub. Dropdown in the inspector. |
Scrub | Float | 0 | Scrub mode only: 0–1 position across the full duration; changes seek immediately. |
Loop Mode | Int | 0 | 0 = Loop, 1 = Once — Stop. (A value of 2 falls back to Loop; audio cannot play in reverse.) |
In Point | Float | 0 | Start of the play region as a 0–1 fraction of the file duration. |
Out Point | Float | 1 | End of the play region as a 0–1 fraction. |
Restart | Bool | false | Rising edge seeks back to the In point. |
Volume | Float | 1.0 | Audible level, 0–1. Analysis is unaffected. |
Mute | Bool | false | Silences audible output without stopping playback or analysis. |
Outputs: Audio (structure — the shared ring-buffer currency; connects directly to Audio FFT, Audio Analysis and every audio filter node), Level (Float, peak-decay RMS), Time (seconds), Progress (0–1 across the full duration), Duration (seconds), Playing (Bool), Finished (a one-frame pulse) and Info (structure with file details).
Use Cases
- Music-driven visuals — Audio Player
Audio→ Audio FFT → Audio Spectrum → Canvas: a full spectrum visual off a file, with the same millisecond analysis cadence as the microphone. - Loudness without analysis —
Level→ a CanvasOpacityor a CircleRadius: instant brightness pumping with a musical fall, one cable, zero FFT. - Audible playback — Audio Player
Audio→ Audio Gain → Audio Reverb → Audio Output: the chain you draw is the engine graph; without that Audio Output the player stays silent by design while analysis keeps running. - Tape stop effect —
Pitch ModeVarispeed, an LFO or envelope rampingSpeedfrom 1.0 down to 0.05: the classic pitch-dropping slowdown. - Pitch-stable slow motion —
Pitch ModeKeep Pitch (HQ) withSpeed0.5: half tempo at original pitch, ideal for stretched ambient beds under a slow visual. - Scratch performance —
Time ModeScrub with a Mouse X or MIDI fader onScrub: hand-controlled position with immediate seeks. - ML pipeline —
Audio→ Pitch Detection → Notes to Points → Plexus: an 88-note polyphonic point cloud driven straight from a file, andAudio→ Audio Beat Detection for kick/snare/hat triggers off the same source. - Loop tick —
Finished→ Counter: count bars or sections as the loop wraps, since the pulse fires once per cycle.
Tips
- Silence is expected without an Audio Output. If a file loads and
Playingis true but you hear nothing, the missing piece is an enabled Audio Output node routing the player — analysis works either way, so visuals can look correct while the room is quiet. - Browse for the file once even when driving
Fileby cable: the browse creates the security-scoped bookmark that survives a relaunch. A bare path string carries no sandbox access of its own. - Pick the
Pitch Modethat matches your intent, not the "safest": Varispeed bypasses the time-pitch unit entirely and is the cleanest path for beat detection and transient-driven visuals. Restartis edge-triggered — a permanently true cable fires exactly once. Drive it from a one-frame pulse (a beat trigger, Do Once, aFinishedpulse) to retrigger repeatedly.- Ping-Pong exists on Video Player but not here; if you need a reversed audio phrase, reverse the file offline.
In PointandOut Pointare fractions of the full duration, andProgressis measured against the full duration too — not against the region you looped.- One source can feed several filter chains in parallel, and every filter carries its own analysis tap, so an Audio FFT can watch the signal anywhere along the chain, not just at the source.
Open Audio Player in the interactive catalog →
Audio Player is one of 381 nodes in Grafit Pro.
Free download. Every feature for 7 days, no card. Then €99.99 once — or keep playing your projects as a Player.