StreamBAR - noch ein Player mit bass.dll Unterstützung

Veröffentliche deine funktionierenden Skripte und Funktionen

Moderator: jNizM

User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

StreamBAR - noch ein Player mit bass.dll Unterstützung

07 Nov 2016, 08:38

⯈StreamBAR v1.0
Player für Liveradio und Onlinestreams im Internet.

Image
Image

Hallo liebe AHKler,

da ich keinen 100% zufriedenstellenden Streamplayer :cry: in den Foren finden konnte, entstand die Idee zur Umsetzung eines einfachen und kleinen OnlineRadios auf Basis von Bass.dll.
Vorab schon mal vielen herzlichen Dank an un4seen.com (bass.dll), toralf (bass-wrapper), k3ph (Bass-library) und noname (gdip / bass.dll radio stream player) für dessen Ideen/Entwicklungen/Postings. :thumbup:

Das StreamBAR Onlineradio wurde bislang jedoch nur unter Windows 10 Pro 64 Bit getestet und benötigt noch folgende Dateien:
http://www.un4seen.com - Download Bass24.zip entpacke nur bass.dll (32 Bit) oder \ x64 \ bass.dll (64 Bit)... Achtung: nicht mit falscher bass.dll kompilieren!!!

jetzt hier downloaden: StreamBAR.zip 8-)

StreamBAR.ahk

Code: Select all

[code]/*
⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊⯊
==============================================================================================
Title .........: ⯈ StreamBAR v1.0 ♫
AHK Version ...: 1.1.24.02 x64 Unicode
Win Version ...: Windows 10 Professional x64 / 1607 Build 14393.447
Description ...: Player für Liveradio und Onlinestreams im Internet
Version .......: v1.00 (64 Bit)
Modified ......: 2016-11-17 17:10:36
Author(s) .....: moefr01
Thanks to .....: BASS.dll (www.un4seen.com), toralf (BASS-wrapper), k3ph (BASS library), noname
                 (gdip/bass.dll radiostream player ....for inspiration), all unnamed AHKmembers
                 for code-snippets and inspiration ☺
==============================================================================================
⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋⯋
*/
; Globale Einstellungen
#NoEnv
#Persistent
#NoTrayIcon
#SingleInstance Force
SetBatchLines -1
SendMode Input
SetWorkingDir %A_ScriptDir%

;=============================================================================================
; Fensternachrichten definieren

OnMessage(0x201,  "OnLeftClick")           ; Fenster verschieben bei Linksklick
OnMessage(0x200,  "OnMouseMove")           ; Mausbewegung über Controls erkennen
OnMessage(0x0020, "OnSetCursor")           ; GUI-Fenster mit Schatten erzeugen: Resize-Cursor(s) deaktivieren  
OnMessage(0xA4,   "OnTitlebarClick")       ; Fenster aus/einblenden bei Rechtsklick Fenstertitelleiste

;=============================================================================================
; config_SB.ini-Parameter lesen

IfNotExist, %A_ScriptDir%\config_SB.ini
  ExitApp
