Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Frequenz (https://www.delphipraxis.net/85019-frequenz.html)

ebber 24. Jan 2007 20:06


Frequenz
 
Hallo

Ich habe mit der bass.dll eine Sound Stream;
Wie bekomme ich jetzt die Laustärke von einzelnen Frequenzen/Frequenzbreichen?

MfG

Jens Schumann 24. Jan 2007 20:24

Re: Frequenz
 
Hallo,
such mal in der Bass Hilfe nach FFT (Fast Fourier Transformation)

ebber 25. Jan 2007 19:20

Re: Frequenz
 
Ich hab das nu mal gelsesen, aber jetzt weis ich auch nur wenig mehr als vorher.

Kann mir jemand mal ein Beispiel geben pls.

MfG

BloodySmartie 29. Jan 2007 15:41

Re: Frequenz
 
Soweit Du BASS und nicht BASSASIO verwendest, gibts es eine Methode namens BASS_GetChannelData.

Delphi-Quellcode:
function BASS_ChannelGetData(handle: DWORD; buffer: Pointer; length: DWORD): DWORD;
An "length" übergibst Du dabei eine der folgenden vordefinierten Konstanten:

Zitat:

BASS_DATA_FLOAT Return floating-point sample data.
BASS_DATA_FFT512 512 sample FFT (returns 256 floating-point values)
BASS_DATA_FFT1024 1024 sample FFT (returns 512 floating-point values)
BASS_DATA_FFT2048 2048 sample FFT (returns 1024 floating-point values)
BASS_DATA_FFT4096 4096 sample FFT (returns 2048 floating-point values)
BASS_DATA_FFT_INDIVIDUAL Use this flag to request separate FFT data for each channel. The size of the data returned is multiplied by the number channels.
BASS_DATA_FFT_NOWINDOW This flag can be used to prevent a Hanning window being applied to the sample data when performing an FFT.
Wenn Du einer der Konstanten mit "FFT" im Namen übergibst, dann wird Dir ein Puffer geliefert, der die Sampledaten einer Fast Fourier Transformation unterzogen hat. In diesem Fall dient die FFT dazu, Dir eine aufsteigend nach Frequenzen geordnete Datenmengenge zu liefern, welche die einzelnen Lautstärken enthält. Je mehr Samples Du Dir geben lässt (z.B. BASS_DATA_FFT1024 statt BASS_DATA_FFT512), desto feiner sind die einzelnen Lautstärken aufgelöst.

Um z.B. ein einfaches Spektrum auszugeben, durchläufst du schlicht den Puffer in einer Schleife und zeichnest auf den Canvas, wobei der x-Wert dem Wert der Zählervariablen entspricht und y sich so

Delphi-Quellcode:
y:=DatenArray[x];
errechnet.


Du wirst dann schon merken, was Du für Daten vor Dir hast. Um die Funktionsfähigkeit zu überprüfen empfehle ich Dir, Dateien zu benutzen, die nur einen einzigen Sinus-Ton in einer bestimmten Frequenz enthalten. Z.B. muss bei korrekter Ausgabe der "Peak" bei einem 440 Hz - Ton viel weiter links liegen als ein 10 kHz - Ton.

Wenn Du die Daten statt aus einem Channel direkt aus dem Stream lesen möchtest, musst Du nen kleinen Umweg gehen:

1. Daten aus dem Stream z.B. in ein Pufferarray einlesen
2. Frequenzspektrum über eine FFT aus den Daten erstellen
3. Ausgabe des Spektrums (...oder was immer Du damit vor hast).

Eine FFT selbst zu implementieren ist recht schwierig. Ich empfehle Dir, mal auf
http://www.simdesign.nl/fft.html
nachzusehen. Dort kannst Du die entsprechenden Units kostenlos bekommen.

Du wirst merken, dass die FFT-Funktion mit Arrays gefüttert werden will, das aus komplexen Zahlen besteht. Diese besitzen einen Realteil und einen Imaginärteil.

Delphi-Quellcode:
type
  // Complex numbers, with precision specified in TFloat (Types unit)
  TComplex = packed record
    Re: TFloat; // Real part
    Im: TFloat; // Imaginary part
  end;
Lade Deine Sampledaten dann einfach nur in den Realteil und setze die Imaginärteile jeweils auf 0.

Ich hoffe, meine Erklärung hat Dir etwas weitergeholfen. Wenn Du noch Fragen hast, dann frag einfach :)

