You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
884 B
Bash
29 lines
884 B
Bash
#!/bin/sh
|
|
# Prepares a sample.h file
|
|
# sed not used, should just werk (TM) everywhere
|
|
# Usage: ./samplify.sh my_sample.wav
|
|
# Or you can install samplify.sh in your ~/bin and call it
|
|
# from anywhere you like
|
|
|
|
# Convert original soundfile and create sample.h
|
|
# A temp file is needed otherwise xxd is unable to generate
|
|
# sample length information?
|
|
# Need to fix that later...
|
|
sox "${1}" -t u8 -c 1 -r 8000 /tmp/sample.wav
|
|
xxd -i /tmp/sample.wav > sample.h
|
|
rm /tmp/sample.wav
|
|
|
|
# Extract sample length
|
|
SAMPLE_LEN=$(tail -1 sample.h | cut -d ' ' -f 5 | tr -d ';')
|
|
|
|
# Inject SAMPLE_LEN in new file header
|
|
NEW_HEADER="#define SAMPLE_RATE 8000
|
|
const int sound_length=${SAMPLE_LEN};
|
|
const unsigned char sound_data[] PROGMEM= {"
|
|
|
|
# Remove first line of sample.h
|
|
echo "$(tail -n +2 sample.h)" > sample.h
|
|
|
|
# Prepend new header to sample.h
|
|
echo "$(echo "${NEW_HEADER}"; cat sample.h)" > sample.h
|