00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
#ifndef _ALSAOUT_H
00025
#define _ALSAOUT_H
00026
00027
#include <libkmid/midiout.h>
00028
00029
struct snd_seq_event;
00030
typedef struct snd_seq_event snd_seq_event_t;
00031
00037 class AlsaOut :
public MidiOut
00038 {
00039
friend class DeviceManager;
00040
00041
protected:
00042
00047
int ndevs;
00048
00053
int nmidiports;
00054
00055
double count;
00056
double lastcount;
00057
double lasttime;
00058
double begintime;
00059
int m_rate;
00060
00065
double convertrate;
00066
00067
long int time;
00068
00069
virtual void seqbuf_dump (
void);
00070
virtual void seqbuf_clean(
void);
00071
void eventInit(snd_seq_event_t *ev);
00072
void eventSend(snd_seq_event_t *ep);
00073
void timerEventSend(
int type);
00074
00075
public:
00076
00082
AlsaOut(
int d,
int client=64,
int port=0,
const char *cname=
"",
const char *pname=
"");
00083
00089
virtual ~AlsaOut();
00090
00099
virtual void openDev (
int sqfd);
00100
00106
virtual void closeDev ();
00107
00113
virtual void initDev ();
00114
00129 int deviceType ()
const {
return devicetype; };
00130
00135
virtual const char *
deviceName (
void) const;
00136
00140
int rate (
void) {
return m_rate; };
00141
00145
virtual void noteOn ( uchar chn, uchar note, uchar vel );
00146
00150
virtual void noteOff ( uchar chn, uchar note, uchar vel );
00151
00155
virtual void keyPressure ( uchar chn, uchar note, uchar vel );
00156
00160
virtual void chnPatchChange ( uchar chn, uchar patch );
00161
00165
virtual void chnPressure ( uchar chn, uchar vel );
00166
00170
virtual void chnPitchBender ( uchar chn, uchar lsb, uchar msb );
00171
00175
virtual void chnController ( uchar chn, uchar ctl , uchar v );
00176
00180
virtual void sysex ( uchar *data,ulong size);
00181
00185
virtual void channelSilence ( uchar chn );
00186
00194
virtual void channelMute ( uchar chn,
int b );
00195
00203 virtual void setVolumePercentage (
int volper )
00204 { volumepercentage = volper; };
00205
00209 int ok (
void)
00210 {
if (seqfd<0)
return 0;
00211
return (_ok>0);
00212 };
00213
00214
virtual void wait (
double ticks);
00215
virtual void tmrSetTempo (
int v);
00216
virtual void tmrStart (
int tpcn);
00217
virtual void tmrStart () { tmrStart(-1); }
00218
virtual void tmrStop ();
00219
virtual void tmrContinue ();
00225
void sync (
int i=0);
00226
00227
class AlsaOutPrivate;
00228 AlsaOutPrivate *di;
00229 };
00230
00231
#endif // _ALSAOUT_H