annotate README.md @ 111:8fb1610c9192

Code style updates
author Adam Stark <adamstark.uk@gmail.com>
date Thu, 17 Aug 2023 09:31:30 +0200
parents 4ba1239fa120
children c58f01834337 1fb8df379f2d
rev   line source
adamstark@40 1 BTrack - A Real-Time Beat Tracker
adamstark@40 2 =================================
adamstark@40 3
adamstark@94 4 ** Version 1.0.4 **
adamstark@48 5
adamstark@48 6 *by Adam Stark, Matthew Davies and Mark Plumbley.*
adamstark@48 7
adamstark@48 8
adamstark@48 9 About BTrack
adamstark@48 10 ------------
adamstark@48 11
adamstark@67 12 BTrack is a causal beat tracking algorithm intended for real-time use. It is implemented in C++ with wrappers for Python and the Vamp plug-in framework.
adamstark@48 13
adamstark@48 14 Full details of the working of the algorithm can be found in:
adamstark@48 15
adamstark@48 16 * Musicians and Machines: Bridging the Semantic Gap in Live Performance, Chapter 3, A. M. Stark, PhD Thesis, Queen Mary, University of London, 2011.
adamstark@48 17
adamstark@48 18 * Real-Time Beat-Synchronous Analysis of Musical Audio, A. M. Stark, M. E. P. Davies and M. D. Plumbley. In Proceedings of the 12th International Conference on Digital Audio Effects (DAFx-09), Como, Italy, September 1-4, 2009.
adamstark@48 19
adamstark@81 20 BTrack is made available under the GNU General Public License, version 3. Please see the included LICENSE.txt for more details.
adamstark@48 21
adamstark@49 22 Versions
adamstark@49 23 --------
adamstark@49 24
adamstark@94 25 ==== 1.0.4 ==== (18th June 2016)
adamstark@94 26
adamstark@94 27 * Added option of using Kiss FFT
adamstark@94 28 * Implementation changes to improve efficiency
adamstark@94 29
adamstark@86 30 ==== 1.0.3 ==== (10th January 2016)
adamstark@86 31
adamstark@86 32 * Fixed implementation error in complex spectral difference (thanks to @zbanks for pointing it out)
adamstark@86 33 * Small change to python module build script
adamstark@86 34
adamstark@82 35 ==== 1.0.2 ==== (25th November 2014)
adamstark@82 36
adamstark@82 37 * Added updated Max external project and associated files
adamstark@82 38 * Fixed a couple of bugs
adamstark@82 39
adamstark@82 40 ==== 1.0.1 ==== (21st November 2014)
adamstark@75 41
adamstark@75 42 * Moved to git & updated README
adamstark@75 43 * No implementation changes
adamstark@75 44
adamstark@70 45 ==== 1.0.0 ==== (8th July 2014)
adamstark@70 46
adamstark@70 47 * Many updates to stability and improvements to implementation
adamstark@70 48
adamstark@70 49 ==== 0.9.0 ==== (circa 2008/2009)
adamstark@49 50
adamstark@49 51 * This is the original version of the BTrack algorithm
adamstark@49 52
adamstark@49 53
adamstark@49 54
adamstark@61 55 Usage - C++
adamstark@61 56 -----------
adamstark@61 57
adamstark@61 58 **STEP 1**
adamstark@61 59
adamstark@61 60 Include the BTrack header file as follows:
adamstark@61 61
adamstark@61 62 #include "BTrack.h"
adamstark@61 63
adamstark@61 64 **STEP 2**
adamstark@61 65
adamstark@61 66 Instantiate the algorithm by one of the following:
adamstark@61 67
adamstark@61 68 // to use the default 512 hop size and 1024 frame size
adamstark@61 69 BTrack b;
adamstark@61 70
adamstark@61 71 or:
adamstark@61 72
adamstark@61 73 // to specify a hop size (e.g. 512) and have a frame size of 2 x the hop size
adamstark@61 74 BTrack b(512);
adamstark@61 75
adamstark@61 76 or:
adamstark@61 77
adamstark@61 78 // to specify both the hop size and frame size
adamstark@61 79 BTrack b(512,1024);
adamstark@61 80
adamstark@61 81 **STEP 3.1 - Audio Input**
adamstark@61 82
adamstark@61 83 In the processing loop, fill a double precision array with one frame of audio samples (as determined in step 2):
adamstark@61 84
adamstark@61 85 double *frame;
adamstark@61 86
adamstark@61 87 // !
adamstark@61 88 // do something here to fill the frame with audio samples
adamstark@61 89 // !
adamstark@61 90
adamstark@61 91 and then call:
adamstark@61 92
adamstark@61 93 b.processAudioFrame(frame);
adamstark@61 94
adamstark@61 95 and to check for beats, simply call:
adamstark@61 96
adamstark@61 97 if (b.beatDueInCurrentFrame())
adamstark@61 98 {
adamstark@61 99 // do something on the beat
adamstark@61 100 }
adamstark@61 101
adamstark@61 102 **STEP 3.2 - Onset Detection Function Input**
adamstark@61 103
adamstark@75 104 The algorithm can process onset detection function samples. Given a double precision onset detection function sample called 'newSample', at each step, call:
adamstark@61 105
adamstark@61 106 b.processOnsetDetectionFunctionSample(newSample);
adamstark@61 107
adamstark@61 108 and then check for beats with:
adamstark@61 109
adamstark@61 110 if (b.beatDueInCurrentFrame())
adamstark@61 111 {
adamstark@61 112 // do something on the beat
adamstark@61 113 }
adamstark@70 114
adamstark@81 115 Requirements
adamstark@81 116 ------------
adamstark@81 117
adamstark@81 118 To compile BTrack, you will require the following libraries:
adamstark@81 119
adamstark@81 120 * libsamplerate
adamstark@81 121
adamstark@95 122 And either:
adamstark@95 123
adamstark@95 124 * FFTW (add the flag -DUSE_FFTW)
adamstark@95 125
adamstark@95 126 or:
adamstark@95 127
adamstark@95 128 * Kiss FFT (included with project, use the flag -DUSE_KISS_FFT)
adamstark@95 129
adamstark@70 130
adamstark@70 131 License
adamstark@70 132 -------
adamstark@70 133
adamstark@70 134 Copyright (c) 2014 Queen Mary University of London
adamstark@70 135
adamstark@70 136 This program is free software: you can redistribute it and/or modify
adamstark@70 137 it under the terms of the GNU General Public License as published by
adamstark@70 138 the Free Software Foundation, either version 3 of the License, or
adamstark@70 139 (at your option) any later version.
adamstark@70 140
adamstark@70 141 This program is distributed in the hope that it will be useful,
adamstark@70 142 but WITHOUT ANY WARRANTY; without even the implied warranty of
adamstark@70 143 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
adamstark@70 144 GNU General Public License for more details.
adamstark@70 145
adamstark@70 146 You should have received a copy of the GNU General Public License
adamstark@70 147 along with this program. If not, see <http://www.gnu.org/licenses/>.