Domanda

Devo implementare a sintetizzatore wavetable in un core ARM Cortex-M3.Sto cercando codice o strumenti che mi aiutino a iniziare.

ne sono consapevole questa implementazione AVR.In realtà l'ho convertito in un PIC qualche tempo fa.Ora sto cercando qualcosa di simile, ma che suoni un po' meglio.

Il codice ANSI C sarebbe fantastico.Qualsiasi frammento di codice (C o C++), esempio, strumento o semplicemente informazione generale sarebbe molto apprezzato.

Grazie.

È stato utile?

Soluzione

Il Synthesis Toolkit (STK) è eccellente, ma è solo C++:

http://ccrma.stanford.edu/software/stk/

Tuttavia, potresti essere in grado di estrarre il codice del sintetizzatore wavetable dall'STK.

Altri suggerimenti

Sono due sintetizzatori wavetable open source FluidSynth E Timidezza.

Qualsiasi sintetizzatore ARM, i migliori, può essere trasformato in wavescanner in meno di un giorno.Scansionare l'onda da file o generarli matematicamente è quasi la stessa cosa dal punto di vista audio, WT fornisce enormi banchi di forme d'onda a costo di elaborazione pari a zero, sono necessarie le onde, il codice dell'oscillatore WT stesso è di 20 linee.quindi cambia la manopola della forma d'onda da 3 a 100 per indicare quale WAV stai leggendo, usa una rampa/contatore per leggere i file WAV (come array).Peso risolto.

Da 7 anni di esperienza nel sintetizzatore, consiglierei di modificare 20 linee della funzione oscillatore del tuo sintetizzatore preferito per adattarlo alla lettura degli array di onde.Il WT utilizza solo 20 righe di logica, il resto del sintetizzatore è più importante:LFO, filtri, parametri di ingresso, memoria preimpostata...Usa invece il tuo sintetizzatore preferito e trova una libreria di onde WT come file e cartelle WAV e sostituisci i tuoi oscillatori del sintetizzatore preferiti con le funzioni WT, suonerà quasi lo stesso, solo con costi di elaborazione inferiori.

Un sintetizzatore normalmente utilizza le funzioni OSC Sin, Sqr, Saw, Antialiased per l'onda...

Un sintetizzatore wavetable utilizza circa 20 righe di codice alla base e 10/20/100 d'onde, ciascuna onda campionata idealmente ad ogni ottava.Se riesci a procurarti una libreria di suoni wavetable, il sintetizzatore esegue solo loop, spostamenti di intonazione, suoni e sintetizzatori professionali possono anche avere più ottave per mixare le ottave.

Funzione WT =

  • caricare file WAV in N array
  • cambia forma d'onda = seleziona l'array di forme d'onda dall'elenco WAV
  • leggere l'array di forme d'onda agli Hz desiderati

funzione Wavescanner =

  • dissolvenza incrociata tra 2 onde e assegna xfade all'LFO, ad es.seno e xfade.

L'inviluppo, il filtro, l'ampiezza e tutte le altre funzioni sono indipendenti dalla funzione di generazione dell'onda in tutti i sintetizzatori.

ricorda che lo strumento psicoacustico più potente per i sintetizzatori è la deviazione dal tono digitale delle note, si chiama unison detune, il carattere sonoro dei sintetizzatori deriva principalmente dal chorus e dall'unisono detune.

I WT sono singoli periodi di onde o sezioni più lunghe, nei sintetizzatori più avanzati.le cose del singolo periodo sono semplicissime da scrivere nel codice.i WT avanzati vengono campionati per ottava con onde della durata di N periodi, anche 2-3 secondi, cioèpianoforte, e ciò significa che cambiano la qualità del suono attraverso le ottave, quindi i complessi WT vengono sottoposti a dissolvenza incrociata ogni ottava con registrazioni a più ottave.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top