Digital Signal Processing macht Spass!! :spin2:

ebber 31. Jan 2007 14:32

Re: Frequenz
 
Danke für die Erleuchtung.

Aber wie komme ich jetzt auf eine genaue Frequenz ?

Ist das nu z.B. 41000/512=86 dann ist jeweils 1 immer der durschnitt der Lautstärke von 86 Frequenzen ?
Oder habe ich nu was ganz falsch verstanden ?

MfG

BloodySmartie 31. Jan 2007 14:48

Re: Frequenz
 
Damit beschäftige ich mich auch gerade :) Es dürfte sich in etwa so verhalten, wie Du es gerade beschrieben hast - wenn nicht, dann weiß ich es in ein paar Tagen und sag Dir Bescheid. An diesem Problem bastel ich auch gerade.

Was dann allerdings ein Element des "Lauststärkearrays" enthält, ist Dir überlassen. Du kannst ja zum Beispiel das arithmetische oder geometrische Mittel der enthaltenen Frequenz-Lautstärken ermitteln, oder einfach den Maximalwert des Teilarrays nehmen.

ebber 31. Jan 2007 15:07

Re: Frequenz
 
Danke.

Wenn ich jetzt so das mache dann kommen solche Werte bei den Werten 1-512 raus :



...

2,62817666694213E-308
4,31727782175805E-308
3,45845952088873E-322
2,12260832960046E-314
1,89873035990593E269
2,62832945125094E-308
1,47207590662377E269
1,82829799321222E-307
0
2,08630088400675E-317
6,11931922575718E-318
1,65233992562079E269
NAN
1,44687856257008E269

...

Hab ich da einen Fehler gemacht ?

sirius 31. Jan 2007 15:13

Re: Frequenz
 
Die Auswertung der Frequenzanalyse und die Implementationen (von 3_of_8) gibts hier:
DP - FFT
DP - DFT

ebber 31. Jan 2007 15:42

Re: Frequenz
 
Danke

Ich hab mir das mal angeschaut, aber das übersteigt leider meine Mathematischen und Programmiererischen Fähigkeiten.
Gibt es irgenwie was fertiges das mir die Laustärken der Frequenzen ausgibt ?

MfG

omata 31. Jan 2007 15:47

Re: Frequenz
 
Sonst schau dir doch mal mein Beispiel an.

Dort ist alles drin.

Gruss
Thorsten

3_of_8 31. Jan 2007 15:51

Re: Frequenz
 
@ebber: Einfach meinen Code per Copy&Paste einfügen und dann die Prozeduren/Funktionen aufrufen, wie ich es im letzten Beitrag des FFT-Thread beschrieben habe. Dann kriegst du genau, was du willst.

sirius 31. Jan 2007 15:55

Re: Frequenz
 
Ich habe diese bass.dll nicht. Deswegen kann ich im speziellen auch nicht weiterhelfen.

Aber du kannst ja mal erzählen, was für ein array/vektor du so hineingibst und was nachher herauskommt. schreib die werte doch mal in eine txt oder file of double

[roter kasten] oder so :roll:

ebber 31. Jan 2007 16:30

Re: Frequenz
 
Ich muss zuerst mal sagen dass mir das ein bisschen zu kompliziert in alle Richtungen ist, aber ich versuchs mal.

Delphi-Quellcode:

procedure TForm1.Button1Click(Sender: TObject);

var  i:integer;
      fft:array[0..512] of real;