IniRead, xPos,              %A_ScriptDir%\config_SB.ini, StreamBAR, xPos
IniRead, yPos,              %A_ScriptDir%\config_SB.ini, StreamBAR, yPos
IniRead, top,               %A_ScriptDir%\config_SB.ini, StreamBAR, top
IniRead, symbol,            %A_ScriptDir%\config_SB.ini, StreamBAR, symbol
IniRead, sender_font,       %A_ScriptDir%\config_SB.ini, StreamBAR, sender_font
IniRead, sender_fontstyle,  %A_ScriptDir%\config_SB.ini, StreamBAR, sender_fontstyle
IniRead, sender_fontsize,   %A_ScriptDir%\config_SB.ini, StreamBAR, sender_fontsize
IniRead, sender_y,          %A_ScriptDir%\config_SB.ini, StreamBAR, sender_y
IniRead, title_font,        %A_ScriptDir%\config_SB.ini, StreamBAR, title_font
IniRead, title_fontstyle,   %A_ScriptDir%\config_SB.ini, StreamBAR, title_fontstyle
IniRead, title_fontsize,    %A_ScriptDir%\config_SB.ini, StreamBAR, title_fontsize
IniRead, title_y,           %A_ScriptDir%\config_SB.ini, StreamBAR, title_y
IniRead, list_font,         %A_ScriptDir%\config_SB.ini, StreamBAR, list_font
IniRead, list_fontstyle,    %A_ScriptDir%\config_SB.ini, StreamBAR, list_fontstyle
IniRead, list_fontsize,     %A_ScriptDir%\config_SB.ini, StreamBAR, list_fontsize
IniRead, list_distance,     %A_ScriptDir%\config_SB.ini, StreamBAR, list_distance
IniRead, list_width,        %A_ScriptDir%\config_SB.ini, StreamBAR, list_width
IniRead, list_x,            %A_ScriptDir%\config_SB.ini, StreamBAR, list_x
IniRead, list_y,            %A_ScriptDir%\config_SB.ini, StreamBAR, list_y
IniRead, list_rows,         %A_ScriptDir%\config_SB.ini, StreamBAR, list_rows
IniRead, color_back,        %A_ScriptDir%\config_SB.ini, StreamBAR, color_back
IniRead, color_sender,      %A_ScriptDir%\config_SB.ini, StreamBAR, color_sender
IniRead, color_title,       %A_ScriptDir%\config_SB.ini, StreamBAR, color_title
IniRead, color_shadow,      %A_ScriptDir%\config_SB.ini, StreamBAR, color_shadow
IniRead, color_level,       %A_ScriptDir%\config_SB.ini, StreamBAR, color_level
IniRead, color_levelback,   %A_ScriptDir%\config_SB.ini, StreamBAR, color_levelback
IniRead, color_button,      %A_ScriptDir%\config_SB.ini, StreamBAR, color_button
IniRead, scroll_len,        %A_ScriptDir%\config_SB.ini, StreamBAR, scroll_len
IniRead, scroll_wait,       %A_ScriptDir%\config_SB.ini, StreamBAR, scroll_wait
IniRead, tooltip_wait,      %A_ScriptDir%\config_SB.ini, StreamBAR, tooltip_wait
IniRead, alpha,             %A_ScriptDir%\config_SB.ini, StreamBAR, alpha
IniRead, shadow,            %A_ScriptDir%\config_SB.ini, StreamBAR, shadow
IniRead, logo,              %A_ScriptDir%\config_SB.ini, StreamBAR, logo
IniRead, gradient,          %A_ScriptDir%\config_SB.ini, StreamBAR, gradient
IniRead, volume,            %A_ScriptDir%\config_SB.ini, StreamBAR, volume
IniRead, fade,              %A_ScriptDir%\config_SB.ini, StreamBAR, fade
IniRead, level_rate,        %A_ScriptDir%\config_SB.ini, StreamBAR, level_rate
IniRead, level_meter,       %A_ScriptDir%\config_SB.ini, StreamBAR, level_meter

;=============================================================================================
; sender_liste.txt lesen, DDL-Liste (Sendernamen) erzeugen, Sendername aus A_Index=1
Loop, Read, sender_list.txt
{
  Loop, parse, A_LoopReadLine, |
    {
      if A_Index = 1
        sender_namen = %sender_namen%|%A_LoopField%
	}
}
sender_namen := LTrim(sender_namen,"|")       ; "|" Separator am Anfang löschen

; zuletzt-gespielte sendernumber
IniRead, sendernumber, %A_ScriptDir%\config_SB.ini, StreamBAR, sendernumber

; Felder auslesen (1=Sendername, 2=Senderadresse)
FileReadLine, senderzeile, sender_list.txt, %sendernumber%
array         := StrSplit(senderzeile, "|")
sendername    := array[1]
senderadr     := array[2]
senderloc     := array[3]
sendergenre   := array[4]
senderrate    := array[5]

;=============================================================================================
; Parameter anpassen

if xPos =                              ; falls xPos ohne Wert, Positionen auf 100 setzen
  xPos := 100, yPos := 100

if top = 1                             ; falls top = 1, Fenster auf AlwaysOnTop setzen
  alwaysontop = +AlwaysOnTop

if symbol = 0                          ; falls symbol = 0, kein Taskleistensymbol anzeigen
  owner = +Owner

