-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathC64Sid.puml
More file actions
159 lines (139 loc) · 5.17 KB
/
C64Sid.puml
File metadata and controls
159 lines (139 loc) · 5.17 KB
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
@startuml Sid
title C64Sid
package SidLeft {
package AudioWorklet {
package Voice1 as Voice1SidProcessor {
[NoiseOscillator] as Voice1NoiseOscillator #LightGreen
[PulseOscillator] as Voice1PulseOscillator #LightGreen
[SawtoothOscillator] as Voice1SawtoothOscillator #LightGreen
[TriangleOscillator] as Voice1TriangleOscillator #LightGreen
[Average] as Voice1Average
Voice1NoiseOscillator --> Voice1Average
Voice1PulseOscillator --> Voice1Average
Voice1SawtoothOscillator --> Voice1Average
Voice1TriangleOscillator --> Voice1Average
}
package Voice2 as Voice2SidProcessor {
[NoiseOscillator] as Voice2NoiseOscillator #LightGreen
[PulseOscillator] as Voice2PulseOscillator #LightGreen
[SawtoothOscillator] as Voice2SawtoothOscillator #LightGreen
[TriangleOscillator] as Voice2TriangleOscillator #LightGreen
[Average] as Voice2Average
Voice2NoiseOscillator --> Voice2Average
Voice2PulseOscillator --> Voice2Average
Voice2SawtoothOscillator --> Voice2Average
Voice2TriangleOscillator --> Voice2Average
}
package Voice3 as Voice3SidProcessor {
[NoiseOscillator] as Voice3NoiseOscillator #LightGreen
[PulseOscillator] as Voice3PulseOscillator #LightGreen
[SawtoothOscillator] as Voice3SawtoothOscillator #LightGreen
[TriangleOscillator] as Voice3TriangleOscillator #LightGreen
[Average] as Voice3Average
Voice3NoiseOscillator --> Voice3Average
Voice3PulseOscillator --> Voice3Average
Voice3SawtoothOscillator --> Voice3Average
Voice3TriangleOscillator --> Voice3Average
}
}
package Voice1 {
[_adsrGain\nGainNode\nEnvelope] as Voice1AdsrGain #LightGoldenRodYellow
}
package Voice2 {
[_adsrGain\nGainNode\nEnvelope] as Voice2AdsrGain #LightGoldenRodYellow
}
package Voice3 {
[_adsrGain\nGainNode\nEnvelope] as Voice3AdsrGain #LightGoldenRodYellow
}
Voice1Average --> Voice1AdsrGain
Voice2Average --> Voice2AdsrGain
Voice3Average --> Voice3AdsrGain
package Filter {
[_inNode\nGainNode] as FilterInNode #LightGoldenRodYellow
[_lowPass\nBiquadFilterNode\nLowpass filter] as FilterLowPass #LightGreen
[_highPass\nBiquadFilterNode\nHighpass filter] as FilterHighPass #LightGreen
together {
[_bandPass\nBiquadFilterNode\nBandpass filter] as FilterBandPass #LightGreen
[_bandPassPeak\nBiquadFilterNode\nBandpass resonance] as FilterBandPassPeak #LightGreen
}
[_outNode\nGainNode] as FilterOutNode #LightGoldenRodYellow
[_in_out\nGainNode\non/off] as FilterInOut
together {
[_in_low\nGainNode\non/off] as FilterInLow
[_in_band\nGainNode\non/off] as FilterInBand
[_in_high\nGainNode\non/off] as FilterInHigh
}
[_low_band\nGainNode\non/off] as FilterLowBand
[_low_high\nGainNode\non/off] as FilterLowHigh
[_band_high\nGainNode\non/off] as FilterBandHigh
together {
[_low_out\nGainNode\non/off] as FilterLowOut
[_band_out\nGainNode\non/off] as FilterBandOut
[_high_out\nGainNode\non/off] as FilterHighOut
}
FilterInNode --> FilterInOut
FilterInOut --> FilterOutNode
FilterInNode --> FilterInLow
FilterInLow --> FilterLowPass
FilterInNode --> FilterInBand
FilterInBand --> FilterBandPass
FilterBandPass --> FilterBandPassPeak
FilterInNode --> FilterInHigh
FilterInHigh --> FilterHighPass
FilterLowPass -> FilterLowBand
FilterLowBand -> FilterBandPass
FilterLowPass -> FilterLowHigh
FilterLowHigh -> FilterHighPass
FilterBandPassPeak -> FilterBandHigh
FilterBandHigh -> FilterHighPass
FilterLowPass --> FilterLowOut
FilterLowOut --> FilterOutNode
FilterBandPassPeak --> FilterBandOut
FilterBandOut --> FilterOutNode
FilterHighPass --> FilterHighOut
FilterHighOut --> FilterOutNode
}
[_mainGain\nGainNode\nVolume] as SidMainGain #LightGoldenRodYellow
together {
[_v1_gain\nGainNode\n1/3] as SidV1Gain #LightGoldenRodYellow
[_v2_gain\nGainNode\n1/3] as SidV2Gain #LightGoldenRodYellow
[_v3_gain\nGainNode\n1/3] as SidV3Gain #LightGoldenRodYellow
}
together {
[_v1_filter\nGainNode\non/off] as SidV1Filter
[_v2_filter\nGainNode\non/off] as SidV2Filter
[_v3_filter\nGainNode\non/off] as SidV3Filter
}
[_v3_switch\nGainNode\non/off] as SidV3Switch
together {
[_v1_main\nGainNode\non/off] as SidV1Main
[_v2_main\nGainNode\non/off] as SidV2Main
[_v3_main\nGainNode\non/off] as SidV3Main
}
Voice1AdsrGain --> SidV1Gain
SidV1Gain --> SidV1Filter
SidV1Filter --> FilterInNode
SidV1Gain --> SidV1Main
SidV1Main --> SidMainGain
Voice2AdsrGain --> SidV2Gain
SidV2Gain --> SidV2Filter
SidV2Filter --> FilterInNode
SidV2Gain --> SidV2Main
SidV2Main --> SidMainGain
Voice3AdsrGain --> SidV3Switch
SidV3Switch -> SidV3Gain
SidV3Gain --> SidV3Filter
SidV3Filter --> FilterInNode
SidV3Gain --> SidV3Main
SidV3Main --> SidMainGain
FilterOutNode --> SidMainGain
}
package SidRight {
[...] as SidRightContent
}
[ChannelMergerNode] as ChannelMerger #LightGreen
[audioContext.destination] as Destination #LightPink
SidMainGain --> ChannelMerger
SidRightContent --> ChannelMerger
ChannelMerger --> Destination
@enduml