begin


  BASS_ChannelGetData(Handle, @fft, BASS_DATA_FFT512);



  for i := 0 to 512 - 1 do
     memo1.Lines.add(inttostr(i)+' : '+floattostr((FFT[i])));

end;
Das habe ich, so bekomme ich z.B. die Werte :

Delphi-Quellcode:
0 : NAN
1 : 1,12465823624653E292
2 : 1,20189768653733E-317
3 : 1,16673901863738E-300
4 : 2,62811725167181E-308
5 : 1,11829762366242E292
6 : 1,11715986426131E292
7 : NAN
8 : 1,54716423149261E292
9 : 1,54710666721749E292
10 : 2,62810027570557E-308
11 : 1,18575755001899E-322
12 : 1,35808342504293E-312
13 : 0
14 : 2,62810027570557E-308
15 : 2,12199579096527E-314
16 : 1,55301264163692E-298
17 : 5,87407479803478E-308
18 : 3,35694641402031E-308
19 : 2,41907528062443E-311
20 : 5,61258573675656E-321
21 : 1,66885632177938E-307
22 : 1,16657952333435E-300
23 : 1,44635487752983E-307
24 : 3,33773471456862E-307
25 : 4,22793571707056E-307
26 : 1,69122046220266E-306
27 : 1,05700260311554E-307
28 : 1,69116070632455E-306
29 : 9,79111267356328E-307
30 : 1,24611469797471E-306
31 : 0
32 : 0
33 : 0
34 : 0
35 : 0
36 : 0
37 : 0
38 : 0
39 : 0
40 : 0
41 : 0
42 : 0
43 : 0
44 : 0
45 : 0
46 : 0
47 : 0
48 : 0
49 : 0
50 : 0
51 : 0
52 : 0
53 : 0
54 : 0
55 : 0
56 : 0
57 : 0
58 : 0
59 : 0
60 : 0
61 : 0
62 : 0
63 : 0
64 : 0
65 : 0
66 : 0
67 : 0
68 : 0
69 : 0
70 : 0
71 : 0
72 : 0
73 : 0
74 : 0
75 : 0
76 : 0
77 : 0
78 : 0
79 : 0
80 : 0
81 : -4,18443541914322E202
82 : 2,96439387504748E-323
83 : 2,12199579689406E-314
84 : 2,62929708071979E-308
85 : -4,18443717017927E202
86 : 3,95252516672997E-323
87 : 0
88 : 6,12246148326473E-318
89 : 2,54639494945477E-313
90 : 1,47913510818262E269
91 : 3,7043816842375E-317
92 : 2,63297343836082E-308
93 : 2,65152892663491E-231
94 : 3,26098148224598E-319
95 : 2,63297237742971E-308
96 : 5,79480253719901E-315
97 : 2,63292251046184E-308
98 : 1,31408991545857E-298
99 : 1,03278940715454E-314
100 : 3,34769451175947E-308
101 : 1,54710666694284E292
102 : 2,63247158703596E-308
103 : 2,62978101465636E-308
104 : 3,35694641402099E-308
105 : -2,00058937072754
106 : 1,12154479274516E292
107 : -4,18443723784509E202
108 : 4,45028352480978E-308
109 : 4,45028353012003E-308
110 : 1,11829762364925E292
111 : 2,68962966657515E-312
112 : 5,16928951920318E291
113 : 2,63234426728847E-308
114 : 2,6297808957601E-308
115 : 1,12155001401982E292
116 : 2,63234426667558E-308
117 : 2,92040943990301E-308
118 : 1,37645447136896E-313
119 : 2,92040943997163E-308
120 : 2,62974694459604E-308
121 : 2,6309784561806E-308
122 : 1,12441936184566E292
123 : 1,12441414029717E292
124 : 1,12434608165381E292
125 : 2,63119838894847E-308
126 : 4,47741111903554E-312
127 : 7,70742407512345E-322
128 : 4,6683907401236E-313
129 : 1,16074454506932E-304
130 : 1,70565294782482E-317
131 : 1,27319747536967E-313
132 : 1,2732587157946E-313
133 : 1,48994458614667E269
134 : 1,27387390064539E-313
135 : 2,02978234226501E-306
136 : 5,92878775009496E-323
137 : 4,24783840471674E-314
138 : 1,57901760673092E269
139 : 1,76622190874817E-304
140 : 6,33556829700512E269
141 : 1,90985766078938E-313
142 : 2,6303336466719E-308
143 : 9,63138430054365E-305
144 : 1,91047263793497E-313
145 : 3,15228336175121E265
146 : 1,90979621201696E-313
147 : 3,1534226784811E265
148 : 1,90985766078938E-313
149 : 2,12199579140993E-313
150 : 2,12199579140993E-313
151 : 2,08242642121206E-317
152 : 9,63130173863593E-305
153 : 1,37960215281424E-306
154 : 4,45057212329611E-308
155 : 2,12257863032636E-314
156 : 1,48109875024125E269
157 : 3,30111246847767E-308
158 : 2,63045993441322E-308
159 : 2,63082491768925E-308
160 : 2,86469431790193E-312
161 : NAN
162 : 2,63061271811018E-308
163 : 7,74739752885526E-304
164 : 4,24406844194443E-313
165 : 5,37543422675276E-321
166 : 6,12536658926227E-318
167 : 5,37543422675276E-321
168 : 3,30119734060037E-308
169 : 2,63072306189129E-308
170 : 7,74739752880923E-304
171 : 2,37151510003798E-322
172 : 6,12505038724894E-318
173 : 3,30109651675966E-308
174 : 1,12395542559599E292
175 : 1,12398207296963E292
176 : 4,24399158291868E-313
177 : 0
178 : 1,48068309797752E269
179 : 8,32146615207255E-317
180 : 4,24399158217758E-313
181 : 9,88131291682493E-323
182 : 0
183 : 2,75859453492474E-313
184 : 2,12199581468042E-314
185 : 2,75859452830426E-313
186 : 2,86469431847011E-312
187 : 1,01855797966333E-312
188 : 0
189 : 0
190 : 2,86469431780312E-312
191 : 6,79038653173116E-313
192 : 2,9204094392907E-308
193 : 2,17292368994844E-311
194 : 4,24406844392069E-313
195 : 1,39069238152491E-309
196 : 2,63072306189129E-308
197 : 2,63137663736352E-308
198 : 1,12398539083109E292
199 : 1,12398302435506E292
200 : 2,92041043254442E-308
201 : 3,3011124601562E-308
202 : 2,30873793651348E-311
203 : 2,6567387302984E-311
204 : 2,63131722148136E-308
205 : 2,6314869809887E-308
206 : 2,63128327100346E-308
207 : 6,12641400843146E-318
208 : 0
209 : 2,63136814861174E-308
210 : 2,12851173423394E-314
211 : 2,63137663881813E-308
212 : 7,18837923539462E-305
213 : 2,30391703651967E-307
214 : 2,75859453492474E-313
215 : 2,75859453492474E-313
216 : 1,01856410653188E-312
217 : 7,18837923413992E-305
218 : 1,86737849183494E-312
219 : 2,08663145968889E-307
220 : 2,12828708457662E-307
221 : 2,86469431786735E-312
222 : 0
223 : 7,06200200940733E-311
224 : 2,6415112891075E-308
225 : 7,18837923859118E-305
226 : 7,18837923859178E-305
227 : 2,30095303328915E-307
228 : 5,62604362539665E-304
229 : 2,63257344873695E-308
230 : 2,63257344891244E-308
231 : 2,63257344444487E-308
232 : 8,73195470464632E-305
233 : 2,19728759731221E-307
234 : -4,18443543125669E202
235 : 8,4394965460973E-305
236 : 4,64782676362218E266
237 : 6,79960809482891E-318
238 : 2,63185196437171E-308
239 : 9,47209154063073E266
240 : 8,43949654611739E-305
241 : 3,09079722001163E-308
242 : 2,63189440356792E-308
243 : 9,86891339577716E-315
244 : 1,58101006669199E-322
245 : 2,63207265330664E-308
246 : 2,63242914859947E-308
247 : 2,64151129068291E-308
248 : -3,09786392411602E-33
249 : 5,96190075266236E43
250 : 1,60714763138775E-33
251 : 2,12199577811957E-314
252 : 2,63211296914072E-308
253 : 1,84778470614387E-307
254 : 2,18581184407477E-307
255 : 1,20267931042175E-72
256 : 7,12603378906927E-67
257 : 2,11369885387736E-53
258 : 2,63243072974742E-308
259 : 1,81145953338448E-307
260 : 4,24399158341274E-313
261 : 2,64151129057399E-308
262 : 2,63242914869757E-308
263 : 2,29945405546241E-307
264 : 2,63228485079345E-308
265 : 7,1883792386934E-305
266 : 2,22695149206483E-319
267 : 0
268 : 2,29124957093625E-307
269 : 1,79951015423682E-307
270 : 2,63236973270639E-308
271 : 2,29149063094466E-307
272 : 7,91695186017062E-305
273 : 1,79951015430308E-307
274 : 2,63242914858853E-308
275 : 2,84834476653942E-307
276 : 6,73122940944448E-317
277 : 1,34905632421882E-27
278 : 6,36242995687742E-29
279 : 2,80637517789316E-30
280 : 5,78430567124566E-33
281 : 5,97533982555598E-34
282 : 1,17261371305785E-35
283 : 3,56429865626119E-31
284 : 6,81506696722742E-30
285 : 9,39578902101243E-30
286 : 2,13021240234451E-29
287 : 8,00297667819771E-29
288 : 4,5356982244686E-27
289 : 1,02095994820031E-26
290 : 5,63225203867751E-28
291 : 4,76425483638642E-30
292 : 1,48456577632607E-33
293 : 9,94988970811667E-37
294 : 3,72869614086071E-35
295 : 2,4559165331026E-37
296 : 1,00876239502292E-33
297 : 2,86373966570301E-33
298 : 1,76229411182046E-33
299 : 4,17023437388626E-33
300 : 2,43777571246864E-32
301 : 1,43840562856121E-31
302 : 3,36304284599315E-32
303 : 5,02716681834652E-33
304 : 6,1320479160994E-34
305 : 1,64901398538986E-34
306 : 2,29247520521686E-34
307 : 4,19961601678333E-34
308 : 6,01666324485636E-35
309 : 7,03812191607308E-35
310 : 1,18150683333031E-35
311 : 3,86951256643931E-39
312 : 2,17451247778713E-37
313 : 8,88887947633371E-36
314 : 1,39561504533326E-38
315 : 1,7520546507378E-37
316 : 1,48287375004896E-35
317 : 4,16563578221198E-36
318 : 2,79032329509247E-37
319 : 4,61062668853436E-38
320 : 1,10993948947015E-38
321 : 2,45253326050563E-39
322 : 7,25075692510912E-40
323 : 8,12430905843398E-41
324 : 1,78119632786171E-38
325 : 7,5758464772584E-38
326 : 1,06375661583631E-38
327 : 1,22810675102158E-44
328 : 7,48809909754647E-40
329 : 1,71153161620592E-38
330 : 2,04215733931687E-38
331 : 5,80845001084071E-39
332 : 2,85004702820132E-40
333 : 8,48968644529381E-314
334 : 8,26728661792034E-39
335 : 3,41771654023172E-40
336 : 2,88226444295231E-309
337 : 2,64105293910713E-308
338 : 2,3474581415781E-313
339 : 1,33061969936E-231
340 : 1,24610591189389E-306
341 : -4,35364019372248E307
342 : -1,26162939147E305
343 : -6,64254893637779E302
344 : -1,42292236633187E300
345 : -1,50425984392974E298
346 : -2,3710944513504E297
347 : -2,04441873580596E296
348 : -8,58711534334485E296
349 : -1,15154476652647E299
350 : -9,71363276566339E300
351 : -1,60766184430523E302
352 : -9,86013544476512E302
353 : -5,31518495012696E303
354 : -2,46902788618516E304
355 : -2,33191664094089E304
356 : -6,30942355275964E304
357 : -4,38894947326396E305
358 : -2,3042055894243E305
359 : -1,2069221793652E305
360 : -2,194389979818E304
361 : -5,82895448369797E303
362 : -5,76070650553747E304
363 : -1,61538387197906E307
364 : 7,83481316985112E-306
365 : 2,6439009066157E-303
366 : 1,67786256226722E-302
367 : 6,93158905014659E-303
368 : 1,08308512516762E-304
369 : 1,72525048361693E-307
370 : -1,01201930654853E308
371 : -8,14962444347467E307
372 : -1,57362611239966E308
373 : -4,21462909385451E307
374 : -2,03699465133452E307
375 : -1,42668440992341E305
376 : -4,50077758570142E302
377 : -1,87518297545033E301
378 : -9,37562875062223E300
379 : -1,07151922994652E302
380 : -1,02873262528243E303
381 : -6,85848800016122E304
382 : -9,83257014169426E306
383 : -1,46090597819105E308
384 : -5,89989783123706E307
385 : -4,17012398041119E305
386 : -4,11484679387078E303
387 : -6,6967448388742E301
388 : -8,37028726301386E300
389 : -6,9638944141335E301
390 : -6,64273205103391E302
391 : -4,45699183693319E303
392 : -2,46823471868084E304
393 : -1,09701291697374E304
394 : -2,24925410748898E302
395 : -1,21337957471454E300
396 : -1,98693565669068E299
397 : -3,13783417325544E298
398 : -7,19127205162896E297
399 : -8,36975189664061E298
400 : -6,27781507980347E299
401 : -5,69190405285418E300
402 : -3,34847869175891E301
403 : -1,40649401543724E301
404 : -8,37244467700485E299
405 : -1,76610411336967E298
406 : -2,9438868876501E297
407 : -8,11073972396117E298
408 : -4,55465956223837E301
409 : -1,57726589707558E304
410 : -5,96837793414125E306
411 : 7,78741898402387E-308
412 : 1,9224420863369E-305
413 : 4,32942008783527E-304
414 : 1,1668398614389E-302
415 : 5,13424224389536E-301
416 : 1,34441455401205E-299
417 : 2,09104937352149E-299
418 : 2,53939300677702E-299
419 : 1,86699291080678E-300
420 : 1,05017256455257E-301
421 : 1,67724065483663E-302
422 : 7,74913264562358E-304
423 : 2,31458473773887E-306
425 : -1,19414812374277E307
426 : -8,7083904646071E307
427 : 1,11249448891689E-308
428 : 8,89987103661901E-308
429 : 2,7589163942342E-306
430 : 1,08223855278482E-304
431 : 1,32156523741723E-303
432 : 8,45795522188395E-302
433 : 6,86871545282992E-299
434 : 1,0320396618203E-296
435 : 6,60475519681722E-295
436 : 2,44616459548106E-294
437 : 1,95691849534294E-295
438 : 1,47913510818344E269
439 : 3,7043816842375E-317
440 : 2,63888107464287E-308
441 : 2,65152892663491E-231
442 : 3,26098148224598E-319
443 : 2,63888001371176E-308
444 : 5,79477075889667E-315
445 : 2,63883014674389E-308
446 : -5,08986160255187E306
447 : NAN
448 : 1,42364745266261E-305
449 : 1,64002824058433E-303
450 : 2,63543390158085E-308
451 : 1,63824385782509E-306
452 : NAN
453 : 6,14461538682425E-318
454 : 1,40058221348978E-309
455 : 0
456 : 6,10171684310522E28
457 : NAN
458 : 2,65161001175397E-231
459 : 4,08136621534429E-302
460 : 2,98881525862734E-305
461 : 5,56016881401538E-307
462 : 6,45019496108527E-307
463 : 1,37910170206243E-306
464 : 5,97873870071082E-305
465 : 1,4791351081835E269
466 : 3,7043816842375E-317
467 : 2,63933942573372E-308
468 : 2,65152892663491E-231
469 : 3,26098148224598E-319
470 : 2,63933836480261E-308
471 : 5,79477056127041E-315
472 : 2,63928849783474E-308
473 : 1,42379091899068E-304
474 : 3,44827202337259E-307
475 : -2,17638720722034E307
476 : -3,40029694864849E305
477 : -7,01972075526662E305
478 : -4,16739163085635E305
479 : -2,28167176431937E306
480 : -1,17954239019927E308
481 : -1,01115952774106E308
482 : 7,50953939185305E-308
483 : 1,99364010394518E-305
484 : 1,27594566042098E-303
485 : 2,18732409587415E-303
486 : 1,70886628760622E-304
487 : 5,16217135915541E-306
488 : 3,33771264657003E-308
489 : -5,92536892840667E305
490 : -3,08618545071355E303
491 : -6,96514927509017E301
492 : -8,37160036798572E300
493 : -1,29752611770355E300
494 : -1,33929276207075E301
495 : -1,07146609271905E302
496 : -6,00063784284378E302
497 : -4,6642225373553E304
498 : -3,93329164808943E307
499 : 6,23134759000104E-307
500 : 2,20752098337685E-305
501 : 6,60794786863786E-304
502 : 7,74740126013317E-304
503 : 4,44659081257122E-323
504 : 2,12199580084659E-314
505 : 2,636443964519E-308
506 : 7,74740448530116E-304
507 : 3,95252516672997E-323
508 : 0
509 : 6,13910161421666E-318
510 : 3,81959242418215E-313
511 : 7,74740122766653E-304


