/[svn]/linuxsampler/trunk/src/engines/common/Event.cpp
ViewVC logotype

Annotation of /linuxsampler/trunk/src/engines/common/Event.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 328 - (hide annotations) (download)
Sat Dec 25 21:58:58 2004 UTC (19 years, 4 months ago) by schoenebeck
File size: 3433 byte(s)
* architecture independence fixes, should now compile again for non x86
  systems
* tiny fix of command line switch --version

1 schoenebeck 53 /***************************************************************************
2     * *
3     * LinuxSampler - modular, streaming capable sampler *
4     * *
5 schoenebeck 56 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck *
6 schoenebeck 53 * *
7     * This program is free software; you can redistribute it and/or modify *
8     * it under the terms of the GNU General Public License as published by *
9     * the Free Software Foundation; either version 2 of the License, or *
10     * (at your option) any later version. *
11     * *
12     * This program is distributed in the hope that it will be useful, *
13     * but WITHOUT ANY WARRANTY; without even the implied warranty of *
14     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15     * GNU General Public License for more details. *
16     * *
17     * You should have received a copy of the GNU General Public License *
18     * along with this program; if not, write to the Free Software *
19     * Foundation, Inc., 59 Temple Place, Suite 330, Boston, *
20     * MA 02111-1307 USA *
21     ***************************************************************************/
22    
23     #include "Event.h"
24    
25     namespace LinuxSampler {
26    
27     /**
28     * Create an EventGenerator.
29     *
30     * @param SampleRate - sample rate of the sampler engine's audio output
31     * signal (in Hz)
32     */
33     EventGenerator::EventGenerator(uint SampleRate) {
34     uiSampleRate = SampleRate;
35     uiSamplesProcessed = 0;
36 schoenebeck 328 FragmentTime.end = RTMath::CreateTimeStamp();
37 schoenebeck 53 }
38    
39     /**
40     * Updates the time stamps for the beginning and end of the current audio
41     * fragment. This is needed to be able to calculate the respective sample
42     * point later to which an event belongs to.
43     *
44     * @param SamplesToProcess - number of sample points to process in this
45     * audio fragment cycle
46     */
47     void EventGenerator::UpdateFragmentTime(uint SamplesToProcess) {
48     // update time stamp for this audio fragment cycle
49     FragmentTime.begin = FragmentTime.end;
50 schoenebeck 328 FragmentTime.end = RTMath::CreateTimeStamp();
51 schoenebeck 53 // recalculate sample ratio for this audio fragment
52     time_stamp_t fragmentDuration = FragmentTime.end - FragmentTime.begin;
53     FragmentTime.sample_ratio = (float) uiSamplesProcessed / (float) fragmentDuration;
54     // store amount of samples to process for the next cycle
55     uiSamplesProcessed = SamplesToProcess;
56     }
57    
58     /**
59     * Create a new event with the current time as time stamp.
60     */
61     Event EventGenerator::CreateEvent() {
62 schoenebeck 328 return Event(this, RTMath::CreateTimeStamp());
63 schoenebeck 53 }
64    
65     /**
66     * Will be called by an EventGenerator to create a new Event.
67     */
68     Event::Event(EventGenerator* pGenerator, time_stamp_t Time) {
69     pEventGenerator = pGenerator;
70     TimeStamp = Time;
71     iFragmentPos = -1;
72     }
73    
74     } // namespace LinuxSampler

  ViewVC Help
Powered by ViewVC