{"id":21861545,"url":"https://github.com/raleighlittles/ipod_tone_file_player","last_synced_at":"2025-03-21T20:19:03.101Z","repository":{"id":217254988,"uuid":"743059301","full_name":"raleighlittles/iPod_tone_file_player","owner":"raleighlittles","description":"iPod Tone file player written in Rust","archived":false,"fork":false,"pushed_at":"2024-01-15T05:30:50.000Z","size":718,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-26T14:52:38.320Z","etag":null,"topics":["egui","hound","ipod","rodio","rust","rust-workspace","tone-file"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/raleighlittles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","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},"funding":{"github":["raleighlittles"],"custom":["paypal.me/raleighlittles"]}},"created_at":"2024-01-14T07:34:41.000Z","updated_at":"2024-01-15T05:41:31.000Z","dependencies_parsed_at":"2024-01-15T09:14:13.780Z","dependency_job_id":"212c989a-0ec5-41a1-a388-899d9b22fb37","html_url":"https://github.com/raleighlittles/iPod_tone_file_player","commit_stats":null,"previous_names":["raleighlittles/ipod_tone_file_player"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FiPod_tone_file_player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FiPod_tone_file_player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FiPod_tone_file_player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/raleighlittles%2FiPod_tone_file_player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/raleighlittles","download_url":"https://codeload.github.com/raleighlittles/iPod_tone_file_player/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244860600,"owners_count":20522466,"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","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":["egui","hound","ipod","rodio","rust","rust-workspace","tone-file"],"created_at":"2024-11-28T03:11:57.312Z","updated_at":"2025-03-21T20:19:03.068Z","avatar_url":"https://github.com/raleighlittles.png","language":"Rust","funding_links":["https://github.com/sponsors/raleighlittles","paypal.me/raleighlittles"],"categories":[],"sub_categories":[],"readme":"# Background\n\nStarting with the 3rd generation (?), iPods came equipped with the ability to design custom alarms. These are specified through \".tone\" files.\n\nA tone file is a text file, with the first line consisting of the header (usually just the tone name), followed by several lines of text, each line having 2 integers, separated by a space.\n\nThe first integer represents a frequency (in Hertz) and the second integer represents the duration (in milliseconds).\n\nHere's an example of a tone file:\n\n```\nBeep\n540 200\n676 400\n540 200\n676 400\n540 200\n676 400\n540 200\n676 400\n```\n\nIn this example alarm tone, a 540 Hz sound will be emitted for 200 milliseconds, followed immediately by a 676 Hz sound by 400 milliseconds, and so on, until the end of the file is reached.\n\nThe sounds are emitted by the iPod's [piezoelectric speaker](https://en.wikipedia.org/wiki/Piezoelectric_speaker). The specific frequency range is unknown.\n\n# Code\n\nThis directory contains some utilities for working with tone files. There is a Rust CLI utility, a Rust GUI, and a simple shell script.\n\n## GUI\n\nRun the `ipod_tone_player_gui` binary.\n\nYou can edit tone files in real time, then either play them directly to your headphones/speakers, or save it to a WAV file.\n\n![GUI screenshot](./docs/gui_screenshot.png)\n\n\n## CLI\n\nThe CLI binary is called `ipod_tone_player_cli`. It lets you basically do the same thing the GUI does.\n\n(1) play the sounds encoded in a Tone file to your actual speakers/headphones\n(2) save the sounds encoded in a Tone file, to a WAV file\n\nTo play the sounds from your speakers/headphones, do:\n\n```bash\n./ipod_tone_player \u003cTONE_FILE_PATH\u003e --sound\n```\n\nTo save the sounds to a WAV file, do:\n\n```bash\n./ipod_tone_player \u003cTONE_FILE_PATH\u003e --file\n```\n\n## Shell script\n\nThe script `mobo_tone_player.sh` can be used to play tone files on your computer directly, using your motherboard's own piezo speaker (not your actual speakers/headphones!):\n\nSimply run:\n\n```bash\n./mobo_tone_player.sh \u003cPATH_TO_TONE_FILE\u003e\n```\n\nand you should hear the tone file being played.\n\n\n# :musical_score: :musical_score:\n\nLinks to some fun tones to try out:\n\n* [https://github.com/weeowey/CustomiPodAlarmTones](https://github.com/weeowey/CustomiPodAlarmTones)\n\n* [https://www.reddit.com/r/ipod/comments/14mcsvw/i_made_another_ipod_alarm_tone_boney_m_rasputin/](https://www.reddit.com/r/ipod/comments/14mcsvw/i_made_another_ipod_alarm_tone_boney_m_rasputin/)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraleighlittles%2Fipod_tone_file_player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fraleighlittles%2Fipod_tone_file_player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fraleighlittles%2Fipod_tone_file_player/lists"}