Ich weis jetzt nicht ob ich was falsch mache, oder ob ich überhaupt zu blöd bin, aber ich wollte eigentlich so was wie ein Wert zwischen 0 und 100 daraus bekommen;

sirius 31. Jan 2007 16:55

Re: Frequenz
 
Vielleicht solltest du mal etwas anderes als Real nehmen.

Ich würde mal single probieren. Was verlangt denn die bass.dll?

Edit: Nimm mal fft:array[0..511] of cardinal;
und gib dir "fft[i] mod 65536" und oder "fft[i] div 65536" aus.
Watch This

ebber 31. Jan 2007 16:59

Re: Frequenz
 
Was sie verlangt weis ich nicht aber mit single kommt das gleiche raus.

sirius 31. Jan 2007 17:03

Re: Frequenz
 
Siehe Edit

ebber 31. Jan 2007 17:43

Re: Frequenz
 
Danke

Die Werte sind jetzt in einem angemmessen Bereich.

Gibt es ein Programm mit dem man bestimmte Frequenzen ausgeben kann um das mal zu testen ?

sirius 31. Jan 2007 17:47

Re: Frequenz
 
Das eine ist linker und das andere dürfte der rechte Kanal sein.

Was heist ausgeben, auf dem Lautsprecher oder auf dem Bildschirm?

