-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathclsSounds.cls
161 lines (108 loc) · 3.67 KB
/
clsSounds.cls
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
Persistable = 0 'NotPersistable
DataBindingBehavior = 0 'vbNone
DataSourceBehavior = 0 'vbNone
MTSTransactionMode = 0 'NotAnMTSObject
END
Attribute VB_Name = "clsSounds"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
'Raw / Not Elagant use of DS_Functions.bas to play multiple sounds....
Private Type tMyBuff
Buffer As IDirectSoundBuffer8
FileName As String
End Type
Private DirectSound As DirectSound8
Private Const BUFFLEN As Long = 31
Private SoundsSET() As tMyBuff
Private Sub Class_Initialize()
Dim desc As DSBUFFERDESC
Dim I As Long
Set DirectSound = New DirectSound8
DirectSound.Initialize ByVal 0
DirectSound.SetCooperativeLevel fMain.hWnd, DSSCL_NORMAL
ReDim SoundsSET(BUFFLEN)
desc.dwFlags = DSBCAPS_CTRLVOLUME Or DSBCAPS_CTRLPAN 'Or DSBCAPS_CTRLFREQUENCY Or DSBCAPS_CTRLFX
For I = 0 To BUFFLEN
SoundsSET(I).FileName = "reloj-34721.MP3"
Set SoundsSET(I).Buffer = DSCreateSoundBufferFromFile(DirectSound, App.Path & "\snd\" & SoundPlayerChomp, desc)
Next
End Sub
Public Sub PlaySoundOLD(S As String, Optional Pan As Long = 0, Optional Volume As Long = 0)
Dim desc As DSBUFFERDESC
Dim I As Long
desc.dwFlags = DSBCAPS_CTRLVOLUME Or DSBCAPS_CTRLPAN
For I = 0 To BUFFLEN
With SoundsSET(I)
If .FileName = S Then
If .Buffer.GetStatus <> DSBSTATUS_PLAYING Then
.Buffer.SetPan Pan
.Buffer.SetVolume Volume
.Buffer.Play 0, 0, 0
Exit For
End If
Else
If .Buffer.GetStatus <> DSBSTATUS_PLAYING Then
Set .Buffer = DSCreateSoundBufferFromFile(DirectSound, App.Path & "\Snd\" & S, desc)
.Buffer.SetPan Pan
.Buffer.SetVolume Volume
.Buffer.Play 0, 0, 0
.FileName = S
Exit For
End If
End If
End With
Next
End Sub
Public Sub PlaySound(S As String, Optional Pan As Long = 0, Optional Volume As Long = 0)
Dim desc As DSBUFFERDESC
Dim I As Long
Dim CanExitSub As Long
desc.dwFlags = DSBCAPS_CTRLVOLUME Or DSBCAPS_CTRLPAN
For I = 0 To BUFFLEN
With SoundsSET(I)
If .Buffer.GetStatus <> DSBSTATUS_PLAYING Then
If .FileName = S Then
.Buffer.SetPan Pan
.Buffer.SetVolume Volume
.Buffer.Play 0, 0, 0
CanExitSub = -1
Exit For
End If
End If
End With
Next
If CanExitSub Then Exit Sub
For I = 0 To BUFFLEN
With SoundsSET(I)
If .Buffer.GetStatus <> DSBSTATUS_PLAYING Then
Set .Buffer = DSCreateSoundBufferFromFile(DirectSound, App.Path & "\Snd\" & S, desc)
.Buffer.SetPan Pan
.Buffer.SetVolume Volume
.Buffer.Play 0, 0, 0
.FileName = S
Exit For
End If
End With
Next
End Sub
Private Sub Class_Terminate()
Dim I As Long
For I = 0 To BUFFLEN
Set SoundsSET(I).Buffer = Nothing
Next
Set DirectSound = Nothing
End Sub
Public Property Get DataSource() As DataSource
End Property
Public Property Set DataSource(ByVal objDataSource As DataSource)
End Property
Public Property Get DataMember() As DataMember
End Property
Public Property Let DataMember(ByVal DataMember As DataMember)
End Property