¿Cuáles son las categorías básicas de operaciones realizadas en señales de audio para crear sonidos interesantes?

10

No sé si esta pregunta tendrá sentido ya que soy muy nuevo en dsp.

En mi incursión limitada en dsp de audio me he encontrado con:

  1. Modulación de frecuencia
  2. Amplitud modulada
  3. Síntesis aditiva
  4. Síntesis sustractiva

Mi pregunta es: ¿son estas las principales categorías fundamentales de manipulación de señal (específicamente para audio)?

En otras palabras, ¿pueden todos los efectos y cosas elegantes que puede hacer FL Studio con un conjunto completo de complementos, desglosarse en una serie y combinación de las 4 operaciones anteriores? ¿O hay un montón más? ¿Puede un DAW moderno con complementos teóricamente dividirse en alguna categoría de esta manera? ¿Las 4 categorías anteriores tienen sentido en sí mismas?

Un poco de historia: esencialmente estoy tratando de hacer un sintetizador / editor de audio muy básico (pero muy flexible) como un proyecto para aprender tanto la programación como el dsp de audio. Con Java comencé imitando las clases básicas de sintetizador del mundo real, llamando a cosas como Oscillator y LFO y similares, pero cada vez que aprendo algo nuevo, me encuentro teniendo que reescribir todo para adaptar el nuevo concepto al programa.

Estoy tratando de comenzar de nuevo ahora y encontrar los objetos básicos y la estructura del programa. Para ello, necesito saber cómo debo permitir que estos objetos interactúen, etc.

¡Gracias!

EDITAR * * *

Gracias por los útiles comentarios y respuestas. Me doy cuenta de que probablemente he estado subestimando el lado dsp de las cosas y no podré crear una plantilla y estructura básicas para un sintetizador simple y luego simplemente expandirlo / construir sobre él. Probablemente tendré que reconstruir repetidamente una y otra vez a medida que aprendo cosas nuevas y la forma "adecuada" de hacer las cosas ... Me llevará más tiempo, pero ¿tal vez aprenderé más? También lo siento, parece que todavía no tengo suficiente representante para votar a nadie ... tan pronto como pueda, lo haré.

EDITAR * EDITAR ***

Debo agregar que un poco de búsqueda en Google reveló esta guía básica de "tipos de síntesis" que encontré relevante e interesante.

kiman
fuente
¿Desea los antecedentes teóricos sobre técnicas de síntesis, o desea algo más como esto (es decir, métodos comunes que se utilizan en la práctica)? dsp.stackexchange.com/questions/192/…
datageist
1
Si tuviera que resumir todas las manipulaciones de sonido posibles en la menor cantidad de categorías posible, nombraría las transformaciones lineales y no lineales. Pero esos son demasiado generales y amplios para poder implementarlos.
Alexey Frunze
@datageist - ¡Creo que voy a necesitar ambos! Pero ese es un enlace muy útil, gracias.
kiman
@Alex Eso es muy general, pero es un punto de partida conceptual y al menos ahora sé que estaba ladrando el árbol equivocado.
kiman
obtenga el libro de Will Pirkle, Diseño de complementos de sintetizador de software en C ++: para RackAFX, VST3 y unidades de audio. de hecho, estarás haciendo un sintetizador y aprenderás en el camino en lugar de tratar de resolver todo por tu cuenta.
panthyon

Respuestas:

9

La categoría AM / FM es un poco extraña para los efectos: es cierto, puede obtener algunos efectos interesantes al modular la amplitud de una señal de entrada; pero, ¿qué significa "modulación de frecuencia" para una señal de entrada compleja para la cual ni siquiera tiene una representación de frecuencia precisa? Muy bien podría decirse que cada efecto es una modulación de amplitud, por la señal , ¡pero esto no lo ayudará a implementarlo!out(t)in(t)

No hay un motor mágico de un solo propósito en el corazón de todos los efectos de audio proporcionados por el software de producción musical. Pero si observa el código fuente de un gran conjunto de efectos de audio de un desarrollador de DSP, aquí hay algunos "bloques de construcción" que se han factorizado en sus propias clases y que son compartidos por muchos efectos diferentes. No quiero decir que esto forme una buena base para clasificar los efectos; pero desde el punto de vista de la implementación, esos bloques son esenciales:

  • Filtros Biquad.
  • Líneas de retraso fraccionado.
  • Motor de convolución, para una convolución rápida de una señal de entrada con respuestas de impulso de tamaño arbitrario.
  • Waveshaper (aplicación de una función no lineal a la señal de entrada en el tiempo-dominio).
  • Bloques de construcción del sintetizador: osciladores, LFO, sobres ADSR.
  • Detectores de señal: seguidor de envolvente, extractor f0.

