und nochmal: Musik grafisch darstellen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Graffiti
Beiträge: 173
Registriert: 30.08.2004 08:34
Wohnort: Thailand

Beitrag von Graffiti »

@Green Snake................das sehe ich auch so,
ich suche nur mal einen Ansatzpunkt wie so etwas aussehen könnte, die Zeitschienen und Marker die ich noch brauche um Zeiten auszulesen bringe ich dann doch zusammen.
mein bestehendes Steuerungs-Programm habe ich immerhin auch schon nahezu alleine programmiert.

Mein Problem liegt darin, das ich von diesem Teil absolut keine Ahnung habe und einfach nur im Forum auf Hilfe hoffe und auch daraus dazulernen kann

@AndyX
das ich das WAV gut kenne habe ich nicht behauptet, sondern keine Ahnung davon habe und nicht weiterkomme
dazu bin ich noch relativ Anfänger

@MVXA
also von der Aussage von super_castle distanziere ich mich energisch
mit meiner spöttischen Bemerkung an dich meinte ich eigentlich hauptsächlich, wenn ich bei PB Fragen nicht hier nachfragen kann, in welchem Forum dann.
Ich habe es auch nicht beleidigend gemeint, wenn du es aber doch so aufgefasst hast, mach ich nen Knicks und entschuldige mich natürlich auch dafür
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Soweit zum Auslesen der Wave:

Code: Alles auswählen

    Structure sWAVHead
        lSignatur.l         ; Sollte immer $46464952 sein ("RIFF")
        lFileSize.l         ; Größe der Datei
        lRIFFType.l         ; Sollte $45564157 sein
    EndStructure
    
    Structure sWAVChunk_FMT
        wFormat.w           ; Chunk Format
        wChannels.w         ; Anzahl der Kanäle (1 = mono, 2 = stereo)
        lSamples.l          ; Abtastrate pro Sekunde (z.B. 44100)
        lBytesPerSec.l      ; Sample-Rate * Block-Align
        wBlockAlign.w       ; Kanäle * bits/sample / 8
        wBitsPerSample.w    ; bits/sample (8 oder 16)
    EndStructure
    
    Structure sWAVChunk_DATA
        pSampleData.l
    EndStructure
    
    Structure sWAVChunk
        lChunkID.l          ; Normalerweise 'fmt ' ($20746D66) oder 'data' ($61746164)
        lSize.l             ; Größe des Chunks
        
        StructureUnion
            tChunkFMT.sWAVChunk_FMT
            tChunkDATA.sWAVChunk_DATA
        EndStructureUnion
    EndStructure
    
NewList WaveContent.sWAVChunk()
    
Procedure OpenWave(sDateiName.s)
    DefType.sWAVHead tWAVHEAD
    DefType.l lFileID
    
    lFileID = ReadFile(#PB_Any, sDateiName)
    If lFileID
        ReadData(@tWAVHEAD, SizeOf(sWAVHead))
        If tWAVHEAD\lSignatur = $46464952
            If tWAVHEAD\lFileSize = (FileSize(sDateiName)-8)
                ClearList(WaveContent())
                
                While (Eof(lFileID) = #False)
                    AddElement(WaveContent())
                    ReadData(@WaveContent(), 8)

                    Select WaveContent()\lChunkID
                        Case ' tmf': Debug "TMF"
                            ReadData(@WaveContent()+8, WaveContent()\lSize)
                        
                        Case 'atad': Debug "Data"
                            WaveContent()\tChunkDATA\pSampleData = AllocateMemory(WaveContent()\lSize)
                            ReadData(WaveContent()\tChunkDATA\pSampleData, WaveContent()\lSize)
                            
                        Default: Debug "Unknown"
                            DeleteElement(WaveContent())
                    EndSelect
                Wend
            
            Else
                Debug "Filesize mismatch"
            EndIf
            
        Else
            Debug "Invalid Wave..."
        EndIf
        
        CloseFile(lFileID)
    EndIf
EndProcedure

OpenWave("D:\m_pass.wav")

ForEach WaveContent()
    If WaveContent()\lChunkID = 'atad'
        CreateFile(1, "C:\Out.raw")
        WriteData(WaveContent()\tChunkDATA\pSampleData, WaveContent()\lSize)
        ; WaveContent()\tChunkDATA\pSampleData ist Pointer zu Data mit Sample
        ; WaveContent()\lSize Größe der Daten
    EndIf
Next
Bild
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

wenn ich bei PB Fragen nicht hier nachfragen kann, in welchem Forum dann.
www.purebasic-lounge.de :D :allright: (bitte keinen Board vs. Lounge Flame hier jetzt)
Graffiti
Beiträge: 173
Registriert: 30.08.2004 08:34
Wohnort: Thailand

Beitrag von Graffiti »

danke AndyX, das kenne ich noch gar nicht
Graffiti
Beiträge: 173
Registriert: 30.08.2004 08:34
Wohnort: Thailand

Beitrag von Graffiti »

@MXVA

Danke für deine Hilfe jetzt habe ich mal einen Anhaltspunkt auf dem ich aufbauen kann

:shock: werde mal heute Nacht das ganze unter mein Kissen legen und auf meine Erleuchtung hoffen :shock:

gruß und nichts für ungut
Benutzeravatar
Froggerprogger
Badmin
Beiträge: 855
Registriert: 08.09.2004 20:02

Beitrag von Froggerprogger »

Zum WAV-Format gibt's hier Infos:
http://www.sonicspot.com/guide/wavefiles.html
Einfach mal durchlesen. An englischsprachige Beschreibungen kann man sich gar nicht früh genug gewöhnen. Außerdem wird dort verständlich alles zum WAV-Format erklärt, selbst so selten genutzte Features wie Marker, etc.

Und das unkomprimierte WAV-format ist tatsächlich supereinfach:
Z.b. bei 16 Bit stereo parse einfach bis zum data-chunk, der durch die Bytes 'data' eingeleitet wird. Danach folgen immer abwechselnd links/rechts jeweils ein 16-Bit-Samplewert. 0 ist 0, 32768 max, -32768 min.
Weitere Infos hinter obigem Link oder auf wotsit.org.
MVXA hat dafür ja auch schon einen schönen Source gepostet.
!UD2
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Hab mich größten teils an das gehalten was auch in Wikipedia steht:
http://de.wikipedia.org/wiki/WAV_%28Format%29

Da steht auch noch mehr nützliches... Einfach mal rein schauen :allright:.
Vielleicht bringt dir der Link jetzt mehr im Zusammenhang mit dem Code.
Bild
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag von Macros »

Agent
Beiträge: 296
Registriert: 13.09.2004 11:28
Kontaktdaten:

Beitrag von Agent »

Bei so schlechten/bösen Posts muss ich mein Senf auch dazugeben:

1) Dies ist ein Forum, kein Lösungsbuch!
2) Warum darf jemand, der so beleidigend ist, hier überhaupt noch posten? /ban

...meine Meinung. Danke.
Agent_Sasori
It's not a bug - it's a feature!
http://www.StephenKalisch.de | http://www.ria-tec.com | http://www.dirsync.de
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

noch etwas grundsätzliches:

wenn du, Graffitti, probleme mit dem gedanklichen hintergrund hast,
dann probier mal, eine sinus-funktion grafisch darzustellen...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten