Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Frequenzspektrum in FB?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 14.11.2007, 21:12    Titel: Frequenzspektrum in FB? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
helium



Anmeldungsdatum: 10.09.2004
Beiträge: 397
Wohnort: Leverkusen

BeitragVerfasst am: 16.11.2007, 13:45    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 16.11.2007, 15:34    Titel: Re: Frequenzspektrum in FB? Antworten mit Zitat

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 zwinkern
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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 16.11.2007, 20:34    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 16.11.2007, 21:42    Titel: Antworten mit Zitat

Für Windows könnte die Bass.dll interessant sein. lächeln (Google)
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 16.11.2007, 22:36    Titel: Antworten mit Zitat

< hat Code in VB zur erzeugung einer FFT Tabelle, mit Variabler Bandbreite ... lächeln ... aber, weis nicht, ob er das rausgeben soll, da sonst der Lerneffekt nachlassen würde zwinkern


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 16.11.2007, 23:17    Titel: Antworten mit Zitat

ThePuppetMaster hat Folgendes geschrieben:
aber, weis nicht, ob er das rausgeben soll, da sonst der Lerneffekt nachlassen würde zwinkern

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 zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 16.11.2007, 23:27    Titel: Antworten mit Zitat

Naja, aber jedes Thema das man in der Programmierung anreißt, sollte man auch wenigstens ansatzweise verstehen. So meinte TPM das mit dem Lerneffekt. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 16.11.2007, 23:29    Titel: Antworten mit Zitat

mir gings um den FFT lern effekt, nicht um den schulischen aspekt zwinkern

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
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 17.11.2007, 00:03    Titel: Antworten mit Zitat

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 zwinkern ).

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Caran



Anmeldungsdatum: 11.03.2007
Beiträge: 290
Wohnort: Lörrach

BeitragVerfasst am: 18.11.2007, 11:43    Titel: Antworten mit Zitat

Hey,
Leute, danke für die Antworten! lächeln
Die FBMath gefällt mir happy, danke nochmals.

MfG Caran
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz