Noodler

A modular, framework-agnostic music toolkit for web applications

Interactive Board

Touch or click the board below to play notes. Slide horizontally for pitch bend.

Bend: 0 cents
View Code
<noodler-board
  scale="A pentatonic-minor"
  waveform="sine"
  effects="delay,vibrato"
  theme="dark"
  bend-mode="dynamic"
></noodler-board>

Scale API

Generate scales and see note frequencies.

View Code
import { generateScale } from 'noodler/scale';

const scale = generateScale({
  root: 'A',
  type: 'pentatonic-minor',
  octave: 4
});

scale.notes.forEach(note => {
  console.log(`${note.name}: ${note.frequency.toFixed(2)} Hz`);
});

Synth API

Play notes with different waveforms and effects.

View Code
import { Synth } from 'noodler/audio';

const synth = new Synth({ waveform: 'sawtooth' });

synth.toggleDelay(true);
synth.noteOn(0, 440); // Play A4
synth.noteOff(0);     // Release note
synth.destroy();      // Cleanup

Backing Track

Create rhythm patterns with chord progressions.

120
View Code
import { BackingTrack } from 'noodler/audio';

const ctx = new AudioContext();
const backing = new BackingTrack(ctx, {
  tempo: 120,
  style: 'blues',
  instrument: 'bass',
  chords: ['I', 'IV', 'V', 'I']
});

backing.play();
backing.stop();
backing.destroy();