Seite 1 von 2

FMOD Output Frequenz Ermitteln

Verfasst: 09.04.2005 16:03
von Lukaso
Hallo,

ist es mit FMOD möglich die Frequenz zu ermitteln, die an den Ausgang gegeben wird?

Danke :allright:

MFG Lukaso

Verfasst: 09.04.2005 16:23
von Froggerprogger
???
Diese muss doch bei FSOUND_Init() mit übergeben werden, daher ist die doch in jedem Fall sowieso bekannt ?

Verfasst: 09.04.2005 16:27
von Lukaso
Ne, dass suche ich nicht!
Ich möchte z.b. in eine Schleife die Frquenzen des Ausgangs auslesen, die ändert sich ja bei jedem Ton. Mist, schwer zu erklären. Ich erklär mal für was ich es möchte:

Ich habe mir gedacht, ich frage die Aktuelle Frequenz jede milisekunde ab, diese gebe ich mittels Beep_(frequenz, 1) wieder. So könnte ich Theoretisch Musik ausm Internen Speaker abspielen. <)

MFG Lukaso

Verfasst: 09.04.2005 16:46
von MVXA
HrHr, du bist gerissen :mrgreen:. Könnte ich endlich wieder mit meinem P1er musik hören :). Aber ich glaube, sowas ist leider nicht möglich. Glaub, den Systemspeaker würde sowas überfordern :(.

Verfasst: 09.04.2005 16:50
von Lukaso
MVXA hat geschrieben:HrHr, du bist gerissen :mrgreen:. Könnte ich endlich wieder mit meinem P1er musik hören :). Aber ich glaube, sowas ist leider nicht möglich. Glaub, den Systemspeaker würde sowas überfordern :(.
:lol:

Ne, denke das überfordert ihn nicht:

Code: Alles auswählen

Repeat
  Beep_(Random(16000), 1)
ForEver
MFG Lukaso :allright:

Verfasst: 09.04.2005 16:59
von MVXA
Wenn das nicht funktioniert kaufst du mir n neuen PC mit nem Pentium 1 Prozessor und 32 MB ram o_O. Mhhh, das klingt geil ^^. Errinert mich an Civilisation 1, wenn eine Einheit zerstört wurde :lol: :allright:. Vielleicht sollte man mal so ein classicer neu auflegen. Dann noch mit TCP/UDP MP modus :allright:.

Verfasst: 09.04.2005 17:01
von Lukaso
Naja, die Quali ist nicht so besonderst und ob dein P1 es schafft die Frequenzen auszulesen, ohne zu ruckeln weiß ich nicht :roll:

MFG Lukaso

Verfasst: 09.04.2005 17:18
von Leo
1. Wie willst du mehrere Stimmen gleichzeitig abspielen?
2. Beep hält den ganzen Prozess an!

:)

Verfasst: 09.04.2005 17:21
von Froggerprogger
So geht das nicht.
Es gibt keine "Frequenz zu einem Zeitpunkt".
Eine Frequenz ist ja eine "Signaländerung pro Zeit", deswegen kann man nur Frequenzen von Signalverläufen bestimmen.
Dabei lässt sich jedes Signal als eine Zusammenmischung von vielen Sinustönen aller Frequenzen betrachten. Dabei ist die Fast Fourier Transformation (FFT) dafür zuständig, ein Zeit-Wert-Signal in eine Frequenz-Wert-Darstellung (='Spektrum') zu transformieren, man kann dann also für ein festes Zeitfenster die Laustärken der verschiedenen Frequenzen in diesem Zeitfenster sehen.
fmod kann das per FSOUND_DSP_GetSpectrum(), welche jeweils 1024 Samples auswertet, normalerweise also etwa 40 mal pro Sekunde geupdated wird und ein Array mit den Lautstärken der Frequenzen zurückliefert. Suche danach mal in den Foren, da gibt es einige Beispiele.

Verfasst: 09.04.2005 17:45
von Danilo
MVXA hat geschrieben:Aber ich glaube, sowas ist leider nicht möglich. Glaub, den Systemspeaker würde sowas überfordern :(.
Nur mal zur Info: Vor rund 10 Jahren hat ein damaliger Bekannter
von mir einen WAV-Player für den Speaker programmiert, und das
lief fein.
Die Qualität war nicht sonderlich und die Lautstärke etwas leise,
aber man konnte die Musik erkennen und hören.

War damals aber noch unter DOS mit direkter Speaker-Programmierung,
486er oder kleiner Pentium.

Bei Beep_() sehe ich schonmal das Problem das die kleinstmögliche
Zeitangabe 1ms beträgt, d.h. es kann nur mit maximal 1000Hz
laufen. Eher weniger, da zwischen den Beeps eben auch noch
Arbeit verrichtet werden muß, wobei das abspielen eines Streams/Buffers
aber nicht viel braucht.

Genaue Infos dazu habe ich nicht, ich kann nur sagen das es
möglich ist - wahrscheinlich aber besser mit direkter Speaker-
Programmierung... und ähm... evtl. mit RealTime-Priorität in
einem Multitasking-OS.

Das Nächste, was der damalige Bekannte gebastelt hatte, war
übrigens einen richtigen Lautsprecher inkl. Lautstärkeregler
(und wahrscheinlich Verstärker?) an die Speaker-Leitungen
zu basteln. Beepen 20mal lauter als der interne Speaker... :D