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?
risposta
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.
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!
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.
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. –
- 1. Creare un file in Linux usando C
- 2. Come riprodurre un suono in C#, .NET
- 3. Riproduci tono stereo in Android
- 4. Come creare un suono da zero C#
- 5. Come viene creato un tono seppia?
- 6. Rilevamento suono Clap in C#
- 7. come giocare un suono errore di Windows specifica in C#
- 8. Come posso riprodurre un suono in WinForms?
- 9. Come iniziare suono dopo suono in soundmanager2
- 10. Come registrare audio su Android e modificare il tono?
- 11. Come viene riprodotto un suono?
- 12. Come riavviare un suono incorporato in Javascript?
- 13. Come riprodurre un suono in angularjs
- 14. Come modificare il suono della notifica tramite codice in Android?
- 15. Objective-C in Linux
- 16. suonare i toni del pianoforte usando C#
- 17. Come posso cercare un file eseguibile usando python in linux?
- 18. Come creare un utente in linux usando python
- 19. Come dormire o mettere in pausa un PThread in c su Linux
- 20. Genera un file audio con un tono 15Khz
- 21. Come ottenere l'indirizzo mac per un'interfaccia in linux usando un programma C?
- 22. Riproduci il tono variabile con Java?
- 23. C threading in linux?
- 24. Uptime sotto linux in C
- 25. come zip particolari cartelle in Linux usando le coperture
- 26. Strumenti di cancellazione del suono software (interferenze distruttive) su Linux?
- 27. Come decodificare mp3 in wav usando lame in C/C++?
- 28. Come riprodurre un suono standard di Windows?
- 29. Come ottenere il nome utente in C/C++ in Linux?
- 30. Come produrre suoni in C su Linux?
Si potrebbe guardare il sorgente per http://en.wikipedia.org/wiki/SuperCollider – JasonTrue