https://github.com/coderofsalvation/instr2raw
SF2/XI instrument inspection/conversion utilities + looppoint insertiontools for AIFF/WAV..all for loopedinstrument fanatics
https://github.com/coderofsalvation/instr2raw
Last synced: about 1 year ago
JSON representation
SF2/XI instrument inspection/conversion utilities + looppoint insertiontools for AIFF/WAV..all for loopedinstrument fanatics
- Host: GitHub
- URL: https://github.com/coderofsalvation/instr2raw
- Owner: coderofsalvation
- Created: 2013-03-10T15:35:56.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2020-05-28T19:08:13.000Z (about 6 years ago)
- Last Synced: 2025-03-26T14:21:48.208Z (over 1 year ago)
- Language: C++
- Size: 5.84 MB
- Stars: 9
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
How to massage .XI and .SF2 instruments to AIFF/WAV with looppoints
===================================================================
These are handy utilities for SF2/XI instrument inspection/conversion and what not more.
The tools might be buggy, but serve as a good startingpoint, as I didn't find any other
simple sourcecode which does this.
### Author ###
Coder of Salvation (Leon van Kammen / BUGMENOTinfo@leon.vankammen.eu (remove BUGMENOT)
### Usage ###
$ ./xi2raw
Usage: xi2raw
$ ./loopdump
Usage: loopdump
$ ./loopinject
Usage: loopinject
$ ./raw2wav
Usage: raw2wavloop
$ ./sf2toraw
Usage: sf2toraw
$ ./sf2write
Usage: sf2write [loopstart] [loopstop]
Note: index starts with 0, define -1 for loopstart/loopstop to disable looping
$ ./instr2raw
./instr2raw instr2raw # <-- converts an .xi or .sf2 file to .raw & .wav
./instr2raw rawdir2wav # <-- converts .raw files to wav (with loopstart/end)
./instr2raw loopInject # <-- injects looppoints based on file.raw.txt
./instr2raw dir # <-- process all .xi and .sf2 in indir, and convert to wav/aiff
related commands: instr2raw, loopdump, loopinject, raw2wav, sf2toraw, sf2write, xi2raw
conversion:
./sf2toraw in/bass.sf2 outdir
./xitoraw in/chord1.xi outdir
inject loopppoints:
./raw2wav out/chord1.raw out/chord1.wav
./loopinject out/chord1.wav 100 200 out/chord1-looped.wav
or to batch directories:
mkdir in out
# copy all your instrument files to directory 'in'
./convert instr2raw foo.xi out
./convert instr2raw foo.sf2 out
./convert rawdir2wav outdir
or a whole collection at once:
mkdir outdir
./convert dir myinstrumentdir outdir
### Problem ###
There are many looped instruments out there (.xi/.sf2), and there are many software DAW's (cubase/ableton) and hardware tools
(electribe esx/old samplers) which support .wav looppoints.
However, there isnt many software out there which uses these features.
Also, conversion tools usually cannot be used in batch, which can be a big pita.
### The purpose of this package ###
* convert the free legacy of public domain .xi and .sf2 instruments to newer formats
* purely noncommercial
* educational
* conversion of `royalty-`, `license-free` and/or owned instruments
### How it works ###
The samples and loopingmetadata are extracted from the instrumentfiles, and converted to raw- and txt-files.
The shellscript 'convert' easifies batchprocessing of directories.
`(IMPORT)NOTE: libsndfile generally always produces 16bit PCM (little endian) output`
### Dependancies ###
* gnu compiler, make, unzip and wget
* libsndfile library
* sox library (optional, used for normalizing samples)
* libc6-dev-i386 package (on my ubuntu)
### Installation ###
git clone http://
cd instr2raw
make all
### NOTES ###
For more verbose output run the `convert` command with '--verbose' as last argument.
Also, if you feel up to it, turn on the DEBUG-flag in the Makefile for crazy verboseness =].
`sf2toraw` and `xi2raw` also generate loopfiles which the shellscript `convert` uses for batchpurposes.
But with little effort you can inject loopdata into aiff/wav-files yourself.
You can just call the `loopinject` command manually and insert the looppoints.
### Binaries ###
Precompiled are available (fingers crossed!) on my blog (http://leon.vankammen.eu/tech/index.html)
### Limitations ###
* handle stereo files (mono only since my hardware supports monolooped instruments only)
* aiff generation/injection possible but `convert` shellscript is not finished concerning aiff output
### License ###
GNU AGPL