{"id":19078088,"url":"https://github.com/hendriks73/separator","last_synced_at":"2025-07-24T11:42:19.352Z","repository":{"id":71014791,"uuid":"44812080","full_name":"hendriks73/separator","owner":"hendriks73","description":"Demo project for audio source separation.","archived":false,"fork":false,"pushed_at":"2015-10-23T12:42:24.000Z","size":712,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-22T05:25:12.814Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hendriks73.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}},"created_at":"2015-10-23T12:34:34.000Z","updated_at":"2024-04-23T08:44:35.000Z","dependencies_parsed_at":"2023-03-11T09:42:03.264Z","dependency_job_id":null,"html_url":"https://github.com/hendriks73/separator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hendriks73/separator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fseparator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fseparator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fseparator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fseparator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hendriks73","download_url":"https://codeload.github.com/hendriks73/separator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hendriks73%2Fseparator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266836310,"owners_count":23992587,"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","status":"online","status_checked_at":"2025-07-24T02:00:09.469Z","response_time":99,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-09T02:05:31.409Z","updated_at":"2025-07-24T11:42:19.303Z","avatar_url":"https://github.com/hendriks73.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Separator\n\n*Separator* is a simple demo project to illustrate different kinds of\n[source separation](https://en.wikipedia.org/wiki/Source_separation).\n\nIn its initial form it supports a harmonic/percussive and a\nforeground/background separation.\n\nHarmonic/percussive separation can be used to extract drums and other\nhighly percussive sounds. It can also be used as a first processing step\ntowards extracting harmonic features like melody.\n\nForeground/background separation is interesting for extracting the\nsinging voice (e.g. of pop songs).\n\nThe algorithms used are similar to:\n\n- [Music/Voice separation using the similarity matrix](http://ismir2012.ismir.net/event/papers/583_ISMIR_2012.pdf)\nby Zafar Rafii and Bryan Pardo\n- [Harmonic/percussive separation using median filtering](http://dafx10.iem.at/papers/DerryFitzGerald_DAFx10_P15.pdf)\nby Derry FitzGerald\n\n*Separator* itself is built based on the audio feature extraction library\n[jipes](http://www.tagtraum.com/jipes/).\n\n\n## How to Build\n\n*Separator* can be build using [Maven](https://maven.apache.org).\nSimply run\n\n    mvn clean install\n\nand you will find multiple build results in the `target` directory.\n\n\n## How to Run\n\n*Separator* requires Java 8 to run.\n\nOnce you've built the project, you can run it with\n\n    java -Xmx2G -jar target/separator-1.0.0-jar-with-dependencies.jar\n\nThe version number may need to be changed.\nNote, that *Separator* is not really optimized. Therefore, lots of RAM/heap are useful.\n\nTo separate a file, simply drag it onto the running app, select options, and wait.\nResults are placed in the same directory as the source file with suitable file name modifications.\n\nIn its original form, *Separator* only works with audio formats supported by the Java\nplatform (e.g. `WAV`). To use this with other audio formats, you need to add libraries\nthat support those formats to the class/library path\n(see e.g. [Sampled SP libraries](http://www.tagtraum.com/sampledsp.html)).\n\n\n## Separation Options\n\nWhen running *Separator* you are presented a bunch of options:\n\n- **Hop Size**: distance between windows in frames\n- **Window Size**: analysis window\n- **Harmonic Median Window**: Length of windows to include in the median computation for the h/p separation in ms\n- **Percussive Median Window**: Frequency range of a window to include in the median computation for the h/p separation in Hz\n- **Harm./Perc. Separation Harshness**: How is h/p median ratio mapped to h/p magnitudes? Extremes are binary and proportional.\n  The implementation uses the [logistic function](https://en.wikipedia.org/wiki/Logistic_function) with a configurable `k`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhendriks73%2Fseparator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhendriks73%2Fseparator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhendriks73%2Fseparator/lists"}