diff --git a/README.md b/README.md index 541abfd..09d957a 100644 --- a/README.md +++ b/README.md @@ -3,10 +3,25 @@ ## About Generate valid WAV files in Cairo +## Features + - [x] Output WAV file + - [x] Handle bit-depths (4, 8, 16, 32) + - [ ] Handle multiple/stereo channels + - [x] Generate square wave form + - [x] Generate sawtooth wave forms + - [x] Generate triangle wave forms + - [ ] Generate sine wave forms + - [ ] Generate an instrument (see [Koji](https://github.com/cienicera/Koji)) + - [x] Play [Koji](https://github.com/cienicera/Koji) notes + - [ ] Play [Koji midi tracks](https://github.com/cienicera/Koji) + - [ ] Generate an 4/8-bit low sample rate sound pack (kick, bass, snare, hi-hat) + - [X] Play short melodies + + ## Local testing: ```bash -scarb test -f get_notes > tmp/test; -python scripts/data_to_wave.py tmp/test; +scarb test -f get_notes > tmp/test +python scripts/data_to_wave.py tmp/test mplayer tmp/test.wav ``` @@ -17,7 +32,6 @@ python scripts/get_notes.py mplayer tmp/out.wav ``` - ## Resources - [WAVE PCM File format](http://soundfile.sapp.org/doc/WaveFormat/) - Unix: `man sox`, `ffprobe file.wave` diff --git a/scripts/data_to_wave.py b/scripts/data_to_wave.py index bc8ad44..fcec257 100644 --- a/scripts/data_to_wave.py +++ b/scripts/data_to_wave.py @@ -10,10 +10,12 @@ with open(input_file) as f: data = f.read().splitlines() -# plt.plot("".join(data[5:-3])) -# plt.show() +i = 0 +while i < len(data): + if data[i].startswith('RIFF'): break + i+=1 -data_bytes = "".join(data[5:-3]) +data_bytes = "".join(data[i:-3]) data_bytes = data_bytes.encode('utf-8') data_bytes = data_bytes.decode('unicode-escape') data_bytes = data_bytes.encode('ISO-8859-1')