AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte AudioDB 5.3.2.8 - Internet-Stream & Audio-Player
Thema durchsuchen
Ansicht
Themen-Optionen

AudioDB 5.3.2.8 - Internet-Stream & Audio-Player

Ein Thema von Dunkel · begonnen am 16. Apr 2007 · letzter Beitrag vom 19. Jul 2008
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von Dunkel
Dunkel
Registriert seit: 26. Mär 2007
Kurzbeschreibung:
* Kleiner, BASS.DLL-basierter Audioplayer.

Key-Features: (Besonderheiten die man nicht oft sieht, bzw. noch nie gesehen hat[?!?])
* Shoutcast.com-Explorer
(Suchbegriff eingeben {Genre, Artist, sonstiges}, Radiostation auswählen, einen der verfügbaren Audio-Streams auswählen, zurücklehnen & der Musi' lauschen)
* Internetstream mitschneiden/aufnehmen
(einfach den Record-Button betätigen, die Aufnahme des Internetstreams startet sofort. Beim ICYTAG-Wechsel [= ein neues Lied beginnt] beendet AudioDB automatisch die Aufnahme, speichert diese [im gestreamten Format; probiert habe ich es mit MP3 & AAC] mit einem „sinnigen“ Dateinamen [„ICYStationName – ICYTAG“]auf die Festplatte und startet sofort wieder die Aufnahme für das nächste Lied)
* Loop A-B
(wer kennt es nicht: das momentane Lieblingslied, welches man am liebsten zig-Mal hintereinander hören möchte, hat ein ellenlanges Outro. Dann kann man diese Funktion benutzen. Einfach die Start- & Endpositionen des Loops wählen und das Lied ohne störende Intros/Outros genießen)
* Audio-Device-HotSwapping
(meine Wenigkeit hat 3 Soundkarten mit insgesamt 6 verwendbaren Audioausgängen; ich benutze diese Funktion recht gerne, wenn ich beim Hören von Kopfhörer auf meine Musikanlage umschalten möchte; und das ohne die Wiedergabe stoppen zu müssen)
* Grafischer Equalizer
(während "normale" Audioplayer meistens auf einen recht simplen Equalizer zurückgreifen, welcher vorgegebene Frequenzen via ScrollBar verändern kann, hat AudioDB einen, von professionellen Audio-Anwendungen bekannten, grafischen Equalizer; sowohl die Frequenzen an sich als auch die Verstärkung können stufenlos verändert werden) [EDIT: komplett überarbeitet; voreingestellte Presets, eigene Presets können erstellt werden, Simple/Advanced-Mode]
* 6 verschiedene Audio-Visualisierungen
* Zweisprachig, Englisch & Deutsch können eingestellt werden (ToDo: noch nicht überall implementiert)
* Unicode-fähig
* Playlist, inklusive lesen und schreiben von M3U, PLS & XSPF-Playlist-Dateien
* Jingle/Pre-Listening-Funktion der Dateien im ADB-MediaCore

* NEW: ADBMediaCore - ein File-Browser, der Shoutcast-Explorer, die Playlist und (NEW AudioDB-Data in einem zentralen Fenster; quasi die Medienverwaltung von AudioDB
* NEW: AudioDB-Data - eine Funktion zum indexieren der Musiksammlung auf der Festplatte (dafür ist das OCX-Element AudioGenie zwingend erforderlich! Bitte vor dem Benutzen dieser Funktion AudioGenie über das Hauptmenü des Players installieren)
* NEW: AudioDB:covermotion: - ähnlich wie bei iTunes (nicht gleich!! Nicht war, Gausi ) kann man sich bequem durch die Plattensammlung klicken (Bild im Anhang)

* eine zu 80% WinAmp-kompatible API zum Steuern von AudioDB
(siehe dazu ach Gausis Library-Eintrag , es muss einfach nur dieses  hwndWinamp:= FindWindow('Winamp v1.x',nil); durch jenes  hwndWinamp:= FindWindow('TF_Player.UnicodeClass',nil); ausgetauscht werden)

* u.v.a. - Da ich noch kein Changelog führe, kann ich leider nicht genau sagen, was sich alles zur letzten Version ver-/geändert hat. Ein weitere Grund AudioDB runterzuladen und auszuprobieren!



ToDos: (was auf jeden Fall noch rein muss und auch rein kommt)
* Audio-TAG
(sowohl lesend als auch schreibend auf verschiedene Audio-TAGs zugreifen
in der aktuellen Version greift AudioDB via AudioGenie auf den Audio-TAG zu, dazu muss die entsprechende AudioGenie2.ocx installiert werden [via Hauptmenü steht diese Option zur Verfügung])
* Konfigurations-Dialog
(bis jetzt kann man diverse Einstellungen nur via manuelles Bearbeiten der Konfigurations-Ini-Datei ändern)


Für BUG-Reports & sonstige Kommentare bin ich Euch jetzt schon dankbar!
Miniaturansicht angehängter Grafiken
screenshot_214.png  
Angehängte Dateien
Dateityp: rar audiodb5.3.2.8_176.rar (1,39 MB, 306x aufgerufen)
Es ist zu wahr um schön zu sein...
 
Benutzerbild von Dunkel
Dunkel

 
Delphi 2007 Enterprise
 
#11
  Alt 9. Aug 2007, 15:20
So, wieder mal was neues:

[+] Playlist-Editor
[+] Unicode-fähig
[+] dieses und jenes
[fix] diverse Bugs behoben
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

 
Delphi 2007 Enterprise
 
#12
  Alt 17. Aug 2007, 22:51
Minor Update.

[fix] Unicode-Dateien können jetzt geöffnet werden
[+] something more
  Mit Zitat antworten Zitat
dominikkv

 
Delphi 2007 Professional
 
#13
  Alt 24. Aug 2007, 15:48
hey, cooles programm
nur wenn ich nen radiostream höre, dann eine audiodatei öffnen will tuts nicht...^^

welche komponente hast du für die trackbar benutzt?

deine shoutcast komponente hab ich schon in meinem player eingebaut
danke!
Dominik
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

 
Delphi 2007 Enterprise
 
#14
  Alt 24. Aug 2007, 16:47
Hallo Dominik!

Zitat von dominikkv:
hey, cooles programm
Danke!

Zitat von dominikkv:
nur wenn ich nen radiostream höre, dann eine audiodatei öffnen will tuts nicht...^^
Wie versuchst Du die Audiodatei zu öffnen? Playlist, Drag&Drop, Open-Button?

Zitat von dominikkv:
welche komponente hast du für die trackbar benutzt?
TImage.Canvas

Zitat von dominikkv:
deine shoutcast komponente hab ich schon in meinem player eingebaut
danke!
Schön! Ich hoffe mal, dass weitere Internetz-Shoutcast-fähige Player auf den Zug aufspringen. Mir geht es immer gegen den Strich auf Shoutcast.com zu gehen um nur mal ein wenig Internetz-Radio zu hören.
(...und ich freue mich auf eine kurze Erwähnung in Deinen Programm... )
  Mit Zitat antworten Zitat
dominikkv

 
Delphi 2007 Professional
 
#15
  Alt 24. Aug 2007, 18:03
Zitat von Dunkel:
Wie versuchst Du die Audiodatei zu öffnen? Playlist, Drag&Drop, Open-Button?
Rechtsklick auf visualisierung -> Player -> Öffnen -> Audiodatei öffnen.
Dann wähle ich das Lied aus, das fenster schließt sich wieder und nix passiert -.-

Zitat von Dunkel:
TImage.Canvas
ok...das ist ein bisschen zu hoch für mich^^

Zitat von Dunkel:
(...und ich freue mich auf eine kurze Erwähnung in Deinen Programm... )
na klar... in den Abouts
Dominik
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

 
Delphi 2007 Enterprise
 
#16
  Alt 24. Aug 2007, 18:16
Zitat von dominikkv:
Zitat von Dunkel:
Wie versuchst Du die Audiodatei zu öffnen? Playlist, Drag&Drop, Open-Button?
Rechtsklick auf visualisierung -> Player -> Öffnen -> Audiodatei öffnen.
Dann wähle ich das Lied aus, das fenster schließt sich wieder und nix passiert -.-
Hmm... kann ich bei mir nicht nachvollziehen. Öffne mal via Hauptmenü-Optionen-System-Show/Hide Console die Konsole. Wird dort beim Versuch die Audiodatei, wie Du es beschrieben hast, zu öffnen ein Fehler angezeigt?

Zitat von dominikkv:
Zitat von Dunkel:
TImage.Canvas
ok...das ist ein bisschen zu hoch für mich^^
Quatsch! So schwer ist das nicht! Mit ein wenig experimentieren kriegt man das recht gut hin.

Zitat von dominikkv:
Zitat von Dunkel:
(...und ich freue mich auf eine kurze Erwähnung in Deinen Programm... )
na klar... in den Abouts
Danke!


Grüße
Michael
  Mit Zitat antworten Zitat
dominikkv

 
Delphi 2007 Professional
 
#17
  Alt 24. Aug 2007, 18:36
Zitat von Dunkel:
Zitat von dominikkv:
Zitat von Dunkel:
Wie versuchst Du die Audiodatei zu öffnen? Playlist, Drag&Drop, Open-Button?
Rechtsklick auf visualisierung -> Player -> Öffnen -> Audiodatei öffnen.
Dann wähle ich das Lied aus, das fenster schließt sich wieder und nix passiert -.-
Hmm... kann ich bei mir nicht nachvollziehen. Öffne mal via Hauptmenü-Optionen-System-Show/Hide Console die Konsole. Wird dort beim Versuch die Audiodatei, wie Du es beschrieben hast, zu öffnen ein Fehler angezeigt?
nÖ...nix...nicht mal in der konsole.
und am lied kanns nicht liegen, ich hab mehrere probiert.
komisch ist nur das im open-dialog der button der eigendlich mit "Öffnen" beschriftet ist mit "Speichern" beschriftet ist.

Zitat von Dunkel:
Zitat von dominikkv:
Zitat von Dunkel:
TImage.Canvas
ok...das ist ein bisschen zu hoch für mich^^
Quatsch! So schwer ist das nicht! Mit ein wenig experimentieren kriegt man das recht gut hin.
Aber ich hab das noch nie gemacht... und hab kein plan wie das geht^^
gibts da nen tut oder so?
Dominik
  Mit Zitat antworten Zitat
Benutzerbild von Dunkel
Dunkel

 
Delphi 2007 Enterprise
 
#18
  Alt 24. Aug 2007, 18:58
Zitat von dominikkv:
nÖ...nix...nicht mal in der konsole.
und am lied kanns nicht liegen, ich hab mehrere probiert.
komisch ist nur das im open-dialog der button der eigendlich mit "Öffnen" beschriftet ist mit "Speichern" beschriftet ist.
Überaus Mysteriös! Ich habe im ganzen Projekt nur ein (1) TSaveDialog verwendet, in einer anderen Klasse, um genauer zu sein, zum Speichern der Playlist. In der Player-Klasse & im Player-Fenster gibt es nur ein TOpenDialog. Das was Du beschreibst dürfte, nein, kann eigentlich garnicht vorkommen! Ich gucke mir das Problem nochmal genauer an.

Zitat von dominikkv:
Zitat von Dunkel:
Zitat von dominikkv:
Zitat von Dunkel:
TImage.Canvas
ok...das ist ein bisschen zu hoch für mich^^
Quatsch! So schwer ist das nicht! Mit ein wenig experimentieren kriegt man das recht gut hin.
Aber ich hab das noch nie gemacht... und hab kein plan wie das geht^^
gibts da nen tut oder so?
So male ich die Trackbar, benutze es mal als "Inspiration"
Delphi-Quellcode:
procedure TF_Player.TrackBar_Draw;
  function ChangeColor(InputColor: TColor; Base, Val: Extended): TColor;
  var
    r,g,b: extended;
  begin
    Val:= 255/(Base+1)*Val;
    Base:=255;
    // Grab RGB values
    r := GetRValue(InputColor);
    g := GetGValue(InputColor);
    b := GetBValue(InputColor);
    // Do the operation
    r := r-((Val/Base)*100);
    g := g-((Val/Base)*100);
    b := b-((Val/Base)*100);
    // Check whether result is in range
    if r > 255 then
      r := 255;
    if r < 0 then
      r := 0;
    if g > 255 then
      g := 255;
    if g < 0 then
      g := 0;
    if b > 255 then
      b := 255;
    if b < 0 then
      b := 0;
    Result := RGB(byte(Round(r)),byte(Round(g)),byte(Round(b)));
  end;
var
  i: integer;
  XX, YY: integer;
  TempBMP: TBitmap;
  PlayerPos: integer;
const
  NetStreamScrollerWidth = 80;
begin
  YY:= 0;
  PlayerPos:= TrackBar_PercentToPos(fPlayer.PosElapsedPercent); // die aktuelle Player-Position in Prozent

  TempBMP:= TBitmap.Create;
  TempBMP.Height:= PB_TrackBar.Height;
  TempBMP.Width:= PB_TRackBar.Width;
  TempBMP.Canvas.Brush.Color:= clWhite;
  TempBMP.Canvas.FillRect(TempBMP.Canvas.ClipRect);

  if not fPlayer.IsNetStream then // der aktuelle Track ist kein NetStream
    begin

      if fPlayer.PlayerState = psPlay then // der aktuelle Track wird abgespielt
        if TrackBar_ScrollerCounter <= GetTickCount then
          begin
            TrackBar_ScrollerCounter:= GetTickCount +75;
            Inc(TrackBar_Scroller);
            if TrackBar_Scroller Mod 13 = 0 then
              TrackBar_Scroller:= 0;

        end;

      for i:=0 to PlayerPos do
        begin
          YY:=0;
          if i= 0 then YY:= 3;
          if i= 1 then YY:= 2;
          if i= 2 then YY:= 1;
          if i= PB_TRackBar.Width-1 then YY:= 3;
          if i= PB_TRackBar.Width-2 then YY:= 2;
          if i= PB_TRackBar.Width-3 then YY:= 1;


          TempBMP.Canvas.Pen.Color:= ChangeColor(Color_TrackBar, PlayerPos, i); // TempBMP.Width
          TempBMP.Canvas.MoveTo(i, 0+YY);
          TempBMP.Canvas.LineTo(i, TempBMP.Height-YY);

          if i MOD 13 = TrackBar_Scroller then
            begin
              TempBMP.Canvas.Pen.Color:= ChangeColor(Color_TrackBar, 500, i);
              TempBMP.Canvas.MoveTo(i-3, 1+YY);
              TempBMP.Canvas.LineTo(i, TempBMP.Height-1-YY);
            end;


        end;

      if fPlayer_RepeatMode = 4 then // Loop A-B
        begin
          if fPlayer.RepeatABPosASec>= 0 then
            begin
              xx:= TrackBar_SecToPos(Round(fPlayer.RepeatABPosASec));
              TempBMP.Canvas.Pen.Color:= COLOR_TrackBarRepeatAB;
              TempBMP.Canvas.MoveTo(xx-3, 0);
              TempBMP.Canvas.LineTo(xx, TempBMP.Height div 2);
              TempBMP.Canvas.LineTo(xx-3, TempBMP.Height);
              TempBMP.Canvas.LineTo(xx-3,0);
            end;

          if fPlayer.RepeatABPosBSec>= 0 then
            begin
              xx:= TrackBar_SecToPos(Round(fPlayer.RepeatABPosBSec));
              TempBMP.Canvas.Pen.Color:= COLOR_TrackBarRepeatAB;
              TempBMP.Canvas.MoveTo(xx+3, 0);
              TempBMP.Canvas.LineTo(xx, TempBMP.Height div 2);
              TempBMP.Canvas.LineTo(xx+3, TempBMP.Height);
              TempBMP.Canvas.LineTo(xx+3,0);
            end;
        end;

      if (MouseButtonEx(TrackBar_ShiftState) = [mbeLeft]) or
         (MouseButtonEx(TrackBar_ShiftState) = [mbeRight]) then
        if (TrackBar_MouseButton= mbLeft) or (TrackBar_MouseButton= mbRight)then
          begin
            TempBMP.Canvas.Pen.Color:= clWhite;
            TempBMP.Canvas.Brush.Color:= clBlack;
            TempBMP.Canvas.Ellipse(Rect(TrackBar_MousePosX-TempBMP.Height div 3,0+YY,TrackBar_MousePosX+TempBMP.Height div 3, TempBMP.Height-YY));
          end;
    end;

  if fPlayer.IsNetStream then
    begin
      if fPlayer.PlayerState = psPlay then
        begin
          TrackBar_NetStreamScroller:= TrackBar_NetStreamScroller + 1;

          if TrackBar_NetStreamScroller > TempBMP.Width then
            TrackBar_NetStreamScroller:= -NetStreamScrollerWidth;

          TempBMP.Canvas.Brush.Color:= COLOR_Selected;
          for i:= TrackBar_NetStreamScroller to TrackBar_NetStreamScroller + NetStreamScrollerWidth do
            begin
              YY:=0;
              if i= 0 then YY:= 3;
              if i= 1 then YY:= 2;
              if i= 2 then YY:= 1;
              if i= PB_TRackBar.Width-1 then YY:= 3;
              if i= PB_TRackBar.Width-2 then YY:= 2;
              if i= PB_TRackBar.Width-3 then YY:= 1;

              if i= TrackBar_NetStreamScroller+0 then YY:= 3;
              if i= TrackBar_NetStreamScroller+1 then YY:= 2;
              if i= TrackBar_NetStreamScroller+2 then YY:= 1;
              if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-0 then YY:= 3;
              if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-1 then YY:= 2;
              if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-2 then YY:= 0;
// if i= TrackBar_NetStreamScroller+NetStreamScrollerWidth-3 then YY:= 1;



              TempBMP.Canvas.Pen.Color:= ChangeColor(Color_TrackBar, TempBMP.Width, i);
              TempBMP.Canvas.MoveTo(i, 0+YY);
              TempBMP.Canvas.LineTo(i, TempBMP.Height-YY);
            end;
        end;
    end;

  with TempBMP.Canvas do
    begin
      if not fPlayer.IsNetStream then
        begin
          if Trackbar_MouseIsInside then
            Pen.Color:= Color_Selected
          else
            Pen.Color:= clBlack;
        end
      else
        Pen.Color:= clBlack;
          
      MoveTo(3, 0);
      LineTo(PB_TRackBar.Width-4,0);
      LineTo(PB_TRackBar.Width-1,3);
      LineTo(PB_TRackBar.Width-1, PB_TRackBar.Height-4);
      LineTo(PB_TRackBar.Width-4, PB_TRackBar.Height-1);
      LineTo(3, PB_TRackBar.Height-1);
      LineTo(0, PB_TRackBar.Height-4);
      LineTo(0, 3);
      LineTo(3, 0);
    end;


  PB_TrackBar.Canvas.CopyRect(Rect(0,0,PB_TrackBar.Width, PB_TrackBar.Height), TempBMP.Canvas, TempBMP.Canvas.ClipRect);
  TempBMP.Free;
end;
Oha, ich muss mich korrigieren. Ich benutze kein TImage sondern eine TPaintBox.
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

 
Delphi 7 Professional
 
#19
  Alt 23. Sep 2007, 20:31
Hi,

nettes Programm, allerdings wäre eine Favoriten Funktion für Radio Sender gut, so muss man die Stationen nicht immer wieder Suchen.

mfg, Björn
Björn
  Mit Zitat antworten Zitat
dominikkv

 
Delphi 2007 Professional
 
#20
  Alt 23. Sep 2007, 20:44
ohh..aso...hab ich ganz vergessen *schäm*

vielen Dank für dein Beispiel

ich hab mal einiges abgeschrieben und in eine schon fertige progressbar irgendwie reingewurschtelt...
geht
sogar schon zur designtime
Dominik
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:43 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz