Crow Songbook Extension — Architecture Overview

Blog-integrated music platform with ChordPro, audio, and self-publishing

How It Works

Content Type Extension Pattern (Songbook is first instance)
STORAGE (blog_posts table)
content: ChordPro markup
tags: "songbook, jazz, original"
status: draft | published | archived
visibility: private | peers | public
+ metadata in content header:
  key, tempo, time_sig, capo,
  artist, audio_url, instrument
RENDERING PIPELINE
1. Parse ChordPro → AST
2. Apply transposition (if requested)
3. Render chords-over-lyrics HTML
4. Generate chord diagrams (SVG)
   - Guitar fretboard boxes
   - Piano keyboard diagrams
5. Embed audio player (if audio_url)
6. Print-friendly CSS @media print

Sharing Model

🔒

Private

Your personal chord book. Draft status, only you see it. Sketch songs, collect charts.

👥

Peers

Share with Crow contacts via P2P. Collaborate on arrangements, share sketches with bandmates.

🌎

Public

Published to your blog. Podcast feed for distribution. Download button for audio. Your own Bandcamp.

Sample ChordPro Source (stored in blog post content)

To Ramona — as ChordPro
{title: To Ramona} {artist: Bob Dylan} {album: Another Side of Bob Dylan} {key: C} {tempo: 120} {capo: 0} {start_of_verse: Verse 1} Ra-[C]mona, come [G]closer, Shut [G6]softly your [G7]watery eyes The [F]pangs of your sadness Shall [C]pass as your [G]senses will rise {end_of_verse} {start_of_verse: Verse 2} I've [C]heard you say [G]many times That you're [G6]better than [G7]no one And [F]no one is better than [C]all {end_of_verse}

Key Features

ChordPro Parser
Parse, validate, and render ChordPro format. Import from plain text sources.
Auto-Transpose
Transpose to any key. URL param: /blog/to-ramona?key=G. Nashville numbers optional.
Chord Diagrams
SVG guitar fretboard + piano keyboard. Auto-generated from chord names. Voicing library.
Audio Player
Embedded player for recordings. Upload via storage server. Waveform visualization.
Podcast Feed
Original music as podcast episodes. Apple/Spotify distribution via existing podcast RSS.
Setlist Builder
Organize songs into setlists. Print-optimized. Quick transpose per setlist.
Print Layout
@media print CSS. Clean chord charts on paper. Setlist printing. No chrome.
Downloads
Download audio files + PDF chord charts. Self-hosted Bandcamp-style release pages.

Extension Pattern for Future Content Types

Blog Content Type Extensions (reusable pattern)
Songbook → tag: "songbook" → ChordPro renderer → /blog/songbook/* Podcast → tag: "podcast" → audio metadata → /blog/podcast.xml (exists) Recipes → tag: "recipe" → recipe renderer → /blog/recipes/* (future) Data Viz → tag: "dataviz" → chart renderer → /blog/data/* (future) Each content type provides: 1. A custom renderer (markdown extension or post-processor) 2. Tag-based filtering routes (/blog/songbook/, /blog/recipes/) 3. Optional specialized RSS feed 4. A Nest panel for creation/management 5. MCP tools for AI-assisted creation 6. A skill file for behavioral guidance