{"id":17258112,"url":"https://github.com/ffont/superman","last_synced_at":"2025-06-23T04:34:26.642Z","repository":{"id":141191256,"uuid":"174314947","full_name":"ffont/superman","owner":"ffont","description":"Audio Mosaicing command line utility","archived":false,"fork":false,"pushed_at":"2019-03-11T16:02:50.000Z","size":12,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-31T10:15:12.730Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ffont.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":"2019-03-07T09:37:08.000Z","updated_at":"2025-01-30T17:06:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"ebced5c2-1bce-4fa6-bd06-6e6a16c19896","html_url":"https://github.com/ffont/superman","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffont%2Fsuperman","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffont%2Fsuperman/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffont%2Fsuperman/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ffont%2Fsuperman/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ffont","download_url":"https://codeload.github.com/ffont/superman/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245622881,"owners_count":20645677,"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":[],"created_at":"2024-10-15T07:19:35.616Z","updated_at":"2025-03-26T08:43:18.144Z","avatar_url":"https://github.com/ffont.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Superman\n\n*Superman* is an *audio mosaicing* command line utility to make an alternative version of a *target* audio file by concatenating chunks from a number of other *source* audio files. This code is adapted from a lab assignment of the [Master in Sound and Music Computing](https://www.upf.edu/web/smc) (of the [Music Technology Group](https://www.upf.edu/web/mtg)) which I did in 2009-2010. Original code provided in the lab assignment was by [Marteen de Boer](https://www.linkedin.com/in/maarten-de-boer-a508591/).\n\n\n## Installation\n\nThis is a Python script that has the following Python requirements:\n\n * `essentia`\n * `scikits.audiolab`\n * `scikits.samplerate`\n * `numpy`\n\nEssentia should be installed separately following [these instructions](http://essentia.upf.edu/documentation/installing.html). The other requirements should be installed by running:\n\n\tpip install numpy scikits.audiolab scikits.samplerate\n\n\n## Basic instructions\n\n 1. Put target audio file in same folder as `superman.py`\n 2. Put source audio files inside a folder called `sources` next to `superman.py`\n 3. Run and wait until the output file is created:\n\n\t```\n\tpython superman.py TARGET_FILENAME --tempo TEMPO\n\n\te.g.\n\tpython superman.py 'target part 1.aif' --tempo 90.0\n\t```\n\nBoth the target file and the source files will be sliced and analyzed at chunks corresponding to a beat of the indicated tempo. Analysis of target and source files is stored in a file so that the next time the algorithm is run files don't need to be analyzed again. However, if tempo is changed, the new analysis for the new tempo will need to be computed.\n\nThe longer the target/source files are (and the more source files), the longer it will take to build the output... For long targets and long sources (i.e. minutes long), generating the output can take hours...\n\n\n## Extra options\n\nTo do quick tests use the `--length` option to indicate how many seconds of the target you want reconstructed. Use it like:\n\n\tpython superman.py TARGET_FILENAME --tempo TEMPO --length LENGTH\n\n\te.g.\n\tpython superman.py 'target part 1.aif' --tempo 90.0 --length 10\n\nTo write the output \"score\" in a *.csv* file that you can open with Excel, etc., add the option `--write_score`. Use it like:\n\n\tpython superman.py TARGET_FILENAME --tempo TEMPO --write_score\n\nYou can specify a name for the output file using the option `--out_filepath`. If not specified, a default name will be chosen. Output file will be PCM WAV file, if extension *.wav* is not indicated as part of the out filepath, it will be automatically added. Use it like:\n\n\tpython superman.py TARGET_FILENAME --tempo TEMPO --out_filepath OUT_FILEPATH\n\n\te.g.\n\tpython superman.py 'target part 1.aif' --tempo 90.0 --out_filepath 'my_output_tempo_90.wav'\n\nYou can add some randomization into the output (i.e. not always using the closest source unit for a given target) by using the option `--random`. In this way consecutive runs of the same build (i.e. same target and same sources) won't produce the same results. Use it like:\n\n\tpython superman.py TARGET_FILENAME --tempo TEMPO --random RANDOM\n\n\te.g.\n\tpython superman.py 'target part 1.aif' --tempo 90.0 --random 0.3\n\nFor even more options, run the help command and see what's in there:\n\n\tpython superman.py --help\n\n\nNOTE: the time remaining indicator is only to be trusted after some iterations have passed (~10 approx).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fffont%2Fsuperman","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fffont%2Fsuperman","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fffont%2Fsuperman/lists"}