churchSound = loadSound('church.mp3');
jerichoSound = loadSound('jericho.mp3');
amplitude = new p5.Amplitude();
let churchButton = createButton('Play/Pause Church');
churchButton.position(10, 100);
churchButton.mousePressed(toggleChurch);
let jerichoButton = createButton('Play/Pause Jericho');
jerichoButton.position(180, 100);
jerichoButton.mousePressed(toggleJericho);
churchVolumeSlider = createSlider(0, 1, 0.5, 0.01);
churchVolumeSlider.position(20, 60);
churchVolumeSlider.style('width', '120px');
jerichoVolumeSlider = createSlider(0, 1, 0.5, 0.01);
jerichoVolumeSlider.position(160, 60);
jerichoVolumeSlider.style('width', '120px');
churchSound.setVolume(churchVolumeSlider.value());
jerichoSound.setVolume(jerichoVolumeSlider.value());
if (!churchSound.isPlaying() && !jerichoSound.isPlaying()) return;
let spectrum = fft.analyze();
let bass = fft.getEnergy('bass');
let treble = fft.getEnergy('treble');
translate(width / 2, height / 2);
for (let i = -200; i < 200; i += 10) {
let angle = frameCount * 0.05 + i * 0.1;
let y1 = sin(angle) * (50 + bass * 0.3);
let y2 = cos(angle) * (50 + treble * 0.1);
let lineLength = map(bass, 0, 255, 50, 300);
fill(255, 0, 0, map(bass, 0, 255, 50, 120));
ellipse(x, y1, size, size);
fill(150, 150, 150, map(treble, 0, 255, 30, 100));
ellipse(x, y2, size, size);
stroke(255, map(bass, 0, 255, 20, 80));
line(x, y1, x, y1 - lineLength);
function toggleChurch() {
if (churchSound.isPlaying()) {
function toggleJericho() {
if (jerichoSound.isPlaying()) {