{"id":42844073,"url":"https://github.com/transcriptaze/yam","last_synced_at":"2026-01-30T11:55:09.012Z","repository":{"id":326019721,"uuid":"1051927339","full_name":"transcriptaze/yam","owner":"transcriptaze","description":"Yet Another Metronome","archived":false,"fork":false,"pushed_at":"2026-01-21T01:03:16.000Z","size":21090,"stargazers_count":0,"open_issues_count":24,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-21T12:35:29.585Z","etag":null,"topics":["audio","metronome","web-audio"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/transcriptaze.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2025-09-07T02:49:10.000Z","updated_at":"2026-01-21T01:03:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/transcriptaze/yam","commit_stats":null,"previous_names":["transcriptaze/yam"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/transcriptaze/yam","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transcriptaze%2Fyam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transcriptaze%2Fyam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transcriptaze%2Fyam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transcriptaze%2Fyam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/transcriptaze","download_url":"https://codeload.github.com/transcriptaze/yam/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/transcriptaze%2Fyam/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28912143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-30T08:15:08.179Z","status":"ssl_error","status_checked_at":"2026-01-30T08:14:31.507Z","response_time":66,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["audio","metronome","web-audio"],"created_at":"2026-01-30T11:55:08.750Z","updated_at":"2026-01-30T11:55:09.001Z","avatar_url":"https://github.com/transcriptaze.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![build](https://github.com/twystd/yam/workflows/build/badge.svg)\n\n# Yet Another Metronome\n\nYet another _WebAudio_ metronome web app to add to the many, many other _yet-another-metronomes_ out there.\n\nYAM is built around a fairly specific use case: solo acoustic fingerstyle guitar practice sessions — i.e. tracks-in-progress\norganised into playlists — with support for features such as:\n- count-ins\n- pickup bars\n- tempo and time-signature changes\n\nAn online version is available:\n\nhttps://yam-alpha.pages.dev\n\n(or follow the installation instructions [below](#installation) to run your own version).\n\n\n## Waivers and Demurrers\n\nThis is very much a personal project and (currently at least) developed and tested almost exclusively with Google Chrome\non a Pixel 5a. It will be a pleasant surprise and/or minor miracle if it works at all on anything else but you never know.\n\nIt's also in _alpha_ i.e. expect the code, design, architecture, everything to change **often**.\n\n\n## Screenshots\n\n\u003cimg src=\"documentation/images/screenshot.png\"\u003e\n\n\n## Supported browsers\n\n| Platform    | Browser    | Version        | Ok               | Notes                                      |\n|-------------|------------|----------------|------------------|--------------------------------------------|\n| **MacOs**   | Chrome     | _latest_       | Yes              |                                            |\n|             | Firefox    | _latest_       | Yes              | _Do NOT ask about the layout hacks_        |\n|             | Safari     | _latest_       | Yes              | _Some minor layout glitches_               |\n|             | Opera      | _latest_       | Yes              |                                            |\n|             |            |                |                  |                                            |\n| **Windows** | Chrome     |                |                  |                                            |\n|             | Firefox    |                |                  |                                            |\n|             | Edge       |                |                  |                                            |\n|             | Opera      |                |                  |                                            |\n|             |            |                |                  |                                            |\n| **Linux**   | Chrome     |                |                  |                                            |\n|             | Firefox    |                |                  |                                            |\n|             | Opera      |                |                  |                                            |\n|             |            |                |                  |                                            |\n| **Android** | Chrome     | _latest_       | Yes              |                                            |\n|             | Firefox    | _latest_       | Mostly           | _(as above)_                               |\n|             | Edge       | _latest_       | Yes              |                                            |\n|             | Opera      | _latest_       | Yes              |                                            |\n|             | Opera Mini |                | No               | _No WebAudio support_                      |\n|             |            |                |                  |                                            |\n| **iOS**     | Firefox    |                |                  |                                            |\n|             | Safari     |                |                  |                                            |\n|             | Opera      |                |                  |                                            |\n|             | Opera Mini |                | No               | _No WebAudio support_                      |\n\n\n## Installation\n\nThe web app is packaged as a zip file that includes the HTML, images, audio and rollup'd Javascript that can be served by almost any basic\nHTTP server that includes Cross Origin Resources Sharing support. Simply download and unpack the _yam_alpha.zip_ file from the most from\nthe most recent [release](https://github.com/transcriptaze/yam/releases) build - and host the _html_ folder on a web server of your\nchoice.\n\nThe zip file includes scripts for the _Python_, _NodeJS_ and _Go_ built-in HTTP servers, but the web app is entirely static so whatever\nyou have will probably work as long as CORS is enabled and has the following headers:\n```\n  Access-Control-Allow-Origin: *\n  Access-Control-Allow-Methods: GET, OPTIONS\n  Cross-Origin-Embedder-Policy: require-corp\n  Cross-Origin-Opener-Policy: same-origin\n```\n\n_Development_ versions which include unreleased functionality can be downloaded from the most recent build on the _alpha_ branch\n[_build_ page](https://github.com/transcriptaze/yam/actions/workflows/alpha.yml). The _alpha_ build includes:\n- the HTML _zip_ file\n- executables for \n    - MacOS (Intel and Apple Silicon)\n    - Linux\n    - Windows\n    - RaspberryPi (ARM6 and ARM7)\n\nThe HTML, images, etc are embedded in the executable - so simply running the executable starts a functional YAM HTTP server.\n\n\n### Python\nTo run the built-in _Python_ HTTP server:\n```\npython3 yam.py\n```\n\n### NodeJS\nTo run the built-in _NodeJS_ HTTP server:\n```\nnode yam.mjs\n```\n\n### Go\nTo run the built-in _Go_ HTTP server:\n```\ngo run yam.go\n```\nor\n```\nmkdir -p bin\ngo build -o bin ./...\n./bin/yam\n```\n\n## Development\n\n### Requirements\n\n- NodeJS v24.11.1+\n\n### Build\n\n1. Clone the repository:\n```\ngit clone https://github.com/transcriptaze/yam.git\ncd yam\n```\n\n2. Install the NodeJS development modules:\n\n- _prettier_\n- _eslint_\n- _sass_\n\n```\nnpm install\n```\n\n3. Build and run:\n```\nmake run\n```\n\n## License\n\nEverything in this repository is licensed under [GPL-3.0](https://github.com/transcriptaze/yam/blob/master/LICENSE). \n\n\n## Attributions\n\n1. Metronome icon\n   - [SVGRepo](https://www.svgrepo.com/svg/390025/metronome-tempo-beat-bpm)\n   - [CC Attribution License](https://www.svgrepo.com/page/licensing)\n   - Music Glyphs Icons\n   - wishforge.games\n\n2. Settings icon\n   - [SVGRepo](https://www.svgrepo.com/svg/304474/settings)\n   - [PD License](https://www.svgrepo.com/page/licensing)\n   - Simple App Development Icons\n   - Significa Labs   \n\n3. Library icon\n   - [SVGRepo](https://www.svgrepo.com/svg/506838/list)\n   - [PD License](https://www.svgrepo.com/page/licensing)\n   - Start Universal Tiny Oval Icons\n   - Salah Elimam   \n\n4. Song file icon\n   - [SVGRepo](https://www.svgrepo.com/svg/478380/music-file-1)\n   - [PD License](https://www.svgrepo.com/page/licensing)\n   - Communication Icooon Mono Vectors\n   - Icooon Mono\n\n5. RIFF icon\n   - [SVGRepo](https://www.svgrepo.com/svg/427846/song-music-sound)\n   - [CC Attribution License](https://www.svgrepo.com/page/licensing)\n   - Stylish Tiny Intertface Icons\n   - Robin Kylander\n\n6. Warning icon\n   - [SVGRepo](https://www.svgrepo.com/svg/327593/warning)\n   - [MIT](https://www.svgrepo.com/page/licensing)\n   - Ionicons\n\n7. Section expand/collapse icon\n   - [SVGRepo](https://www.svgrepo.com/svg/458664/expand-right)\n   - [CC Attribution License](https://www.svgrepo.com/page/licensing)\n   - Leonid Tsvetkov\n\n9. Bravura SMUFL font\n   - [Bravura](https://github.com/steinbergmedia/bravura)\n   - [SIL Open Font License 1.1](https://openfontlicense.org)\n   - [Steinberg](https://www.steinberg.net)\n\n10. Lato font\n    - [Lato Fonts](https://www.latofonts.com)\n    - [SIL Open Font License 1.1](https://openfontlicense.org)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftranscriptaze%2Fyam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftranscriptaze%2Fyam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftranscriptaze%2Fyam/lists"}