juce_AudioPlayHead.h

Go to the documentation of this file.
00001 /*
00002   ==============================================================================
00003 
00004    This file is part of the JUCE library - "Jules' Utility Class Extensions"
00005    Copyright 2004-7 by Raw Material Software ltd.
00006 
00007   ------------------------------------------------------------------------------
00008 
00009    JUCE can be redistributed and/or modified under the terms of the
00010    GNU General Public License, as published by the Free Software Foundation;
00011    either version 2 of the License, or (at your option) any later version.
00012 
00013    JUCE is distributed in the hope that it will be useful,
00014    but WITHOUT ANY WARRANTY; without even the implied warranty of
00015    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016    GNU General Public License for more details.
00017 
00018    You should have received a copy of the GNU General Public License
00019    along with JUCE; if not, visit www.gnu.org/licenses or write to the
00020    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
00021    Boston, MA 02111-1307 USA
00022 
00023   ------------------------------------------------------------------------------
00024 
00025    If you'd like to release a closed-source product which uses JUCE, commercial
00026    licenses are also available: visit www.rawmaterialsoftware.com/juce for
00027    more information.
00028 
00029   ==============================================================================
00030 */
00031 
00032 #ifndef __JUCE_AUDIOPLAYHEAD_JUCEHEADER__
00033 #define __JUCE_AUDIOPLAYHEAD_JUCEHEADER__
00034 
00035 
00036 //==============================================================================
00046 class JUCE_API  AudioPlayHead
00047 {
00048 protected:
00049     //==============================================================================
00050     AudioPlayHead() {}
00051 
00052 public:
00053     virtual ~AudioPlayHead() {}
00054 
00055     //==============================================================================
00057     enum FrameRateType
00058     {
00059         fps24           = 0,
00060         fps25           = 1,
00061         fps2997         = 2,
00062         fps30           = 3,
00063         fps2997drop     = 4,
00064         fps30drop       = 5,
00065         fpsUnknown      = 99
00066     };
00067 
00068     //==============================================================================
00071     struct CurrentPositionInfo
00072     {
00074         double bpm;
00075 
00077         int timeSigNumerator;
00079         int timeSigDenominator;
00080 
00082         double timeInSeconds;
00083 
00085         double editOriginTime;
00086 
00091         double ppqPosition;
00092 
00101         double ppqPositionOfLastBarStart;
00102 
00104         FrameRateType frameRate;
00105 
00107         bool isPlaying;
00108 
00113         bool isRecording;
00114     };
00115 
00116     //==============================================================================
00120     virtual bool getCurrentPosition (CurrentPositionInfo& result) = 0;
00121 };
00122 
00123 
00124 #endif   // __JUCE_AUDIOPLAYHEAD_JUCEHEADER__