Synapsee Posted May 2, 2016 Posted May 2, 2016 Easy To Use - Bass Example (by nend) with _BASSChannelGetTags() nend says : expandcollapse popup#include <Bass.au3> #include <BassConstants.au3> Global $BASS_PAUSE_POS Func Example() Local $MusicHandle _Audio_init_start() $MusicHandle = _Set_url("http://ice1.somafm.com/groovesalad-128.mp3") _Set_volume(50) _Audio_play($MusicHandle) while 1 ConsoleWrite(_Get_streamtitle($MusicHandle) & @CRLF) Sleep(1000) WEnd _Audio_init_stop($MusicHandle) EndFunc Example() Func _Audio_init_start() If _BASS_STARTUP(@ScriptDir & "\bass.dll") Then If _BASS_Init(0, -1, 44100, 0) Then If _BASS_SetConfig($BASS_CONFIG_NET_PLAYLIST, 1) = 0 Then SetError(3) EndIf Else SetError(2) EndIf Else SetError(@error) EndIf EndFunc Func _Set_buffer($buffer) _BASS_SetConfig($BASS_CONFIG_NET_BUFFER, $buffer) EndFunc Func _Audio_stop($MusicHandle) _BASS_ChannelStop($MusicHandle) EndFunc Func _Audio_play($MusicHandle) _BASS_ChannelPlay($MusicHandle, 1) EndFunc Func _Audio_pause($MusicHandle) If _Get_playstate($MusicHandle) = 2 Then $BASS_PAUSE_POS = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE) _BASS_ChannelPause($MusicHandle) ElseIf _Get_playstate($MusicHandle) = 3 Then _Audio_play($MusicHandle) _BASS_ChannelSetPosition($MusicHandle, $BASS_PAUSE_POS, $BASS_POS_BYTE) EndIf EndFunc Func _Audio_init_stop($MusicHandle) _BASS_StreamFree($MusicHandle) _BASS_Free() EndFunc Func _Set_url($file) If FileExists($file) Then $MusicHandle = _BASS_StreamCreateFile(False, $file, 0, 0, 0) Else $MusicHandle = _BASS_StreamCreateURL($file, 0, 1) EndIf If @error Then Return SetError(1) EndIf Return $MusicHandle EndFunc Func _Get_pos($MusicHandle) $current = _BASS_ChannelGetPosition($MusicHandle, $BASS_POS_BYTE) Return Round(_Bass_ChannelBytes2Seconds($MusicHandle, $current)) EndFunc Func _Get_len($MusicHandle) $current = _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE) Return Round(_Bass_ChannelBytes2Seconds($MusicHandle, $current)) EndFunc Func _Set_pos($MusicHandle, $seconds) _BASS_ChannelSetPosition($MusicHandle, _BASS_ChannelSeconds2Bytes($MusicHandle, $seconds), $BASS_POS_BYTE) EndFunc Func _Set_volume($volume) _BASS_SetConfig($BASS_CONFIG_GVOL_STREAM, $volume * 100) EndFunc Func _Get_volume() Return _BASS_GetConfig($BASS_CONFIG_GVOL_STREAM) / 100 EndFunc Func _Get_bitrate($MusicHandle) $a = Round(_Bass_ChannelBytes2Seconds($MusicHandle, _BASS_ChannelGetLength($MusicHandle, $BASS_POS_BYTE))) $return = Round(_BASS_StreamGetFilePosition($MusicHandle, $BASS_FILEPOS_END) * 8/ $a/ 1000) If StringInStr($return, "-") Then $return = _BASS_StreamGetFilePosition($MusicHandle, $BASS_FILEPOS_END) * 8 / _BASS_GetConfig($BASS_CONFIG_NET_BUFFER) EndIf Return $return EndFunc Func _Get_playstate($MusicHandle) Switch _BASS_ChannelIsActive($MusicHandle) Case $BASS_ACTIVE_STOPPED $returnstate = 1 Case $BASS_ACTIVE_PLAYING $returnstate = 2 Case $BASS_ACTIVE_PAUSED $returnstate = 3 Case $BASS_ACTIVE_STALLED $returnstate = 4 EndSwitch Return $returnstate EndFunc Func _Get_streamtitle($MusicHandle) $pPtr = _BASS_ChannelGetTags($MusicHandle, $BASS_TAG_META) $sStr = _BASS_PtrStringRead($pPtr) If StringInStr($sStr, ";") Then $infosplit = StringSplit($sStr, ";") $infosplit[1] = StringReplace($infosplit[1], "'", "") $infosplit[1] = StringReplace($infosplit[1], "StreamTitle=", "") If StringInStr($infosplit[1], "-") Then Return $infosplit[1] EndIf EndIf EndFunc You need : 1 dll : bass.dll source : http://www.un4seen.com/bass.html (v2.4.12.1) 2 au3 : bass.au3 source : bass related forum post (patch 9.2/Constant from 9.0) coffeeturtle 1
zeenmakr Posted September 23, 2020 Posted September 23, 2020 (edited) had a little fun with the gui expandcollapse popup#include <GUIConstantsEx.au3> #include <Array.au3> #include "StringSize To PixelSize\StringSize.au3" ;https://www.autoitscript.com/forum/topic/114034-stringsize-m23-new-version-16-aug-11/ #include <GuiSlider.au3> ;~ #include <Bass.au3> ;~ #include <BassConstants.au3> #include "BASS.au3\BASS\bass.au3" #include "BASS.au3\BASS\BassConstants.au3" Global $_THE_URL = "http://ice1.somafm.com/groovesalad-128.mp3" Global Const $_DEFAULT_VOLUMN = 7 Global $_BASS_PAUSE_POS Global $_AUDIO_HANDLE Global $_VOLUME_STATE Global $_PLAY_PAUSE_STATE = 1 Global $_LOAD_STATE = 0 Global $_ACTIVE_AUDIO_STREAM Global $_AUDIO_LENGTH Global $_BASS_FOLDER = 'BASS.au3\BASS' ; experimental - not uptodate ;~ HotKeySet("{F2}", "_CtrlShortcut") ;VolUp ;~ HotKeySet("{F3}", "_CtrlShortcut") ;VolDown ;~ HotKeySet("{F4}", "_CtrlShortcut") ;Stop Music ;~ HotKeySet("{F5}", "_CtrlShortcut") ;Pause Music ;~ HotKeySet("{F8}", "_CtrlShortcut") ;Exit HotKeySet("{ESC}", "_Terminate") ;string2pixelsize Func _Terminate() _terminate_audio_handle() Exit EndFunc ; experimental - not uptodate Func _CtrlShortcut() Switch @HotKeyPressed Case "{F2}" ;~ Send("{VOLUME_UP}") Local $iCurrentVol = _Get_volume() + 5 If $iCurrentVol < 100 Then _Set_volume($iCurrentVol) Else _Set_volume(100) EndIf ConsoleWrite('>->'&@ScriptLineNumber&': '&@HotKeyPressed&' VolumnUp: '&$iCurrentVol&@CRLF) ;Blue/Cyan Case "{F3}" ;~ Send("{VOLUME_DOWN}") Local $iCurrentVol = _Get_volume() - 5 If $iCurrentVol > 0 Then _Set_volume($iCurrentVol) Else _Set_volume(0) EndIf ConsoleWrite('+>+'&@ScriptLineNumber&': '&@HotKeyPressed&' VolumnDown: '&$iCurrentVol&@CRLF) ;Green/Grey Case "{F4}" ;~ Send("{VOLUME_MUTE}") _Audio_stop($_AUDIO_HANDLE) ConsoleWrite('-->'&@ScriptLineNumber&': '&@HotKeyPressed&' Stop Audio'&@CRLF) ;Yellow/Orange Case "{F5}" ;~ Send("{VOLUME_PAUSE}") _Audio_pause($_AUDIO_HANDLE) ConsoleWrite(' '&@ScriptLineNumber&': '&@HotKeyPressed& 'Pause Audio'&@CRLF) ;White Case "{F8}" ConsoleWrite('!>!'&@ScriptLineNumber&': '&@HotKeyPressed& 'Exit Audio Player'&@CRLF) ;Read/Brown _terminate_audio_handle() Exit EndSwitch EndFunc ; gui Global $hGUI = GUICreate("BASS.au3 UDF Audio Player", 350, 200) ; volumn Global $iBarW = 330 Global $cAudioVolLabel = GUICtrlCreateLabel("", 10, 10, $iBarW, 20) ;~ Global $cAudioVolCtrl = GUICtrlCreateProgress(10, 10, $iBarW, 20) Global $cAudioVolCtrl = GUICtrlCreateSlider(10, 10, $iBarW, 20) ; volum slider numeration Local $iSliderWidth = $iBarW Local $iSliderX = 17 Local $iSliderMin = 0 Local $iSliderMax = 100 ; <<< length ajd Local $iTicInterval = 25 ; <<< frequency ajd Local $iAlignIndicatorToInterval = 26 ; <<< match up numberated to marker on slider ajd Local $iLabelPos = Floor(($iSliderWidth - $iAlignIndicatorToInterval) * $iTicInterval / ($iSliderMax - $iSliderMin)) Local $iLabelCount = $iSliderMax / $iTicInterval Local $iLabelWidth = 20 _GUICtrlSlider_SetRange($cAudioVolCtrl, 0, $iSliderMax) _GUICtrlSlider_SetTicFreq($cAudioVolCtrl, $iTicInterval) For $i = 0 To $iLabelCount + 1 Local $bOverspill = False ; Calculate tic value Local $iLabelValue = $i * $iTicInterval ; Check if over max If $iLabelValue >= $iSliderMax Then $bOverspill = True $iLabelValue = $iSliderMax EndIf GUICtrlCreateLabel($iLabelValue, $iSliderX + ($i * $iLabelPos), 35, $iLabelWidth, 15) If $bOverspill Then ExitLoop Next ; tooltip/track Local $iLabelW = 1000 ; to keep long str as 1 liner ;~ Local $iLabelW = 100 ; to keep long str as 1 liner Global $cAudioTitle = GUICtrlCreateLabel("", 10, 65, $iLabelW, 20) ; control Local $iBtnL = 10 Local $iBtnT = 100 Local $iBtnGap = 5 Local $iItemCount = 5 Local $iBtnW = ($iBarW / $iItemCount) - $iBtnGap Local $iBtnSpc = $iBtnW + $iBtnGap Local $iBtnH = 20 Global $cAudioLoad = GUICtrlCreateButton("Load", 10 , $iBtnT, $iBtnW, $iBtnH) Global $cAudioPlayPause = GUICtrlCreateButton("Play", 10 + $iBtnSpc , $iBtnT, $iBtnW, $iBtnH) Global $cAudioStop = GUICtrlCreateButton("Stop", 10 + $iBtnSpc * 2 , $iBtnT, $iBtnW, $iBtnH) Global $cAudioMute = GUICtrlCreateButton("Mute", 10 + $iBtnSpc * 3 , $iBtnT, $iBtnW, $iBtnH) Global $cAudioRepeat = GUICtrlCreateCheckbox('Repeat', 10 + $iBtnSpc * 4 , $iBtnT, $iBtnW, $iBtnH) GUICtrlSetState(-1, $GUI_CHECKED) ; play-bar Local $iTop = 145 Global $cAudioPlayLabel = GUICtrlCreateLabel("", 10, $iTop, $iBarW, 20) GUICtrlSetBkColor(-1, 0x878787) ; <<<<< Change color. Global $cAudioPlayProcess = GUICtrlCreateProgress(10+1, $iTop+1, $iBarW-2, 20-2) ; position percentage duration Local $iTop = 170 $cAudioPosition = GUICtrlCreateLabel("00:00:00", 10, $iTop, 60, 20) $cAudioDuration = GUICtrlCreateLabel("00:00:00", 298, $iTop, 60, 20) $cAudioPercent = GUICtrlCreateLabel("0%", 160, $iTop, 60, 20) GUISetState() Global $iCount = 0, $iDown = 0 ;for marquee AdlibRegister('_MoveMarquee', 100) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE _Audio_pause($_AUDIO_HANDLE) _Audio_init_stop($_AUDIO_HANDLE) Exit Case $cAudioVolLabel Local $aMpos = GUIGetCursorInfo($hGUI) Local $iPercent = Int(100 * ($aMpos[0] - 12) / 320) GUICtrlSetData($cAudioVolCtrl, $iPercent) Local $sMute = GUICtrlRead($cAudioMute) GUICtrlSetData($cAudioMute, $iPercent &'% '& StringRegExpReplace($sMute, '(?:^|\d{1,3}\%\s)?(\w{2,6})$', '$1')) ;~ GUICtrlSetData($cAudioMute, $iPercent &' '& StringRegExpReplace($sMute, '^(\w{2,6})$', '$1')) ConsoleWrite('$aMpos[0]' &' - vol: '& $iPercent &'%'& @CRLF) _Set_volume($iPercent) Case $cAudioPlayLabel Local $aMpos = GUIGetCursorInfo($hGUI) Local $iPercent = Int(100 * ($aMpos[0] - 12) / 320) GUICtrlSetData($cAudioPlayProcess, $iPercent) ConsoleWrite('$aMpos[0]' &' - Process: '& $iPercent &'%'& @CRLF) Local $iPos = ($iPercent/100) * $_AUDIO_LENGTH Local $_BASS_PAUSE_POS = _BASS_ChannelSeconds2Bytes($_AUDIO_HANDLE, $iPos) _BASS_ChannelSetPosition($_AUDIO_HANDLE, $_BASS_PAUSE_POS, $BASS_POS_BYTE) Case $cAudioLoad Global $iCount = 0, $iDown = 0 $Fileopen = FileOpenDialog("Select Audio","", _ "(*.m4a;*.mp3;*.acc;*.ac3;*.wav;*.ogg;*.m3u;*.pls)|" & _ "(*.m4a)|(*.mp3)|(*.acc)|(*.ac3)|(*.wav)|(*.ogg)|(*.m3u)|(*.pls)|All(*.*)") If Not @error Then $_THE_URL = $Fileopen ;~ Local $sFileName = StringRegExpReplace($Fileopen, "(.*?[\\/])*(.*?)((?:\.\w+\z|\z))", "$2") Local $sFileName = StringRegExpReplace($Fileopen, "^.+\\(.+\.\w{1,5})$", "$1") _terminate_audio_handle() _Audio_init_start() $_AUDIO_HANDLE = _Set_url($_THE_URL) If _Get_volume() < 10 Or _Get_volume() > 90 Then GUICtrlsetdata($cAudioVolCtrl, $_DEFAULT_VOLUMN ) _Set_volume($_DEFAULT_VOLUMN) EndIf If $_AUDIO_HANDLE > 1 Then $_AUDIO_LENGTH = _Get_len($_AUDIO_HANDLE) GUICtrlSetData($cAudioTitle, 'Playing... '& $sFileName) GUICtrlSetData($cAudioDuration, _seconds_to_duration($_AUDIO_LENGTH)) _Audio_pause($_AUDIO_HANDLE) ;~ _Toggle_PlayPause() Else GUICtrlSetData($cAudioTitle, $_AUDIO_HANDLE& ': Audio fails to load') EndIf Case $cAudioPlayPause ;1=loaded, 2=playing, 3=pause If $_AUDIO_HANDLE > 1 Then _Audio_pause($_AUDIO_HANDLE) Else GUICtrlSetData($cAudioTitle, $_AUDIO_HANDLE& ': load/add new track') EndIf Case $cAudioStop _terminate_audio_handle() Case $cAudioMute _Audio_mute() EndSwitch Sleep(10) ; live update If $_AUDIO_HANDLE > 1 Then Local $sAudioTitle = _Get_streamtitle($_AUDIO_HANDLE) If $sAudioTitle <> $_ACTIVE_AUDIO_STREAM Then $_ACTIVE_AUDIO_STREAM = $sAudioTitle GUICtrlSetData($cAudioTitle, $sAudioTitle) Else Local $iAudioPosition = _Get_pos($_AUDIO_HANDLE) Local $iAudioPositionCountDown = $_AUDIO_LENGTH - $iAudioPosition Local $iAudioPositionPercent = Int(100 * ($iAudioPosition) / $_AUDIO_LENGTH) GUICtrlSetData($cAudioPlayProcess, $iAudioPositionPercent) GUICtrlSetData($cAudioPercent, $iAudioPositionPercent&'%') ;~ GUICtrlSetData($cAudioPosition, _seconds_to_duration($iAudioPosition)) ; count up GUICtrlSetData($cAudioPosition, _seconds_to_duration($iAudioPositionCountDown)) ; count down _Audio_Repeat($iAudioPositionPercent) EndIf EndIf WEnd # ---funcs--- Func _Audio_Repeat($iAudioPositionPercent=0) If $iAudioPositionPercent == 100 Then Local $iRepeatStatus = GUICtrlRead($cAudioRepeat) Switch $iRepeatStatus Case 1 _Audio_stop($_AUDIO_HANDLE) _Audio_pause($_AUDIO_HANDLE) Case 4 ;~ _Audio_stop($_AUDIO_HANDLE) _terminate_audio_handle() EndSwitch EndIf EndFunc Func _GuiCtrl_GetStringPixelSize($guiCtrlHandle='') $sText = GUICtrlRead($guiCtrlHandle) $aSize = _StringSize($sText) Return $aSize[2] EndFunc ;~ Func _MoveMarquee($opt=2) ; error warning why? Func _MoveMarquee() If $_AUDIO_HANDLE > 1 Then ;~ Local $opt = 1 Local $opt = 2 Switch $opt Case 1 ;loop ;~ Local $iLabelW = 370 ; preferablely width $iLabelW of $cAudioTitle or shorter or abit longer Local $iLabelW = ControlGetPos($hGUI, '', $cAudioPlayLabel) ; get Width ref equal to $cAudioTitle Width ($cAudioTitle gui set exceed Gui Width to prevent string collapse into 2lines) Local $iTextW = _GuiCtrl_GetStringPixelSize($cAudioTitle) ; calculate pixels from string Local $aCpos = ControlGetPos($hGUI, '', $cAudioTitle) ; current Ctrl position If $aCpos[0] >= $iLabelW[2] Then $aCpos[0] = -($iTextW-($iLabelW[0]*3)) Local $speed = 1 ; + for forwards | - for backwards ControlMove($hGUI, '', $cAudioTitle, $aCpos[0] + $speed , $aCpos[1]) ; forward Case 2 ;snake/pingpong Local $iLabelY = ControlGetPos($hGUI, '', $cAudioTitle) ; get Y-Pos Local $iLabelW = ControlGetPos($hGUI, '', $cAudioPlayLabel) ; get Width ref equal to $cAudioTitle Width ($cAudioTitle gui set exceed Gui Width to prevent string collapse into 2lines) Local $iTextW = _GuiCtrl_GetStringPixelSize($cAudioTitle) ; calculate pixels from string Local $aCpos = ControlGetPos($hGUI, '', $cAudioTitle) ; current Ctrl position #cs ;testing Local $iTailStop $iLabelWx = 300 ;$iLabelW[2] #$iTextWx = 400 $iTextWx = 100 $iTextWx = $iTextWx/2 If $iTextWx < $iLabelWx Then $iTailStop = -10 ;$iLabelW[0] ElseIf $iTextWx >= $iLabelWx Then $iTailStop = -(($iTextWx - $iLabelWx) + ($iLabelWx/2)) ; EndIf ;~ #ce ; <$iTextWx/2 begin end here ; | <then beginin would stop here ; | | <$iTextWx/2 tail stop here ; | | | | <want tail of str stop here #------100------50------0++++++50++++++100++++++150+++...+++300 ;~ #cs ; If $iCount = 0 Then $iDown = 0 ElseIf $iCount = 100 Then $iDown = 1 EndIf #ce ; calc pos for the snake head or tail to rebounce If $iTextW < $iLabelW[2] Then $iHeadStop = $iLabelW[2] - $iTextW $iTailStop = -($iLabelW[0]) ElseIf $iTextW >= $iLabelW Then $iHeadStop = $iLabelW[2]/2 $iTailStop = (($iTextW - $iLabelW[2]) + ($iLabelW[2]/2)) EndIf ; direct switch If $aCpos[0] <= -($iTailStop) Then $iDown = 0 ElseIf $aCpos[0] > $iHeadStop Then $iDown = 1 EndIf ; step Switch $iDown Case 0 $iCount += 1 Case Else $iCount -= 1 EndSwitch ; walking Local $marqueeX = ($iCount / 100) * $iTextW ControlMove($hGUI, "", $cAudioTitle, $marqueeX, $iLabelY[1]) EndSwitch EndIf EndFunc Func _terminate_audio_handle() If $_AUDIO_HANDLE > 1 Then GUICtrlSetData($cAudioPlayPause, 'Play') GUICtrlSetData($cAudioTitle, '') Local $aCpos = ControlGetPos($hGUI, '', $cAudioTitle) ; current Ctrl position ControlMove($hGUI, '', $cAudioTitle, 10 , $aCpos[1]) _Audio_pause($_AUDIO_HANDLE) _Audio_stop($_AUDIO_HANDLE) $_AUDIO_HANDLE = _Audio_init_stop($_AUDIO_HANDLE) EndIf EndFunc Func _Toggle_PlayPause() If $_AUDIO_HANDLE Then If $_PLAY_PAUSE_STATE Then $_PLAY_PAUSE_STATE = 0 GUICtrlSetData($cAudioPlayPause, 'Pause') GUICtrlSetData($cAudioVolCtrl, _Get_volume()) _Audio_play($_AUDIO_HANDLE) Else $_PLAY_PAUSE_STATE = 1 GUICtrlSetData($cAudioPlayPause, 'Play') _Audio_pause($_AUDIO_HANDLE) EndIf Else GUICtrlSetData($cAudioTitle, 'Please load audio '&$_AUDIO_HANDLE) EndIf EndFunc Func _seconds_to_duration($seconds) Local $iHour = Int($seconds / 3600) Local $iMin = Int(($seconds - $iHour * 3600) / 60) Local $iSec = $seconds - $iHour * 3600 - $iMin * 60 Return StringFormat('%02d:%02d:%02d', $iHour, $iMin, $iSec) EndFunc # -------------------------- ;~ _Audio_Player_Main() # -------------------------- Func _Audio_Player_Main() _Audio_init_start() $_AUDIO_HANDLE = _Set_url("http://ice1.somafm.com/groovesalad-128.mp3") $_AUDIO_HANDLE = _Set_url($_THE_URL) If _Get_volume() < 10 Or _Get_volume() > 90 Then _Set_volume($_DEFAULT_VOLUMN) _Audio_play($_AUDIO_HANDLE) while 1 ConsoleWrite(_Get_streamtitle($_AUDIO_HANDLE) & @CRLF) Sleep(1000) WEnd _Audio_init_stop($_AUDIO_HANDLE) EndFunc Func _Audio_init_start() If _BASS_STARTUP(@ScriptDir & '\' & $_BASS_FOLDER & '\bass.dll') Then If _BASS_Init(0, -1, 44100, 0) Then If _BASS_SetConfig($BASS_CONFIG_NET_PLAYLIST, 1) = 0 Then SetError(3) EndIf Else SetError(2) EndIf Else SetError(@error) EndIf EndFunc Func _Set_buffer($buffer) _BASS_SetConfig($BASS_CONFIG_NET_BUFFER, $buffer) EndFunc Func _Audio_stop($_AUDIO_HANDLE) _BASS_ChannelStop($_AUDIO_HANDLE) EndFunc Func _Audio_play($_AUDIO_HANDLE) _BASS_ChannelPlay($_AUDIO_HANDLE, 1) EndFunc Func _Audio_mute() $iVolState = GUICtrlRead($cAudioVolCtrl) If $iVolState > 0 Then _Set_volume(0) GUICtrlSetData($cAudioVolCtrl, 0) GUICtrlSetData($cAudioMute, 'unMute') $_VOLUME_STATE = $iVolState Else GUICtrlSetData($cAudioVolCtrl, $_VOLUME_STATE) GUICtrlSetData($cAudioMute, 'Mute') _Set_volume($_VOLUME_STATE) EndIf EndFunc ;1=audio loaded, 2=audio playing, 3=audio pause Func _Audio_pause($_AUDIO_HANDLE) If _Get_playstate($_AUDIO_HANDLE) = 1 Then _Audio_play($_AUDIO_HANDLE) ConsoleWrite('!>!'&@ScriptLineNumber&': $_BASS_PAUSE_POS #1 Loaded | '&$_BASS_PAUSE_POS&''&@CRLF) ;Read/Brown GUICtrlSetData($cAudioPlayPause, 'Pause') ElseIf _Get_playstate($_AUDIO_HANDLE) = 2 Then $_BASS_PAUSE_POS = _BASS_ChannelGetPosition($_AUDIO_HANDLE, $BASS_POS_BYTE) ConsoleWrite('!>!'&@ScriptLineNumber&': $_BASS_PAUSE_POS #2 Playing | '&$_BASS_PAUSE_POS&''&@CRLF) ;Read/Brown GUICtrlSetData($cAudioPlayPause, 'Play') _BASS_ChannelPause($_AUDIO_HANDLE) ElseIf _Get_playstate($_AUDIO_HANDLE) = 3 Then _Audio_play($_AUDIO_HANDLE) ConsoleWrite('!>!'&@ScriptLineNumber&': $_BASS_PAUSE_POS #3 Paused | '&$_BASS_PAUSE_POS&''&@CRLF) ;Read/Brown GUICtrlSetData($cAudioPlayPause, 'Pause') _BASS_ChannelSetPosition($_AUDIO_HANDLE, $_BASS_PAUSE_POS, $BASS_POS_BYTE) EndIf EndFunc Func _Audio_init_stop($_AUDIO_HANDLE) _BASS_StreamFree($_AUDIO_HANDLE) _BASS_Free() EndFunc Func _Set_url($file) If FileExists($file) Then $_AUDIO_HANDLE = _BASS_StreamCreateFile(False, $file, 0, 0, 0) Else $_AUDIO_HANDLE = _BASS_StreamCreateURL($file, 0, 1) EndIf If @error Then Return SetError(1) EndIf Return $_AUDIO_HANDLE EndFunc Func _Get_pos($_AUDIO_HANDLE) $current = _BASS_ChannelGetPosition($_AUDIO_HANDLE, $BASS_POS_BYTE) Return Round(_Bass_ChannelBytes2Seconds($_AUDIO_HANDLE, $current)) EndFunc Func _Get_len($_AUDIO_HANDLE) $current = _BASS_ChannelGetLength($_AUDIO_HANDLE, $BASS_POS_BYTE) Return Round(_Bass_ChannelBytes2Seconds($_AUDIO_HANDLE, $current)) EndFunc Func _Set_pos($_AUDIO_HANDLE, $seconds) _BASS_ChannelSetPosition($_AUDIO_HANDLE, _BASS_ChannelSeconds2Bytes($_AUDIO_HANDLE, $seconds), $BASS_POS_BYTE) EndFunc Func _Set_volume($volume) _BASS_SetConfig($BASS_CONFIG_GVOL_STREAM, $volume * 100) EndFunc Func _Get_volume() Return _BASS_GetConfig($BASS_CONFIG_GVOL_STREAM) / 100 EndFunc Func _Get_bitrate($_AUDIO_HANDLE) $a = Round(_Bass_ChannelBytes2Seconds($_AUDIO_HANDLE, _BASS_ChannelGetLength($_AUDIO_HANDLE, $BASS_POS_BYTE))) $return = Round(_BASS_StreamGetFilePosition($_AUDIO_HANDLE, $BASS_FILEPOS_END) * 8/ $a/ 1000) If StringInStr($return, "-") Then $return = _BASS_StreamGetFilePosition($_AUDIO_HANDLE, $BASS_FILEPOS_END) * 8 / _BASS_GetConfig($BASS_CONFIG_NET_BUFFER) EndIf Return $return EndFunc ;1=audio loaded, 2=audio playing, 3=audio pause Func _Get_playstate($_AUDIO_HANDLE) Switch _BASS_ChannelIsActive($_AUDIO_HANDLE) Case $BASS_ACTIVE_STOPPED $returnstate = 1 Case $BASS_ACTIVE_PLAYING $returnstate = 2 Case $BASS_ACTIVE_PAUSED $returnstate = 3 Case $BASS_ACTIVE_STALLED $returnstate = 4 EndSwitch Return $returnstate EndFunc Func _Get_streamtitle($_AUDIO_HANDLE) $pPtr = _BASS_ChannelGetTags($_AUDIO_HANDLE, $BASS_TAG_META) $sStr = _BASS_PtrStringRead($pPtr) If StringInStr($sStr, ";") Then $infosplit = StringSplit($sStr, ";") $infosplit[1] = StringReplace($infosplit[1], "'", "") $infosplit[1] = StringReplace($infosplit[1], "StreamTitle=", "") If StringInStr($infosplit[1], "-") Then Return $infosplit[1] EndIf EndIf EndFunc Edited September 24, 2020 by zeenmakr
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now