{"id":21409531,"url":"https://github.com/evangipson/midio","last_synced_at":"2025-07-14T01:31:08.843Z","repository":{"id":137210227,"uuid":"124814869","full_name":"evangipson/midio","owner":"evangipson","description":"midio will work really hard to generate you endlessly interesting audio on the fly.","archived":false,"fork":false,"pushed_at":"2018-04-22T22:28:02.000Z","size":11583,"stargazers_count":21,"open_issues_count":4,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-07T21:44:59.846Z","etag":null,"topics":["audio-synthesis","css3","ecmascript6","functional-programming","generative","radio","typescript","web-audio-api"],"latest_commit_sha":null,"homepage":"http://evangipson.com/midio","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/evangipson.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-03-12T01:00:31.000Z","updated_at":"2022-02-06T15:30:57.000Z","dependencies_parsed_at":null,"dependency_job_id":"486339bf-8f77-4740-afc2-7026d966e06a","html_url":"https://github.com/evangipson/midio","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/evangipson/midio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evangipson%2Fmidio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evangipson%2Fmidio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evangipson%2Fmidio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evangipson%2Fmidio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evangipson","download_url":"https://codeload.github.com/evangipson/midio/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evangipson%2Fmidio/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265230757,"owners_count":23731437,"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":["audio-synthesis","css3","ecmascript6","functional-programming","generative","radio","typescript","web-audio-api"],"created_at":"2024-11-22T17:26:48.143Z","updated_at":"2025-07-14T01:31:08.835Z","avatar_url":"https://github.com/evangipson.png","language":"TypeScript","readme":"# [midio: generative synthesizer radio](http://evangipson.com/midio)\nmidio is a web-based generative synthesizer \"radio\" which uses the [Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API) and [TypeScript](https://www.typescriptlang.org/) to create intertwining, evolving musical phrases on the fly.\n\nIt utilizes 4 basic oscillator waves (sine, sawtooth, square, and triangle), 3 noise waves (white, pink, and brown), filters (bandpass, lowpass, and highpass), delay, reverb (via convolution), and gain to create all of it's sounds. It features the ability to:\n- Create musical phrases (melodies, chords, and arpeggios) with no user input\n- Remember and play back those musical phrases (to increase the user's tonal familiarity with the song)\n- Give the user an idea of the frequency of any note that is playing by hooking it's frequency to the x axis, then drawing a quick animation\n- Have it's paramaters (oscillator waves, noise waves, LFO, etc.) modified in a control panel by the user\n- \"Evolve the song\" by adjusting the control panel values regularly within a range of their current value\n\nIt can be used in the following ways:\n- Load midio, sit back and listen while midio generates an ever-evolving song without any input\n- Load midio, turn autoplay off, and click the colorful area that takes up most of the screen and experiment with the inputs to have some fun\n\nmidio started as a randomly generated sequence of MIDI notes based on a scale, then it was moved forward by my curiosity toward [functional programming](https://en.wikipedia.org/wiki/Functional_programming) and the [Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API).\n\n| midio Readme |\n|---|\n| [Built With](#built-with) |\n| [Compiling](#compiling) |\n| [Contributing](#contributing) |\n| [License](#license) |\n\n# Built With\n* [Web Audio API](https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API)\n* [TypeScript](https://www.typescriptlang.org/)\n* [CSS3](https://developer.mozilla.org/en-US/docs/Web/CSS/CSS3)\n* [HTML5](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5)\n* [Visual Studio Code](https://code.visualstudio.com/)\n* [Google Chrome](https://www.google.com/chrome/)\n* [npm](https://www.npmjs.com/)\n* [Impulse Reponses](https://en.wikipedia.org/wiki/Impulse_response) from [The Open Air Library](http://www.openairlib.net/)\n* Additional Resources:\n    * https://stackoverflow.com/questions/6343450/generating-sound-on-the-fly-with-javascript-html5\n    * https://wiki.mozilla.org/Audio_Data_API#Complete_Example%3a_Creating_a_Web_Based_Tone_Generator\n    * http://tobyho.com/2015/11/09/functional-programming-by-example/\n    * https://medium.com/@cscalfani/so-you-want-to-be-a-functional-programmer-part-1-1f15e387e536\n    * http://www.openairlib.net/auralizationdb/content/1st-baptist-nashville\n\n# Compiling\nTo compile the TypeScript in the project:\n* Run ```npm install --save-dev typescript```\n* When in Visual Studio Code, type **control + shift + B** to bring up your list of tasks.\n* Start the ```tsc-watch``` task.\n* Save any file, and you will now have a **src/main.js**, which is referenced by the main **index.html** file.\n    * Note: This is due to the [tsconfig.json](tsconfig.json) file.\n\n# Contributing\nThank you so much for your interest in contributing to midio! You should read and follow the [code of conduct](CODE_OF_CONDUCT.md) and [contribution guidelines](CONTRIBUTING.md).\n\nIf you find a bug - then check out any [open issues](https://github.com/evangipson/midio/issues) to see if your bug is already reported. If not, [create a new issue](https://github.com/evangipson/midio/issues/new), please!\n\n# License\nmidio is licensed under [AGPL 3.0](https://www.gnu.org/licenses/agpl-3.0.en.html). If you are interested, [take a look at midio's license](LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevangipson%2Fmidio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevangipson%2Fmidio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevangipson%2Fmidio/lists"}