Mercurial > hg > btrack
annotate doc/mainpage.dox @ 67:ae3ec9b14092
Updated README, installation instructions for Python module and added an example.py file to explain how to use the Python module. Also regenerated documentation.
| author | Adam Stark <adamstark@users.noreply.github.com> |
|---|---|
| date | Tue, 28 Jan 2014 01:07:44 +0000 |
| parents | ce806db4468b |
| children |
| rev | line source |
|---|---|
| adamstark@61 | 1 /** |
| adamstark@61 | 2 * \mainpage BTrack - A Real-Time Beat Tracker |
| adamstark@61 | 3 * |
| adamstark@61 | 4 * A real-time beat tracker, implemented in C++. |
| adamstark@61 | 5 * |
| adamstark@61 | 6 * Written by Adam Stark, Matthew Davies and Mark Plumbley. |
| adamstark@61 | 7 * |
| adamstark@61 | 8 * License |
| adamstark@61 | 9 * ------- |
| adamstark@61 | 10 * |
| adamstark@61 | 11 * BTrack is made available under the GNU General Public License, version 3. Please see the included LICENSE.txt for more details. |
| adamstark@61 | 12 * |
| adamstark@61 | 13 * Usage - C++ |
| adamstark@61 | 14 * ----------- |
| adamstark@61 | 15 * |
| adamstark@61 | 16 * **STEP 1** |
| adamstark@61 | 17 * |
| adamstark@61 | 18 * Include the BTrack header file as follows: |
| adamstark@61 | 19 * |
| adamstark@61 | 20 * #include "BTrack.h" |
| adamstark@61 | 21 * |
| adamstark@61 | 22 * **STEP 2** |
| adamstark@61 | 23 * |
| adamstark@61 | 24 * Instantiate the algorithm by one of the following: |
| adamstark@61 | 25 * |
| adamstark@61 | 26 * |
| adamstark@61 | 27 * // to use the default 512 hop size and 1024 frame size |
| adamstark@61 | 28 * BTrack b; |
| adamstark@61 | 29 * |
| adamstark@61 | 30 * or: |
| adamstark@61 | 31 * |
| adamstark@61 | 32 * // to specify a hop size (e.g. 512) and have a frame size of 2 x the hop size |
| adamstark@61 | 33 * BTrack b(512); |
| adamstark@61 | 34 * |
| adamstark@61 | 35 * or: |
| adamstark@61 | 36 * |
| adamstark@61 | 37 * // to specify both the hop size and frame size |
| adamstark@61 | 38 * BTrack b(512,1024); |
| adamstark@61 | 39 * |
| adamstark@61 | 40 * **STEP 3.1 - Audio Input** |
| adamstark@61 | 41 * |
| adamstark@61 | 42 * In the processing loop, fill a double precision array with one frame of audio samples (as determined in step 2): |
| adamstark@61 | 43 * |
| adamstark@61 | 44 * double *frame; |
| adamstark@61 | 45 * |
| adamstark@61 | 46 * // ! |
| adamstark@61 | 47 * // do something here to fill the frame with audio samples |
| adamstark@61 | 48 * // ! |
| adamstark@61 | 49 * |
| adamstark@61 | 50 * and then call: |
| adamstark@61 | 51 * |
| adamstark@61 | 52 * b.processAudioFrame(frame); |
| adamstark@61 | 53 * |
| adamstark@61 | 54 * and to check for beats, simply call: |
| adamstark@61 | 55 * |
| adamstark@61 | 56 * if (b.beatDueInCurrentFrame()) |
| adamstark@61 | 57 * { |
| adamstark@61 | 58 * // do something on the beat |
| adamstark@61 | 59 * } |
| adamstark@61 | 60 * |
| adamstark@61 | 61 * **STEP 3.2 - Onset Detection Function Input** |
| adamstark@61 | 62 * |
| adamstark@61 | 63 * The algorithm can process onset detection function samples. Given a double precision onset detection function sample called 'newSamples', at each step, call: |
| adamstark@61 | 64 * |
| adamstark@61 | 65 * b.processOnsetDetectionFunctionSample(newSample); |
| adamstark@61 | 66 * |
| adamstark@61 | 67 * and then check for beats with: |
| adamstark@61 | 68 * |
| adamstark@61 | 69 * if (b.beatDueInCurrentFrame()) |
| adamstark@61 | 70 * { |
| adamstark@61 | 71 * // do something on the beat |
| adamstark@61 | 72 * } |
| adamstark@61 | 73 * |
| adamstark@61 | 74 * For any questions, please email Adam Stark (email at http://www.adamstark.co.uk). |
| adamstark@61 | 75 */ |
