Skip to content

melodysium/harmonimation

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

harmonimation

A program for visualizing music theory from sheet music transcriptions.

Mission: Empower music educators, YouTubers, or hobbyists with tools to quickly generate and share stylistic animations of songs or music concepts.

Demo (YouTube icon):

harmonimation demo (bo en - my time)

Inspiration (YouTube icon):

John Coltrane - Giant Steps - Circle of Fifths Diagram

Interested to chat about music or follow along with development? Join my community Discord: https://discord.gg/bseuGuKaZg

Features

Currently:

  • Music animation widgets created with manim, the animation engine powering 3Blue1Brown's math videos on YouTube
    • Circle of 12 notes (arranged in both chromatic and Circle of 5ths)
      • Connectors to visualize harmonic progressions
      • Rotate during key changes
    • Rhthm circle to visualize note timing within a measure
    • Animated text for Key, Chord, and user notes
    • Lyric text with syllable highlighting
  • Programmatic parsing of sheet music from .musicxml using music21 library
    • Automatic chord inference (can write in chords if not correct)
    • Lyric timing
  • Declarative layout config file for all music widgets and parsing behaviors

Planned for future:

  • Improvements to existing music widgets:
    • 12-note music circle
      • Diatonic radials / pitch highlighting to emphasize in/out of key
      • Showing all individual notes outside of main ring
      • Add chord symbols for jazz chord extensions
      • Show all current chord tones, not just root
    • Rhythm circle
      • Showing all individual notes outside of main ring
  • More music widgets:
    • Piano roll
    • Frequency spectrograms / graphs
    • Sheet music with playhead
    • Song structure/sections
    • Vocal register
    • Embedding other videos like music video
    • Tonnetz lattice
  • Layout/Behavior config file improvements:
    • Variable BPM
    • Support other config formats like YAML / KDL
  • Docker image for rendering harmonimation without any local install

Early design

early design

Local install

Not reliably proven, many need to fix your own setup issues.

Prerequisites:

  1. ffmpeg
    • on mac, I've used brew install ffmpeg
  2. uv: https://github.com/astral-sh/uv

Installation steps:

  1. Clone this project
  2. Run uv sync
  3. Activate the .venv and/or select its interpreter in your IDE
  4. Install a LaTeX distro and the following packages on top of manim's guidance: musicography musixtex-fonts stackengine newunicodechar

Other issues:

  • On mac, I also needed to brew install pkgconf to get pycairo to install currectly during uv sync.
  • For some reason, I needed to manually make the media/Tex folder necessary for manim to create WIP LaTeX images.

About

A program for visualizing music theory from sheet music transcriptions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published