textx     = 10                         ; Sender/TitelText x-Einrückung
if level_meter = 1                     ; bei level_meter = 1, um +10 nach rechts rücken
  textx += 10
textx0    := textx + 0                 ; Schatten-Titeltext horizontal versetzen
title_y0  := title_y + 2               ; Schatten-Titeltext vertikal versetzen

;=============================================================================================
; GUI erzeugen und anzeigen, diverse Controls abfragen:

Gui, +Resize +MinSize +MaxSize +hwndStreamBAR %Owner%                                         ; GUI definieren
Gui, Color, %color_back%                                                                      ; Hintergrundfarbe
Gui, Add, Picture, x600 y0 vsender_pic BackgroundTrans,                                       ; Senderlogo

If gradient = 1                                                                               ; Hintergrundverlaufsbild
  Gui, Add, Picture, x0 y30 w580 h37 vBackgroundpic BackgroundTrans, HG_gradient.png              
Else
  Gui, Add, Picture, x0 y0 w0 h0 vBackgroundpic BackgroundTrans,                              ; ohne Hintergrundverlaufsbild, Static2
Gui, Add, Picture, x%textx% y31 w400 h30 vshadowline BackgroundTrans, shadowline.png               ; Schattenlinie

Gui, Font
Gui, Font, s7, Segoe Print
Gui, Add, Text, x566 y1 w12 h12 R1 +0x0200 c%color_button% gExit vExitbutton BackgroundTrans, ⭙   ; Exit-Knopf

Gui, Font
Gui, Font, s%sender_fontsize% %sender_fontstyle%, %sender_font%                               ; Font für Sender
Gui, Add, Text, x%textx% y%sender_y% w422 h36 R1 -wrap +0x0200 c%color_sender% vtext_sender BackgroundTrans,   ; Sender

if level_meter = 1                                                                            ; Level-meter
  {
    Gui, Add, Progress, x2 y2 w6 h58 vlevel_l +Vertical c%color_level% Background%color_levelback% Range0-32678, 0
    Gui, Add, Progress, x7 y2 w6 h58 vlevel_r +Vertical c%color_level% Background%color_levelback% Range0-32678, 0
  }

Gui, Font
Gui, Font, s%title_fontsize% %title_fontstyle%, %title_font%                                  ; Font für Title
if shadow = 1                                                                                 ; Title mit Schatten, vertikal zentriert
  Gui, Add, Text, x%textx0% y%title_y0% w550 h36 R1 -wrap +0x0200 c%color_shadow% vtext_title0 BackgroundTrans, % title
Else
  Gui, Add, Text, x0 y0 w0 h0 vtext_title0 BackgroundTrans,                                   ; Title ohne Schatten
Gui, Add, Text, x%textx% y%title_y% w550 h36 R1 -wrap +0x0200 c%color_title% vtext_title BackgroundTrans,  % title    ; Title Vordergrund, vertikal zentriert

Gui, Font
Gui, Font, s%list_fontsize% %list_fontstyle%, %list_font%                                     ; Font für DDL
Gui, Add, DDL, x%list_x% y%list_y% w%list_width% +0x0800 vddl_sender gDDL_Auswahl %sort% hwndhDDL -VScroll R%list_rows% Choose%sendernumber%, %sender_namen%
PostMessage, 0x153, -1, 0, , AHK_ID %hDDL%                                                    ; Höhe der Eingabezeile oben
PostMessage, 0x153, 0, %list_distance%, , AHK_ID %hDDL%                                       ; Abstandshöhe der Listeneinträge

Gui, Add, Button, x0 y0 w0 h0 vGobutton gGo                                                   ; Dummy-Button (DDL-Listenauswahl)
Gui, Show, x%xPos% y%yPos% w578 h37, StreamBAR                                                ; GUI anzeigen
Gui, -Caption %alwaysontop%                                                                   ; Fenster mit Rahmen und Schatten

;=============================================================================================
; Neustart Einsprungpunkt

Restart:
if logo = 1
  {
    IfExist logos\%sendername%.png
      {
        senderlogo = %sendername%.png
        GuiControl, Show, sender_pic
      }
    else
      GuiControl, Hide, sender_pic
  }
GuiControl, , sender_pic, *w0 *h0 %A_ScriptDir%\logos\%senderlogo%

