music-pipe-rs

Algorithmic Music Demo - Composer Styles

Bach - Full Organ Arrangement

The iconic opening of Bach's Toccata and Fugue in D minor (BWV 565), arranged for multi-voice church organ with octave doubling and pedal bass.
Script Details & Explanation
# Full notes extracted via: mid2seq "Toccata and Fugue in D minor, BWV 565.mid" --bars 4 NOTES='[A4,A5,A6]/t28*89 [G4,G5,G6]/t28*107 [A4,A5,A6]/t163*93 R/t77 [G4,G5,G6]/t28*85 [F4,F6]/t28*88 [E4,E6]/t28*90 [D4,D6]/t28*90 [C#4,C#5,C#6]/t54*110 [D4,D5,D6]/t109*106 R/t371 [A3,A4,A5]/t28*89 [G3,G4,G5]/t28*106 [A3,A4,A5]/t163*92 R/t77 [E3,E4,E5]/t54*86 [F3,F4,F5]/t54*99 [C#3,C#4,C#5]/t54*102 [D3,D4,D5]/t109*104 R/t371 [A2,A3,A4]/t28*90 [G2,G3,G4]/t28*107 [A2,A3,A4]/t163*93 R/t77 [G2,G3,G4]/t28*86 [F2,F4]/t28*87 [E2,E4]/t28*91 [D2,D4]/t28*88 [C#2,C#3,C#4]/t54*111 [D2,D3,D4]/t109*106 R/t371 D1/t1826*116 [D2,E2,A#2,E3,G3,C#4]/t433*64 R/t47 [D2,E2,A#2,C#3,G3,A#3,E4]/t433*81 R/t47 [D2,E2,A#2,D3,G3,A#3,C#4,G4]/t386*92 R/t94 [D2,G2,A#2,D3,E3,G3,C#4,E4,A#4]/t433*102 R/t47 [D2,G2,A#2,D3,E3,A#3,E4,G4,C#5]/t433*107 R/t47 [D2,G2,A#2,C#3,D3,E3,D4,G4,A#4,C#5,E5]/t913*115 R/t47 [D2,G2,A2,D3,D4,G4,A4,D5]/t109*90 R/t11 [E2,E3,E4]/t109*112 R/t11 [F#2,F#3,F#4]/t458*115' # Generate MIDI with church organ (patch 19) seq --notes "$NOTES" --bpm 72 --patch 19 | to-midi --out bach.mid # Render to audio SF2="${HOME}/github/softwarewrighter/midi-cli-rs/soundfonts/GeneralUser_GS.sf2" fluidsynth -ni -F bach.wav "$SF2" bach.mid

Approach

  • Uses mid2seq to extract notes from existing MIDI files
  • Tick-based notation preserves original timing and velocities
  • Patch 19 = Church Organ (General MIDI)
  • Chord notation [A4,A5,A6] for simultaneous notes
  • Pipeline: mid2seq → seq → to-midi → fluidsynth
~19s D minor Church Organ 4 channels

Bach - 8-bit Arcade Style

Gyruss-inspired chiptune rendition with square wave synthesis and punchy 140 BPM arcade tempo. Single channel, pure melody.
Script Details & Explanation
seq --notes "D5/4*127 C#5/32*120 D5/32*120 A4/32*115 G4/32*110 F4/32*110 E4/32*105 D4/32*105 C#4/32*110 D4/8*120 R/8 A4/4*125 G#4/32*115 A4/32*115 E4/32*110 D4/32*105 C4/32*105 B3/32*100 A3/32*100 G#3/32*105 A3/8*115 R/8 D5/4*127 C#5/32*120 D5/32*127 A4/32*115 G4/32 F4/32 E4/32 D4/32 C#4/32*115 D4/4*127 R/8 D3/2*127" \ --bpm 140 --ch 0 --patch 80 --vel 120 \ | viz | to-midi --out arcade.mid fluidsynth -ni -F arcade.wav soundfont.sf2 arcade.mid

Approach

  • Single channel monophonic melody (classic chiptune constraint)
  • Patch 80 = Square Lead (closest to 8-bit square wave)
  • 140 BPM fast arcade tempo for energy
  • Inspired by Gyruss (1983) arcade game by Konami
~7.5s Square Wave 140 BPM 1 channel

Bach-esque - Algorithmic Baroque

