| Both sides previous revisionPrevious revisionNext revision | Previous revision |
| music:perfect [2026/01/24 07:02] – Insanity. wikarai | music:perfect [2026/03/24 22:28] (current) – external edit A User Not Logged in |
|---|
| |
| var VISUALIZATIONS = [ | var VISUALIZATIONS = [ |
| { id: 'chladni', label: "Chladni", desc: "Plate nodal lines derived from your frequency ratios.", explain: "Simulates a square plate; mode numbers are pulled from the selected pitches, and brighter nodes appear where intervals reinforce. Cleaner harmonic sets produce crisp, repeated ridges, while beating intervals blur the pattern." }, | { id: 'chladni', label: "Chladni", desc: "Plate nodal lines derived from your frequency ratios.", explain: "Simulates a vibrating square plate with powder; nodes constructively create shapes. Mode numbers are pulled from the selected pitches, and brighter nodes appear where intervals reinforce. Cleaner harmonic sets produce crisp, repeated ridges, while beating intervals blur the pattern." }, |
| { id: 'fifths', label: "Circle of 5ths", desc: "Classic fifths circle with your chord highlighted.", explain: "Each note lands at its position on the circle of fifths, and the filled polygon traces the harmonic footprint of the selected pitches. Colors cue drift, so you can see which steps stay close to just fifths." }, | { id: 'fifths', label: "Circle of 5ths", desc: "Classic fifths circle with your chord highlighted.", explain: "Each note lands at its position on the circle of fifths, and the filled polygon traces the harmonic footprint of the selected pitches. Colors cue drift, so you can see which steps stay close to just fifths." }, |
| { id: 'waveform', label: "Waveform", desc: "Summed waveform with individual partial overlays.", explain: "A thick bright line shows the sum of all tuned frequencies, while faint colored lines trace each note’s waveform. Pay attention to swells or interference where partials align—that’s where beating and agreement happen." }, | { id: 'waveform', label: "Waveform", desc: "Summed waveform with individual partial overlays.", explain: "A thick bright line shows the sum of all tuned frequencies, while faint colored lines trace each note’s waveform. Pay attention to swells or interference where partials align—that’s where beating and agreement happen." }, |
| ]; | ]; |
| |
| var CURRENT_TUNING = TUNING_SYSTEMS['septimal']; | var DEFAULT_TUNING_KEY = 'septimal'; |
| var CURRENT_TUNING_KEY = 'septimal'; | var DEFAULT_VIZ = 'chladni'; |
| var CURRENT_VIZ = 'chladni'; | var CURRENT_TUNING = TUNING_SYSTEMS[DEFAULT_TUNING_KEY]; |
| | var CURRENT_TUNING_KEY = DEFAULT_TUNING_KEY; |
| | var CURRENT_VIZ = DEFAULT_VIZ; |
| var selectedNotes = new Set(); | var selectedNotes = new Set(); |
| var synth = null; | var synth = null; |
| buildTuningButtons(); | buildTuningButtons(); |
| buildVizButtons(); | buildVizButtons(); |
| selectTuning('septimal'); | selectTuning(DEFAULT_TUNING_KEY); |
| checkUrlParams(); | checkUrlParams(); |
| initCollapsibles(); | initCollapsibles(); |
| var params = new URLSearchParams(); | var params = new URLSearchParams(); |
| if (selectedNotes.size > 0) params.set('notes', Array.from(selectedNotes).join(',')); | if (selectedNotes.size > 0) params.set('notes', Array.from(selectedNotes).join(',')); |
| if (CURRENT_VIZ) params.set('viz', CURRENT_VIZ); | if (CURRENT_VIZ && CURRENT_VIZ !== DEFAULT_VIZ) params.set('viz', CURRENT_VIZ); |
| if (CURRENT_TUNING_KEY) params.set('tun', CURRENT_TUNING_KEY); | if (CURRENT_TUNING_KEY && CURRENT_TUNING_KEY !== DEFAULT_TUNING_KEY) params.set('tun', CURRENT_TUNING_KEY); |
| var base = window.location.origin + window.location.pathname; | var base = window.location.origin + window.location.pathname; |
| var query = params.toString(); | var query = params.toString(); |