-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathSignalMixer.vb
53 lines (43 loc) · 1.3 KB
/
SignalMixer.vb
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
Imports System.ComponentModel.DataAnnotations
Public Class SignalMixer
Inherits BufferProvider
Private mFrequency As Double = 0
Private mSignalGenerators As New List(Of SignalGenerator)
Public Sub New()
End Sub
Public Overrides Sub Close()
MyBase.Close()
mSignalGenerators.ForEach(Sub(sg) sg.Close())
End Sub
Public ReadOnly Property SignalGenerators As List(Of SignalGenerator)
Get
Return mSignalGenerators
End Get
End Property
<RangeAttribute(0.0, Double.MaxValue)>
Public Overrides Property Frequency As Double
Get
Return mFrequency
End Get
Set(value As Double)
mFrequency = value
For Each sg In mSignalGenerators
sg.Frequency = mFrequency
Next
End Set
End Property
Public Overrides Property Note As Note
Get
Return MyBase.Note
End Get
Set(value As Note)
MyBase.Note = value
End Set
End Property
Protected Friend Overrides Sub FillAudioBuffer(audioBuffer() As Integer, isFirst As Boolean)
For Each sg In mSignalGenerators
sg.FillAudioBuffer(audioBuffer, isFirst)
If isFirst Then isFirst = False
Next
End Sub
End Class