{"id":18534690,"url":"https://github.com/pianosnake/ear-training-buddy","last_synced_at":"2025-08-02T21:05:40.543Z","repository":{"id":78796121,"uuid":"119207857","full_name":"pianosnake/ear-training-buddy","owner":"pianosnake","description":"Ear training with real piano sounds","archived":false,"fork":false,"pushed_at":"2018-11-29T03:11:18.000Z","size":5904,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-23T14:02:19.125Z","etag":null,"topics":["chords","ear-training","intervals","music-theory","web-audio-api"],"latest_commit_sha":null,"homepage":"https://pianosnake.github.io/ear-training-buddy/index.html","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pianosnake.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2018-01-27T22:25:13.000Z","updated_at":"2023-08-10T12:11:33.000Z","dependencies_parsed_at":"2023-04-14T18:32:20.510Z","dependency_job_id":null,"html_url":"https://github.com/pianosnake/ear-training-buddy","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/pianosnake/ear-training-buddy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pianosnake%2Fear-training-buddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pianosnake%2Fear-training-buddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pianosnake%2Fear-training-buddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pianosnake%2Fear-training-buddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pianosnake","download_url":"https://codeload.github.com/pianosnake/ear-training-buddy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pianosnake%2Fear-training-buddy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268454346,"owners_count":24253147,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"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","ear-training","intervals","music-theory","web-audio-api"],"created_at":"2024-11-06T19:16:38.709Z","updated_at":"2025-08-02T21:05:40.451Z","avatar_url":"https://github.com/pianosnake.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ear Training Buddy\n\nThis is the patient ear training buddy you've always wanted. It's a web app that can play notes, intervals and chords\nrandomly or diatonically. [Available live here](https://pianosnake.github.io/ear-training-buddy/index.html).\n\nChoose how many notes you'd like to hear played at once by clicking __1__, __2__, __3__ or __4__.\n\n*  With __1__ note you can test your relative pitch by comparing the played note to the reference note.\n*  With __2__ notes you can test your interval recognition. For more of a challenge play the reference note and try to identify the interval pitches. In diatonic mode, Buddy will play both random notes from the major key of the reference note.\n*  With __3__ notes you can try recognizing major, minor, diminished or augmented triads. For more of a challenge name the root of the chord or try to hear the relationship of the reference note within the played chord, ie, _A_ would be a 6th in _F Major_.\n*  With __4__ notes  you can try recognizing chords like major 7, minor 7th, dominant, major 6th, minor major and half-diminished.\n\nSome extra options exist for making the exercise harder or easier:\n\n* In __Diatonic__ mode the random notes or chords will be taken from the major key of the reference note.\n* __Make reference note part of chord__ option will 'pivot' the 3 or 4 note chord around the reference note. If _A_ is the reference note, Buddy might play an _F Major_ chord because _A_ is the 3rd of that chord. Buddy won't play an _E flat Major_ because that chord does not contain A.\n* With __Open voicings__ checked, Buddy will play the 3 and 4 note chords with an open piano voicing, spreading the notes over the\nkeyboard for a more realistic playing style.\n\nThe following keyboard shortcuts are provided to speed up the exercise:\n\n- __A__ Play reference note\n- __R__ Play a random note, interval or chord\n- __H__ Play the interval or chord melodically. Plays slower each time it's pressed.\n- __SPACE__ Show the answer\n\nThe sounds are real piano samples from the [University of Iowa Musical Instrument Samples](http://theremin.music.uiowa.edu/MIS.html) available in the Public Domain.\n\n## Developing \n\nIn non-production mode the site runs from `index.js` using JS modules provided by `import` and `export` statements. Run locally by starting a webserver in the home directory.\n\nIn production mode the site uses `bundle.js`. Run `npm run build` to build the bundle file with webpack.\n\nTests are written in Jasmine and run in the browser at `/tests`. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpianosnake%2Fear-training-buddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpianosnake%2Fear-training-buddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpianosnake%2Fear-training-buddy/lists"}