{"id":18084971,"url":"https://github.com/coderofsalvation/instr2raw","last_synced_at":"2025-04-12T20:10:38.048Z","repository":{"id":7361979,"uuid":"8687150","full_name":"coderofsalvation/instr2raw","owner":"coderofsalvation","description":"SF2/XI instrument inspection/conversion utilities + looppoint insertiontools for AIFF/WAV..all for loopedinstrument fanatics","archived":false,"fork":false,"pushed_at":"2020-05-28T19:08:13.000Z","size":6126,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T14:21:48.208Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","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/coderofsalvation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null},"funding":{"custom":"https://gumroad.com/l/hGYGh"}},"created_at":"2013-03-10T15:35:56.000Z","updated_at":"2025-01-21T00:05:49.000Z","dependencies_parsed_at":"2022-09-07T03:01:42.725Z","dependency_job_id":null,"html_url":"https://github.com/coderofsalvation/instr2raw","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/coderofsalvation%2Finstr2raw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderofsalvation%2Finstr2raw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderofsalvation%2Finstr2raw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderofsalvation%2Finstr2raw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coderofsalvation","download_url":"https://codeload.github.com/coderofsalvation/instr2raw/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248625493,"owners_count":21135513,"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-31T15:08:49.994Z","updated_at":"2025-04-12T20:10:38.019Z","avatar_url":"https://github.com/coderofsalvation.png","language":"C++","funding_links":["https://gumroad.com/l/hGYGh"],"categories":[],"sub_categories":[],"readme":"How to massage .XI and .SF2 instruments to AIFF/WAV with looppoints\n===================================================================\nThese are handy utilities for SF2/XI instrument inspection/conversion and what not more.\nThe tools might be buggy, but serve as a good startingpoint, as I didn't find any other \nsimple sourcecode which does this.\n\n### Author ###\n\nCoder of Salvation (Leon van Kammen / BUGMENOTinfo@leon.vankammen.eu (remove BUGMENOT)\n\n### Usage ###\n\n    $ ./xi2raw \n    Usage: xi2raw \u003cinfile.xi\u003e \u003coutfile.raw\u003e\n\n    $ ./loopdump \n    Usage: loopdump \u003cfile.wav\u003e\n\n    $ ./loopinject \n    Usage: loopinject \u003cinfile.wav|aiff\u003e \u003cloopstart\u003e \u003cloopend\u003e \u003coutfile.wav|aiff\u003e\n\n    $ ./raw2wav \n    Usage: raw2wavloop \u003crawfile\u003e \u003csamplerate\u003e \u003cchannels\u003e \u003coutfile.wav\u003e\n\n    $ ./sf2toraw \n    Usage: sf2toraw \u003csf2file\u003e \u003coutdir\u003e\n\n    $ ./sf2write \n    Usage: sf2write \u003cfile.sf2\u003e \u003cfile.wav\u003e \u003cindex\u003e \u003csamplerate\u003e \u003clokey\u003e \u003chikey\u003e  [loopstart] [loopstop]\n\n    Note: index starts with 0, define -1 for loopstart/loopstop to disable looping\n\n    $ ./instr2raw \n        ./instr2raw instr2raw            # \u003cfile.xi/file.sf2\u003e \u003coutdir\u003e      \u003c-- converts an .xi or .sf2 file to .raw \u0026 .wav\n        ./instr2raw rawdir2wav           # \u003cdir-with-raw-files\u003e \u003coutdir\u003e    \u003c-- converts .raw files to wav (with loopstart/end)\n        ./instr2raw loopInject           # \u003cfile.wav/file.aiff\u003e             \u003c-- injects looppoints based on file.raw.txt \n        ./instr2raw dir                  # \u003cindir\u003e \u003coutdir\u003e                 \u003c-- process all .xi and .sf2 in indir, and convert to wav/aiff\n\n        related commands: instr2raw, loopdump, loopinject, raw2wav, sf2toraw, sf2write, xi2raw\n\nconversion:\n\n    ./sf2toraw in/bass.sf2 outdir\n    ./xitoraw in/chord1.xi outdir\n\ninject loopppoints:\n\n    ./raw2wav out/chord1.raw out/chord1.wav\n    ./loopinject out/chord1.wav 100 200 out/chord1-looped.wav\n\nor to batch directories:\n\n    mkdir in out\n    # copy all your instrument files to directory 'in' \n    ./convert instr2raw foo.xi out\n    ./convert instr2raw foo.sf2 out\n    ./convert rawdir2wav outdir\n\nor a whole collection at once:\n\n    mkdir outdir\n    ./convert dir myinstrumentdir outdir\n\n\n### Problem ###\n\nThere are many looped instruments out there (.xi/.sf2), and there are many software DAW's (cubase/ableton) and hardware tools\n(electribe esx/old samplers) which support .wav looppoints.\nHowever, there isnt many software out there which uses these features.\nAlso, conversion tools usually cannot be used in batch, which can be a big pita.\n\n### The purpose of this package ###\n\n  * convert the free legacy of public domain .xi and .sf2 instruments to newer formats\n  * purely noncommercial\n  * educational\n  * conversion of `royalty-`, `license-free` and/or owned instruments\n\n### How it works ###\n\nThe samples and loopingmetadata are extracted from the instrumentfiles, and converted to raw- and txt-files.\nThe shellscript 'convert' easifies batchprocessing of directories.\n\n`(IMPORT)NOTE: libsndfile generally always produces 16bit PCM (little endian) output`\n\n### Dependancies ###\n\n  * gnu compiler, make, unzip and wget\n  * libsndfile library\n  * sox library (optional, used for normalizing samples)\n  * libc6-dev-i386 package (on my ubuntu)\n \n### Installation ###\n\n    git clone http://\n    cd instr2raw\n    make all\n \n### NOTES ###\n\nFor more verbose output run the `convert` command with '--verbose' as last argument.\nAlso, if you feel up to it, turn on the DEBUG-flag in the Makefile for crazy verboseness =].\n`sf2toraw` and `xi2raw` also generate loopfiles which the shellscript `convert` uses for batchpurposes.\nBut with little effort you can inject loopdata into aiff/wav-files yourself.\nYou can just call the `loopinject` command manually and insert the looppoints.\n\n### Binaries ###\n\nPrecompiled are available (fingers crossed!) on my blog (http://leon.vankammen.eu/tech/index.html)\n\n### Limitations ###\n\n  * handle stereo files (mono only since my hardware supports monolooped instruments only) \n  * aiff generation/injection possible but `convert` shellscript is not finished concerning aiff output\n\n### License ###\n\nGNU AGPL\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderofsalvation%2Finstr2raw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderofsalvation%2Finstr2raw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderofsalvation%2Finstr2raw/lists"}