"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

c++,sound

Maximi 21.01.2004 - 19:34 588 9
Posts

Maximi

Little Overclocker
Avatar
Registered: Mar 2003
Location: Wien
Posts: 57
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

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
Kommt auf dein Betriebssystem/Umgebung/Library an.

Maximi

Little Overclocker
Avatar
Registered: Mar 2003
Location: Wien
Posts: 57
betriebssystem win2k!

programmiere mit microsoft visual studio autoren edition

that

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
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

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25422
http://msdn.microsoft.com/library/d..._start_page.asp

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

empfehlenswert(er): DirectSound und fmod

Ringding

Pilot
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
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

Little Overclocker
Avatar
Registered: Mar 2003
Location: Wien
Posts: 57
thx für eure hilfe ich werds gleich mal versuchen

Geigerzeiger

Addicted
Registered: Jan 2004
Location: anywhere
Posts: 449
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

Moderator
Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11338
@Geigerzeiger: Ja, das geht dann in den Bereich Synthesizer - hab ich vor langer Zeit mal gebastelt; war ganz interessant, verschiedene Funktionen auszuprobieren.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
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.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz