{"id":30694872,"url":"https://github.com/ratismal/bshift","last_synced_at":"2025-09-02T06:45:35.430Z","repository":{"id":44071553,"uuid":"208907766","full_name":"Ratismal/bshift","owner":"Ratismal","description":"A simple commandline utility to reorganize beats within a wav file.","archived":false,"fork":false,"pushed_at":"2022-12-10T02:49:31.000Z","size":4627,"stargazers_count":1,"open_issues_count":6,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-04-18T14:10:05.476Z","etag":null,"topics":["beatshift","cli","tool","wave"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ratismal.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-09-16T22:15:35.000Z","updated_at":"2023-02-15T21:47:52.000Z","dependencies_parsed_at":"2023-01-26T02:16:24.471Z","dependency_job_id":null,"html_url":"https://github.com/Ratismal/bshift","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Ratismal/bshift","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ratismal%2Fbshift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ratismal%2Fbshift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ratismal%2Fbshift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ratismal%2Fbshift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ratismal","download_url":"https://codeload.github.com/Ratismal/bshift/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ratismal%2Fbshift/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273244305,"owners_count":25070959,"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-09-02T02:00:09.530Z","response_time":77,"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":["beatshift","cli","tool","wave"],"created_at":"2025-09-02T06:45:30.575Z","updated_at":"2025-09-02T06:45:35.397Z","avatar_url":"https://github.com/Ratismal.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# bshift\n\nA simple commandline utility to reorganize beats within a wav file.\n\n## Considerations\n\n- bshift will only accept wave (.wav) files\n- you should ensure your wave file's beginning is trimmed (no dead space) or you use the `--trim` flag\n- you should ensure that BPM provided is accurate\n\n## Usage\n\nDownload your binary from releases. Alternatively, use `node index.js`. In this readme, I'll refer to whichever you use as `bshift`.\n\nUse `bshift --help` to get commandline usage.\n\n### Basic Example\n\nIf you have a wav file called `input.wav` with a BPM of 120, and you want to swap beats 2 and 4...\n```\nbshift -i input.wav -o output.wav -t 120 -m 1,4,3,2\n```\n`-i` and `-o` default to `input.wav` and `output.wav` respectively. The default BPM is 120, default time signature is 4/4, and default action is swapping beats 2 and 4. So you could also just do:\n```\nbshift\n```\n\n### Alternate Time Signatures\n\nSupposing `input.wav` is has a 3/4 time signature...\n```\nbshift -b 3 -m 1,3,2\n```\nYou should ensure that your BPM matches the number of beats (`3`) you specify. The note that counts as a beat (`4`) is irrelevant!\n\n### Trimming\n\nbshift will only work properly if the dead space at the beginning of the song is trimmed. Otherwise, the beats won't line up and you'll hear popping noises. To use bshift's automatic trimming, use the `--trim` flag.\n\n```\nbshift --trim\n```\n\nBy default with this flag, you will have a \"threshold\" of 125. bshift will remove all leading bytes until it reaches one with a value that's between `threshold` and `255 - threshold`, so by default 125-130. You can specify your own threshold, but you proooooooobably shouldn't go any higher than 125 or it'll just strip the whole song.\n\n### Unconventional Arrangements\n\nYou aren't limited to just swapping beats! You can rearrange them however you see fit. Take them out, add more, omit some, the world's your oyster! For example, this is totally valid, even for a 4/4 song:\n\n```\nbshift -m 1,4,2,2,3,4\n```\n\nI'm not saying it'll be *good*, but definitely go for it if that's what you're into.\n\n## Sample\n\nEnclosed in this repository is an `input.wav` file. It's a 4/4 120BPM song that was designed so that you could clearly identify the first, second, third, and fourth beats (they increment on a minor scale). Feel free to play around with it!","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fratismal%2Fbshift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fratismal%2Fbshift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fratismal%2Fbshift/lists"}