/[svn]/linuxsampler/trunk/src/audioio.h
ViewVC logotype

Contents of /linuxsampler/trunk/src/audioio.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 31 - (show annotations) (download) (as text)
Sun Jan 18 20:31:31 2004 UTC (16 years, 1 month ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 3007 byte(s)
* Added JACK support: Audio rendering process is now callback based and
  independant of used audio output system. Interfaces to other audio output
  systems can be added by creating a class derived from abstract base class
  'AudioIO' and embedding the new class into linuxsampler.cpp.
* src/audiothread.cpp: applied patch from Vladimir Senkov which fixes
  hanging notes in conjunction with the sustain pedal

1 /***************************************************************************
2 * *
3 * LinuxSampler - modular, streaming capable sampler *
4 * *
5 * Copyright (C) 2003 by Benno Senoner and Christian Schoenebeck *
6 * *
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 #ifndef __AUDIO_H__
24 #define __AUDIO_H__
25
26 #include "global.h"
27
28 // just symbol prototyping
29 class AudioThread;
30
31 /**
32 * Abstract class for audio output in LinuxSampler. This class will be
33 * derived by specialized classes which implement the connection to a
34 * specific audio output system (e.g. Alsa, Jack).
35 */
36 class AudioIO {
37 public:
38 AudioIO();
39 virtual ~AudioIO();
40 virtual void Activate() = 0;
41 virtual void Close() = 0;
42 virtual void* GetInterleavedOutputBuffer() = 0;
43 virtual void* GetChannelOutputBufer(uint Channel) = 0;
44 inline void AssignEngine(AudioThread* pAudioThread) { pEngine = pAudioThread; };
45 inline bool Initialized() { return bInitialized; };
46 inline bool Interleaved() { return bInterleaved; };
47 inline uint Channels() { return uiChannels; };
48 inline uint SampleRate() { return uiSamplerate; };
49 inline uint MaxSamplesPerCycle() { return uiMaxSamplesPerCycle; };
50 protected:
51 bool bInitialized;
52 bool bInterleaved;
53 uint uiChannels;
54 uint uiSamplerate;
55 uint uiMaxSamplesPerCycle; ///< in sample points
56 AudioThread* pEngine;
57 };
58
59 #endif // __AUDIO_H__

  ViewVC Help
Powered by ViewVC