Main Page | Data Structures | File List | Data Fields | Globals | Related Pages

include/dsound.h

Go to the documentation of this file.
00001 
00006 /*
00007  *  The contents of this file are subject to the Mozilla Public License
00008  *  Version 1.0 (the "License"); you may not use this file except in
00009  *  compliance with the License. You may obtain a copy of the License
00010  *  at http://www.mozilla.org/MPL/
00011  *
00012  *  Software distributed under the License is distributed on an "AS IS"
00013  *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
00014  *  the License for the specific language governing rights and
00015  *  limitations under the License.
00016  *
00017  *  The Original Code is legOS code, released October 17, 1999.
00018  *
00019  *  The Initial Developer of the Original Code is Markus L. Noga.
00020  *  Portions created by Markus L. Noga are Copyright (C) 1999
00021  *  Markus L. Noga. All Rights Reserved.
00022  *
00023  *  Contributor(s): Markus L. Noga <markus@noga.de>
00024  *                  Froods <froods@alphalink.com.au>
00025  */
00026 
00027 #ifndef __dsound_h__
00028 #define __dsound_h__
00029 
00030 #ifdef  __cplusplus
00031 extern "C" {
00032 #endif
00033 
00034 #include <config.h>
00035 
00036 #ifdef CONF_DSOUND
00037 
00038 #include <time.h>
00039 
00040 #include <unistd.h>
00041 
00043 //
00044 // Definitions
00045 //
00047 
00056 typedef struct {
00057   unsigned char pitch;      
00058   unsigned char length;     
00059 } note_t;
00060 
00061 
00063 
00064 
00066 #define WHOLE            16
00067 
00069 #define HALF             8
00070 
00072 #define QUARTER          4
00073 
00075 #define EIGHTH           2
00076 
00078 
00079 
00080 //  PITCH_H is European equivalent to American B note.
00081 
00083 
00084 
00086 #define PITCH_A0         0
00087 #define PITCH_Am0        1
00088 #define PITCH_H0         2
00089 #define PITCH_C1         3
00090 #define PITCH_Cm1        4
00091 #define PITCH_D1         5
00092 #define PITCH_Dm1        6
00093 #define PITCH_E1         7
00094 #define PITCH_F1         8
00095 #define PITCH_Fm1        9
00096 #define PITCH_G1         10
00097 #define PITCH_Gm1        11
00098 #define PITCH_A1         12
00099 #define PITCH_Am1        13
00100 #define PITCH_H1         14
00101 #define PITCH_C2         15
00102 #define PITCH_Cm2        16
00103 #define PITCH_D2         17
00104 #define PITCH_Dm2        18
00105 #define PITCH_E2         19
00106 #define PITCH_F2         20
00107 #define PITCH_Fm2        21
00108 #define PITCH_G2         22
00109 #define PITCH_Gm2        23
00110 #define PITCH_A2         24
00111 #define PITCH_Am2        25
00112 #define PITCH_H2         26
00113 #define PITCH_C3         27
00114 #define PITCH_Cm3        28
00115 #define PITCH_D3         29
00116 #define PITCH_Dm3        30
00117 #define PITCH_E3         31
00118 #define PITCH_F3         32
00119 #define PITCH_Fm3        33
00120 #define PITCH_G3         34
00121 #define PITCH_Gm3        35
00122 #define PITCH_A3         36
00123 #define PITCH_Am3        37
00124 #define PITCH_H3         38
00125 #define PITCH_C4         39
00126 #define PITCH_Cm4        40
00127 #define PITCH_D4         41
00128 #define PITCH_Dm4        42
00129 #define PITCH_E4         43
00130 #define PITCH_F4         44
00131 #define PITCH_Fm4        45
00132 #define PITCH_G4         46
00133 #define PITCH_Gm4        47
00134 #define PITCH_A4         48
00135 #define PITCH_Am4        49
00136 #define PITCH_H4         50
00137 #define PITCH_C5         51
00138 #define PITCH_Cm5        52
00139 #define PITCH_D5         53
00140 #define PITCH_Dm5        54
00141 #define PITCH_E5         55
00142 #define PITCH_F5         56
00143 #define PITCH_Fm5        57
00144 #define PITCH_G5         58
00145 #define PITCH_Gm5        59
00146 #define PITCH_A5         60
00147 #define PITCH_Am5        61
00148 #define PITCH_H5         62
00149 #define PITCH_C6         63
00150 #define PITCH_Cm6        64
00151 #define PITCH_D6         65
00152 #define PITCH_Dm6        66
00153 #define PITCH_E6         67
00154 #define PITCH_F6         68
00155 #define PITCH_Fm6        69
00156 #define PITCH_G6         70
00157 #define PITCH_Gm6        71
00158 #define PITCH_A6         72
00159 #define PITCH_Am6        73
00160 #define PITCH_H6         74
00161 #define PITCH_C7         75
00162 #define PITCH_Cm7        76
00163 #define PITCH_D7         77
00164 #define PITCH_Dm7        78
00165 #define PITCH_E7         79
00166 #define PITCH_F7         80
00167 #define PITCH_Fm7        81
00168 #define PITCH_G7         82
00169 #define PITCH_Gm7        83
00170 #define PITCH_A7         84
00171 #define PITCH_Am7        85
00172 #define PITCH_H7         86
00173 #define PITCH_C8         87
00174 #define PITCH_Cm8        88
00175 #define PITCH_D8         89
00176 #define PITCH_Dm8        90
00177 #define PITCH_E8         91
00178 #define PITCH_F8         92
00179 #define PITCH_Fm8        93
00180 #define PITCH_G8         94
00181 #define PITCH_Gm8        95
00182 #define PITCH_A8         96
00183 
00185 
00187 #define PITCH_PAUSE      97
00188 
00190 #define PITCH_MAX        98
00191 
00193 #define PITCH_END        255
00194 
00195 
00197 #define DSOUND_BEEP      0
00198 
00200 #define DSOUND_SYS_MAX   1
00201 
00202 
00204 #define DSOUND_DEFAULT_16th_ms  200
00205 
00207 #define DSOUND_DEFAULT_internote_ms  15
00208 
00210 //
00211 // Variables
00212 //
00214 
00215 #ifndef DOXYGEN_SHOULD_SKIP_INTERNALS
00216 
00217 extern unsigned dsound_16th_ms;                  
00218 extern unsigned dsound_internote_ms;             
00219 extern volatile note_t *dsound_next_note;        
00220 extern volatile time_t dsound_next_time;         
00221 
00222 extern const note_t *dsound_system_sounds[];     
00223 
00224 #endif // DOXYGEN_SHOULD_SKIP_INTERNALS
00225 
00226 
00228 //
00229 // User functions
00230 //
00232 
00234 static inline void dsound_play(const note_t *notes) {
00235   dsound_next_note=(volatile note_t*) notes;
00236   dsound_next_time=0;
00237 }
00238 
00240 static inline void dsound_system(unsigned nr) {
00241   if(nr<DSOUND_SYS_MAX)
00242     dsound_play(dsound_system_sounds[nr]);
00243 }
00244 
00246 static inline unsigned dsound_set_duration(unsigned duration) {
00247   unsigned orig_duration = dsound_16th_ms;
00248   dsound_16th_ms=duration;
00249   return orig_duration;
00250 }
00251 
00253 
00255 static inline void dsound_set_internote(unsigned duration) {
00256   dsound_internote_ms=duration;
00257 }
00258 
00260 static inline int dsound_playing(void) {
00261   return dsound_next_note!=0;
00262 }
00263 
00265 extern wakeup_t dsound_finished(wakeup_t data);
00266 
00268 extern void dsound_stop(void);
00269 
00270 #endif // CONF_DSOUND
00271 
00272 #ifdef  __cplusplus
00273 }
00274 #endif
00275 
00276 #endif  /* __dsound_h__ */

brickOS is released under the Mozilla Public License.
Original code copyright 1998-2002 by the authors.

Generated on Mon Feb 16 21:01:52 2004 for brickOS C by doxygen 1.3.5