Procedurally generated baroque-style organ music. Three voices generated algorithmically with seed 1685 (Bach's birth year).
Script Details & Explanation
SEED=1685 # Bach's birth year seed $SEED | motif --base 62 --notes 48 --complexity 9 --bpm 132 \ --ch 0 --patch 19 --dur 0.5 --rest-prob 0.1 \ | scale --root D --mode minor > upper.jsonl seed $((SEED+1)) | motif --base 38 --notes 12 --complexity 2 \ --ch 1 --patch 19 --dur 2.0 \ | scale --root D --mode minor > bass.jsonl seed $((SEED+2)) | motif --base 50 --notes 24 --complexity 6 \ --ch 2 --patch 19 --dur 0.75 --chord-prob 0.15 \ | scale --root D --mode minor > mid.jsonl cat upper.jsonl bass.jsonl mid.jsonl | viz | to-midi --out bach-esque.mid # RENDER TO AUDIO fluidsynth -ni -F bach-esque.wav soundfont.sf2 bach-esque.mid

Approach

  • seed stage provides deterministic randomness
  • motif stage generates melodic patterns algorithmically
  • scale stage quantizes to D minor scale
  • Complexity 9 = high melodic variation for upper voice
  • Complexity 2 = simple, stable bass foundation
  • Each voice uses different seed offset for variety
~14s Algorithmic D minor 3 voices

Maple Leaf Rag (1899)

Scott Joplin's most famous ragtime composition, the "king of ragtime." The "king of ragtime" - syncopated piano classic.
Script Details & Explanation
# 127 notes at 130 BPM seq --notes "R/t712 [D#2,D#3]/t40*96 R/t204 G#3/t156*86 G#2/t164*86 G#4/t88*73 [G#3,C4]/t56*83 D#3/t32*69 D#4/t152*86 D#5/t120*81 R/t16 G#4/t236*66 [G#3,C4]/t72*68 D#3/t40*52 C5/t96*77 R/t40 D#5/t236*77 D#4/t240*91 [A2,A3]/t72*86 R/t84 G4/t88*81 [A#2,A#3]/t192*86 [D#4,D#5]/t184*81 G4/t200*73 [G3,C#4]/t72*68 A#4/t104*77 R/t28 D#4/t580*91 D#5/t480*81 C#4/t76*52 D#3/t140*57 G3/t44*54 R/t200 D#3/t40*86 D#2/t32*91 R/t200 G#3/t156*81 G#2/t156*81 G#4/t84*66 [D#3,G#3,C4]/t40*69 D#5/t156*86 D#4/t184*86 G#4/t248*59 [G#3,C4]/t72*59 [D#3,C5]/t36*54 R/t44 D#5/t240*77 D#4/t232*91 [A2,A3]/t104*94 R/t56 G4/t104*86 [A#2,A#3]/t136*83 D#4/t196*86 D#5/t108*86 R/t24 G4/t208*77 [D#3,G3]/t64*60 C#4/t36*41 A#4/t92*59 R/t40 D#5/t360*77 D#4/t344*81 C#4/t44*37 D#3/t112*66 R/t132 D#3/t48*77 D#2/t48*86 R/t104 D#4/t272*86 D#5/t208*86 E3/t280*108 E2/t288*102 G#4/t284*73 B4/t120*69 R/t20 [E4,E5]/t72*86 R/t16 D#2/t72*81 D#3/t56*73 R/t88 D#5/t56*91 D#4/t48*81 R/t28 [D#2,D#3]/t56*91 R/t96 D#5/t192*91 D#4/t240*91 E3/t200*108 E2/t196*108 G#4/t260*77 B4/t148*77 E5/t76*86 E4/t60*77 R/t36 [D#2,D#3]/t304*83 [D#4,D#5]/t36*105 R/t196 G#1/t208*91 G#2/t176*69 B2/t160*54 G#3/t76*73 R/t28 G#2/t164*108 G#3/t244*66 B3/t152*59 G#4/t120*69 G#3/t164*120 G#4/t252*59 B4/t148*66 G#5/t100*77 G#4/t164*120 G#5/t200*81 B5/t164*65 G#6/t120*81 G#5/t48*86 [D4,G#4]/t60*83 B4/t40*81 F4/t36*77 R/t196 [D4,B4,G#5]/t44*87 [F4,G#4]/t40*75 G#6/t44*91 R/t196 [G#4,B4,G#5]/t48*86 [D4,F4,G#6]/t32*87" \ --bpm 130 --ch 0 --patch 0 \ | humanize --jitter-ticks 8 --jitter-vel 8 \ | trim --auto \ | to-midi --out maple-leaf.mid fluidsynth -ni -F raw.wav soundfont.sf2 maple-leaf.mid ffmpeg -y -i raw.wav -t 12 -af "afade=t=out:st=10:d=2" maple-leaf.wav

Notation Features

  • /t480 - tick-based duration (480 ticks = 1 beat)
  • [D#2,D#3] - chord notation (octave doubling)
  • *96 - per-note velocity for dynamics
~12s Ab major Piano 130 BPM

The Entertainer (1902)

"A Rag Time Two Step" - the classic ragtime piece featured in "The Sting." Joplin's tempo marking: "Do not play this piece fast." Joplin's most famous piece, featured in "The Sting."
Script Details & Explanation
# 109 notes at 200 BPM seq --notes "R/t1925 D5/t213*86 D6/t226*107 E5/t226*82 E6/t251*92 C5/t248*82 C6/t236*96 [A4,A5]/t506*91 B5/t236*96 B4/t224*70 G5/t208*96 G4/t201*86 R/t277 [D4,D5]/t241*93 E5/t233*85 E4/t234*70 C5/t241*96 C4/t246*78 A4/t471*96 A3/t476*86 R/t2 B4/t241*96 B3/t229*78 R/t9 G3/t193*82 G4/t181*92 R/t299 [D3,D4]/t231*96 E4/t233*88 E3/t226*82 R/t9 C4/t219*92 C3/t236*82 R/t1 A3/t481*100 A2/t491*86 B3/t246*96 B2/t226*86 R/t11 [A2,A3]/t224*93 R/t9 G#3/t221*84 G#2/t228*82 R/t2 G3/t281*100 G2/t309*94 R/t641 [G4,B4,D5]/t274*98 G5/t236*96 [G1,G2]/t166*88 R/t312 [D4,G4,B4]/t236*84 D#4/t218*78 R/t32 [C3,E4]/t226*91 C5/t458*104 [E3,G3,C4]/t209*74 R/t24 E4/t256*81 [G2,G3]/t203*86 C5/t436*100 R/t32 E4/t258*84 [G3,C4]/t203*82 A#3/t184*67 R/t39 C5/t1171*104 [F2,F3]/t213*84 R/t267 [A3,C4]/t178*86 R/t304 [E2,E3]/t191*84 R/t41 C5/t126*88 [E5,C6]/t126*100 R/t91 [G3,C4,D5,F5,D6]/t211*88 R/t22 F#5/t115*88 [D#5,D#6]/t115*83 R/t87 [E5,G5,E6]/t115*104 G2/t154*94 R/t86 [C5,E5,C6]/t115*87 R/t123 [E3,G3,C4,D5,F5,D6]/t238*90 [E5,G5,E6]/t319*97 G2/t181*94 R/t52 B5/t115*100 [B4,D5]/t115*100 R/t125 [D5,F5,D6]/t299*96 [F3,G3,B3]/t206*78 R/t271 C3/t241*90" \ --bpm 200 --ch 0 --patch 0 \ | humanize --jitter-ticks 4 --jitter-vel 5 \ | trim --auto \ | to-midi --out entertainer.mid fluidsynth -ni -F raw.wav soundfont.sf2 entertainer.mid ffmpeg -y -i raw.wav -t 12 -af "afade=t=out:st=10:d=2" entertainer.wav
~12s C major Piano 200 BPM

Ride of the Valkyries - Full Orchestra

The actual Ride of the Valkyries theme (WWV 86B) - the iconic "da-da-da-DUM-da" galloping motif from "What's Opera, Doc?" Transcribed note-for-note with full late-Romantic orchestration across 10 MIDI channels.
Script Details & Explanation
# BRASS (4 channels) seq --notes "B4/8 B4/8 B4/8 D5/4 B4/8 B4/8 B4/8 B4/8 D5/4 B4/8 D5/8 D5/8 D5/8 F#5/4 D5/8 D5/8 D5/8 D5/8 F#5/4 D5/8 F#5/8 F#5/8 F#5/8 A5/4 F#5/8 F#5/8 F#5/8 F#5/8 A5/4 F#5/8 D5/8 D5/8 D5/8 F#5/4 D5/8 B4/8 B4/8 B4/8 D5/2" --bpm 152 --ch 0 --patch 60 --vel 115 > horn.jsonl seq --notes "R/2 R/4 D5/4 B4/8 B4/8 B4/8 B4/8 D5/4 B4/8 D5/8 D5/8 D5/8 F#5/4 D5/8 D5/8 D5/8 D5/8 F#5/4 D5/8 F#5/8 F#5/8 F#5/8 A5/4 F#5/8 F#5/8 F#5/8 F#5/8 A5/4 F#5/8 D5/8 D5/8 D5/8 F#5/4 D5/8 B4/8 B4/8 B4/8 D5/2" --bpm 0 --ch 1 --patch 56 --vel 105 > trumpet.jsonl seq --notes "B3/8 B3/8 B3/8 D4/4 B3/8 B3/8 B3/8 B3/8 D4/4 B3/8 D4/8 D4/8 D4/8 F#4/4 D4/8 D4/8 D4/8 D4/8 F#4/4 D4/8 F#4/8 F#4/8 F#4/8 A4/4 F#4/8 F#4/8 F#4/8 F#4/8 A4/4 F#4/8 D4/8 D4/8 D4/8 F#4/4 D4/8 B3/8 B3/8 B3/8 D4/2" --bpm 0 --ch 2 --patch 57 --vel 100 > trombone.jsonl seq --notes "B2/4 B2/8 B2/4 B2/8 B2/4 B2/8 B2/4 B2/8 D3/4 D3/8 D3/4 D3/8 D3/4 D3/8 D3/4 D3/8 F#3/4 F#3/8 F#3/4 F#3/8 F#3/4 F#3/8 F#3/4 F#3/8 B2/4 B2/8 B2/4 B2/8 B2/2" --bpm 0 --ch 3 --patch 58 --vel 120 > tuba.jsonl # WOODWINDS (2 channels) seq --notes "R/2 B5/8 B5/8 B5/8 D6/4 B5/8 B5/8 B5/8 B5/8 D6/4 B5/8 D6/8 D6/8 D6/8 F#6/4 D6/8 D6/8 D6/8 D6/8 F#6/4 D6/8 F#6/8 F#6/8 F#6/8 A6/4 F#6/8 F#6/8 F#6/8 F#6/8 A6/4 F#6/8 D6/4 F#6/4 D6/4 B5/2" --bpm 0 --ch 4 --patch 72 --vel 90 > flute.jsonl seq --notes "R/4 F#5/8 D5/8 F#5/8 D5/8 B4/8 D5/8 F#5/8 D5/8 B4/8 D5/8 A5/8 F#5/8 A5/8 F#5/8 D5/8 F#5/8 A5/8 F#5/8 D5/8 F#5/8 B5/8 A5/8 F#5/8 A5/8 F#5/8 D5/8 F#5/8 D5/8 B4/8 D5/8 F#5/8 D5/8 B4/8 D5/4 B4/2" --bpm 0 --ch 5 --patch 71 --vel 80 > clarinet.jsonl # STRINGS (2 channels) seq --notes "B4/8 F#4/8 D4/8 B4/8 F#4/8 D4/8 B4/8 F#4/8 D4/8 B4/8 F#4/8 D4/8 D5/8 A4/8 F#4/8 D5/8 A4/8 F#4/8 D5/8 A4/8 F#4/8 D5/8 A4/8 F#4/8 F#5/8 D5/8 A4/8 F#5/8 D5/8 A4/8 F#5/8 D5/8 A4/8 F#5/8 D5/8 A4/8 D5/8 A4/8 F#4/8 B4/8 F#4/8 D4/8 B4/2" --bpm 0 --ch 6 --patch 48 --vel 85 > violin.jsonl seq --notes "B2/4 B2/8 B2/4 B2/8 B2/4 B2/8 B2/4 B2/8 D3/4 D3/8 D3/4 D3/8 D3/4 D3/8 D3/4 D3/8 F#3/4 F#3/8 F#3/4 F#3/8 F#3/4 F#3/8 F#3/4 F#3/8 B2/4 B2/8 B2/4 B2/8 B2/2" --bpm 0 --ch 7 --patch 42 --vel 115 > cello.jsonl # PERCUSSION (ch 9) seed 1883 | euclid --steps 12 --pulses 2 --note 41 --ch 9 --bpm 0 --repeat 10 --vel 110 --accent 0.4 > timpani.jsonl seed 1876 | euclid --steps 24 --pulses 2 --note 49 --ch 9 --bpm 0 --repeat 5 --vel 90 > cymbal.jsonl cat horn.jsonl trumpet.jsonl trombone.jsonl tuba.jsonl flute.jsonl clarinet.jsonl violin.jsonl cello.jsonl timpani.jsonl cymbal.jsonl | viz | trim --auto | to-midi --out valkyries.mid fluidsynth -ni -F raw.wav soundfont.sf2 valkyries.mid ffmpeg -i raw.wav -t 14 -af "afade=t=out:st=12:d=2" valkyries.wav

Full Orchestration (10 channels)

  • Brass Section: French Horns (patch 60), Trumpets (patch 56), Trombones (patch 57), Tuba (patch 58)
  • Woodwinds: Flutes/Piccolo (patch 72), Clarinets (patch 71)
  • Strings: Violins (patch 48), Cellos (patch 42)
  • Percussion: Timpani + Cymbals (channel 9)

Approach

  • 152 BPM galloping tempo in 9/8 feel
  • Theme rises through B-D, D-F#, F#-A progression
  • Horns carry iconic melody, trumpets double for power
  • Strings provide galloping tremolo accompaniment
  • Timpani on downbeats, cymbals for climactic crashes
  • Tuba (vel 120) and cellos (vel 115) boosted for bass punch
  • trim --auto removes trailing silence (500ms padding after last note)
~14s B minor 10 channels Bass boosted

Wagner-esque - Algorithmic Germanic Opera

Procedurally generated Wagner-style music with cartoony instrumentation. French horn fanfares, pompous tuba, xylophone accents, vibraphone shimmer.
Script Details & Explanation
SEED=1813 # Wagner's birth year seed $SEED | motif --base 53 --complexity 5 --bpm 152 --patch 60 # Horn seed $SEED+1 | motif --base 36 --complexity 2 --patch 58 # Tuba seed $SEED+2 | motif --base 72 --complexity 7 --patch 13 # Xylophone seed $SEED+3 | motif --base 65 --complexity 4 --patch 11 # Vibraphone cat horn.jsonl tuba.jsonl xylo.jsonl vibe.jsonl | scale --root B --mode minor | to-midi --out wagner.mid # RENDER TO AUDIO fluidsynth -ni -F wagner.wav soundfont.sf2 wagner.mid

Approach

  • Algorithmic generation using motif stage
  • Cartoony instruments for "What's Opera, Doc?" feel
  • B minor scale for dramatic Germanic sound
~8s Algorithmic Cartoony 4 channels

Verdi-esque - Italian Opera

Lyrical, passionate Italian opera style inspired by La Traviata and Rigoletto. Singing violin melodies over warm cello and lush string ensemble, with clarinet woodwind color.
Script Details & Explanation
SEED=1813 # Verdi's birth year # Solo Violin - aria melody seed $SEED | motif --base 67 --notes 24 --complexity 6 --bpm 72 \ --ch 0 --patch 40 --dur 1.0 --rest-prob 0.2 --swing 0.1 \ | scale --root G --mode major > violin.jsonl # Cello - singing bass seed $((SEED+1)) | motif --base 48 --notes 16 --complexity 3 \ --ch 1 --patch 42 --dur 1.5 \ | scale --root G --mode major > cello.jsonl # String Ensemble - harmonic bed seed $((SEED+2)) | motif --base 55 --notes 20 --complexity 4 \ --ch 2 --patch 48 --dur 2.0 --chord-prob 0.4 \ | scale --root G --mode major > strings.jsonl # Clarinet - woodwind color seed $((SEED+3)) | motif --base 60 --notes 12 --complexity 5 \ --ch 3 --patch 71 --dur 0.75 --rest-prob 0.3 \ | scale --root G --mode major > clarinet.jsonl cat violin.jsonl cello.jsonl strings.jsonl clarinet.jsonl | viz | to-midi --out verdi.mid # RENDER TO AUDIO fluidsynth -ni -F verdi.wav soundfont.sf2 verdi.mid

Instrumentation (4 channels)

  • Solo Violin (patch 40) - Aria-like lyrical melody with swing
  • Cello (patch 42) - Warm, singing bass line
  • String Ensemble (patch 48) - Lush harmonic support with chords
  • Clarinet (patch 71) - Woodwind color and ornamentation

Approach

  • G major for bright, operatic sound
  • 72 BPM moderate tempo for lyrical phrasing
  • Swing parameter adds expressive rubato feel
  • High chord-prob on strings for lush harmonies
~36s G major Lyrical 4 channels

The Mikado - "Three Little Maids"

The actual melody from Gilbert & Sullivan's The Mikado (1885). "Three little maids from school are we, pert as a schoolgirl well can be..." Transcribed note-for-note with light operetta orchestration.
Script Details & Explanation
# Main melody - Flute seq --notes "G5/8 G5/8 G5/8 F#5/8 E5/8 D5/8 G5/4 B5/8 A5/4 G5/8 G5/8 G5/8 G5/8 F#5/8 E5/8 D5/8 G5/4 A5/8 B5/2 R/8 D5/8 D5/8 D5/8 E5/8 F#5/8 G5/8 A5/4 G5/8 F#5/4 E5/8 D5/8 G5/8 B5/8 A5/8 G5/8 F#5/8 G5/1" --bpm 144 --ch 0 --patch 73 --vel 90 > melody.jsonl # Harmony - Oboe seq --notes "R/4 D5/8 R/4 D5/8 R/4 B4/8 R/4 D5/8 R/4 D5/8 R/4 D5/8 R/4 E5/8 R/4 D5/8 R/4 B4/8 R/4 C5/8 R/4 D5/8 R/4 B4/8 R/4 D5/8 R/4 D5/8 B4/1" --bpm 0 --ch 1 --patch 68 --vel 70 > harmony.jsonl # Bass - Pizzicato strings seq --notes "G3/8 D4/8 B3/8 G3/8 D4/8 B3/8 G3/8 D4/8 B3/8 D3/8 A3/8 F#3/8 G3/8 D4/8 B3/8 G3/8 D4/8 B3/8 G3/8 D4/8 B3/8 G3/2 D3/8 A3/8 F#3/8 G3/8 B3/8 D4/8 A3/8 E4/8 C#4/8 D4/8 A3/8 F#3/8 G3/8 B3/8 D4/8 D3/8 A3/8 F#3/8 G3/1" --bpm 0 --ch 2 --patch 45 --vel 80 > bass.jsonl cat melody.jsonl harmony.jsonl bass.jsonl | viz | to-midi --out mikado.mid fluidsynth -ni -F mikado.wav soundfont.sf2 mikado.mid

Instrumentation (3 channels)

  • Flute (patch 73) - Bright, playful melody
  • Oboe (patch 68) - Harmonic counterpoint
  • Pizzicato Strings (patch 45) - Bouncy oom-pah bass

Approach

  • Actual transcribed melody from The Mikado
  • 144 BPM bouncy 6/8 feel
  • G major for cheerful operetta sound
~13s G major Actual melody 3 channels

Gilbert & Sullivan-esque - Algorithmic Operetta

Procedurally generated operetta style. Bouncy rhythms, cheerful major keys, and playful woodwind interplay inspired by the G&S style.
Script Details & Explanation
SEED=1842 # Sullivan's birth year seed $SEED | motif --base 72 --notes 32 --complexity 7 --bpm 132 \ --ch 0 --patch 73 --dur 0.5 --rest-prob 0.15 \ | scale --root C --mode major > flute.jsonl seed $SEED+1 | motif --base 67 --notes 20 --complexity 5 \ --ch 1 --patch 68 --dur 0.5 --rest-prob 0.25 \ | scale --root C --mode major > oboe.jsonl seed $SEED+2 | motif --base 48 --notes 24 --complexity 3 \ --ch 2 --patch 45 --dur 0.25 \ | scale --root C --mode major > pizz.jsonl seed $SEED+3 | motif --base 41 --notes 16 --complexity 2 \ --ch 3 --patch 70 --dur 0.75 \ | scale --root C --mode major > bassoon.jsonl cat flute.jsonl oboe.jsonl pizz.jsonl bassoon.jsonl | viz | to-midi --out gands.mid # RENDER TO AUDIO fluidsynth -ni -F gands.wav soundfont.sf2 gands.mid

Instrumentation (4 channels)

  • Flute (patch 73) - Bright, playful melody
  • Oboe (patch 68) - Comic counterpoint lines
  • Pizzicato Strings (patch 45) - Bouncy accompaniment
  • Bassoon (patch 70) - Pompous comic bass

Approach

  • C major for bright, cheerful sound
  • 132 BPM fast, energetic tempo
  • Short note durations (0.25-0.5) for bouncy feel
  • High complexity on melody for playful variation
~9s Algorithmic C major 4 channels

Baroque Chamber Music

A chamber ensemble piece in the style of Bach and Vivaldi, featuring period instruments: string quartet, harpsichord continuo, and recorder. Vivaldi-style running passages with arpeggiated accompaniment.
Script Details & Explanation
# STRING QUARTET seq --notes "D5/8 F#5/8 A5/8 D6/4 C#6/8 B5/8 A5/8 G5/8 F#5/8 E5/8 D5/4 E5/8 F#5/8 G5/8 A5/8 B5/8 C#6/8 D6/4 A5/8 F#5/8 D5/8 E5/8 F#5/8 G5/8 A5/4 D5/2" --bpm 100 --ch 0 --patch 40 --vel 95 > violin1.jsonl seq --notes "R/4 D5/8 F#5/8 A5/4 G5/8 F#5/8 E5/8 D5/8 C#5/8 B4/8 A4/4 B4/8 C#5/8 D5/8 F#5/8 G5/8 A5/8 F#5/4 D5/8 A4/8 F#4/8 G4/8 A4/8 B4/8 C#5/4 D5/2" --bpm 0 --ch 1 --patch 40 --vel 85 > violin2.jsonl seq --notes "A4/4 A4/8 A4/4 A4/8 G4/4 G4/8 F#4/4 F#4/8 F#4/4 F#4/8 G4/4 G4/8 A4/4 A4/8 A4/4 A4/8 F#4/4 F#4/8 E4/4 E4/8 F#4/4 F#4/2" --bpm 0 --ch 2 --patch 41 --vel 80 > viola.jsonl seq --notes "D3/4 D3/8 A2/4 A2/8 B2/4 B2/8 G2/4 G2/8 D3/4 D3/8 G2/4 G2/8 F#2/4 F#2/8 D3/4 D3/8 F#2/4 F#2/8 A2/4 A2/8 D3/4 D3/2" --bpm 0 --ch 3 --patch 42 --vel 90 > cello.jsonl # CONTINUO seq --notes "D4/16 F#4/16 A4/16 D5/16 F#4/16 A4/16 D5/16 F#5/16 A3/16 C#4/16 E4/16 A4/16 C#4/16 E4/16 A4/16 C#5/16 B3/16 D4/16 G4/16 B4/16 D4/16 G4/16 B4/16 D5/16 G3/16 B3/16 D4/16 G4/16 B3/16 D4/16 G4/16 B4/16 D4/16 F#4/16 A4/16 D5/16 F#4/16 A4/16 D5/16 F#5/16 D4/16 F#4/16 A4/16 D5/16 F#4/16 A4/16 D5/16 F#5/16 A3/16 D4/16 F#4/16 A4/16 D4/16 F#4/16 A4/16 D5/16 D4/8 F#4/8 A4/8 D5/2" --bpm 0 --ch 4 --patch 6 --vel 70 > harpsi.jsonl # WIND seq --notes "R/2 A5/8 B5/16 A5/16 G5/8 F#5/8 E5/8 F#5/16 E5/16 D5/8 C#5/8 D5/4 E5/8 F#5/8 G5/16 F#5/16 E5/8 D5/8 C#5/8 D5/16 E5/16 F#5/4 E5/8 D5/2" --bpm 0 --ch 5 --patch 74 --vel 75 > recorder.jsonl cat violin1.jsonl violin2.jsonl viola.jsonl cello.jsonl harpsi.jsonl recorder.jsonl | viz | trim --auto | to-midi --out baroque.mid fluidsynth -ni -F raw.wav soundfont.sf2 baroque.mid ffmpeg -i raw.wav -t 15 -af "afade=t=out:st=13:d=2" baroque.wav

Period Instruments (6 channels)

  • Strings: Violin I & II (patch 40), Viola (patch 41), Cello (patch 42)
  • Continuo: Harpsichord (patch 6) - arpeggiated chords
  • Wind: Recorder (patch 74) - ornamental line

Approach

  • 100 BPM (Allegro moderato)
  • D major - bright Baroque key
  • Vivaldi-style running sixteenth-note passages
  • Basso continuo: cello + harpsichord
  • trim --auto + ffmpeg fade out
~13s D major 6 channels Period instruments

Turkey in the Straw (c. 1820s)

Traditional American fiddle reel transcribed from The Session ABC notation. 4-voice arrangement: lead fiddle, harmony fiddle, banjo, and bass.
Script Details & Explanation
# Lead fiddle (patch 40) - A part + B part seq --notes "B4/16 A4/16 G4/16 F#4/16 G4/16 A4/16 G4/8 B3/16 C4/16 D4/16 E4/16 D4/16 B3/16 D4/8 G4/16 A4/16 B4/8 B4/8 B4/16 A4/16 G4/16 A4/16 B4/8 A4/8 A4/8 B4/16 A4/16 G4/16 F#4/16 G4/16 A4/16 G4/8 B3/16 C4/16 D4/16 E4/16 D4/16 B3/16 D4/8 G4/16 A4/16 B4/16 D5/8 E5/16 D5/16 B4/16 G4/16 A4/16 B4/8 A4/8 G4/4 D5/8 B4/16 D5/8 B4/16 D5/8 D5/8 B4/16 D5/8 B4/16 D5/8 D5/8 C5/16 E5/8 C5/16 E5/8 E5/8 C5/16 E5/8 C5/16 E5/8 E5/8 G5/8 G5/8 D5/8 D5/8 B4/8 B4/8 A4/8 G4/16 A4/16 B4/16 D5/8 E5/16 D5/16 B4/16 G4/16 A4/16 B4/8 A4/8 G4/4" --bpm 120 --ch 0 --patch 40 --vel 100 > fiddle.jsonl # Second fiddle harmony (thirds below) seq --notes "G4/16 F#4/16 E4/16 D4/16 E4/16 F#4/16 E4/8 G3/16 A3/16 B3/16 C4/16 B3/16 G3/16 B3/8 E4/16 F#4/16 G4/8 G4/8 G4/16 F#4/16 E4/16 F#4/16 G4/8 F#4/8 F#4/8 G4/16 F#4/16 E4/16 D4/16 E4/16 F#4/16 E4/8 G3/16 A3/16 B3/16 C4/16 B3/16 G3/16 B3/8 E4/16 F#4/16 G4/16 B4/8 C5/16 B4/16 G4/16 E4/16 F#4/16 G4/8 F#4/8 E4/4 B4/8 G4/16 B4/8 G4/16 B4/8 B4/8 G4/16 B4/8 G4/16 B4/8 B4/8 A4/16 C5/8 A4/16 C5/8 C5/8 A4/16 C5/8 A4/16 C5/8 C5/8 E5/8 E5/8 B4/8 B4/8 G4/8 G4/8 F#4/8 E4/16 F#4/16 G4/16 B4/8 C5/16 B4/16 G4/16 E4/16 F#4/16 G4/8 F#4/8 E4/4" --bpm 0 --ch 1 --patch 40 --vel 75 > fiddle2.jsonl # Banjo rhythm (patch 105) seq --notes "R/16 R/16 G3/8 B3/8 G3/8 B3/8 G3/8 B3/8 D3/8 A3/8 G3/8 B3/8 G3/8 B3/8 D3/8 A3/8 G3/8 B3/8 G3/8 B3/8 G3/8 B3/8 D3/8 A3/8 G3/8 B3/8 G3/8 B3/8 D3/8 A3/8 G3/8 B3/8 R/8 G3/8 B3/8 G3/8 B3/8 G3/8 B3/8 G3/8 B3/8 C3/8 E3/8 C3/8 E3/8 C3/8 E3/8 C3/8 E3/8 G3/8 B3/8 D3/8 A3/8 G3/8 B3/8 D3/8 A3/8 G3/8 B3/8 G3/8 B3/8 G3/8 D3/8 G3/4" --bpm 0 --ch 2 --patch 105 --vel 70 > banjo.jsonl # Acoustic bass (patch 32) seq --notes "R/16 R/16 G2/4 G2/4 G2/4 D2/4 G2/4 G2/4 G2/4 D2/4 G2/4 G2/4 G2/4 D2/4 G2/4 D2/4 G2/2 R/8 G2/4 G2/4 G2/4 G2/4 C3/4 C3/4 C3/4 C3/4 G2/4 G2/4 D2/4 D2/4 G2/4 D2/4 G2/2" --bpm 0 --ch 3 --patch 32 --vel 90 > bass.jsonl cat fiddle.jsonl fiddle2.jsonl banjo.jsonl bass.jsonl | viz | trim --auto | to-midi
~12s G major Fiddle + Banjo 4 channels

Camptown Races (1850)

Stephen Foster's "Doo-dah! Doo-dah!" - playful American folk classic. Fiddle melody with banjo, bass, and whistle fills.
Script Details & Explanation
# Fiddle melody (patch 40) - Verse + Chorus seq --notes "E5/16 D5/16 B4/16 D5/16 E5/16 D5/16 B4/8 B4/16 A4/16 A4/16 G4/16 A4/16 R/16 B4/16 A4/16 A4/16 B4/16 D5/16 R/16 E5/16 D5/16 B4/16 D5/16 E5/16 D5/16 B4/16 G4/16 A4/16 G4/16 A4/16 R/16 B4/16 A4/16 G4/8 E5/16 D5/16 B4/16 D5/16 E5/16 D5/16 B4/8 B4/16 A4/16 A4/16 G4/16 A4/16 R/16 B4/16 A4/16 A4/16 B4/16 D5/16 R/16 E5/16 D5/16 B4/16 D5/16 E5/16 D5/16 B4/16 G4/16 A4/16 G4/16 A4/16 R/16 B4/16 A4/16 G4/8 B4/16 D5/16 E5/16 F#5/16 G5/8 G5/8 F#5/16 E5/16 F#5/16 E5/16 D5/8 D5/16 B4/16 D5/16 R/16 E5/16 D5/16 B4/16 D5/16 E5/16 D5/16 B4/16 G4/16 A4/16 G4/16 A4/16 R/16 B4/16 A4/16 G4/4" --bpm 80 --ch 0 --patch 40 --vel 100 > melody.jsonl # Banjo (patch 105) seq --notes "G3/16 B3/16 D4/16 B3/16 G3/16 B3/16 D4/16 B3/16 G3/16 B3/16 D4/16 B3/16 D3/16 F#3/16 A3/16 F#3/16 G3/16 B3/16 D4/16 B3/16 G3/16 B3/16 D4/16 B3/16 D3/16 F#3/16 A3/16 F#3/16 G3/16 B3/16 D4/16 B3/16 G3/16 B3/16 D4/16 B3/16 G3/16 B3/16 D4/16 B3/16 C4/16 E4/16 G4/16 E4/16 D3/16 F#3/16 A3/16 F#3/16 D3/16 F#3/16 A3/16 F#3/16 G3/16 B3/16 D4/16 B3/16 G3/16 B3/16 D4/16 B3/16 D3/16 F#3/16 A3/16 F#3/16 G3/8 B3/8" --bpm 0 --ch 1 --patch 105 --vel 75 > banjo.jsonl # Bass (patch 45) seq --notes "G2/8 D3/8 G2/8 D3/8 G2/8 D3/8 D2/8 A2/8 G2/8 D3/8 G2/8 D3/8 D2/8 A2/8 G2/8 D3/8 G2/8 D3/8 G2/8 D3/8 G2/8 D3/8 D2/8 A2/8 G2/8 D3/8 G2/8 D3/8 D2/8 A2/8 G2/8 D3/8 G2/8 D3/8 C3/8 G3/8 D2/8 A2/8 D2/8 A2/8 G2/8 D3/8 G2/8 D3/8 D2/8 A2/8 G2/4" --bpm 0 --ch 2 --patch 45 --vel 85 > bass.jsonl # Whistle (patch 72) - fills during chorus seq --notes "R/2 R/2 R/2 R/2 B5/8 D6/8 E6/8 F#6/8 G6/4 G6/4 F#6/8 E6/8 F#6/8 E6/8 D6/4 D6/8 B5/8 D6/8 R/8 E6/8 D6/8 B5/8 D6/8 E6/8 D6/8 B5/8 G5/8 A5/8 G5/8 A5/8 R/8 B5/8 A5/8 G5/4" --bpm 0 --ch 3 --patch 72 --vel 80 > whistle.jsonl cat melody.jsonl banjo.jsonl bass.jsonl whistle.jsonl | viz | trim --auto | to-midi
~12s G major Fiddle + Banjo

Oh! Susanna (1848)

Stephen Foster's beloved minstrel song transcribed from ABC notation. Banjo lead with harmonica, bass, and percussion.
~12s G major Banjo lead

When the Saints Go Marching In

Traditional New Orleans brass band arrangement. Trumpet lead with trombone harmony, clarinet fills, tuba bass, and march drums.
Script Details & Explanation
# Trumpet lead (patch 56) seq --notes "C5/4 E5/4 F5/4 G5/1 R/4 C5/4 E5/4 F5/4 G5/1 R/4 C5/4 E5/4 F5/4 G5/2 E5/2 C5/2 E5/2 D5/1 R/4 E5/4 E5/4 D5/4 C5/1 E5/2 G5/2 G5/4 F5/2 R/4 R/2 E5/4 F5/4 G5/2 E5/2 C5/2 D5/2 C5/1" --bpm 130 --ch 0 --patch 56 --vel 100 > trumpet.jsonl # Trombone harmony (patch 57) seq --notes "G4/4 C5/4 D5/4 E5/1 R/4 G4/4 C5/4 D5/4 E5/1 R/4 G4/4 C5/4 D5/4 E5/2 C5/2 G4/2 C5/2 B4/1 R/4 C5/4 C5/4 B4/4 G4/1 C5/2 E5/2 E5/4 D5/2 R/4 R/2 C5/4 D5/4 E5/2 C5/2 G4/2 B4/2 G4/1" --bpm 0 --ch 1 --patch 57 --vel 85 > trombone.jsonl # Tuba bass (patch 58) seq --notes "C2/4 G2/4 C2/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 G2/4 D3/4 G2/4 D3/4 G2/4 D3/4 G2/4 D3/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 F2/4 C3/4 F2/4 C3/4 F2/4 C3/4 F2/4 C3/4 C2/4 G2/4 C2/4 G2/4 C2/4 G2/4 G2/4 D3/4 C2/1" --bpm 0 --ch 3 --patch 58 --vel 100 > tuba.jsonl # Drums: snare march + bass drum (ch 9) seed 1865 | euclid --steps 8 --pulses 4 --note 38 --ch 9 --bpm 0 --repeat 18 --vel 85 --vel-var 15 --accent 0.3 > snare.jsonl seed 1901 | euclid --steps 4 --pulses 2 --note 36 --ch 9 --bpm 0 --repeat 18 --vel 100 --vel-var 10 > kick.jsonl cat trumpet.jsonl trombone.jsonl tuba.jsonl snare.jsonl kick.jsonl | viz | trim --auto | to-midi
~12s C major Brass band 6 channels

Beer Barrel Polka (1927)

"Roll Out the Barrel" - Czech/German beer hall classic with authentic oom-pah. "Roll Out the Barrel" - 32-second chorus with authentic oom-pah.
Script Details & Explanation
# 245 notes at 220 BPM - accordion with full chords seq --notes "A#4/t3840*23 [E4,G4]/t480*23 G2/t480*23 [E4,G4]/t480*23 C2/t480*23 [E4,G4]/t480*23 [G2,D5]/t480*23 [E4,A#4]/t480*23 C2/t480*23 [E4,A#4]/t480*23 [G2,D5]/t480*23 [E4,A#4]/t480*23 C2/t360*23 R/t120 [E4,A#4,C#5]/t480*23 [G2,E4,A#4,D5]/t480*23 [G4,A#4,E5]/t480*23 C2/t480*23 [G4,A#4]/t480*23 G2/t480*23 [G4,A#4]/t480*23 C2/t480*23 [G4,A#4]/t480*23 [G2,G4,A#4,D5]/t480*23 [G4,A#4,E5]/t960*23 C2/t480*23 [G4,A#4,D5]/t480*23 [G2,G4,A#4,E5]/t480*23 [G4,A#4,D5]/t960*23 C2/t480*23 [G4,A#4,C#5]/t480*23 [F2,F4,A4,C5]/t480*23 C2/t480*23 R/t480 F2/t480*23 R/t480 C2/t480*23 R/t480 [F2,C5]/t480*23 [F4,A4]/t480*23 C2/t480*23 [F4,A4]/t480*23 [F2,C5]/t480*23 [F4,A4]/t480*23 C2/t480*23 [F4,G#4,B4]/t480*23 [F2,F4,A4,C5]/t480*23 [F4,A4,D5]/t960*23 C2/t480*23 [F4,A4]/t480*23 F2/t480*23 [F4,A4]/t480*23 C2/t480*23 [F4,A4]/t480*23 [F2,F4,A4,C5]/t480*23 [F4,A4,D5]/t960*23 C2/t480*23 [F4,A4,C5]/t480*23 [F2,D#4,A4,D5]/t480*23 [D#4,A4,C5]/t960*23 F2/t480*23 [D#4,F4]/t480*23 [A#2,F4,A#4,D5]/t960*23 [A2,F#4,C5]/t960*23 [G2,G4,A#4]/t960*23 D3/t960*23 [A#2,D4,G4]/t480*23 [D4,A4]/t480*23 [A#2,D4,A#4]/t480*23 [D4,C5]/t480*23 [B2,F4,G#4,E5]/t480*23 B2/t480*23 [F4,G#4,D5]/t480*23 [C3,F4,A4,D5]/t600*23 [F4,A4,C5]/t1440*23 F3/t480*23 D#3/t480*23 [D3,F#4]/t480*23 [D2,F#4,B4]/t480*23 [F#4,C5]/t480*23 [G2,F4,B4,D5]/t480*23 A2/t480*23 B2/t480*23 G2/t480*23 [C3,G4,A#4,E5]/t480*23 C2/t480*23 D2/t480*23 E2/t480*23 [F2,F4,A4,F5]/t480*23 C5/t240*24 D5/t240*24 [F#2,D#4,A4,C5]/t480*24 C5/t240*24 D5/t240*24 [G2,E4,A#4,C5]/t480*24 [C4,E4]/t240*25 [D4,F4]/t240*25 [C2,C3,E4,G4]/t960*25 [F4,A4]/t240*25 [G4,A#4]/t240*25 [G#4,B4]/t240*25 [F2,C5]/t480*23 [F4,A4]/t480*23 C3/t480*23 [F4,A4]/t480*23 [F2,C5]/t480*23 [F4,A4]/t480*23 C2/t480*23 [F4,G#4,B4]/t480*23 [F2,F4,A4,C5]/t480*23 [F4,A4,D5]/t960*23 C2/t480*23 [F4,A4]/t480*23 F2/t480*23 [F4,A4]/t480*23 C2/t480*23 [F4,A4]/t480*23 [F2,F4,A4,C5]/t480*23" \ --bpm 220 --ch 0 --patch 21 \ | humanize --jitter-ticks 4 --jitter-vel 5 \ | trim --auto \ | to-midi --out beerhall.mid fluidsynth -ni -F raw.wav soundfont.sf2 beerhall.mid ffmpeg -y -i raw.wav -t 32 -af "afade=t=out:st=30:d=2" beerhall.wav

Notation Features

  • /t480 - tick-based duration (480 ticks = 1 beat)
  • [E4,G4] - chord notation (simultaneous notes)
  • *23 - per-note velocity
~32s F major Accordion 220 BPM

Soft Progressive Rock - Satie Inspired

Inspired by Erik Satie's Gnossiennes (1890), reimagined as soft progressive rock. Satie (1866-1925) was a contemporary of Debussy, known for modal harmonies and dreamlike atmospheres. D Dorian mode, syncopated rhythms, 60 BPM.
Script Details & Explanation
# Electric Piano - dreamy chords with Satie-like suspensions (D Dorian) seq --notes "R/t60 [D3,A3,E4]/t420*70 R/t240 [D3,A3,F4]/t180*65 R/t60 [E3,B3,G4]/t480*72 R/t240 [F3,C4,A4]/t420*68 R/t60 [D3,A3,E4]/t240*70 R/t120 [E3,G3,D4]/t360*65 R/t120 [D3,A3,F4]/t480*72 R/t240 [C3,G3,E4]/t420*68 R/t60 [D3,A3,D4]/t600*75" --bpm 60 --ch 0 --patch 4 > piano.jsonl # Clean Guitar - melodic fills seq --notes "R/t480 A4/t360*55 R/t120 G4/t120*50 F4/t120*52 E4/t480*58 R/t240 D4/t240*55 E4/t120*52 F4/t240*54 R/t120 G4/t360*56 R/t240 A4/t480*60 R/t120 G4/t180*55 E4/t180*52 D4/t600*58" --bpm 0 --ch 1 --patch 27 > guitar.jsonl # Fretless Bass seq --notes "D2/t420*75 R/t60 A2/t240*70 R/t240 D2/t480*78 R/t120 E2/t360*72 R/t120 F2/t480*75 R/t120 D2/t360*78 R/t120 E2/t240*72 R/t120 C2/t420*75 R/t60 D2/t720*80" --bpm 0 --ch 2 --patch 35 > bass.jsonl # Soft Drums - C2=kick, D2=snare, F#2=hihat, A#2=open-hat, D#3=ride seq --notes "C2/t240*60 F#2/t120*40 F#2/t120*35 D2/t240*50 F#2/t120*40 A#2/t120*45 C2/t120*55 F#2/t120*38 C2/t120*58 F#2/t120*40 D2/t240*52 F#2/t120*42 F#2/t120*38 C2/t240*60 F#2/t120*40 F#2/t120*35 D2/t240*50 F#2/t120*40 A#2/t120*45 C2/t240*58 D#3/t120*45 D#3/t120*42 D2/t240*55 F#2/t120*40 C2/t120*60 F#2/t240*38" --bpm 0 --ch 9 --patch 0 > drums.jsonl cat piano.jsonl guitar.jsonl bass.jsonl drums.jsonl | viz | to-midi --out soft-prog.mid SF2="${HOME}/github/softwarewrighter/midi-cli-rs/soundfonts/GeneralUser_GS.sf2" fluidsynth -ni -F soft-prog-raw.wav "$SF2" soft-prog.mid ffmpeg -y -i soft-prog-raw.wav -t 12 -af "volume=1.8,afade=t=out:st=10:d=2" soft-prog.wav

Approach

  • Inspired by Erik Satie's Gnossiennes (1890) - modal, dreamlike
  • D Dorian mode with syncopated rhythms
  • Rhodes piano (patch 4), Clean guitar (patch 27), Fretless bass (patch 35)
  • Soft brushed drums at 60 BPM
~12s D Dorian Rhodes/Guitar 60 BPM

Hard Rock - Arensky Inverted & Reversed

Anton Arensky's String Quartet No. 2 in A minor (1894), with voices INVERTED around A4 and played REVERSED. Arensky (1861-1906) was a contemporary of Tchaikovsky but far more obscure. Transformed into aggressive hard rock with funky syncopation at 150 BPM.
Script Details & Explanation
# Lead Guitar - Violin 1 inverted around A4 and reversed # Original: A4-B4-C5-D5-E5-D5-C5-B4... Inverted: A4-G4-F4-E4... Reversed: play backwards seq --notes "A3/t60*115 D4/t60*118 E4/t60*120 F4/t60*122 G4/t60*125 A4/t120*127 A#4/t60*125 A4/t60*127 G4/t60*125 F4/t60*122 E4/t60*120 D4/t120*118 R/t60 E4/t60*120 F4/t60*122 G4/t60*125 A4/t180*127 R/t120 A3/t60*115 D4/t60*118 E4/t60*120 F4/t60*122 G4/t60*125 A4/t120*127 A#4/t60*125 A4/t60*127 G4/t60*125 F4/t60*122 E4/t60*120 D4/t120*118 R/t60 E4/t60*120 F4/t60*122 G4/t60*125 A4/t180*127 R/t240 A5/t60*127 G5/t60*125 F5/t60*122 E5/t60*120 D5/t120*118 E5/t60*120 F5/t60*122 G5/t60*125 A5/t240*127" --bpm 150 --ch 0 --patch 30 > lead.jsonl # Rhythm Guitar - Violin 2 inverted/reversed as funky power chords seq --notes "[D3,A3,D4]/t90*110 R/t30 [D3,A3,D4]/t30*80 R/t30 [G3,D4,G4]/t60*108 R/t30 [A3,E4,A4]/t60*110 R/t30 [A#3,F4,A#4]/t90*115 R/t30 [A#3,F4,A#4]/t30*85 R/t60 [C4,G4,C5]/t90*118 R/t30 [C4,G4,C5]/t30*88 R/t30 [D4,A4,D5]/t60*112 R/t30 [D#4,A#4,D#5]/t90*120 R/t30 [D4,A4,D5]/t90*118 R/t30 [D4,A4,D5]/t30*90 R/t30 [C4,G4,C5]/t60*115 R/t30 [A#3,F4,A#4]/t60*112" --bpm 0 --ch 1 --patch 29 > rhythm.jsonl # Bass - Cello inverted/reversed with funky slap syncopation seq --notes "A2/t60*120 R/t30 A2/t30*70 R/t30 F2/t60*115 R/t30 F2/t30*65 G2/t60*118 R/t30 A2/t90*122 R/t30 A2/t30*72 R/t30 A2/t60*118 R/t30 A2/t30*68 A2/t60*120 R/t30 D2/t60*115 R/t30 D2/t30*65 D2/t60*118 R/t30 D2/t90*120 R/t30 D2/t30*70 R/t60 A2/t60*118 R/t30 A2/t30*68 A2/t60*120 R/t30 A2/t90*122" --bpm 0 --ch 2 --patch 34 > bass.jsonl # Heavy Drums with funk syncopation - C2=kick, D2=snare, F#2=hihat, C#3=crash seq --notes "C#3/t30*127 C2/t30*120 F#2/t30*90 F#2/t30*70 C2/t30*100 F#2/t30*85 D2/t30*75 F#2/t30*90 D2/t30*120 F#2/t30*85 F#2/t30*70 C2/t30*115 F#2/t30*90 F#2/t30*75 D2/t30*80 F#2/t30*90 C2/t30*118 F#2/t30*85 F#2/t30*70 C2/t30*110 F#2/t30*90 D2/t30*75 F#2/t30*85 D2/t30*122" --bpm 0 --ch 9 --patch 0 > drums.jsonl cat lead.jsonl rhythm.jsonl bass.jsonl drums.jsonl | viz | to-midi --out hard-rock.mid SF2="${HOME}/github/softwarewrighter/midi-cli-rs/soundfonts/GeneralUser_GS.sf2" fluidsynth -ni -F hard-rock-raw.wav "$SF2" hard-rock.mid ffmpeg -y -i hard-rock-raw.wav -af "volume=2.0,apad=whole_dur=20,afade=t=out:st=18:d=2" -t 20 hard-rock.wav

Approach

  • Source: Arensky String Quartet No. 2 (1894) - obscure Russian chamber music
  • Transformation: pitches INVERTED around A4, sequence REVERSED
  • Violin 1 → Distortion lead (patch 30), Violin 2 → Overdriven rhythm (patch 29)
  • Cello → Picked bass (patch 34), 16th-note funk syncopation throughout
~20s A minor Distortion 150 BPM