Quali sono le categorie di base delle operazioni eseguite sui segnali audio per creare suoni interessanti?


10

Non so se questa domanda avrà senso in quanto sono molto nuovo in dsp.

Nella mia incursione limitata in dsp audio mi sono imbattuto in:

  1. Modulazione di frequenza
  2. Modulazione d'ampiezza
  3. Sintesi additiva
  4. Sintesi sottrattiva

La mia domanda è: sono queste le principali categorie fondamentali della manipolazione del segnale (in particolare per l'audio)?

In altre parole, tutti gli effetti e le cose fantasiose che FL Studio con una suite completa di plug-in possono fare, possono essere suddivisi in una serie e una combinazione delle 4 operazioni precedenti? O ce ne sono molti altri? Una DAW moderna con plugin può teoricamente essere suddivisa in categorie in questo modo? Le suddette 4 categorie hanno senso anche in se stesse ?!

Un po 'di background: essenzialmente sto cercando di creare un sintetizzatore / editor audio molto semplice (ma molto flessibile) come progetto per imparare sia la programmazione che l'audio dsp. Usando java ho iniziato imitando le classi base del sintetizzatore del mondo reale, chiamando cose come Oscillator e LFO e simili, ma ogni volta che imparo qualcosa di nuovo, mi ritrovo a dover riscrivere tutto per adattare il nuovo concetto al programma.

Sto provando a ricominciare ora e inventare gli oggetti e la struttura di base del programma. Per farlo correttamente devo sapere come dovrei permettere a questi oggetti di interagire ecc ...

Grazie!

MODIFICA * * *

Grazie per gli utili commenti e risposte. Mi rendo conto di aver probabilmente sottovalutato il lato dsp delle cose e non sarò in grado di creare solo un modello e una struttura di base per un semplice sintetizzatore e quindi semplicemente espanderlo / costruirlo. Probabilmente dovrò ricostruire ripetutamente ancora e ancora mentre imparo nuove cose e il modo "corretto" di fare le cose ... Ci vorrà più tempo, ma forse imparerò di più? Mi dispiace anche se non ho abbastanza rappresentante per votare ancora nessuno ... appena posso, lo farò.

EDIT * EDIT ***

Vorrei aggiungere che un po 'di googling ha rivelato questa guida di base ai "tipi di sintesi" che ho trovato pertinente e interessante.


Vuoi il background teorico sulle tecniche di sintesi o vuoi qualcosa di più simile a questo (ovvero metodi comuni che vengono utilizzati nella pratica)? dsp.stackexchange.com/questions/192/…
datageist

1
Se dovessi riassumere tutte le possibili manipolazioni del suono in quante meno categorie possibili, nominerei trasformazioni lineari e non lineari. Ma quelli sono troppo generici e ampi per poter essere implementati.
Alexey Frunze,

@datageist - Immagino che avrò bisogno di entrambi! Ma questo è un link molto utile, grazie.
Kiman,

@Alex Questo è molto generale, ma è un punto di partenza concettuale e almeno ora so che stavo abbaiando sull'albero sbagliato.
Kiman,

ottenere il libro di Will Pirkle, Progettazione di plug-in sintetizzatori software in C ++: per RackAFX, VST3 e unità audio. realizzerai un sintetizzatore e imparerai lungo la strada invece di cercare di capire tutto da solo.
panthyon,

Risposte:


9

La categoria AM / FM è un po 'strana per gli effetti - vero, puoi ottenere alcuni effetti interessanti modulando l'ampiezza di un segnale in ingresso; ma cosa significa "modulazione di frequenza" per un segnale di ingresso complesso per il quale non si ha nemmeno una rappresentazione accurata della frequenza? Potresti benissimo dire che ogni effetto è una modulazione di ampiezza, dal segnale , ma questo non ti aiuterà a implementarlo!out(t)in(t)

Non esiste un motore magico monouso al centro di tutti gli effetti audio forniti dal software di produzione musicale. Ma se guardi il codice sorgente di una grande suite di effetti audio da uno sviluppatore DSP, ecco alcuni "blocchi" che saranno stati presi in considerazione nelle loro classi e che sono condivisi da molti effetti diversi. Non implica che ciò costituisca una buona base per categorizzare gli effetti; ma dal punto di vista dell'implementazione, questi blocchi sono essenziali:

  • Filtri Biquad.
  • Linee di ritardo frazionarie.
  • Motore di convoluzione, per una rapida convoluzione di un segnale di ingresso con risposte all'impulso di dimensioni arbitrarie.
  • Waveshaper (applicazione di una funzione non lineare al segnale di ingresso nel time-domaine).
  • Elementi costitutivi del sintetizzatore: oscillatori, LFO, buste ADSR.
  • Rilevatori di segnale: inviluppo follower, estrattore f0.

Con quei blocchi potresti costruire:

  • Filtri simili a synth o wah-wah: uno o due biquad
  • Auto-wah: follower busta + busta + biquad
  • Flanger / Phaser: LFO + linea di ritardo
  • Chorus: LFO + linee di ritardo
  • Riverbero algoritmico: linee di ritardo (array di filtri combinati paralleli e seriali)
  • Riverbero della convoluzione: convoluzione
  • Spatializzatore: convoluzione (con risposte all'impulso di HRTF)
  • Simulazione amplificatore per chitarra: convoluzione, wavehapper
  • Distorsione, Fuzz: guadagno + wavhapper
  • Bitcrusher (quantizzatore): un caso particolare di wavhapper
  • Modulatore ad anello con supporto seno: oscillatore
  • Noise Gate e altri effetti di dinamica: follower dell'inviluppo
  • Simulazione del nastro: convoluzione, wavehapper, follower dell'inviluppo (per l'elaborazione della dinamica)
  • EQ: biquads
  • Tremolo: LFO
  • Emulazione di Leslie: convoluzione + LFO
  • Vocoder: biquads + follower della busta

Mentre alcuni di questi effetti sono solo una questione di patchare i diversi blocchi (un flanger è davvero un LFO che modula una linea di ritardo), alcuni altri effetti richiedono una colla più complessa tra le parti, che è abbastanza specifica da non essere fattorizzata in un blocco predefinito di per sé.

Questo è, nel complesso, un insieme interessante di effetti che copriranno molto terreno per la produzione musicale, ma non è esaustivo e ci sono in effetti alcuni effetti che non si adattano a questo framework ... Alcuni esempi: * Riduttore di frequenza di campionamento sporco (in un bitcrusher): vero, è una moltiplicazione di un pettine di dirac e quindi una convoluzione di una finestra rettangolare ... ma è più facile scriverlo come qualcosa che duplica il valore di un campione sugli N seguenti campioni invece di correggere una modulazione di ampiezza e una convoluzione! * Gli effetti di alterazione del pitch (pitch-shifting, auto-tune) non si adattano bene a questo framework. Hanno bisogno di una rappresentazione più complessa del segnale audio da eseguire (vocoder di fase per i metodi nel dominio della frequenza; rilevazione del pitch e marker del pitch per i metodi nel dominio del tempo).

Ti suggerisco di giocare con strumenti software "modulari" come Pd, Reaktor, Plogue, SyntheEdit ... - e provare a implementare gli effetti dai blocchi di base che ti forniscono.


2
Per quello che vale, la modulazione di frequenza viene utilizzata nella sintesi FM. Ciò è facilmente visibile dal caso di una modulazione FM a tono singolo, che si traduce in un segnale con una serie di Fourier definita da funzioni di Bessel di primo tipo.
Bryan,

1
La "sintesi FM" come implementata nei sintetizzatori (come la serie Yamaha DX, l'hardware basato su OPL e l'emulazione software di questi), è un termine improprio, dal momento che questo viene effettivamente fatto con la modulazione di fase. en.wikipedia.org/wiki/Phase_modulation
pichenettes,

Non vedo alcuna fonte allegata a quella voce di Wikipedia. Indipendentemente da ciò, secondo quella voce, dice che suonano "simili", e che PM è usato perché FM è più difficile da implementare. Non lo compro, dato che FM è un caso speciale di PM. Tuttavia, la teoria che ho citato dietro la modulazione FM che produce armoniche relative alle funzioni di Bessel è valida ed è utile.
Bryan,

@Bryan. Vedi la rivendicazione 1 del brevetto di sintesi "FM", US4018121. Un sin (wt + I (t) sin w_m t) - è la modulazione di fase. PM è più facile da implementare perché 1 / non è necessario un accumulatore aggiuntivo per integrare la frequenza istantanea variabile in una fase - vedere i pochi post qui in cui le persone hanno cercato di generare un tono con frequenza variabile nel tempo e si sono morsi 2 / la conversione da una frequenza a un incremento di fase comporta una divisione. Con PM si ricalcolano gli incrementi di fase alla velocità delle modulazioni; con FM dovresti ricalcolare gli incrementi di fase alla frequenza di campionamento.
Pichenettes,

Risposta molto utile, grazie. Mi rendo conto che mi sono concentrato molto sull'aspetto della programmazione (che sto solo imparando) e non prendendo abbastanza sul serio il lato dsp. Probabilmente non sarà un progetto che posso solo iniziare in piccolo e sviluppare gradualmente, ma che dovrò ricostruire e ricostruire molte volte mentre imparo.
Kiman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.