inherited 31. Jan 2007 17:49

Re: Frequenz
 
Bei Google suchenAudacity ( :love: ) zum Beispiel ^^

3_of_8 31. Jan 2007 17:49

Re: Frequenz
 
Du kannst dir mit einer For-Schleife und der Sinusfunktion einen Sinuston in ein Array schreiben.

ebber 31. Jan 2007 19:55

Re: Frequenz
 
Danke

Da wir aber erst heute in der Schule mit der Sinusfunktion angefangen haben sagt mir das noch recht wenig.

Ich habs aber mit Audition hinbekommen. Da kann man die Kurve dann auch noch sehr gut sehen :).

ebber 1. Feb 2007 15:27

Re: Frequenz
 
Die Werte dich nu rausbekomme haben ein sehr seltsames Verhalten.
Sie verändern sich zwar, aber irgenwie immer gleich.
Selbst wenn ich nichts abspiele verändern sie sich irgenwie.

Also das ganze ist sehr Seltsam.



ich bekomme die jetzt so :

Delphi-Quellcode:

fft:array[0..512] of cardinal;


BASS_ChannelGetData(Play_Channel, @fft, BASS_DATA_FFT512);

Delphi-Quellcode:
BASS_ChannelGetLevel
Funktioniert aber.

sirius 1. Feb 2007 16:05

