c++,sound

Seite 1 von 1 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/csound_104850/page_1 - zur Vollversion wechseln!


Maximi schrieb am 21.01.2004 um 19:34

hi leutz!

also ich hätte eine frage!

ich wollte in c++ eine art klavier machen!
also der user gibt einen Buchstaben ein. z.B. t!
und wenn er t eingibt soll ein sound kommen!

gibts eine funktion das der rechner einen ton produziert?

ich hab in der hilfe geschaut da gibts eine funktion die PlaySound heisst! jedoch kenn ich mich mit den parametern nicht aus!
ich bin kein programmiergenie deswegn frage ich euch!

tia

maximi


that schrieb am 21.01.2004 um 20:58

Kommt auf dein Betriebssystem/Umgebung/Library an.


Maximi schrieb am 21.01.2004 um 20:59

betriebssystem win2k!

programmiere mit microsoft visual studio autoren edition


that schrieb am 21.01.2004 um 21:22

Hm, ich wusste gar nicht dass es von MSVC eine Version für Schriftsteller gibt. ;)

PlaySound kann u.a. WAV-Dateien abspielen.
Wenn du nur einfach einen Ton mit bestimmter Frequenz und Dauer generieren willst, nimm Beep().


mat schrieb am 21.01.2004 um 22:24

http://msdn.microsoft.com/library/d..._start_page.asp

neben playsound gibts noch ein paar andere "nette" funktionen.

empfehlenswert(er): DirectSound und fmod


Ringding schrieb am 21.01.2004 um 22:30

Am einfachsten wird's wohl über MIDI gehen, da kann man sich wenigstens verschiedene Instrumente aussuchen. Ist alles gut dokumentiert in der MSDN Library.

EDIT: fmod oder bass (zweiteres ist mir irgendwie sympathischer)


Maximi schrieb am 22.01.2004 um 10:03

thx für eure hilfe ich werds gleich mal versuchen


Geigerzeiger schrieb am 22.01.2004 um 18:24

du kannst das a so probieren:
ist aber mathematisch aufwendig:
es gibt in VC++ in der win32 api funktionen, die die sound-hardware direkt ansprechen: Man muss Töne generieren, indem man eine Sinusschwingung also y(t) = sin(w*t) anlegt. In w ist die Frequenz f enthalten w = 2*PI*f. diese werte der Funktion lest ma in a byte array ein und dieses "schreibt" ma auf dem Buffer der Soundkarten.
Natürlich muast de Abtastefrequenz, -auflösung wissn. Des geht mit de funktionen wie waveOutPrepareHeader(), oiso die genauen Einstellungen wie Abtastefrq,... Dieser Header entält auch noch das BYTE array, wo die genaue schwingung beschrieben ist. Der ganzen Header wird mit waveOutWite() oder so auf de Soundhardware übertragen. Und du hörst des dann.

I was das des voi kompliziert zum erklären ist aber poste einfach wannst wos net verstehst.


that schrieb am 22.01.2004 um 18:44

@Geigerzeiger: Ja, das geht dann in den Bereich Synthesizer - hab ich vor langer Zeit mal gebastelt; war ganz interessant, verschiedene Funktionen auszuprobieren.


atrox schrieb am 22.01.2004 um 21:31

auch eine lösung - nachdem ich mich schon mal damit herumgespielt habe (für sprachausgabe), und es gar nicht so schwierig ist:
man lädt ein wave mit einer einzelnen note eines instrumentes ins ram. jedesmal wenn man den ton ausgeben will, verändert man im header die samplingrate entsprechend (=verändert tonhöhe) und läßt das ding neu ausgeben.




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025