2010-02-04 9 views
6

Sto provando a scrivere un programma per generare in modo casuale musica basata su un semplice insieme di regole. Vorrei che il programma fosse in grado di generare i propri suoni, al contrario di avere un file con audio per ogni nota. Qualcuno sa un modo semplice per farlo? Sarebbe bello (ma non essenziale) che il suono fosse polifonico, e vorrei una soluzione per Linux, usando C.Come suono un tono in Linux usando C?

+0

Si potrebbe guardare il sorgente per http://en.wikipedia.org/wiki/SuperCollider – JasonTrue

risposta

0

Puoi provare a trovare un sequencer midi C (come MIDI Sequencer). Guarda anche alla costruzione di file audio formattati .au (ad esempio, guarda le specifiche per le intestazioni .au e il formato dei dati audio). Non sarà possibile utilizzare il formato .wav perché richiede una lunghezza nell'intestazione da compilare prima della riproduzione.

5

Ti suggerisco di provare la libreria PortAudio. È una libreria snella multipiattaforma che astrae la funzionalità di uscita audio.

Viene fornito con una serie di piccoli esempi. Uno di loro suona una singola onda sinusoidale, uno su un gruppo di onde sinusoidali allo stesso tempo. Dato che gli esempi già fanno il 90% di quello che ti serve, l'audio dovrebbe essere attivo e funzionante in meno di mezz'ora.

Suggerimento: la migliore documentazione di PortAudio è nel file di intestazione!

0

Here is an ALSA example che riproduce un suono sinusoidale puro. Per inciso, immagino, si dimostra anche perché non si potrebbe desiderare di farlo direttamente contro la libreria ALSA.

+0

Alsa sembra essere abbastanza ingombrante in questa scena, stranamente trovo la versione OSS di una cosa simile molto più comprensibile; è qui "http://manuals.opensound.com/developer/singen.c.html". Se c'è una cosa che ho imparato da questo è che lavorare con il suono per Linux è un po 'confuso. –