feat(synth): add LFO modulation, ADSR envelopes, pentatonic tuning, and soft limiter
Replace static EMA-smoothed drones with an evolving ambient soundscape: - ADSR envelope system with sustained (2s attack, 4s release) and bursty (30ms attack, no sustain) modes per protocol group - LFO pitch wobble and amplitude tremolo with incommensurable rates per group (Eno technique) so modulation patterns never repeat - C major pentatonic frequency tuning (just intonation) — any combination of active protocols sounds consonant - tanh soft limiter on master output prevents clipping - Sync all documentation: README, PROJECT.md, ARCHITECTURE.md, v1.2 requirements traceability Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+146
-136
@@ -69,302 +69,312 @@ type FreqConfig struct {
|
||||
Pan float64 // [-1, 1]: -1=full left, 0=center, +1=full right
|
||||
WaveformType WaveformType // zero value WaveformCustom uses Harmonics as-is
|
||||
Group string // sound family: "Infrastructure", "Web", "Mail", "Remote Access", "Unknown", etc.
|
||||
Bursty bool // true for event-like protocols (DNS, ICMP, NTP) — fast attack, no sustain
|
||||
}
|
||||
|
||||
// Frequency Allocation Table (Phase 9 design — major-second ladder, 65-2449 Hz)
|
||||
// Frequency Allocation Table — C Major Pentatonic, Just Intonation
|
||||
//
|
||||
// Slot Hz Class Group Waveform Pan
|
||||
// 0 65 ICMP Infrastructure Triangle -0.3
|
||||
// 1 73 NTP Infrastructure Triangle -0.1
|
||||
// 2 82 DHCP Infrastructure Triangle 0.1
|
||||
// 3 93 mDNS Infrastructure Triangle 0.3 (Phase 10)
|
||||
// 4 105 SSDP Infrastructure Triangle -0.2 (Phase 10)
|
||||
// 5 118 SNMP Infrastructure Triangle 0.2 (Phase 10)
|
||||
// 6 133 DNS Infrastructure Triangle 0.0
|
||||
// 7 150 HTTPS Web Sawtooth -0.4
|
||||
// 8 169 HTTP Web Sawtooth -0.3
|
||||
// 9 190 HTTP3 Web Sawtooth -0.2 (Phase 10)
|
||||
// 10 214 SMTP Mail Triangle 0.2
|
||||
// 11 241 IMAP Mail Triangle 0.3 (Phase 10)
|
||||
// 12 271 POP3 Mail Triangle 0.4 (Phase 10)
|
||||
// 13 305 SMTP-sub Mail Triangle 0.5 (Phase 10)
|
||||
// 14 343 SSH Remote Access Square -0.7
|
||||
// 15 385 RDP Remote Access Square -0.6 (Phase 10)
|
||||
// 16 432 Telnet Remote Access Square -0.5 (Phase 10)
|
||||
// 17 485 VNC Remote Access Square -0.4 (Phase 10)
|
||||
// 18 545 FTP File Transfer Square 0.5 (Phase 10)
|
||||
// 19 612 SMB File Transfer Square 0.6 (Phase 10)
|
||||
// 20 687 TFTP File Transfer Square 0.7 (Phase 10)
|
||||
// 21 771 unknown-1 Unknown Custom -0.9
|
||||
// 22 866 unknown-2 Unknown Custom 0.9
|
||||
// 23 972 unknown-3 Unknown Custom -0.7
|
||||
// 24 1091 unknown-4 Unknown Custom 0.7
|
||||
// 25 1225 other-TCP Unknown Custom -0.5
|
||||
// 26 1375 other-UDP Unknown Custom 0.5
|
||||
// 27 1543 MySQL Database Sawtooth -0.4 (Phase 10)
|
||||
// 28 1732 PostgreSQL Database Sawtooth -0.2 (Phase 10)
|
||||
// 29 1944 Redis Database Sawtooth 0.2 (Phase 10)
|
||||
// 30 2182 MongoDB Database Sawtooth 0.4 (Phase 10)
|
||||
// 31 2449 SIP VoIP Sine 0.0 (Phase 10)
|
||||
// Scale: C D E G A across octaves 2-7 (ratios 1/1, 9/8, 5/4, 3/2, 5/3)
|
||||
// Any combination of active tones is consonant — no dissonant intervals possible.
|
||||
//
|
||||
// Auto-assign range: [2500, 4000] Hz (see config/config.go)
|
||||
// Slot Note Hz Class Group Waveform Pan Bursty
|
||||
// 0 C2 65.4 ICMP Infrastructure Triangle -0.3 yes
|
||||
// 1 D2 73.6 NTP Infrastructure Triangle -0.1 yes
|
||||
// 2 E2 81.8 DHCP Infrastructure Triangle 0.1 yes
|
||||
// 3 G2 98.0 mDNS Infrastructure Triangle 0.3 yes
|
||||
// 4 A2 109.0 SSDP Infrastructure Triangle -0.2 yes
|
||||
// 5 C3 130.8 SNMP Infrastructure Triangle 0.2 yes
|
||||
// 6 D3 146.8 DNS Infrastructure Triangle 0.0 yes
|
||||
// 7 E3 163.5 HTTPS Web Sawtooth -0.4 no
|
||||
// 8 G3 196.0 HTTP Web Sawtooth -0.3 no
|
||||
// 9 A3 218.0 QUIC Web Sawtooth -0.2 no
|
||||
// 10 C4 261.6 SMTP Mail Triangle 0.2 no
|
||||
// 11 D4 293.7 IMAP Mail Triangle 0.3 no
|
||||
// 12 E4 327.0 POP3 Mail Triangle 0.4 no
|
||||
// 13 G4 392.0 SMTP-sub Mail Triangle 0.5 no
|
||||
// 14 A4 436.0 SSH Remote Access Square -0.7 no
|
||||
// 15 C5 523.3 RDP Remote Access Square -0.6 no
|
||||
// 16 D5 587.3 Telnet Remote Access Square -0.5 no
|
||||
// 17 E5 654.1 VNC Remote Access Square -0.4 no
|
||||
// 18 G5 784.0 FTP File Transfer Square 0.5 no
|
||||
// 19 A5 872.1 SMB File Transfer Square 0.6 no
|
||||
// 20 C6 1046.5 TFTP File Transfer Square 0.7 no
|
||||
// 21 D6 1174.7 unknown-1 Unknown Custom -0.9 no
|
||||
// 22 E6 1308.1 unknown-2 Unknown Custom 0.9 no
|
||||
// 23 G6 1568.0 unknown-3 Unknown Custom -0.7 no
|
||||
// 24 A6 1744.2 unknown-4 Unknown Custom 0.7 no
|
||||
// 25 C7 2093.0 other-TCP Unknown Custom -0.5 no
|
||||
// 26 D7 2349.3 other-UDP Unknown Custom 0.5 no
|
||||
// 27 E7 2616.1 MySQL Database Sawtooth -0.4 no
|
||||
// 28 G7 3136.0 PostgreSQL Database Sawtooth -0.2 no
|
||||
// 29 A7 3488.4 Redis Database Sawtooth 0.2 no
|
||||
// 30 C8 4186.0 MongoDB Database Sawtooth 0.4 no
|
||||
// 31 D8 4704.0 SIP VoIP Sine 0.0 no
|
||||
//
|
||||
// Auto-assign range: [5000, 8000] Hz (see config/config.go)
|
||||
// LDAP, Kerberos, Syslog: assigned to pentatonic slots in octave 3 (infrastructure)
|
||||
|
||||
// ClassFreqConfigs maps each traffic class to its synthesis parameters.
|
||||
// Frequencies per Phase 9 major-second ladder design. Harmonics per D-05/D-06.
|
||||
// Frequencies: C Major Pentatonic (just intonation) across octaves 2-8.
|
||||
// Pan positions per D-12. Group field drives family-aware config output (GRP-04).
|
||||
var ClassFreqConfigs = map[classify.TrafficClass]FreqConfig{
|
||||
// --- Infrastructure (Triangle, 65-133 Hz) ---
|
||||
// --- Infrastructure (Triangle, C2-D3, bursty) ---
|
||||
classify.ClassICMP: {
|
||||
BaseHz: 65.0,
|
||||
BaseHz: 65.4, // C2
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 65.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 65.4, SampleRate),
|
||||
Pan: -0.3,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassNTP: {
|
||||
BaseHz: 73.0,
|
||||
BaseHz: 73.6, // D2
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 73.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 73.6, SampleRate),
|
||||
Pan: -0.1,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassDHCP: {
|
||||
BaseHz: 82.0,
|
||||
BaseHz: 81.8, // E2
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 82.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 81.8, SampleRate),
|
||||
Pan: 0.1,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassMDNS: {
|
||||
BaseHz: 98.0, // G2
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 98.0, SampleRate),
|
||||
Pan: 0.3,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassSSDP: {
|
||||
BaseHz: 109.0, // A2
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 109.0, SampleRate),
|
||||
Pan: -0.2,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassSNMP: {
|
||||
BaseHz: 130.8, // C3
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 130.8, SampleRate),
|
||||
Pan: 0.2,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassDNS: {
|
||||
BaseHz: 133.0,
|
||||
BaseHz: 146.8, // D3
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 133.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 146.8, SampleRate),
|
||||
Pan: 0.0,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
// --- Web (Sawtooth, 150-169 Hz) ---
|
||||
// --- Web (Sawtooth, E3-A3, sustained) ---
|
||||
classify.ClassHTTPS: {
|
||||
BaseHz: 150.0,
|
||||
BaseHz: 163.5, // E3
|
||||
WaveformType: WaveformSawtooth,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 150.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 163.5, SampleRate),
|
||||
Pan: -0.4,
|
||||
Group: "Web",
|
||||
},
|
||||
classify.ClassHTTP: {
|
||||
BaseHz: 169.0,
|
||||
BaseHz: 196.0, // G3
|
||||
WaveformType: WaveformSawtooth,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 169.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 196.0, SampleRate),
|
||||
Pan: -0.3,
|
||||
Group: "Web",
|
||||
},
|
||||
// --- Mail (Triangle, 214 Hz) ---
|
||||
classify.ClassSMTP: {
|
||||
BaseHz: 214.0,
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 214.0, SampleRate),
|
||||
Pan: 0.2,
|
||||
Group: "Mail",
|
||||
},
|
||||
// --- Infrastructure additions (Triangle, 93-118 Hz) ---
|
||||
classify.ClassMDNS: {
|
||||
BaseHz: 93.0,
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 93.0, SampleRate),
|
||||
Pan: 0.3,
|
||||
Group: "Infrastructure",
|
||||
},
|
||||
classify.ClassSSDP: {
|
||||
BaseHz: 105.0,
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 105.0, SampleRate),
|
||||
Pan: -0.2,
|
||||
Group: "Infrastructure",
|
||||
},
|
||||
classify.ClassSNMP: {
|
||||
BaseHz: 118.0,
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 118.0, SampleRate),
|
||||
Pan: 0.2,
|
||||
Group: "Infrastructure",
|
||||
},
|
||||
// --- Web addition (Sawtooth, 190 Hz) ---
|
||||
classify.ClassQUIC: {
|
||||
BaseHz: 190.0,
|
||||
BaseHz: 218.0, // A3
|
||||
WaveformType: WaveformSawtooth,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 190.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 218.0, SampleRate),
|
||||
Pan: -0.2,
|
||||
Group: "Web",
|
||||
},
|
||||
// --- Mail additions (Triangle, 241-305 Hz) ---
|
||||
classify.ClassIMAP: {
|
||||
BaseHz: 241.0,
|
||||
// --- Mail (Triangle, C4-G4) ---
|
||||
classify.ClassSMTP: {
|
||||
BaseHz: 261.6, // C4
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 241.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 261.6, SampleRate),
|
||||
Pan: 0.2,
|
||||
Group: "Mail",
|
||||
},
|
||||
classify.ClassIMAP: {
|
||||
BaseHz: 293.7, // D4
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 293.7, SampleRate),
|
||||
Pan: 0.3,
|
||||
Group: "Mail",
|
||||
},
|
||||
classify.ClassPOP3: {
|
||||
BaseHz: 271.0,
|
||||
BaseHz: 327.0, // E4
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 271.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 327.0, SampleRate),
|
||||
Pan: 0.4,
|
||||
Group: "Mail",
|
||||
},
|
||||
classify.ClassSMTPSub: {
|
||||
BaseHz: 305.0,
|
||||
BaseHz: 392.0, // G4
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 305.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 392.0, SampleRate),
|
||||
Pan: 0.5,
|
||||
Group: "Mail",
|
||||
},
|
||||
// --- Remote Access (Square, 343 Hz) ---
|
||||
// --- Remote Access (Square, A4-E5) ---
|
||||
classify.ClassSSH: {
|
||||
BaseHz: 343.0,
|
||||
BaseHz: 436.0, // A4
|
||||
WaveformType: WaveformSquare,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 343.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 436.0, SampleRate),
|
||||
Pan: -0.7,
|
||||
Group: "Remote Access",
|
||||
},
|
||||
// --- Remote Access additions (Square, 385-485 Hz) ---
|
||||
classify.ClassRDP: {
|
||||
BaseHz: 385.0,
|
||||
BaseHz: 523.3, // C5
|
||||
WaveformType: WaveformSquare,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 385.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 523.3, SampleRate),
|
||||
Pan: -0.6,
|
||||
Group: "Remote Access",
|
||||
},
|
||||
classify.ClassTelnet: {
|
||||
BaseHz: 432.0,
|
||||
BaseHz: 587.3, // D5
|
||||
WaveformType: WaveformSquare,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 432.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 587.3, SampleRate),
|
||||
Pan: -0.5,
|
||||
Group: "Remote Access",
|
||||
},
|
||||
classify.ClassVNC: {
|
||||
BaseHz: 485.0,
|
||||
BaseHz: 654.1, // E5
|
||||
WaveformType: WaveformSquare,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 485.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 654.1, SampleRate),
|
||||
Pan: -0.4,
|
||||
Group: "Remote Access",
|
||||
},
|
||||
// --- File Transfer additions (Square, 545-687 Hz) ---
|
||||
// --- File Transfer (Square, G5-C6) ---
|
||||
classify.ClassFTP: {
|
||||
BaseHz: 545.0,
|
||||
BaseHz: 784.0, // G5
|
||||
WaveformType: WaveformSquare,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 545.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 784.0, SampleRate),
|
||||
Pan: 0.5,
|
||||
Group: "File Transfer",
|
||||
},
|
||||
classify.ClassSMB: {
|
||||
BaseHz: 612.0,
|
||||
BaseHz: 872.1, // A5
|
||||
WaveformType: WaveformSquare,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 612.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 872.1, SampleRate),
|
||||
Pan: 0.6,
|
||||
Group: "File Transfer",
|
||||
},
|
||||
classify.ClassTFTP: {
|
||||
BaseHz: 687.0,
|
||||
BaseHz: 1046.5, // C6
|
||||
WaveformType: WaveformSquare,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 687.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSquare, 1046.5, SampleRate),
|
||||
Pan: 0.7,
|
||||
Group: "File Transfer",
|
||||
},
|
||||
// --- Unknown (Custom harmonics, 771-1375 Hz) ---
|
||||
// D-05/D-06: dissonant harmonic character {1,1.0},{2,0.8},{3,0.4} retained for all Unknown entries.
|
||||
// WaveformType is zero value (WaveformCustom) so bank.go uses the stored Harmonics directly.
|
||||
// --- Unknown (Custom harmonics, D6-D7) ---
|
||||
// Dissonant harmonic character {1,1.0},{2,0.8},{3,0.4} retained for all Unknown entries.
|
||||
classify.ClassUnknown1: {
|
||||
BaseHz: 771.0,
|
||||
BaseHz: 1174.7, // D6
|
||||
Harmonics: []HarmonicDef{{1, 1.0}, {2, 0.8}, {3, 0.4}},
|
||||
Pan: -0.9,
|
||||
Group: "Unknown",
|
||||
},
|
||||
classify.ClassUnknown2: {
|
||||
BaseHz: 866.0,
|
||||
BaseHz: 1308.1, // E6
|
||||
Harmonics: []HarmonicDef{{1, 1.0}, {2, 0.8}, {3, 0.4}},
|
||||
Pan: 0.9,
|
||||
Group: "Unknown",
|
||||
},
|
||||
classify.ClassUnknown3: {
|
||||
BaseHz: 972.0,
|
||||
BaseHz: 1568.0, // G6
|
||||
Harmonics: []HarmonicDef{{1, 1.0}, {2, 0.8}, {3, 0.4}},
|
||||
Pan: -0.7,
|
||||
Group: "Unknown",
|
||||
},
|
||||
classify.ClassUnknown4: {
|
||||
BaseHz: 1091.0,
|
||||
BaseHz: 1744.2, // A6
|
||||
Harmonics: []HarmonicDef{{1, 1.0}, {2, 0.8}, {3, 0.4}},
|
||||
Pan: 0.7,
|
||||
Group: "Unknown",
|
||||
},
|
||||
classify.ClassOtherTCP: {
|
||||
BaseHz: 1225.0,
|
||||
BaseHz: 2093.0, // C7
|
||||
Harmonics: []HarmonicDef{{1, 1.0}, {2, 0.8}, {3, 0.4}},
|
||||
Pan: -0.5,
|
||||
Group: "Unknown",
|
||||
},
|
||||
classify.ClassOtherUDP: {
|
||||
BaseHz: 1375.0,
|
||||
BaseHz: 2349.3, // D7
|
||||
Harmonics: []HarmonicDef{{1, 1.0}, {2, 0.8}, {3, 0.4}},
|
||||
Pan: 0.5,
|
||||
Group: "Unknown",
|
||||
},
|
||||
// --- Database additions (Sawtooth, 1543-2182 Hz) ---
|
||||
// --- Database (Sawtooth, E7-C8) ---
|
||||
classify.ClassMySQL: {
|
||||
BaseHz: 1543.0,
|
||||
BaseHz: 2616.1, // E7
|
||||
WaveformType: WaveformSawtooth,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 1543.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 2616.1, SampleRate),
|
||||
Pan: -0.4,
|
||||
Group: "Database",
|
||||
},
|
||||
classify.ClassPostgreSQL: {
|
||||
BaseHz: 1732.0,
|
||||
BaseHz: 3136.0, // G7
|
||||
WaveformType: WaveformSawtooth,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 1732.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 3136.0, SampleRate),
|
||||
Pan: -0.2,
|
||||
Group: "Database",
|
||||
},
|
||||
classify.ClassRedis: {
|
||||
BaseHz: 1944.0,
|
||||
BaseHz: 3488.4, // A7
|
||||
WaveformType: WaveformSawtooth,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 1944.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 3488.4, SampleRate),
|
||||
Pan: 0.2,
|
||||
Group: "Database",
|
||||
},
|
||||
classify.ClassMongoDB: {
|
||||
BaseHz: 2182.0,
|
||||
BaseHz: 4186.0, // C8
|
||||
WaveformType: WaveformSawtooth,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 2182.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSawtooth, 4186.0, SampleRate),
|
||||
Pan: 0.4,
|
||||
Group: "Database",
|
||||
},
|
||||
// --- VoIP (Sine, 2449 Hz) ---
|
||||
// --- VoIP (Sine, D8) ---
|
||||
classify.ClassSIP: {
|
||||
BaseHz: 2449.0,
|
||||
BaseHz: 4704.0, // D8
|
||||
WaveformType: WaveformSine,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSine, 2449.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformSine, 4704.0, SampleRate),
|
||||
Pan: 0.0,
|
||||
Group: "VoIP",
|
||||
},
|
||||
// --- Infrastructure auto-assigned (Triangle, 2950-3250 Hz) per D-02 ---
|
||||
// --- Infrastructure auto-assigned (Triangle, pentatonic upper octaves) ---
|
||||
classify.ClassLDAP: {
|
||||
BaseHz: 2950.0,
|
||||
BaseHz: 5232.0, // E8 — auto-assign range
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 2950.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 5232.0, SampleRate),
|
||||
Pan: -0.2,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassKerberos: {
|
||||
BaseHz: 3250.0,
|
||||
BaseHz: 5878.0, // G8 (approx) — auto-assign range
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 3250.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 5878.0, SampleRate),
|
||||
Pan: 0.0,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
classify.ClassSyslog: {
|
||||
BaseHz: 3050.0,
|
||||
BaseHz: 6534.0, // A8 (approx) — auto-assign range
|
||||
WaveformType: WaveformTriangle,
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 3050.0, SampleRate),
|
||||
Harmonics: WaveformPresetHarmonics(WaveformTriangle, 6534.0, SampleRate),
|
||||
Pan: 0.2,
|
||||
Group: "Infrastructure",
|
||||
Bursty: true,
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user