/*
* The contents of this file are subject to the Mozilla Public License
* Version 1.0 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS"
* basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
* License for the specific language governing rights and limitations
* under the License.
*
* The Original Code is legOS code, released October 17, 1999.
*
* The Initial Developer of the Original Code is Markus L. Noga.
* Portions created by Markus L. Noga are Copyright (C) 1999
* Markus L. Noga. All Rights Reserved.
*
* Contributor(s): Markus L. Noga <markus@noga.de>
* Froods <froods@alphalink.com.au>
*/
#ifndef __dsound_h__
#define __dsound_h__
#include <config.h>
#ifdef CONF_DSOUND
#include <time.h>
#include <unistd.h>
//
// Definitions
//
typedef struct {
unsigned char pitch;
unsigned char length;
} note_t;
#define WHOLE 16
#define HALF 8
#define QUARTER 4
#define EIGHTH 2
// PITCH_H is European equivalent to American B note.
#define PITCH_A0 0
#define PITCH_Am0 1
#define PITCH_H0 2
#define PITCH_C1 3
#define PITCH_Cm1 4
#define PITCH_D1 5
#define PITCH_Dm1 6
#define PITCH_E1 7
#define PITCH_F1 8
#define PITCH_Fm1 9
#define PITCH_G1 10
#define PITCH_Gm1 11
#define PITCH_A1 12
#define PITCH_Am1 13
#define PITCH_H1 14
#define PITCH_C2 15
#define PITCH_Cm2 16
#define PITCH_D2 17
#define PITCH_Dm2 18
#define PITCH_E2 19
#define PITCH_F2 20
#define PITCH_Fm2 21
#define PITCH_G2 22
#define PITCH_Gm2 23
#define PITCH_A2 24
#define PITCH_Am2 25
#define PITCH_H2 26
#define PITCH_C3 27
#define PITCH_Cm3 28
#define PITCH_D3 29
#define PITCH_Dm3 30
#define PITCH_E3 31
#define PITCH_F3 32
#define PITCH_Fm3 33
#define PITCH_G3 34
#define PITCH_Gm3 35
#define PITCH_A3 36
#define PITCH_Am3 37
#define PITCH_H3 38
#define PITCH_C4 39
#define PITCH_Cm4 40
#define PITCH_D4 41
#define PITCH_Dm4 42
#define PITCH_E4 43
#define PITCH_F4 44
#define PITCH_Fm4 45
#define PITCH_G4 46
#define PITCH_Gm4 47
#define PITCH_A4 48
#define PITCH_Am4 49
#define PITCH_H4 50
#define PITCH_C5 51
#define PITCH_Cm5 52
#define PITCH_D5 53
#define PITCH_Dm5 54
#define PITCH_E5 55
#define PITCH_F5 56
#define PITCH_Fm5 57
#define PITCH_G5 58
#define PITCH_Gm5 59
#define PITCH_A5 60
#define PITCH_Am5 61
#define PITCH_H5 62
#define PITCH_C6 63
#define PITCH_Cm6 64
#define PITCH_D6 65
#define PITCH_Dm6 66
#define PITCH_E6 67
#define PITCH_F6 68
#define PITCH_Fm6 69
#define PITCH_G6 70
#define PITCH_Gm6 71
#define PITCH_A6 72
#define PITCH_Am6 73
#define PITCH_H6 74
#define PITCH_C7 75
#define PITCH_Cm7 76
#define PITCH_D7 77
#define PITCH_Dm7 78
#define PITCH_E7 79
#define PITCH_F7 80
#define PITCH_Fm7 81
#define PITCH_G7 82
#define PITCH_Gm7 83
#define PITCH_A7 84
#define PITCH_Am7 85
#define PITCH_H7 86
#define PITCH_C8 87
#define PITCH_Cm8 88
#define PITCH_D8 89
#define PITCH_Dm8 90
#define PITCH_E8 91
#define PITCH_F8 92
#define PITCH_Fm8 93
#define PITCH_G8 94
#define PITCH_Gm8 95
#define PITCH_A8 96
#define PITCH_PAUSE 97
#define PITCH_MAX 98
#define PITCH_END 255
#define DSOUND_BEEP 0
#define DSOUND_SYS_MAX 1
#define DSOUND_DEFAULT_16th_ms 200
#define DSOUND_DEFAULT_internote_ms 15
//
// Variables
//
extern unsigned dsound_16th_ms;
extern unsigned dsound_internote_ms;
extern volatile note_t *dsound_next_note;
extern volatile time_t dsound_next_time;
extern const note_t *dsound_system_sounds[];
//
// User functions
//
static inline void dsound_play(const note_t *notes) {
dsound_next_note=(volatile note_t*) notes;
dsound_next_time=0;
}
static inline void dsound_system(unsigned nr) {
if(nr<DSOUND_SYS_MAX)
dsound_play(dsound_system_sounds[nr]);
}
static inline void dsound_set_duration(unsigned duration) {
dsound_16th_ms=duration;
}
static inline void dsound_set_internote(unsigned duration) {
dsound_internote_ms=duration;
}
static inline int dsound_playing(void) {
return dsound_next_note!=0;
}
extern wakeup_t dsound_finished(wakeup_t data);
extern void dsound_stop(void);
#endif // CONF_DSOUND
#endif /* __dsound_h__ */
legOS-0.2.4 is released under the