Re: Frequenz
 
Vielleicht sind die Werte ja normiert, oder es liegt noch irgendwo ein anderer Fehler vor. Dann sollte sich mal jemand, der auch die Ressourcen hat, damit befassen.

ebber 1. Feb 2007 16:50

Re: Frequenz
 
Sry dass ich euch belästigt habe, ich hatte einen kleinen Fehler.


Ich bekomme jetzt Werte zwischen -1 und +1.
Ich habe wo gelesen, dass das in Volt ist und dass man das jetzt in dB umrechnen kann.
Aber wie geht das ?

MfG

3_of_8 1. Feb 2007 17:54

Re: Frequenz
 
In Volt? Aua. Volt ist eine Spannungseinheit. Die hat NICHTS, aber auch GAR NICHTS mit Signalverarbeitung zu tun.

Werte zwischen -1 und +1 sind vermutlich die Abtastdaten, zwischen -1 (voller negativer Ausschlag) und +1 (voller positiver Ausschlag). 0 wäre Stille.

Mithilfe einer DFT kannst du die verschiedenen Frequenzanteile aus diesen Daten herausfiltern. Ein Link dazu wurde weiter oben gepostet.

ebber 1. Feb 2007 18:13

Re: Frequenz
 
Ich weis dass Volt was mit Strom zu tun hat, aber ich dachte das hätte was damit zu tun wie das dann aus der Soundkarte hinten "rauskommt".

