Nodes/RyanOnTheInside/Preview Pitch βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
ComfyUI Node

Preview Pitch βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜

Burn the detected pitch onto your video as text

By ryanontheinsideΒ·Created 2 years agoΒ·Updated 5 months agoΒ· 852
Preview Pitch βš‘πŸ…‘πŸ…žπŸ…£πŸ…˜
  • video_frames
  • feature
  • IMAGE
β—„text_color(255,255,255)β–Ί
β—„font_scale1.0β–Ί
β—„label_prefixβ–Ί
β—„label_x_offset10β–Ί
β—„label_y_offset10β–Ί

Listed in ComfyUI's search as PitchVisualizer, this shows up on the canvas as "Preview Pitch" - and that's exactly what it does. It takes a FEATURE from PitchFeatureExtractor and burns its numeric value directly onto your video frames as on-screen text, frame by frame. Useful for sanity-checking a pitch extraction before you trust it to drive an effect, or for literally showing your work - an on-screen pitch readout is a natural fit if you're streaming a live, reactive video setup, which happens to be exactly the kind of thing this pack's author builds professionally.

How it works

There's no analysis here - this node consumes a FEATURE that's already been computed and renders it as text over video_frames. text_color and font_scale set the look of the readout, label_prefix lets you label it (handy if you're stacking multiple visualizers on one clip and need to tell them apart - a pitch readout next to a rhythm readout, say), and label_x_offset/label_y_offset position it on the frame.

The catch worth knowing up front: this node shows whatever raw value the wired-in feature actually is, with no unit conversion or context. Feed it a FEATURE from PitchFeatureExtractor set to frequency and the numbers on screen are Hz; set to semitone and they're note values instead. Feed it a feature from an unrelated source entirely (an audio amplitude curve, say) and you'll get a number on screen that has nothing to do with pitch - the node doesn't validate what kind of feature it's showing.

The inputs and outputs that matter

  • video_frames (required, IMAGE) - the footage to overlay text on.
  • feature (required, FEATURE) - the value to display; pair with PitchFeatureExtractor's output for this to actually read as pitch.
  • text_color (default (255,255,255)), font_scale - text appearance.
  • label_prefix - a text label to distinguish this readout from others.
  • label_x_offset/label_y_offset - on-screen position.

Output is a single IMAGE - the original frames with the readout burned in, ready to preview or save.

How to install it

ComfyUI Manager: search "RyanOnTheInside", install, restart. Manually:

cd ComfyUI/custom_nodes
git clone https://github.com/ryanontheinside/ComfyUI_RyanOnTheInside
cd ComfyUI_RyanOnTheInside
pip install -r requirements.txt

then restart. Pure text-overlay rendering - no model download.

Common issues & troubleshooting

Numbers on screen don't look like pitch at all. Double check feature is actually wired to PitchFeatureExtractor's output and not some other Feature source in your graph - this node has no idea what it's displaying, it just prints whatever number the wired-in feature carries.

Text is unreadable against the footage. text_color defaults to white, which disappears against bright backgrounds. Set a contrasting color, or nudge label_x_offset/label_y_offset to a darker part of the frame.

Stacked multiple visualizers and can't tell readouts apart. Set a distinct label_prefix on each one - without it, several overlapping text overlays on the same frame become hard to parse at a glance.

CategoryRyanOnTheInside/FlexFeatures/Utilities/Previews

Inputs (7)

NameTypeDefaultDescription
video_framesIMAGEβ€”
featureFEATUREβ€”
text_colorSTRING(255,255,255)β€”
font_scaleFLOAT1.00.1–2β€”
label_prefixSTRINGβ€”
label_x_offsetINT100–1000β€”
label_y_offsetINT100–1000β€”

Outputs (1)

NameTypeDescription
IMAGEIMAGEβ€”