Nodes/ComfyUI-Audio2GuitarTabSheet/🎸 Audio to Guitar Tab (Mono)
ComfyUI Node

🎸 Audio to Guitar Tab (Mono)

Guitar tabs from audio, with zero model downloads and zero API keys

By xrmatic·Created 5 months ago·Updated 5 months ago· 0
🎸 Audio to Guitar Tab (Mono)
  • audio
  • TAB_TEXT
  • UI_DISPLAY
â—„simplicity0.50â–º
◄tuning▾►
â—„threshold0.010â–º

You've got a recording of a guitar solo you want to learn, and the idea of dragging it into ComfyUI to get an actual tab out feels absurd - until you meet MonophonicGuitarTabber. It's an end-of-graph node that takes an audio clip, figures out what notes are being played, and hands you back a readable ASCII tab. No model files to download, no API key to beg for, nothing but a few kilobytes of DSP code doing the work. In an ecosystem where half of every install is weights, that's quietly refreshing.

A quick honesty note before you get excited: this is a tiny, brand-new pack (one merge landed in April 2026, generated with GitHub Copilot's help, README basically empty). Nobody on Reddit is talking about it yet. So you're early - which means the rough edges are yours to discover. I read the source so you don't have to.

How it works

Under the hood there's no neural network at all - this is classic digital signal processing. The node pulls the mono waveform out of the ComfyUI AUDIO dict (the {"waveform": tensor, "sample_rate": int} shape that VHS and friends produce), gates out silence below your threshold, then runs librosa's pYIN pitch detector frame by frame. pYIN estimates a single fundamental frequency per frame, which gets converted to a MIDI note number, smoothed with a median filter, snapped to a rhythm grid, and finally mapped to the lowest-fret string/fret position it can be played at in your chosen tuning.

Everything you care about rides on one slider: simplicity. At 0 you get detailed output - 16th-note resolution, near-identity smoothing. Crank it toward 1 and the median filter gets aggressive, the grid coarsens to quarter notes, and anything under 200 ms gets dropped, so you end up with a skeleton of the phrase. The default 0.5 is a sane middle ground: eighth notes, moderate smoothing.

The other inputs are quick to set. tuning is a dropdown (Standard E, Drop D, DADGAD) - it only changes where notes land on the fretboard, not what's detected. threshold is a silence floor at 0.01, which is fine for clean recordings and worth nudging up if your source has hiss.

Outputs and where it sits

The node has two outputs, TAB_TEXT and UI_DISPLAY - and they're the same string. UI_DISPLAY exists so the tab renders in the Text widget; grab TAB_TEXT if you want to save it or feed it into a text-processing node. Because it's marked as an output node, it's meant to be the last thing in your graph: audio goes in, tab comes out.

Installing it

Standard custom-node fare. In ComfyUI Manager, search for the pack title Audio2GuitarTabSheet, or do it by hand:

cd ComfyUI/custom_nodes
git clone https://github.com/xrmatic/ComfyUI-Audio2GuitarTabSheet

Then restart ComfyUI. Manager will handle the pip side, which is just librosa, numpy, and scipy - no torch surprise beyond what ComfyUI already ships. There are no model downloads, period.

Where people get burned

The name says "Mono" and it is not kidding. pYIN tracks one pitch per frame, so chords, double-stops, or a full mix with drums will come out as mush. Feed it a single melodic line - ideally one isolated enough that the guitar is the only pitch source. That's the number one way to make this node look broken.

Two baked-in limits worth knowing: it assumes 120 BPM for the rhythm grid, so timing is approximate rather than tempo-locked, and it truncates audio past 60 seconds and renders at most 32 note events. It's built for riffs and licks, not three-minute songs. Keep your input short and single-voiced and it does exactly what it says on the tin.

Categoryaudio

Inputs (4)

NameTypeDefaultDescription
audioAUDIO—
simplicityFLOAT0.500–1—
tuningCOMBO3 options: Standard E, Drop D, DADGAD
thresholdFLOAT0.0100–1—

Outputs (2)

NameTypeDescription
TAB_TEXTSTRING—
UI_DISPLAYSTRING—