kp-computercraft-scripts/pcmToLua.d

38 lines
869 B
D
Executable File

#!/usr/bin/env rdmd
/**
* Converts a signed 8-bit PCM audio file into a Lua table list. Run this from
* the command-line via `./pcmToLua my-pcm-file.pcm`.
*/
module pcm_to_lua;
import std.stdio;
import std.file;
import std.array;
const frameSize = 128 * 1024;
int main(string[] args) {
if (args.length < 2) {
stderr.writeln("Missing required file.");
return 1;
}
string audioFilename = args[1];
if (!exists(audioFilename)) {
stderr.writefln!"File %s doesn't exist."(audioFilename);
return 1;
}
byte[] contents = cast(byte[]) std.file.read(audioFilename);
ulong sampleIndex = 0;
auto app = appender!string;
stdout.writeln("local audio = {");
foreach (byte sample; contents) {
stdout.writefln!" %d,"(sample);
sampleIndex++;
}
stdout.writeln("}");
return 0;
}