Tecniche semplificate di sintesi FM e PM
Impara a usare bene FM e PM nel sound design.
― 6 leggere min
Indice
- Cos'è la modulazione di frequenza?
- La modulazione di fase spiegata
- Confronto tra FM e PM
- Sfide nella modulazione di ordine superiore
- Un approccio migliore alla FM di ordine superiore
- Implementazione degli operatori FM
- Sintesi FM con Feedback
- Implementazione di riferimento in C++
- Conclusione
- Fonte originale
- Link di riferimento
La Modulazione di Frequenza (FM) e la Modulazione di Fase (PM) sono due metodi popolari per creare suoni negli strumenti musicali. Queste tecniche possono generare una vasta gamma di toni ed effetti. Recentemente, alcuni sintetizzatori hanno cominciato a utilizzare direttamente la FM, il che permette di creare suoni più complessi. Tuttavia, questo metodo può presentare delle sfide a causa del funzionamento della modulazione di frequenza. Questo articolo semplificherà questi concetti e discuterà una soluzione per usare la FM in modo efficace.
Cos'è la modulazione di frequenza?
La sintesi FM è un modo semplice per creare suono. Nella FM, un segnale controlla la frequenza di un altro segnale, generando una varietà di suoni, chiamati parziali. Questa tecnica può essere realizzata in diversi modi: usando modulazione esponenziale o lineare. Questo articolo si concentra sull'approccio lineare.
Per capire meglio la FM, pensa al vibrato, che è l'oscillazione rapida del tono. Il vibrato ha due elementi chiave: la velocità e la larghezza. La velocità si riferisce a quanto velocemente si muove il tono, mentre la larghezza si riferisce a quanto si allontana dal tono originale. Se la velocità è lenta e la larghezza è piccola, il suono può comunque essere riconosciuto come una sola nota. Tuttavia, se la frequenza di modulazione aumenta, il suono in uscita inizia a diventare più complesso, producendo un'onda con più parziali.
La modulazione di fase spiegata
La PM è simile alla FM ma utilizza un metodo diverso per creare il suono. Invece di alterare direttamente la frequenza, la PM cambia la fase dell'onda. Questo può anche produrre suoni intricatissimi, ma lo fa in modo da evitare alcuni dei problemi visti nella FM. La PM può gestire livelli più alti di modulazione senza creare spostamenti indesiderati nel tono, rendendola una scelta più flessibile.
Confronto tra FM e PM
Sebbene FM e PM condividano somiglianze, si comportano in modo diverso, specialmente quando si tratta di suoni complessi. La principale differenza sta nel modo in cui ciascun metodo gestisce la modulazione. Nella PM, un offset DC (un valore costante) non influisce sull'uscita poiché si traduce in uno spostamento di fase, mentre nella FM un tale offset può portare a cambiamenti indesiderati nella frequenza. Pertanto, usare la PM può essere più diretto per creare design sonori intricatissimi.
Sfide nella modulazione di ordine superiore
Quando si creano suoni usando più di un modulatore, noto come modulazione di ordine superiore, sia FM che PM possono essere applicate. Tuttavia, la FM può creare problemi come la deriva di frequenza a causa dell'offset DC. Questo può portare a un tono che cambia, il che può essere problematico in applicazioni musicali. Al contrario, la PM evita questi problemi poiché lo spostamento di fase non altera la frequenza principale.
Ad esempio, immagina di usare due strati di modulazione, dove il primo controlla il secondo. Nella FM, usare impostazioni di modulazione errate può portare all'apparizione di frequenze indesiderate nel suono finale. Questi problemi possono essere evitati con la PM, rendendola generalmente più efficiente per configurazioni di ordine superiore.
Un approccio migliore alla FM di ordine superiore
Nonostante le sfide con la FM, è comunque possibile trovare soluzioni per usarla in modo efficace in situazioni di ordine superiore. Un approccio è trattare la FM in modo simile alla PM. Assicurando che i segnali di modulazione siano applicati correttamente, si può evitare la deriva di frequenza nell'uscita finale.
Per fare ciò, si può applicare un concetto chiamato "Operatore". Questo operatore è essenzialmente un generatore di segnali che può prendere la modulazione dalle fasi precedenti e applicarla alla successiva. Questo consente flessibilità nel design sonoro mantenendo il controllo sull'uscita.
Implementazione degli operatori FM
L'operatore FM agisce come una black box nel processo di design sonoro. Ogni operatore può prendere alcuni input e produrre un segnale di uscita. Pensalo come una piccola unità che sa come combinare frequenza e ampiezza per creare suono. In un design impilato dove gli operatori lavorano insieme, l'uscita di uno può diventare l'input per il successivo.
Quando usi un operatore, è fondamentale assicurarsi che vengano utilizzati segnali di controllo appropriati. Gli operatori possono essere progettati per prendere più input, come livelli di modulazione e frequenze, e produrre il segnale di uscita necessario. Il vantaggio di questa configurazione è che consente ai designer sonori di gestire modulazioni complesse senza imbattersi nei problemi che tipicamente sorgono nei design di FM di ordine superiore.
Sintesi FM con Feedback
Il feedback può essere introdotto anche nella sintesi FM. Questo significa che il segnale di uscita può essere reimmesso nel sistema per modulare se stesso, aggiungendo un ulteriore strato di complessità. La FM con feedback funziona in modo simile alla PM con feedback. Anche se si pensava fosse poco praticabile in passato, gli approcci recenti hanno dimostrato che può essere implementata in modo efficace.
Il design della FM con feedback può portare a trame ricche e suoni unici. Tuttavia, è necessario prestare attenzione per prevenire problemi di controllo, specialmente nei casi in cui la frequenza potrebbe scendere a zero.
Implementazione di riferimento in C++
Per illustrare i concetti discussi, un semplice esempio di sintesi FM può essere implementato in C++. Di seguito è riportata una versione semplificata del codice che si potrebbe utilizzare per creare la sintesi FM:
#include <vector>
#include <cmath>
// Classe base operatore
template<typename S>
class Op {
static constexpr long maxlen = 0x100000000;
const std::vector<S> &tab;
std::vector<S> out;
// Altre variabili...
S process(S amp, int si) {
// Logica di elaborazione...
}
public:
Op(const std::vector<S> &table, float sr, std::size_t vsize);
const std::vector<S> &operator()(S amp, S fr);
// Metodi aggiuntivi...
};
// Esempio di utilizzo
std::vector<float> tab(1025);
// Inizializza il tab con forme d'onda...
Op<float> fm(tab, fs);
for (size_t n = 0; n < fm.fs() * dur; n += fm.vsize()) {
// Genera uscita...
}
Questo codice getta le basi per progettare sintetizzatori FM. Mostra come definire un operatore che genera suono basandosi su input di frequenza e ampiezza.
Conclusione
La sintesi FM è uno strumento potente nella creazione di suoni, ma richiede una gestione attenta, specialmente quando si lavora con configurazioni più complesse. Ridefinendo l'approccio alla FM e utilizzando operatori, i designer sonori possono creare efficacemente sintesi FM di ordine superiore senza incorrere in problemi comuni. L'implementazione della FM con feedback apre anche possibilità per nuove trame sonore e design. Con le tecniche giuste, il regno della sintesi FM può essere esplorato e ampliato, consentendo espressioni musicali ricche.
Titolo: Higher-Order Frequency Modulation Synthesis
Estratto: Frequency modulation (FM) and phase modulation (PM) are well-known synthesis methods, which have been deployed widely in musical instruments. More recently, some synthesisers have implemented direct forms of FM (as opposed to PM), allowing, at least as part of their design, for higher-order modulation topologies. However, such implementations are affected by well-known difficulties that arise in the modulation of frequency, which are normally solved by the use of PM. In this article, we analyse these problems and using a direct comparison with PM, we put forward a solution for the direct application of FM in higher-order modulation arrangements. We begin by reviewing the theory of first-order FM, contrasting it to PM. We then proceed to develop a formulation of second-order FM which is equivalent to the issue-free PM synthesis, and present a closed-form expression for the evaluation of the second-order FM spectrum. We then extend the principle to higher-order topologies, by advancing the concept of an FM operator, analogous to the one used in PM instrument designs. From this we demonstrate that feedback FM is also a practical possibility. Finally, we complement the paper by giving a reference implementation in C++.
Autori: Victor Lazzarini, Joseph Timoney
Ultimo aggiornamento: 2023-05-13 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2305.07909
Fonte PDF: https://arxiv.org/pdf/2305.07909
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.