Big Mouth Billy Bass player that takes raw wavefiles and decision list text files from an SD card

Dependencies:   SDFileSystem mbed BillyBass

Committer:
bikeNomad
Date:
Thu Jun 20 15:03:54 2013 +0000
Revision:
16:82a1bdc3320f
Parent:
15:03105423bc3b
Made main loop repeat forever; eliminated time shifting

Who changed what in which revision?

UserRevisionLine numberNew contents of line
bikeNomad 13:c13b3db9649b 1 #ifndef __included_config_hpp
bikeNomad 13:c13b3db9649b 2 #define __included_config_hpp
bikeNomad 13:c13b3db9649b 3
bikeNomad 13:c13b3db9649b 4 // configuration for Billy Bass
bikeNomad 13:c13b3db9649b 5 #define MAX_FISH 2
bikeNomad 13:c13b3db9649b 6
bikeNomad 13:c13b3db9649b 7 // SD card layout: all files in BASS_DIRECTORY ("/sd/SD_Files/")
bikeNomad 13:c13b3db9649b 8 //
bikeNomad 13:c13b3db9649b 9 // Each pair of files in that directory are named like:
bikeNomad 13:c13b3db9649b 10 // "<seqnum>_<fishnum>_filename.raw" (16-bit mono raw little-endian samples, sample rate=SAMPLE_RATE_HZ)
bikeNomad 13:c13b3db9649b 11 // and
bikeNomad 13:c13b3db9649b 12 // "<seqnum>_<fishnum>_filename.txt" (tab-separated text file with starttime,endtime,<mouth|head|body|tail>
bikeNomad 13:c13b3db9649b 13 // text files are as exported from Audacity's label tracks
bikeNomad 13:c13b3db9649b 14 //
bikeNomad 13:c13b3db9649b 15 #define SD_NAME "sd"
bikeNomad 13:c13b3db9649b 16 #define SD_ROOT "/" SD_NAME
bikeNomad 13:c13b3db9649b 17 #define BASS_DIRECTORY SD_ROOT "/SD_Files"
bikeNomad 13:c13b3db9649b 18 // length of BASS_DIRECTORY without NUL
bikeNomad 13:c13b3db9649b 19 #define BASS_DIRECTORY_LENGTH 12
bikeNomad 13:c13b3db9649b 20 #define MAX_BASENAME_LENGTH 30
bikeNomad 13:c13b3db9649b 21 #define MAX_PATH_LEN \
bikeNomad 13:c13b3db9649b 22 BASS_DIRECTORY_LENGTH + 1 \
bikeNomad 13:c13b3db9649b 23 + MAX_BASENAME_LENGTH + 1
bikeNomad 13:c13b3db9649b 24
bikeNomad 13:c13b3db9649b 25 // limits of .txt files
bikeNomad 13:c13b3db9649b 26 #define MAX_ACTIONS_LINES_PER_SONG 60
bikeNomad 13:c13b3db9649b 27 #define MAX_ACTIONS_PER_SONG MAX_ACTIONS_LINES_PER_SONG*2
bikeNomad 13:c13b3db9649b 28 #define MAX_TEXT_FILE_LENGTH 2048
bikeNomad 13:c13b3db9649b 29
bikeNomad 16:82a1bdc3320f 30 // define this to 1 to make start times earlier and
bikeNomad 16:82a1bdc3320f 31 // enforce minimum on times
bikeNomad 16:82a1bdc3320f 32 #define FIX_TIMES 0
bikeNomad 16:82a1bdc3320f 33
bikeNomad 13:c13b3db9649b 34 // Sample configuration
bikeNomad 13:c13b3db9649b 35 typedef int16_t Sample_t; // 16-bit raw, LE samples
bikeNomad 13:c13b3db9649b 36 const float SAMPLE_RATE_HZ = 8000.0;
bikeNomad 13:c13b3db9649b 37 const unsigned SAMPLE_PERIOD_USEC = (unsigned)(1.0e6/SAMPLE_RATE_HZ);
bikeNomad 13:c13b3db9649b 38
bikeNomad 13:c13b3db9649b 39 // Player configuration
bikeNomad 13:c13b3db9649b 40 const size_t BUFFER_SIZE = 512;
bikeNomad 13:c13b3db9649b 41 const size_t SAMPLES_PER_BUFFER = BUFFER_SIZE / sizeof(Sample_t);
bikeNomad 13:c13b3db9649b 42 const float SECONDS_PER_CHUNK = SAMPLES_PER_BUFFER / SAMPLE_RATE_HZ;
bikeNomad 13:c13b3db9649b 43
bikeNomad 13:c13b3db9649b 44 #define SERIAL_BAUD 115200
bikeNomad 13:c13b3db9649b 45 #define ANALOG_OUTPUT_BIAS 0x8000
bikeNomad 13:c13b3db9649b 46
bikeNomad 14:79b3fd23c7b5 47 #define BODY_ON_DELAY 0.65
bikeNomad 15:03105423bc3b 48 #define BODY_OFF_DELAY 0.65
bikeNomad 16:82a1bdc3320f 49
bikeNomad 14:79b3fd23c7b5 50 #define TAIL_ON_DELAY 0.40
bikeNomad 14:79b3fd23c7b5 51 #define TAIL_OFF_DELAY 0.40
bikeNomad 16:82a1bdc3320f 52
bikeNomad 15:03105423bc3b 53 #define MOUTH_ON_DELAY 0.10
bikeNomad 15:03105423bc3b 54 #define MOUTH_OFF_DELAY 0.10
bikeNomad 15:03105423bc3b 55 #define MOUTH_MIN_ON_TIME 0.05
bikeNomad 13:c13b3db9649b 56
bikeNomad 13:c13b3db9649b 57 // Power:
bikeNomad 13:c13b3db9649b 58 // Power GND J9/14
bikeNomad 13:c13b3db9649b 59 // Vin (6V) J9/16
bikeNomad 13:c13b3db9649b 60
bikeNomad 13:c13b3db9649b 61 // I/O configuration
bikeNomad 13:c13b3db9649b 62 #define BASS1_TAIL PTB0 /* J10/2 */
bikeNomad 13:c13b3db9649b 63 #define BASS1_MOUTH PTB1 /* J10/4 */
bikeNomad 13:c13b3db9649b 64 #define BASS1_BODY PTB2 /* J10/6 */
bikeNomad 13:c13b3db9649b 65 #define BASS1_BUTTON PTD5 /* J2/4 */
bikeNomad 13:c13b3db9649b 66
bikeNomad 13:c13b3db9649b 67 #define BASS2_TAIL PTB3 /* J10/8 */
bikeNomad 13:c13b3db9649b 68 #define BASS2_MOUTH PTC2 /* J10/10 */
bikeNomad 13:c13b3db9649b 69 #define BASS2_BODY PTC1 /* J10/12 */
bikeNomad 13:c13b3db9649b 70 #define BASS2_BUTTON PTA13 /* J3/2 */
bikeNomad 13:c13b3db9649b 71
bikeNomad 13:c13b3db9649b 72 // SD Card (3.3V)
bikeNomad 13:c13b3db9649b 73 // PTD0 J2/6 D10 - Used for CS of SPI
bikeNomad 13:c13b3db9649b 74 // PTD2 J2/8 D11 - Used for MOSI of SPI
bikeNomad 13:c13b3db9649b 75 // PTD3 J2/10 D12 - Used for MISO of SPI
bikeNomad 13:c13b3db9649b 76 // PTC5 J1/9 Used for SCLK of SPI (must solder if using shield)
bikeNomad 13:c13b3db9649b 77 #define SD_MOSI PTD2
bikeNomad 13:c13b3db9649b 78 #define SD_MISO PTD3
bikeNomad 13:c13b3db9649b 79 #define SD_SCLK PTC5
bikeNomad 13:c13b3db9649b 80 #define SD_CS PTD0
bikeNomad 13:c13b3db9649b 81
bikeNomad 13:c13b3db9649b 82 #endif