Domanda

Sto cercando di sviluppare un'applicazione simile a tonematrix in c#. Ho provato per primo con la libreria .NET e Naudio, ora sto provando con XNA, ma sembra che tutto ciò che posso ottenere sia una cacofonia.


Insieme a Naudio, Sto generando 8 semplici onde con frequenze diverse, che variano da (440Hz * 1) a (440Hz * 8).

Insieme a XNA, Sto usando più sondaggi dello stesso file audio (come una nota D4 di un piano), ognuno con un valore di pitch diverso; Il valore del tono può salire o scendere da un massimo di un'ottava.

In entrambi i casi, quando i suoni si sovrappongono sto ottenendo rumore invece della musica. Forse ho sbagliato tutto e non si tratta di mescolare suoni di pitch/frequenza variabili.

Trovo difficile da credere che la tonematrix non stia usando nient'altro che un "semplice sintetizzatore di onda", poiché i suoni sono piuttosto ricchi e quando vengono mescolati insieme generano sempre una melodia armonica, mentre una semplice ondata suona sempre brutta e artificiale me.

Sto avendo un approccio negativo per la creazione di armonie? Hai un'idea di ciò che sta accadendo esattamente alle onde di tendenza usate da Tonematrix?

È stato utile?

Soluzione

Mi capita di rispondere alle tue domande musicali, ma questo tipo di domande è probabilmente meglio https://music.stackexchange.com/.

Prima di tutto la scala. Queste cose generalmente usano a Scale pentatoniche (Da Wikipedia: "Qualsiasi passo di tale scala può essere giocato in qualsiasi ordine o combinazione senza scontro"). Secondo i commenti, l'esempio che hai collegato usa D maggiore pentatonico da A ad A.

Scoprirai che non sta usando un'onda sinusoidale diretta, ma in realtà sta usando un Busta ADSR per dargli il piacevole "pugno" all'inizio e (falso) "eco" alla fine. Questo è facile da implementare, poiché devi solo modulare l'ampiezza.

Per quanto ne so, non sta facendo nulla di speciale quando si mescolano le forme d'onda insieme. È probabile che stia facendo una semplice aggiunta.

Per quanto riguarda l'implementazione, se si dispone di un metodo per generare onde sinusoidali, piuttosto che tentare di spostare un campione, perché non utilizzare DynamicSoundEffectInstance e dargli da mangiare alla tua onda sinusoidale?

Il cambio di pitch integrato di XNA non è davvero adatto a questo compito. Sei sicuro di usare i valori corretti per sintonizzarlo?

Altri suggerimenti

Se stai usando multipli della stessa frequenza dei tuoi input, ogni onda sinusoidale sarà esattamente un'ottava più alta rispetto agli altri. L'aggiunta di 8 onde sinusoidali come questa comporterà alcuni picchi molto alti nella forma d'onda mista, quindi è necessario assicurarsi di applicare limitare o ridurre il volume complessivo in modo da non causare distorsioni. Senza vedere il tuo codice è difficile dire con certezza, ma potrebbe essere parte della causa del tuo rumore.

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