{"id":50491942,"url":"https://github.com/jekrch/chord-analyzr","last_synced_at":"2026-06-02T03:10:35.339Z","repository":{"id":65709302,"uuid":"410397578","full_name":"jekrch/chord-analyzr","owner":"jekrch","description":"A postgres driven solution for analyzing chord progressions and making chord suggestions ","archived":false,"fork":false,"pushed_at":"2025-11-30T01:02:13.000Z","size":6028,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-02T00:17:49.036Z","etag":null,"topics":["chords","music","postgresql"],"latest_commit_sha":null,"homepage":"https://modal.chordbuildr.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jekrch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-09-25T22:47:26.000Z","updated_at":"2025-11-30T01:02:17.000Z","dependencies_parsed_at":"2024-01-28T03:22:17.736Z","dependency_job_id":"4490d9c1-454a-450f-bc63-b825266306a5","html_url":"https://github.com/jekrch/chord-analyzr","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jekrch/chord-analyzr","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jekrch%2Fchord-analyzr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jekrch%2Fchord-analyzr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jekrch%2Fchord-analyzr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jekrch%2Fchord-analyzr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jekrch","download_url":"https://codeload.github.com/jekrch/chord-analyzr/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jekrch%2Fchord-analyzr/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33803996,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-02T02:00:07.132Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chords","music","postgresql"],"created_at":"2026-06-02T03:10:34.292Z","updated_at":"2026-06-02T03:10:35.333Z","avatar_url":"https://github.com/jekrch.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Chord Analyzr :musical_note:\n\n[modal.chordbuildr.com](https://modal.chordbuildr.com/)\n\nA Postgres driven solution for analyzing chord progressions and generating chord suggestions. \n\n\u003cimg width=\"420\" alt=\"image\" src=\"https://github.com/user-attachments/assets/62a52551-1a06-4f87-87c8-524998bf86c8\" /\u003e\n\n\u003chr\u003e\n\u003ch3\u003eSetup\u003c/h3\u003e \n\nExecute ```docker-compose up``` to create a postgres database named chordanalyzr on ```localhost:5432``` with user credentials from ```flyway/flyway.conf```. \n\nServices for a spring boot API and react frontend will also be started, with the frontend available at `localhost:3000`\n\n\u003chr\u003e\n\u003ch3\u003echord views\u003c/h3\u003e \n\n```chord_view``` displays all permutations of root note and chord type, with the notes comprising each chord aggregated in csv. \n\nSample usage: \n\n```\nSELECT cv.chord_name, \n       cv.chord_note_names,\n       cv.chord_notes\nFROM chord_view cv\nWHERE note_name = 'F' AND \n      chord_type = '7sus4';\n```\nReturns:\n```\n\"F7sus4\",   \"F, Bb, C, D#\",   \"6, 11, 13, 16\"\n```\n\n\u003cbr\u003e\n\nTo capture each note by row use ```chord_note_view```\n\n\u003chr\u003e\n\u003ch3\u003emode views\u003c/h3\u003e \n\n```mode_view``` displays all permutations of key and mode, with the notes comprising each scale aggregated in csv. \n\nSample usage: \n\n```\nSELECT mv.mode, \n       mv.key_name, \n       mv.mode_note_names, \n       mv.mode_notes\nFROM mode_view mv \nWHERE key_name = 'A';\n```\nReturns:\n```\n\"mode\",              \"key_name\",   \"mode_note_names\",          \"mode_notes\"\nAeolian,             A,            \"A, B, C, D, E, F, G\",      \"10, 12, 13, 15, 17, 18, 20\"\nAltered Scale,       A,            \"A, Bb, C, Db, Eb, F, G\",   \"10, 11, 13, 14, 16, 18, 20\"\nDorian,              A,            \"A, B, C, D, E, F#, G\",     \"10, 12, 13, 15, 17, 19, 20\"\nDorian b2,           A,            \"A, Bb, C, D, E, F#, G\",    \"10, 11, 13, 15, 17, 19, 20\"\nIonian,              A,            \"A, B, C#, D, E, F#, G#\",   \"10, 12, 14, 15, 17, 19, 21\"\nLocrian,             A,            \"A, Bb, C, D, Eb, F, G\",    \"10, 11, 13, 15, 16, 18, 20\"\nLocrian #2,          A,            \"A, B, C, D, Eb, F, G\",     \"10, 12, 13, 15, 16, 18, 20\"\nLydian,              A,            \"A, B, C#, D#, E, F#, G#\",  \"10, 12, 14, 16, 17, 19, 21\"\nLydian Augmented,    A,            \"A, B, C#, D#, E#, F#, G#\", \"10, 12, 14, 16, 18, 19, 21\"\nLydian Dominant,     A,            \"A, B, C#, D#, E, F#, G\",   \"10, 12, 14, 16, 17, 19, 20\"\nMelodic Minor,       A,            \"A, B, C, D, E, F#, G#\",    \"10, 12, 13, 15, 17, 19, 21\"\nMixolydian,          A,            \"A, B, C#, D, E, F#, G\",    \"10, 12, 14, 15, 17, 19, 20\"\nMixolydian b6,       A,            \"A, B, C#, D, E, F, G\",     \"10, 12, 14, 15, 17, 18, 20\"\nPhrygian,            A,            \"A, Bb, C, D, E, F, G\",     \"10, 11, 13, 15, 17, 18, 20\"\n```\n\u003cbr\u003e\n\nTo capture each note by row use ```mode_note_view```\n\n\u003chr\u003e\n\u003ch3\u003emode chord views\u003c/h3\u003e \n\n```mode_scale_chord_relation_view``` displays all permutations of chord mode and key with any distinct notes listed and counted. This can be used for identifying chords that complement a given scale. \n\nSample usage: \n\nThe following query will return all chords that have a root note of A and whose comprising notes all fall within the C Ionian scale. \n\n```\nSELECT mscv.mode, \n       mscv.key_name, \n       mscv.chord_name, \n       mscv.chord_notes,  \n       mscv.mode_chord_note_diff, \n       mscv.mode_chord_note_diff_count \nFROM mode_scale_chord_relation_view mscv\nWHERE mscv.mode = 'Ionian' AND \n      mscv.key_name = 'C' AND \n      mscv.chord_note_name = 'A' AND\n      mscv.mode_chord_note_diff_count = 0\n```\nReturns:\n```\n\"mode\"      \"key_name\"  \"chord_name\"    \"chord_notes\"   \"mode_chord_note_diff\"  \"mode_chord_note_diff_count\"\n\"Ionian\"    \"C\"         \"Am\"            \"{1,5,10}\"      \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"Am7\"           \"{1,5,8,10}\"    \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"Am9\"           \"{1,5,8,10}\"    \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"A5\"            \"{5,10}\"        \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"Asus2\"         \"{5,10,12}\"     \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"Asus4\"         \"{3,5,10}\"      \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"Am11\"          \"{1,3,5,8,10}\"  \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"A7sus4\"        \"{3,5,8,10}\"    \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"Am7#5\"         \"{1,6,8,10}\"    \"{}\"                     \"0\"\n\"Ionian\"    \"C\"         \"A9sus4\"        \"{3,5,8,10}\"    \"{}\"                     \"0\"\n```\n\n\u003cbr\u003e\n\n## Frontend\n\n**modal.chordbuildr.com** is a comprehensive web-based music composition and performance tool built with React. The application provides an intuitive interface for exploring musical scales, building chord progressions, and creating rhythmic patterns.\n\n\u003cimg width=\"420\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6822f515-e7ea-4fe6-b927-c9a64a8b2fb2\" /\u003e\n\n### Core Features\n\n**Chord Explorer \u0026 Theory Engine**\n- Browse chords that fit any selected key and mode combination\n- Search and filter chords by root note or chord type  \n- Real-time chord preview with visual piano feedback\n- Advanced chord editing with custom voicings and slash chord support\n\n**Pattern Sequencer**\n- Create rhythmic patterns for chord progressions\n- Customizable pattern length and timing controls\n- Multiple pattern presets and BPM adjustment\n- Visual step sequencer with rest and octave notation\n- Export sequencer output to MIDI \n\n**Live Mode**\n- Full-screen chord buttons optimized for live performance\n- Keyboard shortcuts (1-9) for instant chord switching\n- Touch-friendly interface for mobile devices\n- Real-time pattern playback during performance\n\n**Interactive Piano**\n- Visual scale and chord tone highlighting\n- Click-to-play individual notes\n- Dynamic feedback based on current key/mode selection\n\n**Professional Audio Engine**\n- Multiple instrument voices and sound synthesis\n- Comprehensive effects processing (reverb, chorus, delay)\n- 3-band equalizer for sound shaping\n- Adjustable note duration and octave controls\n\n### Data Architecture\n\nThe frontend leverages the PostgreSQL-driven backend that provides:\n- **Comprehensive chord database** with all permutations of root notes and chord types\n- **Modal scale analysis** across all keys and modes (Ionian, Dorian, Phrygian, etc.)\n- **Harmonic relationship mapping** that identifies which chords naturally fit within each scale\n\nData is served through two pathways:\n1. **Live API** via Spring Boot backend for dynamic queries\n2. **Static JSON files** generated from database views for optimal performance\n\nThe static data generator extracts chord relationships from views like `mode_scale_chord_relation_view`, ensuring the frontend has instant access to music theory data without database latency during performance.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjekrch%2Fchord-analyzr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjekrch%2Fchord-analyzr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjekrch%2Fchord-analyzr/lists"}