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