 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 14.11.2007, 21:12 Titel: Frequenzspektrum in FB? |
|
|
Hallöchen,
neulich habe ich dieses Progamm hier kennen gelernt:
http://www.gymnasium-spaichingen.de/NwT/index.htm
Also interessant für mich ist dieser Spaichinger Schallpegelmesser, genauer, der Teil des Programmes mit dem sich das Frequenzspektrum anzeigen lässt. Soweit, sogut, also ich wollte fragen ob man das auch ohne allzugroßen Aufwand auch in FB realisieren kann? Und wenn ja wie?
Danke schon mal im Voraus!
MfG Caran |
|
Nach oben |
|
 |
helium

Anmeldungsdatum: 10.09.2004 Beiträge: 397 Wohnort: Leverkusen
|
Verfasst am: 16.11.2007, 13:45 Titel: |
|
|
Stichwort FFT. Keine Ahnung, obs für FB was fertiges gibt. _________________ Bevor Sie aufhören sich körperlich zu betätigen sollten Sie ihren Doktor befragen. Körperliche Inaktivität ist abnormal und gefährlich für Ihre Gesundheit. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 16.11.2007, 15:34 Titel: Re: Frequenzspektrum in FB? |
|
|
Caran hat Folgendes geschrieben: | Soweit, sogut, also ich wollte fragen ob man das auch ohne allzugroßen Aufwand auch in FB realisieren kann? | Soweit, so gut..
..die Umsetzung der Formeln in FB sollte keine große Schwierigkeit sein:
Schließlich ist eine Programmiersprache u.a. dazu da, mathematische Zusammenhänge, die ein Mensch verstanden hat,
in Anweisungen zu übertragen, die ein Computer verstehen kann!
Genau da liegt aber der Hase im Pfeffer:
-Du mußt die Zusammenhänge begriffen haben
-Du mußt dir die benötigten Formeln zusammenstellen
-Du mußt dir ggfs. Material besorgen, das über das Schulmaterial hinausgeht..
Daß das Ganze programmiert werden kann, zeigt das Beispiel der Schule
Selbst wenn es dir gelänge, irgendwie an den Quellcode zu kommen, dürfte es ohne 'ein gewisses' Fachwissen,
gelinde gesagt, nicht einfach sein, das dann auch in FB umzusetzen..
Wenn du also jeden Tag kräftig stöberst und paukst, denke ich, daß wir in ca. einem halben Jahr von deinem Programm hören werden..
..es kann natürlich sein, daß ich mich verschätzt habe, ich bin Experte in Soundfragen..
..dann mußte eben warten, bis ein solcher sich mit beruhigenderen Worten zu diesem Thema meldet..
Gruß
ytwinky _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 16.11.2007, 20:34 Titel: |
|
|
Das einzige wobei ich momentan Hilfe bräuchte wäre nur, wie man die Geräusche, die das Mikrofon erfasst in das Programm einspeist. Das wäre jetzt erstmal das erste, den Rest werd ich dann eventuell selbst packen. |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 16.11.2007, 21:42 Titel: |
|
|
Für Windows könnte die Bass.dll interessant sein. (Google) _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 16.11.2007, 22:36 Titel: |
|
|
< hat Code in VB zur erzeugung einer FFT Tabelle, mit Variabler Bandbreite ... ... aber, weis nicht, ob er das rausgeben soll, da sonst der Lerneffekt nachlassen würde
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 16.11.2007, 23:17 Titel: |
|
|
ThePuppetMaster hat Folgendes geschrieben: | aber, weis nicht, ob er das rausgeben soll, da sonst der Lerneffekt nachlassen würde  |
Naja was heist Lerneffekt, is ja eigentlich nich für die Schule, da gibts ganz ehrlich momentan nur (noch!) "Pillepalle". Die Bass.dll werd ich mir mal anschauen. Danke  |
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 16.11.2007, 23:27 Titel: |
|
|
Naja, aber jedes Thema das man in der Programmierung anreißt, sollte man auch wenigstens ansatzweise verstehen. So meinte TPM das mit dem Lerneffekt.  _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 16.11.2007, 23:29 Titel: |
|
|
mir gings um den FFT lern effekt, nicht um den schulischen aspekt
aber will man nicht so sein:
Code: | Option Explicit
Private Const PI As Double = 3.14159265358979
Private Const PI2 As Double = PI * 2
Private m_lngP2(16) As Long
'######################################################################################################################################################
'### [INT] FFT
'######################################################################################################################################################
Public Function PCMM_FFT_16Bit(V_DataD() As Integer, V_DataC As Long, B_DataD() As Single, B_DataC As Long)
On Error Resume Next
'Exit Function
Dim X As Long
Dim Y As Long
Dim Z As Long
Dim V As Single
Dim X1 As Long
Dim DD() As Single
Dim DDO() As Single
Dim MX As Long
Dim XSample As Long
XSample = 256
Z = V_DataC \ XSample
ReDim DD(XSample - 1) As Single
For X = 1 To V_DataC - 1 Step Z
V = 0
For Y = 0 To Z - 1
V = V + V_DataD(X + Y) / 20
Next
V = V \ Z
DD(X1) = V
X1 = X1 + 1
Next
B_DataC = XSample / 2
ReDim DDO(B_DataC) As Single
ReDim B_DataD(B_DataC) As Single
DisplayFT DD, False, DDO, XSample
'FFTAudio DD, DDO
B_DataD = DDO
End Function
Public Sub DisplayFT(data() As Single, ByVal normalize As Boolean, V_DataOut() As Single, V_Samples As Long)
Dim sngReaInp() As Single
Dim sngRealOut() As Single
Dim sngImagOut() As Single
ReDim sngReaInp(V_Samples - 1) As Single
ReDim sngRealOut(V_Samples - 1) As Single
ReDim sngImagOut(V_Samples - 1) As Single
Dim i As Long
For i = 0 To V_Samples - 1
sngReaInp(i) = data(i)
Next
RealFFT V_Samples, sngReaInp, sngRealOut, sngImagOut
ReDim V_DataOut(V_Samples / 2) As Single
For i = 0 To V_Samples / 2 - 1
V_DataOut(i) = Sqr(sngRealOut(i) * sngRealOut(i) + sngImagOut(i) * sngImagOut(i)) / (V_Samples / 2)
Next
End Sub
Private Function ReverseBits(ByVal Index As Long, NumBits As Long) As Long
Dim i As Long, Rev As Long
For i = 0& To NumBits - 1&
Rev = (Rev * 2&) Or (Index And 1&)
Index = Index \ 2&
Next
ReverseBits = Rev
End Function
Private Sub RealFFT(ByVal NumSamples As Long, RealIn() As Single, RealOut() As Single, ImagOut() As Single, Optional InverseTransform As Boolean = False)
Dim AngleNumerator As Double
Dim NumBits As Long
Dim i As Long, j As Long
Dim K As Long, n As Long
Dim BlockSize As Long, BlockEnd As Long
Dim DeltaAngle As Single, DeltaAr As Single
Dim Alpha As Single, Beta As Single
Dim TR As Single, TI As Single
Dim AR As Single, AI As Single
If m_lngP2(0) = 0 Then
For i = 0 To 16
m_lngP2(i) = 2 ^ i
Next
End If
If InverseTransform Then
AngleNumerator = -PI2
Else
AngleNumerator = PI2
End If
For i = 0 To 16
If (NumSamples And m_lngP2(i)) <> 0 Then
NumBits = i
Exit For
End If
Next
For i = 0 To (NumSamples - 1)
j = ReverseBits(i, NumBits)
RealOut(j) = RealIn(i)
ImagOut(j) = 0
Next
BlockEnd = 1
BlockSize = 2
Do While BlockSize <= NumSamples
DeltaAngle = AngleNumerator / BlockSize
Alpha = Sin(0.5 * DeltaAngle)
Alpha = 2# * Alpha * Alpha
Beta = Sin(DeltaAngle)
i = 0
Do While i < NumSamples
AR = 1#
AI = 0#
j = i
For n = 0 To BlockEnd - 1
K = j + BlockEnd
TR = AR * RealOut(K) - AI * ImagOut(K)
TI = AI * RealOut(K) + AR * ImagOut(K)
RealOut(K) = RealOut(j) - TR
ImagOut(K) = ImagOut(j) - TI
RealOut(j) = RealOut(j) + TR
ImagOut(j) = ImagOut(j) + TI
DeltaAr = Alpha * AR + Beta * AI
AI = AI - (Alpha * AI - Beta * AR)
AR = AR - DeltaAr
j = j + 1
Next
i = i + BlockSize
Loop
BlockEnd = BlockSize
BlockSize = BlockSize * 2
Loop
If InverseTransform Then
For i = 0 To NumSamples - 1
RealOut(i) = RealOut(i) / NumSamples
ImagOut(i) = ImagOut(i) / NumSamples
Next
End If
End Sub
|
Zu Callen ist die "PCMM_FFT_16Bit"
Variablen, die mit "B_" beginnen geben Werte zurück, .. "V_" enthalten werte, und werden an die Funktion übergeben.
Hinzu kommt, das die Integer und Singel werte FB entsprechend angepast werden müssen, um die VB region in FB anzugleichen.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 17.11.2007, 00:03 Titel: |
|
|
Hi,
FBMath hat Folgendes geschrieben: | The FreeBasic Math library (FBMath) is a mathematical library for the FreeBasic
compiler. It is entirely written in FreeBasic and does not depend on external
libraries. FBMath provides routines and demo programs for numerical analysis,
including mathematical functions, probabilities, matrices, linear and nonlinear
equations, optimization, integration, Fast Fourier Transforms, random numbers,
statistics and graphics. | darin ist eine fourier.bas und test_fft.bas (und eine fbmath.pdf ).
Wav's vom Mikrofon oder Line aufzunehmen sollte mit MCI gehen,
siehe http://www.geocities.com/smigman.geo/mci/wav.html (Record a WAV File From Scratch) _________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Caran

Anmeldungsdatum: 11.03.2007 Beiträge: 290 Wohnort: Lörrach
|
Verfasst am: 18.11.2007, 11:43 Titel: |
|
|
Hey,
Leute, danke für die Antworten!
Die FBMath gefällt mir , danke nochmals.
MfG Caran |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|