Möglichst einfach Sounds
-
hallo!
Wie kann ich möglichst einfach bestimmte Töne über die Soundkarte ausgeben (lassen)? Geht es auch einfacher als mit Schnittstellen wie DirectSound und co.? Über irgeneine MFC-/WinAPI Funktion vielleicht? Ich muss nur Dauer und Höhe eines Tones kontrollieren können.
Danke im Voraus
DerGhost
-
Nur das MIDI-Interface kennt 'Töne'. Ansonsten gibts nur Samples, die von einem abgetasteten oder generierten Signal stammen. Die Schwingungsform (Sinus, Rechteck, Dreieck, Sägezahn...) ist auch sehr wichtig.
-
Angenommen, ich will ne Tonleiter ausgeben lassen, einfach die exakten Tonhöhen. Wie kann ich das realisieren? (bei "Beep" kann man einfach ne Frequenz angeben, allerdings ist dann die Ausgabe über den Systemlautsprecher, das ist nciht so das wahre...)
-
DerGhost schrieb:
Wie kann ich möglichst einfach bestimmte Töne über die Soundkarte ausgeben (lassen)?
Das würde mich auch interessieren.
Früher konnte man auf dem Amiga mit Hilfe des SOUND-Befehls einfache vierstimmige Melodien spielen.
SOUND Frequenz , Dauer , Lautstärke , Kanal Frequenz 20 - 15000 Dauer 0 - 77 Lautstärke 0 - 255 Kanal 0 - 3Mit SOUND WAIT hat man die Töne gesammelt, mit SOUND RESUME alle gleichzeitig abgespielt.
Aber der PC ist hier noch nicht soweit.

-
DerGhost schrieb:
Angenommen, ich will ne Tonleiter ausgeben lassen, einfach die exakten Tonhöhen. Wie kann ich das realisieren? (bei "Beep" kann man einfach ne Frequenz angeben, allerdings ist dann die Ausgabe über den Systemlautsprecher, das ist nciht so das wahre...)
1. Feld mit 16bit-short-Werten anlegen
2. Formel für Bestimmung der Sinus-Schwingung mit angegebener Frequenz raussuchen
3. 1 Periode durch 44100 teilen, um eine Sampling-Frequenz von 44.1kHz (CD-Qualität) zu 'simulieren'.
4. Anzahl Perioden = Länge des Sounds
5. Sound als PCM über PlaySound abspielenEdit:
Kann natürlich sein, dass man damit nur wav-Dateien abspielen kann. Oben genannt war nur die Theorie.