3
Copyright (C) 2001-2002 Stefan Westerfeld
6
This library is free software; you can redistribute it and/or
7
modify it under the terms of the GNU Library General Public
8
License as published by the Free Software Foundation; either
9
version 2 of the License, or (at your option) any later version.
11
This library is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
Library General Public License for more details.
16
You should have received a copy of the GNU Library General Public License
17
along with this library; see the file COPYING.LIB. If not, write to
18
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
19
Boston, MA 02111-1307, USA.
25
#include "stdsynthmodule.h"
27
#include "miditimercommon.h"
28
#include "audiotimer.h"
29
#include "flowsystem.h"
34
static AudioTimer *AudioTimer_the = 0;
36
AudioTimer::AudioTimer()
38
AudioTimer_the = this;
39
samples = seconds = 0;
42
AudioTimer::~AudioTimer()
47
TimeStamp AudioTimer::time()
49
return TimeStamp(seconds,
50
(long)((float)samples / samplingRateFloat * 1000000.0));
53
void AudioTimer::notify(const Notification &)
55
list<AudioTimerCallback *>::iterator i;
56
for(i = callbacks.begin(); i != callbacks.end(); i++)
60
void AudioTimer::calculateBlock(unsigned long s)
63
while(samples > samplingRate)
65
samples -= samplingRate;
73
NotificationManager::the()->send(n);
76
AudioTimer *AudioTimer::subscribe()
81
AudioTimer_the->_node()->start();
85
AudioTimer_the->_copy();
87
return AudioTimer_the;
90
void AudioTimer::addCallback(AudioTimerCallback *callback)
92
callbacks.push_back(callback);
95
void AudioTimer::removeCallback(AudioTimerCallback *callback)
97
callbacks.remove(callback);