diff options
author | Nick Brassel <nick@tzarc.org> | 2021-02-28 07:22:21 +1100 |
---|---|---|
committer | Nick Brassel <nick@tzarc.org> | 2021-02-28 07:22:21 +1100 |
commit | 1a5f6b54aff179732e3f4f4eb79e47454f0a1eb5 (patch) | |
tree | ebf645f55cb0442899c894765b1af4344fb734db /util/wavetable_parser.py | |
parent | 804d5c1c5d59d9a12c1d793289ccbd59cb650ec2 (diff) | |
parent | 624359b725c9bfe8176cf72cdc2c8bbb7513949f (diff) | |
download | qmk_firmware-1a5f6b54aff179732e3f4f4eb79e47454f0a1eb5.tar.gz qmk_firmware-1a5f6b54aff179732e3f4f4eb79e47454f0a1eb5.zip |
2021 February 27 Breaking Changes Update (#12040)
Diffstat (limited to 'util/wavetable_parser.py')
-rwxr-xr-x | util/wavetable_parser.py | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/util/wavetable_parser.py b/util/wavetable_parser.py new file mode 100755 index 0000000000..be0f01f7b4 --- /dev/null +++ b/util/wavetable_parser.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +# +# Copyright 2019 Jack Humbert +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# + +import wave, struct, sys + +waveFile = wave.open(sys.argv[1], 'r') + +length = waveFile.getnframes() +out = "#define DAC_WAVETABLE_CUSTOM_LENGTH " + str(int(length / 256)) + "\n\n" +out += "static const dacsample_t dac_wavetable_custom[" + str(int(length / 256)) + "][256] = {" +for i in range(0,length): + if (i % 8 == 0): + out += "\n " + if (i % 256 == 0): + out = out[:-2] + out += "{\n " + waveData = waveFile.readframes(1) + data = struct.unpack("<h", waveData) + out += str(int((int(data[0]) + 0x8000) / 16)) + ", " + if (i % 256 == 255): + out = out[:-2] + out += "\n }," +out = out[:-1] +out += "\n};" +print(out) |