xxxxxxxxxx
53
function setup() {
createCanvas(800, 600);
const detail = 100; // Set the level of detail
const duration = 5; // Duration in seconds
const sampleRate = 44100; // Sample rate (Hz)
const sineNoise = generateSineNoise(detail, duration, sampleRate);
// Plot the generated Sine Noise
const dt = 1 / sampleRate;
const t = new Array(sineNoise.length);
for (let i = 0; i < t.length; i++) {
t[i] = i * dt;
}
const xScale = width / duration;
const yScale = 400;
background(255);
stroke(0);
noFill();
beginShape();
for (let i = 0; i < t.length; i++) {
const x = t[i] * xScale;
const y = sineNoise[i] * yScale + height / 2;
vertex(x, y);
}
endShape();
}
function generateSineNoise(detail, duration, sampleRate) {
const numSamples = duration * sampleRate;
const noise = new Array(numSamples).fill(0);
for (let i = 0; i < numSamples; i++) {
const t = i / sampleRate;
noise[i] = Math.sin(2 * Math.PI * t); // Fundamental sine wave
}
for (let i = 1; i <= detail; i++) {
const amplitude = 1 / i; // Decreasing amplitude for additional waves
for (let j = 0; j < numSamples; j++) {
const t = j / sampleRate;
noise[j] += amplitude * Math.sin(2 * Math.PI * i * t); // Add sine wave
noise[j] += amplitude * Math.cos(2 * Math.PI * i * t); // Add cosine wave
}
}
return noise;
}