Con esos bloques podrías construir:

  • Filtros tipo sintetizador o wah-wah: uno o dos biquads
  • Auto-wah: seguidor de sobres + sobre + biquad
  • Flanger / Phaser: LFO + línea de retardo
  • Coro: LFO + líneas de retardo
  • Reverberación algorítmica: líneas de retardo (conjunto de filtros de peine en paralelo y en serie)
  • Reverberación de convolución: convolución
  • Espacializador: convolución (con respuestas de impulso de HRTF)
  • Simulación de amplificador de guitarra: convolución, wavehappers
  • Distorsión, Fuzz: ganancia + wavehapper
  • Bitcrusher (cuantificador): un caso particular de wavehapper
  • Modulador en anillo con un soporte sinusoidal: oscilador
  • Noise Gate y otros efectos dinámicos: seguidor de envolvente
  • Simulación de cinta: convolución, formador de onda, seguidor de envolvente (para el procesamiento dinámico)
  • EQ: biquads
  • Trémolo: LFO
  • Emulación de Leslie: convolución + LFO
  • Vocoder: biquads + seguidor de sobres

Si bien algunos de estos efectos son solo una cuestión de parchear los diferentes bloques (un flanger realmente es un LFO que modula una línea de retardo), algunos otros efectos necesitan un pegamento más complejo entre las partes, que es lo suficientemente específico como para no ser factorizado en un bloque de construcción de su propia.

Este es, en general, un conjunto interesante de efectos que cubrirá mucho terreno para la producción musical, pero no es exhaustivo y, de hecho, hay algunos efectos que no se ajustan a este marco ... Algunos ejemplos: * Reductor de frecuencia de muestreo sucio (en un bitcrusher): es cierto, es una multiplicación por un peine dirac y luego una convolución por una ventana rectangular ... pero es más fácil escribirlo como algo que duplica el valor de una muestra sobre las N muestras siguientes en lugar de parchear una modulación de amplitud y una convolución! * Los efectos de alteración de tono (cambio de tono, autoajuste) no se ajustan bien a este marco. Necesitan una representación más compleja de la señal de audio a realizar (codificador de voz de fase para métodos de dominio de frecuencia; detección de tono y marcas de tono para métodos de dominio de tiempo).

Le sugiero que juegue con herramientas de software de "estilo modular" como Pd, Reaktor, Plogue, SyntheEdit ... - e intente implementar los efectos de los componentes básicos que le proporcionan.

pichenettes
fuente
2
Por lo que vale, la modulación de frecuencia se usa en FM Synthesis. Esto se ve fácilmente en el caso de una modulación FM de un solo tono, que da como resultado una señal con una serie de Fourier definida por las funciones de Bessel del primer tipo.
Bryan
1
La "síntesis FM" tal como se implementa en los sintetizadores (como la serie Yamaha DX, el hardware basado en OPL y la emulación de software de esos), es un nombre inapropiado, ya que esto realmente se hace con la modulación de fase. en.wikipedia.org/wiki/Phase_modulation
pichenettes
No veo ninguna fuente adjunta a esa entrada de Wikipedia. De todos modos, de acuerdo con esa entrada, dice que suenan "similares", y que PM se usa porque FM es más difícil de implementar. No compro eso, dado que FM es un caso especial de PM. Aún así, la teoría que cité detrás de la modulación FM que produce armónicos relacionados con las funciones de Bessel se mantiene y es útil.
Bryan
@Bryan. Véase la reivindicación 1 de la patente de síntesis "FM", US4018121. A sin (wt + I (t) sin w_m t) - es modulación de fase. PM es más fácil de implementar porque 1 / no necesita un acumulador adicional para integrar la frecuencia instantánea variable en una fase: vea las pocas publicaciones aquí en las que las personas intentaron generar un tono con frecuencia variable en el tiempo y fueron mordidas 2 / La conversión de una frecuencia a un incremento de fase implica una división. Con PM, vuelve a calcular los incrementos de fase a la velocidad de modulación; con FM necesitaría volver a calcular los incrementos de fase a la frecuencia de muestreo.
pichenettes
Muy útil respuesta, gracias. Me doy cuenta de que me he centrado mucho en el aspecto de la programación (que estoy aprendiendo) y no me he tomado el lado dsp lo suficientemente en serio. Probablemente no sea un proyecto que pueda comenzar de a poco y desarrollar gradualmente, sino uno que tendré que reconstruir y reconstruir muchas veces a medida que aprenda.
kiman