]> git.mxchange.org Git - simgear.git/blob - src/smMixer.cxx
Initial revision.
[simgear.git] / src / smMixer.cxx
1 #include "sm.h"
2
3 #ifdef SL_USING_OSS_AUDIO
4 /* ------------------------------------------------------------ */
5 /* OSSAUDIO - Linux, FreeBSD                                    */
6 /* ------------------------------------------------------------ */
7
8
9 void smMixer::open ( char *device )
10 {
11   fd = ::open ( device, O_WRONLY ) ;
12
13   if ( fd < 0 )
14   {
15     perror ( "smMixer: open" ) ;
16     error = SM_TRUE ;
17   }
18   else
19     error = SM_FALSE ;
20
21   devices = ioctl ( SOUND_MIXER_READ_DEVMASK ) ;
22 }
23   
24 void smMixer::close ()
25 {
26   if ( fd >= 0 )
27     ::close ( fd ) ;
28 }
29
30
31 smMixer::smMixer ()               
32
33    open ( SMMIXER_DEFAULT_DEVICE ) ; 
34
35
36 smMixer::smMixer ( char *device ) 
37
38    open ( device ) ; 
39
40
41 smMixer::~smMixer ()               
42
43    close () ; 
44 }
45   
46 int smMixer::not_working () 
47
48    return error ; 
49 }
50
51   /* Volume controls are in integer percentages */
52
53 int  smMixer::getVolume ( int channel             ) 
54
55    return ioctl ( MIXER_READ  ( channel ) ) & 0xFF ; 
56 }
57
58
59 void smMixer::setVolume ( int channel, int volume ) 
60
61    ioctl ( MIXER_WRITE ( channel ), (( volume & 255 ) << 8 ) |
62                                      ( volume & 255 ) ) ; 
63 }
64
65 void smMixer::getVolume ( int channel, int *left, int *right )
66 {
67    int vv = ioctl ( MIXER_READ ( channel ) ) ;
68
69    if ( left  ) *left  =  vv     & 0xFF ;
70    if ( right ) *right = (vv>>8) & 0xFF ;
71 }
72
73 void smMixer::setVolume ( int channel, int  left, int  right )
74 {
75    ioctl ( MIXER_WRITE ( channel ), (( right & 255 ) << 8 ) | 
76       ( left & 255 ) ) ;
77 }
78
79 void smMixer::setTreble       ( int treble ) 
80
81    setVolume ( SOUND_MIXER_TREBLE , treble ) ; 
82 }
83
84 void smMixer::setBass         ( int bass   ) 
85
86    setVolume ( SOUND_MIXER_TREBLE , bass   ) ; 
87 }
88
89 void smMixer::setMasterVolume ( int volume ) 
90
91    setVolume ( SOUND_MIXER_VOLUME , volume ) ; 
92 }
93
94 void smMixer::setSynthVolume  ( int volume ) 
95
96    setVolume ( SOUND_MIXER_SYNTH  , volume ) ; 
97 }
98
99 void smMixer::setPCMVolume    ( int volume ) 
100
101    setVolume ( SOUND_MIXER_PCM    , volume ) ; 
102 }
103
104 void smMixer::setSpeakerVolume( int volume ) 
105
106    setVolume ( SOUND_MIXER_SPEAKER, volume ) ; 
107 }
108
109 void smMixer::setLineVolume   ( int volume ) 
110
111    setVolume ( SOUND_MIXER_LINE   , volume ) ; 
112 }
113
114 void smMixer::setMicVolume    ( int volume ) 
115
116    setVolume ( SOUND_MIXER_MIC    , volume ) ; 
117 }
118
119 void smMixer::setCDVolume     ( int volume ) 
120
121    setVolume ( SOUND_MIXER_CD     , volume ) ; 
122 }
123
124 void smMixer::setMasterVolume ( int left, int right ) 
125
126    setVolume ( SOUND_MIXER_VOLUME , left, right ) ; 
127 }
128
129 void smMixer::setSynthVolume  ( int left, int right ) 
130 {  
131    setVolume ( SOUND_MIXER_SYNTH  , left, right ) ; 
132 }
133
134 void smMixer::setPCMVolume    ( int left, int right ) 
135
136    setVolume ( SOUND_MIXER_PCM    , left, right ) ; 
137 }
138
139 void smMixer::setSpeakerVolume( int left, int right ) 
140
141    setVolume ( SOUND_MIXER_SPEAKER, left, right ) ; 
142 }
143
144 void smMixer::setLineVolume   ( int left, int right ) 
145
146    setVolume ( SOUND_MIXER_LINE   , left, right ) ; 
147 }
148
149 void smMixer::setMicVolume    ( int left, int right ) 
150
151    setVolume ( SOUND_MIXER_MIC    , left, right ) ; 
152 }
153
154 void smMixer::setCDVolume     ( int left, int right ) 
155
156    setVolume ( SOUND_MIXER_CD     , left, right ) ; 
157 }
158
159 #elif defined(__OpenBSD__)
160
161 /* ------------------------------------------------------------ */
162 /* OpenBSD 2.3                                                  */
163 /* ------------------------------------------------------------ */
164
165 void smMixer::open ( char *device )
166 {
167 }
168   
169 void smMixer::close (){}
170
171 smMixer::smMixer ()    { } 
172 smMixer::smMixer ( char *device ) { } 
173 smMixer::~smMixer ()         {}
174   
175 int smMixer::not_working () 
176
177    return error ; 
178 }
179
180   /* Volume controls are in integer percentages */
181
182 int  smMixer::getVolume ( int channel             ) { return 50 ; }
183 void smMixer::getVolume ( int channel, int *left, int *right )
184 {
185   if ( left  ) *left  = 50 ;
186   if ( right ) *right = 50 ;
187 }
188
189 void smMixer::setVolume ( int channel, int volume ) {}
190 void smMixer::setVolume ( int channel, int  left, int  right ){}
191 void smMixer::setTreble       ( int treble ) {}
192 void smMixer::setBass         ( int bass   ) {}
193 void smMixer::setMasterVolume ( int volume ) {}
194 void smMixer::setSynthVolume  ( int volume ) {}
195 void smMixer::setPCMVolume    ( int volume ) {}
196 void smMixer::setSpeakerVolume( int volume ) {}
197 void smMixer::setLineVolume   ( int volume ) {}
198 void smMixer::setMicVolume    ( int volume ) {}
199 void smMixer::setCDVolume     ( int volume ) {}
200 void smMixer::setMasterVolume ( int left, int right ) {}
201 void smMixer::setSynthVolume  ( int left, int right ) {}
202 void smMixer::setPCMVolume    ( int left, int right ) {}
203 void smMixer::setSpeakerVolume( int left, int right ) {}
204 void smMixer::setLineVolume   ( int left, int right ) {}
205 void smMixer::setMicVolume    ( int left, int right ) {}
206 void smMixer::setCDVolume     ( int left, int right ) {} 
207
208
209 #else
210 /* ------------------------------------------------------------ */
211 /* win32                                                        */
212 /* ------------------------------------------------------------ */
213
214 void smMixer::open ( char *device )
215 {
216 }
217   
218 void smMixer::close (){}
219
220 smMixer::smMixer ()    { } 
221 smMixer::smMixer ( char *device ) { } 
222 smMixer::~smMixer ()         {}
223   
224 int smMixer::not_working () 
225
226    return error ; 
227 }
228
229   /* Volume controls are in integer percentages */
230
231 int  smMixer::getVolume ( int channel             ) { return 50 ; }
232 void smMixer::getVolume ( int channel, int *left, int *right )
233 {
234   if ( left  ) *left  = 50 ;
235   if ( right ) *right = 50 ;
236 }
237
238 void smMixer::setVolume ( int channel, int volume ) {}
239 void smMixer::setVolume ( int channel, int  left, int  right ){}
240 void smMixer::setTreble       ( int treble ) {}
241 void smMixer::setBass         ( int bass   ) {}
242 void smMixer::setMasterVolume ( int volume ) {}
243 void smMixer::setSynthVolume  ( int volume ) {}
244 void smMixer::setPCMVolume    ( int volume ) {}
245 void smMixer::setSpeakerVolume( int volume ) {}
246 void smMixer::setLineVolume   ( int volume ) {}
247 void smMixer::setMicVolume    ( int volume ) {}
248 void smMixer::setCDVolume     ( int volume ) {}
249 void smMixer::setMasterVolume ( int left, int right ) {}
250 void smMixer::setSynthVolume  ( int left, int right ) {}
251 void smMixer::setPCMVolume    ( int left, int right ) {}
252 void smMixer::setSpeakerVolume( int left, int right ) {}
253 void smMixer::setLineVolume   ( int left, int right ) {}
254 void smMixer::setMicVolume    ( int left, int right ) {}
255 void smMixer::setCDVolume     ( int left, int right ) {} 
256
257
258 #endif