{"id":15400739,"url":"https://github.com/dbraun/dx7-jax","last_synced_at":"2025-04-15T22:31:14.767Z","repository":{"id":209199483,"uuid":"722338761","full_name":"DBraun/DX7-JAX","owner":"DBraun","description":"Yamaha DX7 synthesizer with JAX","archived":false,"fork":false,"pushed_at":"2023-11-25T17:16:55.000Z","size":30,"stargazers_count":14,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-04-12T04:20:48.221Z","etag":null,"topics":["audio","dx7","faust","jax","synthesizer"],"latest_commit_sha":null,"homepage":"","language":"Python","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/DBraun.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2023-11-22T23:43:55.000Z","updated_at":"2025-02-04T01:10:06.000Z","dependencies_parsed_at":"2023-11-25T19:26:55.854Z","dependency_job_id":"b2cfc62e-aaa8-4496-883a-0be4048671d8","html_url":"https://github.com/DBraun/DX7-JAX","commit_stats":null,"previous_names":["dbraun/dx7-jax"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DBraun%2FDX7-JAX","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DBraun%2FDX7-JAX/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DBraun%2FDX7-JAX/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DBraun%2FDX7-JAX/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DBraun","download_url":"https://codeload.github.com/DBraun/DX7-JAX/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249166012,"owners_count":21223363,"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","dx7","faust","jax","synthesizer"],"created_at":"2024-10-01T15:54:49.056Z","updated_at":"2025-04-15T22:31:13.231Z","avatar_url":"https://github.com/DBraun.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# DX7-JAX\n\nThis is a work-in-progress of using [JAX](https://jax.readthedocs.io/en/latest/) to batch-render [Yamaha DX7](https://en.wikipedia.org/wiki/Yamaha_DX7) presets. We also provide a script to parse `.syx` files and aggregate them into a single CSV.\n\nThe [Faust](https://faust.grame.fr/) Libraries have an [implementation](https://faustlibraries.grame.fr/libs/dx7/#dxdx7_ui) of the DX7, but it lacks several features. We have improved it in several ways such as adding an LFO, **but our implementation (`custom_dx7.lib`) is imperfect, so please use this project with caution.** Pull requests are welcome.\n\nDX7-JAX uses [DawDreamer](https://github.com/DBraun/DawDreamer/) to convert the Faust code to JAX, which can then be executed on either the CPU or GPU. We hope this project can be a useful starter for research involving Faust and JAX, not necessarily involving the DX7. DawDreamer has other JAX [examples](https://github.com/DBraun/DawDreamer/blob/main/examples/Faust_to_JAX/Faust_to_JAX.ipynb), which we encourage you to check out.\n\n## Download patches\n\nWe mirror the `DX7_AllTheWeb.zip` (2023-08-08) from \u003chttp://bobbyblues.recup.ch/yamaha_dx7/dx7_patches.html\u003e (saving them some bandwidth). Use this script to download it to the right location.\n\n```bash\npython download_patches.py\n```\n\n## Turn patches into a CSV\n\nThis will parse a limited amount of presets.\n\n```bash\npython parse_dx7.py --directory dx7_patches/DX7_AllTheWeb/Atari\n```\n\nThis will parse all presets. You probably shouldn't do this because the later rendering output will be enormous.\n\n```bash\npython parse_dx7.py\n```\n\nIf you run it on all of `DX7_AllTheWeb`, then 388,650 presets will be de-duplicated into 44,884.\n\n## Render an audio dataset\n\nRender the audio with default args (`python dx7_render.py --help` for help)\n\n```bash\npython dx7_render.py\n```\n\n## Use our DX7 in the Faust IDE.\n\nGo to the [Faust IDE](https://faustide.grame.fr) and paste the content of `custom_dx7.lib` into the text editor. Then at the bottom, paste\n\n`process = dx7_algorithm(1) \u003c: _, _;`\n\nThis selects the *1st* of the 32 DX7 algorithms. Enable \"Poly Voices\" on the left hand side. Four is a good number. Then press the play button towards the top of the screen and play around with your keyboard as the controller. \n\n## Citation\n\n```\n@software{Braun_DX7-JAX_2023,\n    author = {Braun, David},\n    month = nov,\n    title = {{DX7-JAX}},\n    url = {https://github.com/DBraun/DX7-JAX},\n    version = {0.0.1},\n    year = {2023}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbraun%2Fdx7-jax","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdbraun%2Fdx7-jax","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdbraun%2Fdx7-jax/lists"}