GuiControlGet, sender_pic, Pos                                                                ; Senderlogo positionieren
GuiControl, Move, sender_pic, % "x" (980 - sender_picW) / 2 "y" (62 - sender_picH) / 2
GuiControl, , text_sender, %sendername%                                                       ; Sendername
GuiControl, , text_sender0, %sendername%                                                      ; Sendername Schattentext

;=============================================================================================
; Timer für level-meter, title, scrolling

SetTimer, get_level, %level_rate%                                                             ; Levelmeterabfrage: optimal = 20 ms
SetTimer, get_title, 5000		                                                              ; Titeltextabfrage: optimal = 5000 ms
SetTimer, scroll_title, %scroll_wait%                                                         ; Scrolling text_title Umschaltintervall

;=============================================================================================
; BASS.dll von http://www.un4seen.com/
; Download: bass24.zip ...... 64Bit-Version: bass24\x64\bass.dll in das Scriptverzeichnis entpacken

; BASS.dll-ChannelTags aus dem Stream holen
BASS_ChannelGetTags(hStream, tags, return_type := "AStr")
{
  Return DllCall("bass.dll\BASS_ChannelGetTags", "UInt", hStream, "UInt", tags, return_type)
}

BASS_DLLCALL := DllCall("LoadLibrary", "Str", A_ScriptDir . "\bass.dll")
if (DllCall("bass.dll\BASS_Init", "Int", -1, "UInt", 44100, "UInt", 0, "Ptr", A_ScriptHwnd, "Ptr", 0))
  {
	hStream := DllCall("bass.dll\BASS_StreamCreateURL", "Str", senderadr, "UInt", 0, "UInt", A_IsUnicode ? BASS_UNICODE := 0x80000000 : 0, "Ptr", 0, "Ptr", 0, "UInt")
	DllCall("bass.dll\BASS_ChannelPlay", "UInt", hStream, "Int", 1)                           ; Stream abspielen
    DllCall("bass.dll\BASS_ChannelSlideAttribute", UInt, hStream, UInt, 2, Float, 0, UInt, 0)    ; Volume ausblenden auf 0 in 0 msec
    DllCall("bass.dll\BASS_ChannelSlideAttribute", UInt, hStream, UInt, 2, Float, 2, UInt, fade*4) ; Volume einblenden auf 2 in fade*4 msec
    get_title:                                                                                ; Titel holen
    title_old := title
    if (tag := BASS_ChannelGetTags(hStream, BASS_TAG_META := 5))
	  {
	    tags := StrSplit(tag, ";")
	    Loop % tags.MaxIndex()
	      {
		    if (InStr(tags[A_Index], "StreamTitle=")) 
		      {
			    title:= StrSplit(tags[A_Index], "=", "'")[2]
			    break
              }
          }
          if (title != title_old)
            {
              StringReplace,  title, title,  ä, ä, All                                       ; StringReplacements
              StringReplace,  title, title,  Ã`,, Ä, All
              StringReplace,  title, title, �, ö, All
              StringReplace,  title, title,  Ãœ, Ü, All
              StringReplace,  title, title,  ö, ö, All
              StringReplace,  title, title,  Õ, Ø, All
              StringReplace,  title, title,  ü, ü, All
              StringReplace,  title, title,  ß, ß, All
              StringReplace,  title, title,  è, è, All
              StringReplace,  title, title,  é, é, All
              StringReplace,  title, title,   &, &&, All
              if shadow = 1
                {
                  GuiControl, +Left, text_title0
                  GuiControl, , text_title0, %title%
                }
                  GuiControl, +Left, text_title
                  GuiControl, , text_title, %title%                                           ; Titeltext
            }
          Return
      }      

    get_level:                                                                                ; Level (L+R) holen
    BASS_GetLevel(hStream, LeftLevel, RightLevel)
    GuiControl, , level_r, %RightLevel%
    GuiControl, , level_l, %LeftLevel%
    Return
    
    scroll_title:                                                                             ; Scrolling abhängig von Stringlänge
    StringLen, title_len, title
    If (title_len > scroll_len)
      {
        If scrollstate = 0
          {
            GuiControl, +Right, text_title0
            GuiControl, , text_title0, %title%
            GuiControl, +Right, text_title
            GuiControl, , text_title, %title%
            scrollstate = 1
          }
        Else
          {
            GuiControl, +Left, text_title0
            GuiControl, , text_title0, %title%
            GuiControl, +Left, text_title
            GuiControl, , text_title, %title%
            scrollstate = 0
          }     
      }
    Return
  }

;=============================================================================================
; liefert Level zurück (peak amplitude 0-32768), bei Fehler: -1 oder bei Abriss: 0

BASS_GetLevel(hStream, Byref LeftLevel, Byref RightLevel){ 
	If ((LevelDWord := DllCall("bass.dll\BASS_ChannelGetLevel", UInt, hStream)) = -1)
		ErrorLevel := 0
	If (LevelDWord > 0) {
		LeftLevel  := LevelDWord & 0xffff                                                     ; linker Kanal:  low word 16-bits
		RightLevel := (LevelDWord >> 16) & 0xffff                                             ; rechter Kanal: high word 16-bits
	}Else{
		LeftLevel  = 0
		RightLevel = 0
	}
	Return
}

;=============================================================================================
; DropDownListe öffnen und Auswahl holen

DDL_Auswahl:
Gui, Submit, NoHide
send, {tab} {enter}                                                                           ; Auswahl mit [ok] bestätigen
Return

;=============================================================================================
; GUI verschieben mit gehaltener linker Maustaste

OnLeftClick()
  {
    PostMessage, 0xA1, 2
    ToolTip                                                                                   ; aktive ToolTips löschen
  }
Return

;=============================================================================================
; Rechtsklick auswerten: Sender/Logo=Senderliste, Levelmeter=Fensterposition, Titel=ToolTip vom Titel

GuiContextMenu:
If (A_GuiControl = "text_title" or A_GuiControl = "shadowline")                               ; TitelText- und Schattenlinie-Rechtsklick
  {
    StringReplace, title_tt, title, &&, &
    ToolTip,
    (LTrim
    Titel:`t%title_tt%
    Sender:`t%sendername%
    Ort:`t%senderloc%
    Genre:`t%sendergenre%
    Bitrate:`t%senderrate% kbps
    ), 28, 75
    SetTimer, ToolTipRemove, %tooltip_wait%
  }

If (A_GuiControl = "level_l" or A_GuiControl = "level_r")                                     ; Level_meter L+R-Rechtsklick
  {
  ToolTip,
  (LTrim
  S t r e a m B A R  v1.0
  ⯈ Player für Liveradio und Onlinestreams im Internet.
  –––––––––––––––––––––––––––––––––––––––––––––––––––––
  Info`t`t= Levelmeter rechtsklicken
  Senderauswahl`t= Sendernamen oder Logo rechtsklicken
  Titel-Info`t= Titel rechtsklicken
  Transparenz`t= Fenstertitelleiste rechtsklicken (-/+)
  Lautstärke`t= Mausrad über StreamBAR drehen
  Beenden`t`t= ⭙-Symbol klicken
  –––––––––––––––––––––––––––––––––––––––––––––––––––––
  coded 2016 by:`tmoefr01
  many thanx to:`ttoralf, k3ph, noname, un4seen.com
  ), 28, 75
  SetTimer, ToolTipRemove, %tooltip_wait%
  Return
  }
                                                     
If (A_GuiControl = "text_sender" or A_GuiControl = "sender_pic")                              ; SenderText-/logo-Rechtsklick
  {
    if ddl_state = off
      {
        ToolTip,
        GuiControl, Move, ddl_sender, x%list_x%
        GuiControl, Show, ddl_sender
        GuiControl, Show, GoButton
        ddl_state = on
        send, {tab}{F4}
      }
    Else
      {
        GuiControl, Hide, ddl_sender
        GuiControl, Hide, GoButton
        ddl_state = off
        send, {F4}{RButton}
      }
  }
Return

;=============================================================================================
; sendernumber aus Liste holen

Go:
; keys abfragen und blättern verhindern
GetKeyState, state, Right
if state = D
  Return
GetKeyState, state, Left
if state = D
  Return
GetKeyState, state, Down
if state = D
  Return
GetKeyState, state, Up
if state = D
  Return
GetKeyState, state, PgUp
if state = D
  Return
GetKeyState, state, PgDn
if state = D
  Return

; Audiostream mit fadeWert ausblenden (std = 2000 msec)
DllCall("bass.dll\BASS_ChannelSlideAttribute", UInt, hStream, UInt, 2, Float, 0, UInt, fade)
DllCall("Sleep", "UInt", fade)

; sendernumber holen
GuiControl, +AltSubmit, ddl_sender
Gui, Submit, NoHide
GuiControlGet, sendernumber, , ddl_sender
; Felder auslesen (1=Sendername, 2=Senderadresse)
FileReadLine, senderzeile, sender_list.txt, %sendernumber%
array         := StrSplit(senderzeile, "|")
sendername    := array[1]
senderadr     := array[2]
senderloc     := array[3]
sendergenre   := array[4]
senderrate    := array[5]

DllCall("bass.dll\BASS_Free")                                                                 ; BASS.dll zurücksetzen

; Neustart ausführen
Goto Restart

;=============================================================================================
; Hover-Abfrage

OnMouseMove() 
{
  global
  IfWinNotActive, ahk_exe StreamBAR.exe
    Return
  If (A_GuiControl = "ExitButton")                                                           ; Exit Hoverabfrage
    {
      If exitSet
        Return
        GuiControl, , Exitbutton, ⬤                                                          ; chr(11044)
        exitSet := True
    } Else If exitSet
      {
        GuiControl, , Exitbutton, ⭙                                                          ; chr(11097)
        exitSet := False
      }
Return
}

;=============================================================================================
; Programm beenden

Exit:
GuiClose:
; zuvor GUI ausblenden
If (alpha > Transparent)
  Transparent := 255
else
   alpha := Transparent
Loop {
       DllCall("Sleep", "UInt", 5)                                                            ; 5ms Sleep
		 if (Transparent > 0) {
           Transparent--
           WinSet, Trans, %transparent%, StreamBAR
		} else
			break
     }

; Volumewert holen
volume := Return DllCall("bass\BASS_GetVolume", "Float")
if volume = 0.00
  volume := volume_alt

; ini-Werte schreiben
WinGetPos, xPos, yPos
IniWrite, %sendernumber%, %A_ScriptDir%\config_SB.ini, StreamBAR, sendernumber
IniWrite, %xPos%,         %A_ScriptDir%\config_SB.ini, StreamBAR, xPos
IniWrite, %yPos%,         %A_ScriptDir%\config_SB.ini, StreamBAR, yPos
IniWrite, %volume%,       %A_ScriptDir%\config_SB.ini, StreamBAR, volume

; Audiostream mit fadeWert ausblenden (std = 1000 msec)
DllCall("bass.dll\BASS_ChannelSlideAttribute", UInt,hStream, UInt, 2, Float, 0, UInt, fade)
DllCall("Sleep", "UInt", fade)
DllCall("bass.dll\BASS_SetVolume", "Float", volume)                                           ; Volume-Standardwert setzen
DllCall("bass.dll\BASS_Free")                                                                 ; BASS.dll zurücksetzen
ExitApp

;=============================================================================================
; Resize-Cursors ausschalten (GUI-Fensterdarstellung: ohne Systembuttons, mit Schatten und aktivem Rahmen

OnSetCursor(WP, LP) {
  Static HARROW := DllCall("User32.dll\LoadCursor", "Ptr", 0, "Ptr", 32512, "UPtr")           ; Std-Pfeilcursor
  HTCODE := LP & 0xFFFF
  If (HTCODE > 9) And (HTCODE < 19) {                                                         ; cursor über Rahmen?
    DllCall("User32.dll\SetCursor", "Ptr", HARROW)                                            ; Pfeilcursor setzen
    Return True                                                                               ; zurück ohne weiteres Verarbeiten
  }
}

;=============================================================================================
; Volume per Scrollrad regeln, wenn Maus über GUI ist ...(nur bei kompilierter exe)

#If MouseIsOver("ahk_exe StreamBAR.exe")
  WheelUp::Send {Volume_Up}
  WheelDown::Send {Volume_Down}
#If

MouseIsOver(WinTitle) {
	MouseGetPos,,, window
	Return WinExist(WinTitle . " ahk_id " . window)
}

;=============================================================================================
; GUI-Fenster aus/einblenden bei Rechtsklick

OnTitlebarClick() {
  Gosub TransWindow
  Return
}

;=============================================================================================
; ToolTip-RemovalTimer

ToolTipRemove:
SetTimer, ToolTipRemove, Off
ToolTip
Return

;=============================================================================================
; Transparenz ändern -/+ (Rechtsklick TitleBar) ...(nur bei kompilierter exe)

TransWindow:
WinGet, Transparent, Transparent, StreamBAR
if (!Transparent) {
  Transparent := 255
	Loop {
		   DllCall("Sleep", "UInt", 5)
		   if (Transparent > alpha) {
			 Transparent--
             WinSet, Trans, %transparent%, StreamBAR
		   } else
			   break
	      } 
} else { 
         Transparent := Transparent
	     Loop {
		        DllCall("Sleep", "UInt", 5)
		        if (Transparent < 255) {
			      Transparent++
			      WinSet, Trans, %Transparent%, StreamBAR
		        } else {
			           WinSet, Trans, Off, StreamBAR
			           break
		               }
	          }
}
Return
Tipp: Falls ihr eigene Streaming-Urls benutzen wollt, möchte ich euch die Website http://www.surfmusik.de empfehlen. Diese bietet jede Menge aktuelle und funktionierende internationale Streamingadressen für jeden Musik-Geschmack. Hier müsst ihr nur die mit live-gekennzeichneten links anklicken und den Url aus dem Quellcode kopieren und in sender_list.txt nach Schema: Sendername|url einfügen.

Die Parameter in der config_SB.ini sind selbsterklärend... denke ich... wenn nicht, fragen.
Freue mich über jede Kritik... solange sie konstruktiver Natur ist.

Die logo-pix sind z.T. selbstgebastelt und dimensionstechnisch angepasst, transparente pngs mit max ~150 x ~70 pixels.

Viel Spaß
moefr01 :dance:
Last edited by moefr01 on 17 Nov 2016, 13:06, edited 21 times in total.
garry
Posts: 3720
Joined: 22 Dec 2013, 12:50

Re: StreamBAR - noch ein Player mit bass.dll Unterstützung

08 Nov 2016, 15:16

@moefr01, danke
funktioniert fein mit XP

Bemerkung :
habe ein script mit Listview und spiele Sender mit vlc.exe ab , Beispiel
run,vlc --one-instance --qt-start-minimized http://www.deutschlandradio.de/streaming/dlf.m3u ,,hide

ich hatte diese Sender angefügt,
DLF und SWR wird nicht abgespielt und bei den anderen Sendern sehe ich kein Text ( Lied Titel ) , wahrscheinlich von den Sendern abhängig (?)
( den Text sehe ich bei vlc.exe )
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: StreamBAR - noch ein Player mit bass.dll Unterstützung

09 Nov 2016, 01:24

Hallo garry,
ich habe unter surfmusik.de die korrekten Urls gefunden, hier nun die funktionierenden sender_list Einträge:

DLF|http://stream.dradio.de/7/249/142684/v1 ... _mp3_dlf_m
SWR4|http://swr-mp3-s-swr4bw.akacast.akamais ... 3-s-swr4bw


Die anderen konnte ich momentan nicht finden... melde mich aber asap!

Gruß
moefr01 :wave:
garry
Posts: 3720
Joined: 22 Dec 2013, 12:50

Re: StreamBAR - noch ein Player mit bass.dll Unterstützung

09 Nov 2016, 04:21

vielen Dank für die url's ( DLF / SWR4 )
Du brauchst die anderen url's nicht zu suchen , es war nur eine Frage

hier noch links , z.B
https://netradio.codeplex.com/
http://www.bluesquartett.de/medien/netradio/
http://www.radio-browser.info/gui/#/
https://github.com/haecker-felix/gradio

habe hier sql database benutzt um Sender zu suchen :
http://www.radio-browser.info/backups/?C=M;O=D

Shoutcast:
https://www.shoutcast.com/

;-- for record needs streamripper ( für Sender welche in links `: beinhalten )
http://streamripper.sourceforge.net/
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: StreamBAR - noch ein Player mit bass.dll Unterstützung

09 Nov 2016, 12:25

de nada... :P
danke garry für die links, sporadisch mal ausprobiert!
ja, es gibt so einige Urls die nicht einwandfrei funktionieren, entweder an Mitglied-Streamingdienst gebunden oder nicht 'sichtbare' Server-Urls bzw. Umzug... hatte mir auch nur so'ne handvoll meinerseits bekannte rausgesucht und bin auf der surfmusik.de eigentlich schnell fündig geworden.
Die Idee mit Streamripper ist schon in meiner Schublade... :shh:

Suche noch'ne einfache Lösung für den Titeltext: autom. horizontales (weiches) Scrolling bei Überlänge des Textes

hat da jemand 'ne Idee oder 'nen Code?

happy coding...
moefr01
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: StreamBAR - noch ein Player mit bass.dll Unterstützung

11 Nov 2016, 02:48

Beim Suchen nach einer Lösung für das horizontale Scrolling des Titeltextes habe ich ein paar Fehler entdeckt und entfernt... :wtf:

Changelog 2016-11-11:

- ToolTip Titeltext nach 5 sec autom. ausblenden
- Volume auf lautlos entfernt
- Keyabfrage Right, Left, Up, Down, PgUp, PgDn inkludiert und keys deaktiviert (kein Springen zum vorherigen/nächsten Sender bei aktiver GUI)
- Titeltext "leeren" vor Senderwahl entfernt
- unnötigen Schreibzugriff auf config_SB.ini entfernt
- Titeltext wechselt Ausrichtung (Rechts / Links) bei Überlänge, damit man alles lesen kann (scroll_len-Parameter gibt Wechsel bei Zeichenanzahl und scroll_wait die Zeitspanne vor)
- Bass.dll free vor dem Abspielen, da sporadisch doppelt gestreamt wurde (netter Halleffekt)
- kleine Codebereinigungen durchgeführt

Herzliche Grüße
moefr01
User avatar
moefr01
Posts: 115
Joined: 25 Nov 2015, 09:01
Location: Germany

Re: StreamBAR - noch ein Player mit bass.dll Unterstützung

12 Nov 2016, 02:13

UPDATE 2016-11-17

alle benötigten Dateien:

logos-Verzeichnis inkl. Inhalt
StreamBAR.ahk
bass.dll (64 Bit)
config_SB.ini
HG_gradient.png
sender_list.txt
shadowline.png


jetzt hier downloaden: StreamBAR.zip 8-)

Update am 2016-11-13 durchgeführt (diverse Codebereinigungen)...
Update am 2016-11-15 durchgeführt (diverse Codebereinigungen)...
Update am 2016-11-17 durchgeführt (diverse Codebereinigungen und Änderungen):
- Stream einblenden (fade * 4) aus config_SB.ini
- Titel-Info (rechtsklick: Titel, Ort, Genre, Bitrate)
- Mausabfragen per A_GuiControl
- Info jetzt per rechtsklick Levelmeter
- Doppelrechtsklick auf Titelleiste entfernt
- fehlerhafte Darstellung sender_pic korrigiert
- ToolTip_wait hinzugefügt = Einblendedauer Titel-Info und Info

Hier ein paar Pics von der aktuellen Version:

Lila-Hintergrund (config_SB.ini: color_back + color_levelback CCCCFF):
Image

Blauer Hintergrund (config_SB.ini: color_back + color_levelback AACCEE):
Image

Titel ausgeklappt:
Image

Info ausgeklappt:
Image

Noch ein Tipp für den Titeltext: in meinen Beispielen habe ich Open Sans Condensed (https://fonts.google.com/) benutzt, da diese schmal und gut leserlich ist, gerade bei überlangen Titeln sinnvoll. Beachtet auch die vertikale Textausrichtung für Sender und Titel nach diversen Fontänderungen, die ini-Werte: sender_y und title_y sind hierbei anzupassen. Ebenso auch den Wert: scroll_len für die Anzahl der Zeichen bis zum Scrolling (Text-Ausrichtungsänderung links/rechts)...

Viel Spaß
moefr01 :wave:

Return to “Skripte und Funktionen”

Who is online

Users browsing this forum: No registered users and 18 guests