Toon posts:

[C++] muziek/audio programmatuur maken

Pagina: 1
Acties:
  • 302 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
ik ben dj/producer en ik wil meer flexibiliteit bij het zowel het produceren als het live spelen van mn tracks. dwz; ik wil een programma maken waarmee ik muziek niet op de 'doorgaanse' manier maak, maar meer op basis van emoties (dus een sequencer programma waarbij ik bakken met parameters kan invoeren, en waaruit dan een soort 'template' rolt die ik zelf vervolgens kan uitwerken)

het muzikale gedeelte; dwz het juiste gebruik van toonladders en de constructie van beats moet te doen zijn, wat lastig wordt voor mij is het daadwerkelijke coden van de classes die geluid naar de geluidskaart moeten gaan uitspugen. voordat ik me aan zo'n heikel karwei durf te wagen zou ik graag wat pointers hebben van mensen met ervaringen op dit gebied.

waar ik voornamelijk totaal geen verstand van heb:

- hoe zet ik een bepaalde gegenereerde waveform om naar een geluidssignaal? wat voor libraries gebruiken jullie zoal en hebben jullie goeie ervaring mee?
- hoe gebruik ik meerdere kanalen en hoe zit het met de timing/synchronisatie, hoe code je iets dat op 44khz geluid uitspuugt? (gaat hier dus meer om de principes van audio coding dan om de daadwerkelijke code)
- evt: is het redelijk te doen om vst(i) gebruik mogelijk te maken?

en misschien nog wel het belangrijkste; tegen wat voor problemen ga ik geheid oplopen?

[ Voor 6% gewijzigd door Verwijderd op 06-05-2006 19:46 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Dit alles is aardig implementatiespecifiek en hoort daarom in Programming thuis. ;)

Trouwens, onderschat je het analyseren van muziek niet? Het lijkt me aardig uitdagend om een beetje een fatsoenlijk programma te maken dat muziek analyseert op bijbehorende emoties. ;)

SEA>>PRG

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

ik kan je de standaard windows sound api aanbevelen als het niet te moeilijk moet zijn...

Ik heb ergens ooit de code gevonden van "Fister" (was het op codeproject?). Aan de hand daarvan heb'k dan mijn voiceclient geschreven. misschien moet je dit ff opzoeken en bekijken.

voor het hardere werk ben je beter af met DirectSound, maar imo ligt het niveau daarvan wel ietsje hoger.

[ Voor 20% gewijzigd door H!GHGuY op 06-05-2006 20:08 ]

ASSUME makes an ASS out of U and ME


Verwijderd

Topicstarter
okay tnx ik zal het eens bekijken :)
wat zijn eigenlijk de hoofdzakelijke verschillen tussen de std api en directsound?
-NMe- schreef op zaterdag 06 mei 2006 @ 19:49:
Trouwens, onderschat je het analyseren van muziek niet? Het lijkt me aardig uitdagend om een beetje een fatsoenlijk programma te maken dat muziek analyseert op bijbehorende emoties. ;)
jep :P
maar het verschil is dat ik daar misschien maanden aan moet coden, maar dat is leuk want een kwestie van clever thinking en veel muziekliteratuur lezen.. pcies wat ik leuk vindt aan coden/probleemoplossen. terwijl het me code-technisch wat lastiger lijkt.. niet echt mn ding, maarja, t moet toch gebeuren :)

Verwijderd

Topicstarter
overigens; het zou mooi zijn als ik een lib kon gebruiken waar ook een linux port van is. lijkt me wel zo tactisch om bij live optredens linux te kunnen gebruiken..

misschien een wrapper voor dsound && alsa && / || whatever? wat doen de std windows api's eigenlijk; samples afspelen ed of ook wat 'dieper', alsin dat je er sinusjes in kunt gooien en er dan een toon uitkomt?

/me gaat alvast zelf wat googlen

*edit: al een smaakvolle verzameling classes gevonden: The Synthesis ToolKit in C++ (STK) :9
*edit: en nog een voor de output zooi.. fmod

[ Voor 39% gewijzigd door Verwijderd op 06-05-2006 21:01 ]


  • H!GHGuY
  • Registratie: December 2002
  • Niet online

H!GHGuY

Try and take over the world...

als je linux ook wil denk ik dat je aan de slag moet met SDL (www.libsdl.org).

het verschil tussen de winsound api en dsound is dat je met de winsound api X buffers aanmaakt, je vult ze geeft ze aan de api door en via een callback krijg je melding dat de buffer weer gebruikt kan worden. je vult ze op etc etc... als je geen buffers aan de winsound api geeft dan stopt het ding ook met spelen.

in dsound gebruik je circulair buffers. vul je je buffer niet snel genoeg op dan heb je ff lekker pech want dan skipt je geluid ff lekker door. Bovendien had ik wat technische problemen met DSound maar dat kan mss wel liggen aan het feit dat'k nog nie al die handel goed beheerde.

ASSUME makes an ASS out of U and ME


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

HIGHGuY schreef op zaterdag 06 mei 2006 @ 22:14:
als je linux ook wil denk ik dat je aan de slag moet met SDL (www.libsdl.org).

het verschil tussen de winsound api en dsound is dat je met de winsound api X buffers aanmaakt, je vult ze geeft ze aan de api door en via een callback krijg je melding dat de buffer weer gebruikt kan worden. je vult ze op etc etc... als je geen buffers aan de winsound api geeft dan stopt het ding ook met spelen.

in dsound gebruik je circulair buffers. vul je je buffer niet snel genoeg op dan heb je ff lekker pech want dan skipt je geluid ff lekker door. Bovendien had ik wat technische problemen met DSound maar dat kan mss wel liggen aan het feit dat'k nog nie al die handel goed beheerde.
libSDL is idd de shit als het crossplatform moet zijn, echter is audio op linux weer een ervaring op zichzelf, zo zul je gedoe krijgen met latency's, iets waar je bij een liveset echt niet op zit te wachten ;)

edit: Ik zie net dat fmod cross platform is, raad ik je toch aan om daarvoor te gaan, aangezien je dat waarschijnlijk heel veel werk scheelt ten opzichte van de functies die SDL je standaard aanbiedt :)

[ Voor 10% gewijzigd door Arjan op 06-05-2006 22:52 ]

oprecht vertrouwen wordt nooit geschaad


Verwijderd

Topicstarter
hmja grappig de hele gui die ik er alvast voor heb geschreven is in SDL :)

maar idd, fmod klinkt wel erg aanlokkelijk.. en die stk ook:

STK Class Hierarchy->RtAudio
RtAudio provides a common API (Application Programming Interface) for realtime audio input/output across Linux (native ALSA, Jack, and OSS), SGI, Macintosh OS X (CoreAudio), and Windows (DirectSound and ASIO) operating systems. :9

ik snap alleen niet precies waarin fmod en stk verschillen, dus daar ga ik me nu eens over buigen onder het genot van een lekkere goudgele vrind :D

Verwijderd

OpenAL mag ook nog wel even genoemd worden.
http://www.openal.org/
Pagina: 1