{"id":16252714,"url":"https://github.com/jatinchowdhury18/crossroadseffects","last_synced_at":"2025-06-27T00:04:15.185Z","repository":{"id":99023816,"uuid":"232264510","full_name":"jatinchowdhury18/CrossroadsEffects","owner":"jatinchowdhury18","description":"At the crossroads of programming your own audio effects, and letting your audio effects be programmed for you.","archived":false,"fork":false,"pushed_at":"2020-04-08T22:47:29.000Z","size":26941,"stargazers_count":33,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-03T06:23:58.767Z","etag":null,"topics":["audio-effects","audio-plugins","dsp","faust","genetic-algorithm"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jatinchowdhury18.png","metadata":{"files":{"readme":"README.md","changelog":null,"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}},"created_at":"2020-01-07T07:07:50.000Z","updated_at":"2024-12-01T12:08:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"f61e506b-6043-442f-ac52-bd4b9bc4f86d","html_url":"https://github.com/jatinchowdhury18/CrossroadsEffects","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jatinchowdhury18/CrossroadsEffects","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jatinchowdhury18%2FCrossroadsEffects","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jatinchowdhury18%2FCrossroadsEffects/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jatinchowdhury18%2FCrossroadsEffects/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jatinchowdhury18%2FCrossroadsEffects/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jatinchowdhury18","download_url":"https://codeload.github.com/jatinchowdhury18/CrossroadsEffects/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jatinchowdhury18%2FCrossroadsEffects/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262163858,"owners_count":23268779,"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-effects","audio-plugins","dsp","faust","genetic-algorithm"],"created_at":"2024-10-10T15:14:36.087Z","updated_at":"2025-06-27T00:04:15.173Z","avatar_url":"https://github.com/jatinchowdhury18.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Crossroads Effects\n\n[![Build Status](https://travis-ci.com/jatinchowdhury18/CrossroadsEffects.svg?token=Ub9niJrqG1Br1qaaxp7E\u0026branch=master)](https://travis-ci.com/jatinchowdhury18/CrossroadsEffects)\n\nThis repository contains a system (still in developement)\nfor auto-generating audio effects for a given input and\noutput audio file. More technically, the system uses a `Python`\nscript to generate `Faust` code that compiles to create audio\neffects. The `Faust` code is then optimized to create an effect\nthat best approximates the desired output, using a variety of\noptimization schemes as well as genetic algorithms.\n\n## Using\n\nThis project is still in the early stages of development.\nTo test that the system is working on your machine, run\n`run_tests.sh --quick`.\n\n### Dependencies\n\nTo use `Crossroads`, you must have the following dependencies\ninstalled:\n\n- [`Python`](https://www.python.org/)\n- `Python` packages (`pip install -r requirements.txt`)\n- [`Faust`](https://github.com/grame-cncm/faust)\n- Mac/Linux only\n  - Boost (`sudo apt-get install libboost-all-dev`)\n  - libsndfile (optional, see [below](#using-with-libsndfile))\n- Windows only\n  - [MSYS2](https://www.msys2.org/)\n\nIf you don't already have `Faust` installed, it is included in \nthis repo and can be installed as follows (this requires CMAKE):\n\n```bash\n# Starting from the root directory of this repo\ncd modules/Faust\nmake\nsudo make install\n```\n\n### Installation\n```bash\n# clone repo\ngit clone https://github.com/jatinchowdhury18/CrossroadsEffects.git\ncd CrossroadsEffects\n\n# initialize submodules\ngit submodule update --init --recursive\n\n# If you don't already have Faust installed (requires cmake)\ncd modules/Faust/\nmake\nsudo make install\ncd ../../\n\n# Run tests (this will take a few minutes)\n./run_tests.sh --quick\n```\n\n### Running\n\nTo use Crossroads, you must have an input audio file, and a\ndesired output audio file. Crossroads will attempt to generate\nan audio effect that can create the desired output from the given\ninput. As an example, the `audio_files/` directory contains\na drum sample (`drums.wav`), and the same sample with a lower\nvolume (`gain.wav`).\n\n```bash\n# Run `python crossroads.py --name=\u003cEffectName\u003e \u003cinput file\u003e \u003cdesired output file\u003e`\n# (this could take several hours)\npython crossroads.py --name=MyGain audio_files/drums.wav audio_files/gain.wav\n```\nCrossroads will generate a folder called `MyGain` that contains\n`Faust` code, VST plugins, and SVG block diagrams generated by \nCrossroads.\n\n### Using with libsndfile\n\nInstalling [`libsndfile`](https://github.com/erikd/libsndfile) is\nnot strictly necessary, but can improve the speed of the algorithm\nby 2x or more. To install use \n`sudo apt-get install  libsndfile-dev` (Linux), or\n`brew install libsndfile` (Mac).\n\nIf you don't want to use `libsndfile`, navigate to\n`crossroads_scripts/param_estimation.py` and set the flag\n`USING_LIBSNDFILE=False` on line 10.\n\n## How It Works\n\nCrossroads uses a genetic algorithm to generate signal processing\nstructures, made up of gain and delay elements. A gradient-based\noptimizer (L-BFGS-B) is then used to tune the parameters of each \nstructure. Crossroads generates `Faust` code for each structure,\nthen compiles a VST plugin, and runs the input audio through the\nplugin. The output audio is then compared to the desired audio\nusing a combination of time-domain and frequency-domain error\nfunctions. Finally, the results of the error functions are fed\nback to the genetic algorithm which generates a new generation\nof structures.\n\nFor example, let's say we have an effect that we want to clone.\nUnbeknownst to us, the effect simply performs a 2-sample feed-forward\ncomb filter. We can choose an input audio file, process it through the\neffect, then submit both audio files to Crossroads. Crossroads will\nthen be able to evolve the cloned structure as follows:\n\n\u003cimg src=https://ccrma.stanford.edu/~jatin/comb_evolve.gif width=66%\u003e\n\n### Current Status and Future Work\n\nCurrently Crossroads is only configured to generate\nfeedforward systems. The foundations exist to generate systems\nthat contain feedback, but implementing the parameter estimation \nstep for systems with complex poles is still in progress.\n\n## About the name\n\nIn German legend, a character named Faust makes a deal with\nthe devil, to give up his soul for unlimited knowledge and all\nthe pleasures he can imagine. In Blues legend, Robert Johnson \nmakes a deal with the devil to become the greatest Blues guitarist\nof all time, in exchange for his soul. In audio programming, \nsignal processing engineers are making a deal with the devil to\ngive up creating their own DSP algorithms in exchange for machine\nlearning algorithms that accomplish these signal processing tasks\nfor them. In each instance, the deal with the devil takes place\nat a crossroads . . .\n\n## Contributing\n\nContributions are most welcome! In particular adding new base\nelements (see `crossroads_scripts/gen_faust.py`), or adding new\nevolutionary strategies (`crossroads_scripts/evolve_structure.py`).\nFeel free to contact us with any questions!\n\n## License\n\nThe code in this repository is licensed under the GNU Lesser General\nPublic License. Note that any code generated by this system is **not**\ncovered under this license, and can be licensed independently.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjatinchowdhury18%2Fcrossroadseffects","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjatinchowdhury18%2Fcrossroadseffects","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjatinchowdhury18%2Fcrossroadseffects/lists"}