Na ja, habe ich mich wohl ein bisschen geirrt.



Die Werte sind schon von den einzelenen Frequenzen.
Also gibt es keine Möglichkeit das in dB umzurechen ?

sirius 1. Feb 2007 21:31

Re: Frequenz
 
DeziBel ist eine relative Angabe und für sich keine Einheit. Es ist eine recht handliche logarithmische Skala. Weiter Infos dazu im NetzNetz

Edit:
Zitat:

Die Werte sind schon von den einzelenen Frequenzen.
Also gibt es keine Möglichkeit das in dB umzurechen ?
Vorrausgesetzt die Werte stimmen, dann sind es absolute Amplituden. da kann man sicher in dB(A) umwandeln. Dafür solltest du wahrscheinlich mal ein Physikforum aufsuchen. Kannst aber nachher gern dein Ergebnis hier posten.

3_of_8 1. Feb 2007 21:41

Re: Frequenz
 
Das lässt sich schlecht in dB umwandeln, weil das an der Empfindlichkeit des Mikrofons bzw. der Lautstärke des Lautsprechers abhängt.

sirius 1. Feb 2007 21:44

Re: Frequenz
 
Stimmt. Da snd ja Verstärker dazwischen. Und da ist ja das tolle dass man nur ein bisschen Addieren und subtrahieren muss.

Nichtsdetotrotz lässt sich jede Funktion halb- oder vollständig logarithmisch darstellen. Und ob man das nun auf den 10er Logarithmus macht und welchen Bezug man wählt....

ebber 5. Feb 2007 14:45

Re: Frequenz
 
Hier zum Beispiel sind aber ja auch überall dB Anzeigen
http://www.audiomidi.com/assets/4911...editscreen.jpg
wie kommen die dadrauf ?


Könntest du vielleicht das "halb- oder vollständig logarithmisch" ein bisschen näher erleutern wie das geht ?


MfG


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz