[AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x64)

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
HeX0R
Beiträge: 2959
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win10 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2
Kontaktdaten:

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x

Beitrag von HeX0R »

Du brauchst doch nur den ersten Code entsprechend zu aktualisieren und den zweiten entfernen.
Die aktuellen Codes sollten im T&T Forum eh immer an erster Stelle stehen.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8679
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x

Beitrag von NicTheQuick »

Ich lösche hier nicht einfach so irgendwelche Threads. Du kannst auch so einen neuen machen und ich verschiebe diesen Thread in Allgemein oder sowas als Diskussion.
Bild
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x

Beitrag von tft »

Hallo,

ich versuche schon ewigkeiten diese dll zum laufen zu bringen ..... aber das gibt immer einen Compiler Linkerror weil er die Lib nicht findet.
Die ist ja auch nirgents zu finden. Oder ist damit die im c Verzeichniss für c++ Programierer gemeint?

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x

Beitrag von Mijikai »

tft hat geschrieben:Hallo,
...ist damit die im c Verzeichniss für c++ Programierer gemeint?
ja :)

Wo ist was (x64):

Code: Alles auswählen

Download: http://www.un4seen.com/download.php?bass24

Im Zip:
dll: bass24.zip -> \x64\bass.dll
lib: bass24.zip -> \c\x46\bass.lib
(in der Demo #BASSVERSION anpassen)

Hoffe das hilft.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x

Beitrag von tft »

Danke für die Antwort.

ich werde das mal versuchen. Immerhin habe ich den Lib Test zum laufen bekommen.
Dabei will ich doch nur einen ganz einfache Aussteuerungs anzeige machen ::::::.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x64)

Beitrag von tft »

Hallo ... und wo bekomme ich die Versions Nummer her ? Nachdem ich die ,lib endlich gefunden habe. Bricht die Demo mit einem Kurzen
aufblitzen einer Requesters ab.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x64)

Beitrag von Mijikai »

GetVersion() gibt die Versionsnummer zurück ich würde diese einfach mal bei #BASSVERSION einsetzen und testen.
Kann gut sein, dass sich was geändert hat.
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x64)

Beitrag von tft »

Hallo,

genau so ist es. Ich habe einfach bei BASS::Init wie du meintest die Version mit Debug GetVersion() ausgegeben und dann als Konstante
bei #BASSVERSION in Zeile 62 eingetragen. Scheint super zu funktionieren.

Der Grund wieso ich wider auf die BASS DLL zurück gekommen bin ist. Ich suche eine Möglichkeit. Mein Externes AudioDevice
von DUKABLE zu benutzen. Ich möchte über den Audio out dort, unabhängig von der System Einstellung eine Wave Datei ausgeben.

Im Englischen Forum habe ich in soweit schon Hilfe erhalten, das ich jetzt weis wie ich an die Liste der Audio Devices ran komme.

Weist du da vielleicht wie ich das Machen kann ? Die Ausgabe meine ich.

Gruss TFT
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Benutzeravatar
Mijikai
Beiträge: 754
Registriert: 25.09.2016 01:42

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x64)

Beitrag von Mijikai »

Bass selbst bietet GetDevice() & GetDeviceInfo() um an die Devices zu kommen.
Damit wäre dann kein weiterer externer Code mehr nötig.
Auch wird die Ausgabe für mehere Devices gleichzeitig unterstützt :)
Allerding auf einer per Thread Basis (wenn ich das richtig verstanden habe).
Also ein Device per Thread gleichzeitig oder mehere Devices in einem Thread hintereinander.

Dokumentation (leider English):
SetDevice: https://www.un4seen.com/doc/#bass/BASS_SetDevice.html
GetDevice: https://www.un4seen.com/doc/#bass/BASS_GetDevice.html
GetDeviceInfo: https://www.un4seen.com/doc/#bass/BASS_ ... eInfo.html

Mit GetDevice() & GetDeviceInfo() die Ausgabe Devices auflisten/aussuchen.
Danach mit SetDevice() per Thread das gewünschnte Device festlegen.

Sieht so aus als ob es mit Bass klappen könnte.
Versuch zuerst ob das mit verschiedene Devices in einem Thread funktioniert.

Beispiel:

Code: Alles auswählen

EnableExplicit

XIncludeFile "bass.pbi";<- habe mir die Bass Funktionen aus dem Modul geholt!

;Falls das Modul verwendet wird die Bass Funktionen, Konstanten und Strukturen ändern!
;bass wird zu Bass:: (bassGetDeviceInfo -> Bass::GetDeviceInfo, info.BASS_DEVICEINFO -> infi.BASS::BASS_DEVICEINFO, ...)  

Procedure.i bassQueryDevice(*DeviceId.Integer = #Null,*DeviceInfo.BASS_DEVICEINFO = #Null)
  Static device.i
  Protected info.BASS_DEVICEINFO
  If *DeviceId And *DeviceInfo
    device + 1
    If bassGetDeviceInfo(device,@info)
      If info\flags & #BASS_DEVICE_ENABLED
        *DeviceId\i = device
        CopyMemory(@info,*DeviceInfo,SizeOf(BASS_DEVICEINFO))
        ProcedureReturn #True
      EndIf
    EndIf
  Else
    device = #Null
  EndIf
  ProcedureReturn #False
EndProcedure

Procedure.i Main()
  Protected device_id.i
  Protected device_info.BASS_DEVICEINFO
  If bassGetVersion() = #BASSVERSION
    bassQueryDevice();<- Device Counter zurücksetzen!
    While bassQueryDevice(@device_id,@device_info)
      Debug "Device Id: " + Str(device_id)
      Debug "Device Name: " + PeekS(device_info\name,-1,#PB_Ascii)
      Debug "Device Driver: " + PeekS(device_info\driver,-1,#PB_Ascii)
      Debug "Device Flags: " + "0x" + RSet(Hex(device_info\flags),8,"0")
    Wend
    ;-> bassSetDevice(device_id)
  EndIf
  ProcedureReturn #Null
EndProcedure

Main()

End
Benutzeravatar
tft
Beiträge: 605
Registriert: 08.09.2004 20:18
Computerausstattung: GTX Titan , i9 9900K , 32 GB Ram , 500 GB SSD , 3 ASUS FullHD Monitore and more
Wohnort: Dachsen
Kontaktdaten:

Re: [AUDIO] Bass Library 2.4 - Module & Player Demo (x86 & x64)

Beitrag von tft »

Ich werde mir das zu einem Späteren Zeitpunkt nochmal Anschauen. Ich habe jetzt etwas gefunden das genau das macht was es soll.

Code: Alles auswählen

EnableExplicit
;/
    ;/ Object     Audio player 1.0 (a)
    ;/
    ;/ Date       August 2004
    ;/ Author     Philippe Carpentier
    ;/ Contact    flype@altern.org
    ;/ Info       MS Windows only - winmm.lib - mmsystem.h
    ;/
    ;  Bug fixes by chris319 on September 2, 2007
    ;  04/02/2010 : DrGolf for PB 4.50
    ;  01/20/2011 : Vitor_Boss® -- Fixed clamping
    ;  6/8/2012 -- revised again by chris319 on PB 4.61
    ;  28/8/2022 : modified by morosh
    ;   modified
    
;Structure WAVEFORMATEX -- NOT NEEDED IN PB 4.10 -- chris319
;  wFormatTag.w
;  nChannels.w
;  nSamplesPerSec.l
;  nAvgBytesPerSec.l
;  nBlockAlign.w
;  wBitsPerSample.w
;  cbSize.w
;EndStructure


#MONO = 1
#STEREO = 2
#Button =0

Global QuitRec.l
Global lBuf.l, nBuf.l, nDev.l, fname.s, format.WAVEFORMATEX,  hWindow.l, FileId.l 
Global size.l, buffer.l, output.l, wave.l, played.l ,playing.b
Global Dim outHdr.WAVEHDR(16)

Declare PLAY_Stop()
Declare PLAY_Start()
Declare PLAY_GetDevices()
Declare PLAY_Write(hwaveOut.l,*hWave.WAVEHDR)
Declare FILE_Close()
Declare FILE_Open()
Declare FILE_wav2raw(fname.s)

Declare GUI_CallBack(hWnd.l,Msg.l,wParam.l,lParam.l)

Procedure.l getfiledatanum(nof.a, offset.u, len.a)
Protected tmpl.l=0, ch.a, i.a

FileSeek(nof,offset)
For i=1 To len
  ReadData(nof, @ch, 1)
  tmpl+ch*Pow(256,i-1)
Next
ProcedureReturn tmpl
EndProcedure

Procedure PLAY_Start()
Define i.a

format\wFormatTag = getfiledatanum(0,20,2)
format\nChannels = getfiledatanum(0,22,2)
format\nSamplesPerSec = getfiledatanum(0,24,4)
format\wBitsPerSample = getfiledatanum(0,34,2)
  
FileSeek(0,58)
PLAY_Stop()
format\nBlockAlign = (format\nChannels * format\wBitsPerSample) / 8
format\nAvgBytesPerSec = format\nSamplesPerSec * format\nBlockAlign
format\cbSize = 0
 
If waveOutOpen_(@wave,nDev,@format,hWindow,#Null,#CALLBACK_WINDOW|#WAVE_FORMAT_DIRECT) = #MMSYSERR_NOERROR
  For i = 0 To nBuf - 1
    outHdr(i)\lpData = AllocateMemory(lBuf)
    outHdr(i)\dwBufferLength = lBuf
    waveOutPrepareHeader_(wave,outHdr(i),SizeOf(WAVEHDR))
    waveOutWrite_(wave,outHdr(i),SizeOf(WAVEHDR))
  Next

  If waveOutReset_(wave) <> #MMSYSERR_NOERROR
    MessageRequester("Error","waveOutStart_(wave)",#MB_ICONERROR)
    QuitRec=1
  EndIf
Else
  MessageRequester("Error","waveOutOpen_ failed",#MB_ICONERROR)
  QuitRec=1  
EndIf 
EndProcedure
    ;
Procedure PLAY_Stop()
  Define i.a
  
  If wave
  waveOutReset_(wave)
 ; waveOutStop_(wave)
  For i = 0 To nBuf - 1
    If outHdr(i)
      waveOutUnprepareHeader_(wave,outHdr(i),SizeOf(WAVEHDR))
    EndIf
  Next
  waveOutClose_(wave)
EndIf
EndProcedure
    ;
Procedure PLAY_Write(hwaveOut.l,*hWave.WAVEHDR)
;  Define *hWave.WAVEHDR
  
;*hWave=lpWaveHdr
buffer=*hWave\lpData
size=*hWave\dwBufferLength

If playing = #True
  ReadData(0, buffer,size)
  played + size
EndIf

waveOutWrite_(hwaveOut,*hWave,SizeOf(WAVEHDR))
;Beep_(100,100)
EndProcedure
    ;
Procedure PLAY_GetDevices()
  Define MMNumDevice.l, MMDeviceId.l, MMResult.l, Caps.waveOutCAPS
  
  MMNumDevice = waveOutGetNumDevs_()
  If MMNumDevice
    For MMDeviceId=#WAVE_MAPPER To MMNumDevice-1
      MMResult.l = waveOutGetDevCaps_(MMDeviceId,@Caps,SizeOf(waveOutCAPS))
      If MMResult = #MMSYSERR_NOERROR
         Debug Str(MMDeviceId) + "  " + PeekS(@Caps\szPname,#MAXPNAMELEN)
        ; AddGadgetItem(gadId,-1,PeekS(@Caps\szPname,#MAXPNAMELEN))
      EndIf
    Next
  EndIf
EndProcedure
 
Procedure FILE_Open()
If playing = #False
  FILE_wav2raw(fname)
EndIf
played  = #Null ; -- MOVED HERE BY chris319
FileId=ReadFile(0,fname)
If FileId
  playing=#True
Else
  MessageRequester("Error","Can't Read file",#MB_ICONERROR)
EndIf 
EndProcedure

Procedure FILE_Close()
If playing
  playing = #False
  CloseFile(0)
  Delay(1000)
EndIf
EndProcedure

Procedure FILE_wav2raw(fname.s)
Define inId.l, outId.l, pBuf.l, subchunk2size.l, chunksize.l, f$, x$, b.w, c.w, h.l
inId = ReadFile(#PB_Any,fname)

If inId = #Null
  MessageRequester("Error", "Unable to open file",#MB_ICONERROR) ; chris319
  ProcedureReturn #False
EndIf

lBuf.l = Lof(inId)
If lBuf = #Null
  MessageRequester("Error", "lbuf=0",#MB_ICONERROR) ; chris319
  ProcedureReturn #False
EndIf

pBuf = AllocateMemory(lBuf)
If pBuf = #Null
  MessageRequester("Error", "Unable to allocate buffer",#MB_ICONERROR) ; chris319
  ProcedureReturn #False
EndIf

ReadData(inId, pBuf,lBuf)
CloseFile(inId)

f$ = GetFilePart(fname)
x$ = GetPathPart(fname)+Left(f$,Len(f$)-Len(GetExtensionPart(fname))-1)+".raw"

outId = CreateFile(#PB_Any,x$)
If outId = #Null
  MessageRequester("Error", "Unable to create file",#MB_ICONERROR) ; chris319
  ProcedureReturn #False
EndIf
WriteData(outId, pBuf+58,lBuf-58)

CloseFile(outId)
FreeMemory(pBuf) ;chris319
ProcedureReturn #True
EndProcedure
        ;
Procedure GUI_CallBack(hWnd.l,Msg.l,wParam.l,lParam.l)
  Define Result.l
  
Result = #PB_ProcessPureBasicEvents
Select Msg
  Case #WM_KEYDOWN
    If GetAsyncKeyState_(#VK_ESCAPE)
      QuitRec = 1
    EndIf
  Case #MM_WOM_DONE
    PLAY_Write(wParam,lParam)

  Case #WM_COMMAND
    Select wParam & $FFFF
      Case #Button      
        FILE_Open() : PLAY_Start()
      Case #Button+1    
        FILE_Close() : QuitRec=1
  EndSelect
EndSelect
ProcedureReturn Result     
EndProcedure
    ;
    ;- REC MAIN
;;;;;;;;;;;;;;;;;;;;;;;;;;;GUI_init ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
QuitRec = 0
fname = "Z:\PB_Projecte\AudioOut\explosionen.wav"
nDev = 0
nBuf = 8
lBuf = 2048

hWindow=OpenWindow(0,0,0,500,400,"Player",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_SizeGadget)
LoadFont(0, "Arial", 12)
ButtonGadget(#Button, 50,50,100,20,"Replay")
ButtonGadget(#Button+1, 200,50,100,20,"Stop")
SetGadgetFont(#Button, FontID(0)) 
SetGadgetFont(#Button+1, FontID(0)) 

PLAY_GetDevices()
SetWindowCallback(@GUI_CallBack())
playing = #False

FILE_Open()
PLAY_Start()
Repeat
Until WaitWindowEvent() = #WM_CLOSE Or QuitRec
PLAY_Stop()
CloseDebugOutput()
;  Devices
;-1  Microsoft Sound Mapper
;0  Speakers (Realtek High Definiti
;1  Realtek Digital Output (Realtek
;2  Speakers (Bluetooth AV Audio)
;3  Speakers (Bluetooth SCO Audio)
Großes Danke an @morosh
TFT seid 1989 , Turgut Frank Temucin , Dachsen/Berlin/Antalya
Aktuelles Projekte : Driving School Evergarden
YouTube : Pure Basic to go
FaceBook : Temuçin SourceMAgic Games
DISCORD : SourceMagic
W10 , i9 9900K ,32 GB Ram , GTX Titan , 3 Monitore FHD
ARDUINO Freak :-)
Antworten