Philips Philips
/
printing_out_samples_in_reverse
First example of reverse code, just printing out values to console
Revision 0:032752cac4de, committed 2011-12-09
- Comitter:
- mbed2f
- Date:
- Fri Dec 09 21:06:12 2011 +0000
- Commit message:
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r 032752cac4de main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Dec 09 21:06:12 2011 +0000 @@ -0,0 +1,69 @@ +#include <mbed.h> + +// Boolean types +#define TRUE 1 +#define FALSE 0 + + +int main(void) +{ + unsigned char ReadSample = 0xFF; + // Indices to track where the playback and recording should take place in the + // audio buffer. The recording can occur one sample behind the current playback + // index since it is no longer required. + int Index = 0; + // Reverse the direction the buffer is walked between each iteration to save memory + int Direction = 1; + // Have audio to playback + int Playback = FALSE; + // The amount of data to be recorded before starting reverse playback + // NOTE: Probably want this to be configured at runtime via a knob, etc. + int ChunkSize = 256; + // Allocate a buffer to be used for the audio recording + // NOTE: Just showing a 20k buffer in a static for this example + static const size_t BufferSize = 20 * 1024; + static unsigned char Buffer[BufferSize]; + + // Infinite loop of recording and reverse playback + for (;;) + { + unsigned char PlaySample; + + // Read out the sample from the buffer to be played back + if (Playback) + { + PlaySample = Buffer[Index]; + // NOTE: Just printing out samples in reverse + printf("%d: %d\r\n", Index, PlaySample); + wait(0.2f); + } + + // Obtain current audio sample from the A/D converter. + // NOTE: I am just faking these values in this sample with an incrementing value + ReadSample++; + + // Record the sample into the buffer right where a space was freed up from the PlaySample read above + Buffer[Index] = ReadSample; + + // Increment the buffer pointer + Index += Direction; + + // Check to see if the chunk has been filled + if (Index < 0) + { + // Now have a chunk to be played back + Playback = TRUE; + // Reverse the direction of playback and recording + Direction *= -1; + Index = 0; + } + else if (Index >= ChunkSize) + { + // Now have a chunk to be played back + Playback = TRUE; + // Reverse the direction of playback and recording + Direction *= -1; + Index = ChunkSize - 1; + } + } +} \ No newline at end of file
diff -r 000000000000 -r 032752cac4de mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Dec 09 21:06:12 2011 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/078e4b97a13e