2012-12-25 12 views
16

Sono totalmente ingenuo quando si tratta di audio e musica su iPhone o su qualsiasi piattaforma in generale.Fare musica programmaticamente su iPhone?

Dire che volevo creare una semplice app per pianoforte - è possibile generare i suoni per ciascun tasto a livello di programmazione?

Oppure dovrei fornire un file .wav per ogni suono possibile?

Mi chiedo come programmi come GarageBand siano in grado di fornire suoni così diversi - potrebbe essere che abbiano un file per ogni suono possibile?

Oppure esiste un modo per generare dinamicamente quei tipi di suoni?

Edit: Ho trovato this most excellent article descrivendo esattamente quello che voglio fare, e il ragazzo ha anche un progetto di esempio con un piccolo pianoforte con tutti i suoni generati a livello di codice.

risposta

9

È possibile generare toni in modo programmatico, come descritto in questo tutorial. L'esempio qui mostra come generare un'onda sinusoidale pura usando le unità audio.

A causa del teorema di Fourier, qualsiasi funzione (periodica) continua può essere espressa come la somma delle funzioni seno di diverse ampiezze e fasi. Usando questo, puoi mescolare alcune di queste funzioni per simulare il suono di uno strumento. Tuttavia, questo richiede molta ricerca e una profonda comprensione della meccanica ondulatoria e del calcolo, quindi non è un compito banale.

+0

Qualsiasi idea di come ottenere il progetto tutorial per eseguire sul simulatore con il 6.1 SDK? Funziona solo sul dispositivo. – Snowman

+0

@mohabitar Probabilmente ha una ragione (alcune funzionalità non sono disponibili sul simulatore). –

3

I sintetizzatori di piano sono in genere implementati con riproduzione di campioni - e questo include anche pianoforti digitali reali. Solitamente, in combinazione con un DDS oscillator, viene utilizzato in modo considerevole meno di un campione per chiave.

I sintetizzatori di pianoforte digitale di buona qualità portano anche campioni per il key-down iniziale, il sustain, il pedale damper aperto e il key-up, a velocità di tasti diversi, che vengono quindi miscelati insieme.

C'è codice sorgente per uno nel VST3 SDK

Problemi correlati