Stream Sound speichern und anzeigen

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
tft
Beiträge: 650
Registriert: 08.09.2004 20:18
Computerausstattung: GFX 3060 Ti , i7 12700F , 32 GB Ram , 900 GB SSD , TV
Wohnort: Dachsen
Kontaktdaten:

Stream Sound speichern und anzeigen

Beitrag von tft »

Hallo,

ich bin recht verzweifelt. Seid Wochen versuche ich folgendes.

Stream Daten aus dem Stereomixer oder einer anderen Sound Quelle anzeigen und auswerten so wie Audacity es mit der Anzeige bei der Aussteuerung bei Aufnahme macht.
Ich habe mich entschlossen jemanden zu suchen der das in Form einer DLL für mich macht der weis was er da machen muss. Ich wäre auch bereit 100 Euro dafür zu investieren.
Meinen Code kann ich mittlerweile nicht mal mehr selber verstehen und habe ehrlich gesagt die Nase gestrichen voll. Da ich aber trotzdem die Funktionelle Seite verwenden mag
hier mein Aufschrei um Hilfe :-)

Was brauche ich genau. Eine DLL

Diese sollte einen Speicherbereich verwalten
Die Grösse muss einstellbar sein.
Die DLL Kopiert die aus dem Primären Soundaufnahmetreiber oder Stereo Mixer kommenden Daten in Stereo in den Speicherbereich.
Die Abtastrate muss einstellbar sein.

Ich stelle mir das als Anwendung Beispiel in etwa so vor.

Code: Alles auswählen


#ScreenWidth  = 800  
#ScreenHeight = 600

#Left = 1
#Right = 2
#Mono = 3

; Funktionen oder DLL Aufrufe
Global Speichergroesse
;Global *MemoryID

Procedure InitAufnameTreiber(Abtastrate,Speichergroesse)
  Global *MemoryID = AllocateMemory(Speichergroesse)
  ProcedureReturn 1
EndProcedure
Procedure GetCountAufnameTreiber()
   ProcedureReturn 1
EndProcedure
Procedure.s GetAufnameTreiberName(id)
   ProcedureReturn  "Primärer Soundaufnametreiber"
EndProcedure
Procedure SetAufnameTreiber(id)
   ProcedureReturn  1
EndProcedure
Procedure GetAbtastPuffer(Mode=#Mono)
  e.f=Random(256,1)
  r.f=(1.0/256.0)*e
  PokeF(*MemoryID,r)
  ProcedureReturn *MemoryID
EndProcedure
Procedure StartAufname()
EndProcedure

OpenConsole()
EnableGraphicalConsole(1)

InitSprite()
InitKeyboard()

Speichergroesse=512
Abtastrate=60

ok=InitAufnameTreiber(Abtastrate,Speichergroesse)
If ok=0 : End : EndIf : PrintN("Init ok")

CountTreiber=GetCountAufnameTreiber()

For i=1 To CountTreiber
  NameAufnameTreiber$=GetAufnameTreiberName(i)
  PrintN (NameAufnameTreiber$)
Next

ok=SetAufnameTreiber(1)
If ok=0 : End : EndIf : PrintN("Treiber ok")

If OpenWindow(0, 0, 0, 150, 100, "GetSoundData") 
  
  StartAufname()
  
  Repeat
    
    Event=WindowEvent() 
    Select Event
        Case #PB_Event_CloseWindow 
        Quit = 1 
    EndSelect ;Event 
    
    *DatenPuffer=GetAbtastPuffer(#Left)
    Pos=0
    Wert.f=PeekF(*DatenPuffer+Pos)
    
    ConsoleLocate(0,5)
    Print("("+StrF(Wert.f)+") ")
    ConsoleLocate(30,5)
    Print("Timer "+Str(ElapsedMilliseconds()))
  
  Until  Quit=1
 
Else
  MessageRequester("Error","Can't open the window !",0)
EndIf

End

Ich habe mir schon fiele Sachen angeschaut. Das Streamen direkt von Wav oder Ogg oder URL lässt sich mit Bass.dll oder FMode machen. Aber ich kann nirgends einen
direkten Input aus dem Treiber heraus angeben. Ich möchte einfach ... na ja , eben nicht einfach. Das was ich höre am Computer unabhängig von der Quelle Optisch
weiter verarbeiten. Fals also jemand erbarmen mit einer gequälten coder seele hat.

THX TFT alias Turgut Temucin
TFT seid 1989 , Turgut Frank Temucin , CH-Dachsen/DE-Berlin/TR-Antalya
Mein Projekt (Driving School Evergarden)
Codes bei (GitHub) Videos von (YouTube)
Treffen via Discord: Einladung

PB 6.10 | W11 | i7 12700F | 32 GB Ram | RTX 3060 Ti | 60 Herz -TV FullHD
ARDUINO Freak | Sprecher | Game Dev. | Geschichten Erzähler :-)