Mercurial > hg > btrack
annotate doc/mainpage.dox @ 117:ca2d83d29814 tip master
Merge branch 'release/1.0.5'
author | Adam Stark <adamstark.uk@gmail.com> |
---|---|
date | Fri, 18 Aug 2023 20:07:33 +0200 |
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 */ |