Supercollider, generar ondas cuadradas y sierra con senoidales

Epiphone
#1 por Epiphone el 09/10/2017
Leyendo un manual de supercollider en castellano, me encuentro con lo siguiente

Alguien escribió:
En teoría, con una onda sinusoidal y las correctas operaciones matemáticas podemos generar cualquier tipo de onda.En los siguientes ejemplos vamos a generar las ondas de los osciladores de sierra (Saw), y cuadradas (Pulse) únicamente usando ondas sinusoidales.

Pulse (onda cuadrada) a partir de ondas sinusoidales

Para generar la onda cuadrada generamos ondas sinusoidales con frecuencias de armónicos impares de una fundamental. Primero declaramos una variable del 1 al 40, y al multiplicar los elementos por dos obtenemos pares del 2 al 80 (1..40)*2. Ahora restamos uno y convertimos los pares en impares del 1 al 79 (1..40)*2 -1.

Usaremos esto para los de armónicos de la frecuencia fundamental 440. Es necesario disminuir la amplitud de cada armónico para que no se sature la señal.

(
{var a=(1..40)*2 -1;
Mix(SinOsc.ar(440*a,0,1/a))}.scope;
)

De esta manera al evaluar el código, obtendremos una onda cuadrada. La opción scope, permite visualizar esta onda mediante un osciloscopio.

Saw (onda de diente de sierra) a partir de ondas sinusoidales

Se puede generar una onda de sierra sumando sinusoidales con las frecuencias de todos los armónicos de una frecuencia fundamental y disminuyendo la amplitud de cada una por el inverso del número de armónico así:

(
{var arm=(1..100);
Mix(SinOsc.ar(440*arm,0,0.5/arm))}.scope;
)


He hecho la prueba y aquí esta el vídeo
Subir
1
vagar
#2 por vagar el 09/10/2017
Es un experimento didáctico interesante para comprobar el desarrollo en serie de Fourier de una función periódica, pero que a nadie se le ocurra quemar ciclos de CPU en calcular un diente de sierra de esta manera en una aplicación práctica. ;-)

Como apunte, al estar calculando 40 componentes, para frecuencias fundamentales superiores a 500 Hz nos iríamos más allá de los 20 kHz audibles, lo que sería un mayor gasto todavía. Para 440 Hz el resultado sería más preciso, dentro del rango audible, si usamos 20000/440 = 45 componentes.
Subir
1
Epiphone
#3 por Epiphone el 09/10/2017
#2

He realizado la comparación en función del numero de armónicos, hasta un poco más del doble de Cpu, según Qjackctl 0.60-0.70 de Cpu y hasta 1.50-1.70 usando las sinusoidales en vez de la onda cuadrada o la de diente de sierra.

Lo que es muy interesante es comprobar como varia la señal si vas aumentando el numero de armónicos en la sinusoidal.
Subir
Respuesta rápida

Regístrate o para poder postear en este hilo