Desktop-App

Local Music Player

Ein Musikplayer für Windows 10 und 11, der Musik vom PC und von FTP-Servern wie einem NAS, einem Heimserver oder einem Webhosting abspielt. Dunkler Windows-11-Look, FTP-Browser in der Seitenleiste, Playlist in der Mitte und Player unten.

← Zurück zu den Projekten Kontakt zu Desktop-Apps

Was ist das?

Local Music Player ist eine Desktop-App, geschrieben in C# als .NET-10-WPF-App. Sie spielt lokale Dateien und Musik von einem FTP-Server in einer gemeinsamen Playlist – ohne vorher etwas zu kopieren.

Die App ist eine einzige Datei, LocalMusicPlayer.exe, mit etwa 25 MB. Sie braucht die .NET 10 Desktop Runtime und merkt sich alles zwischen den Sitzungen: Playlist, aktuellen Song, Server, Lautstärke, Shuffle/Repeat, Equalizer, Fenstergröße und Breite der Seitenleiste.

Plattform
Windows 10 / 11
Eine .exe-Datei
≈ 25 MB
Desktop Runtime
.NET 10
Equalizer
10 Bänder
  • Lokale Musik und FTP/FTPS-Server in derselben Playlist
  • 10-Band-Equalizer mit 15 Presets
  • Medientasten und das Windows-Medien-Pop-up mit Cover
  • Dunkler Windows-11-Look, in WPF eingebaut

Lokale Musik

Füge Dateien, ganze Ordner mit Unterordnern oder .m3u/.m3u8-Playlists hinzu – oder zieh sie einfach ins Fenster. Mit „Öffnen mit…“ oder über die Kommandozeile geöffnete Dateien werden hinzugefügt und starten.

Das Hauptfenster: FTP-Server in der Seitenleiste, die Playlist mit Titel, Interpret, Album, Länge und Quelle in der Mitte und der Player mit Cover, Steuerung, Zeitleiste, Equalizer und Lautstärke unten.

Gespielt wird, was Windows dekodieren kann: MP3, AAC/M4A, FLAC, WAV, WMA und ALAC. Titel, Interpret, Album, Länge und Cover werden im Hintergrund aus den Tags gelesen, sodass die Playlist nie auf große Ordner wartet.

  • Dateien, Ordner (mit Unterordnern) und .m3u/.m3u8-Playlists
  • Drag & Drop und „Öffnen mit…“ aus dem Explorer
  • Tags und Cover werden im Hintergrund gelesen
  • Ogg/Opus über die kostenlosen Web Media Extensions von Microsoft

FTP-Server

Speichere beliebig viele Server mit normalem FTP, explizitem FTPS oder implizitem FTPS. Selbstsignierte Zertifikate und anonymer Login lassen sich pro Server erlauben, und „Verbindung testen“ prüft die Einstellungen vor dem Speichern.

Einen Server hinzufügen mit Host, Port, Login, Verschlüsselungsart, Option für selbstsignierte Zertifikate und Startordner. „Test connection“ prüft die Verbindung vor dem Speichern.

Durchsuche die Ordner auf dem Server und spiele einen Song per Doppelklick, oder füge ausgewählte Songs, einen Ordner oder einen ganzen Ordnerbaum hinzu. Songs werden vor dem Abspielen in einen lokalen Cache geladen, und während ein Song läuft, lädt der nächste im Hintergrund – so gibt es keine Pause zwischen den Titeln.

  • FTP, explizites FTPS und implizites FTPS
  • Passwörter mit deinem Windows-Konto verschlüsselt (DPAPI)
  • Der nächste Song lädt im Hintergrund – keine Lücke zwischen Titeln
  • Cache auf 2 GB begrenzt; am längsten ungenutzte Dateien zuerst entfernt

Wiedergabe und Playlist

Play/Pause, weiter/zurück, Spulen, Lautstärke und Stumm. Shuffle vermeidet kürzlich gehörte Songs, und „Zurück“ geht im Shuffle-Modus durch das, was du wirklich gehört hast. Repeat: aus, alle oder einer.

Lässt sich ein Song nicht abspielen – fehlende Datei, nicht unterstütztes Format oder fehlgeschlagener Download –, wird er mit dem Grund in der Playlist markiert und der Player springt weiter. Nach wiederholten Fehlern gibt er auf, statt endlos zu kreisen.

Tastenkürzel
TasteAktion
LeertastePlay / Pause
Strg+Links / Strg+RechtsZurück / weiter
Strg+Hoch / Strg+RunterLautstärke
S / R / M / EShuffle / Repeat / Stumm / Equalizer
Strg+FPlaylist durchsuchen
Enter / EntfAusgewählten Song spielen / entfernen
Rücktaste (FTP-Liste)Übergeordneter Ordner
  • Suche nach Titel, Interpret, Album oder Dateiname
  • Sortieren mit Alt+Hoch/Runter, Entfernen mit Entf, Dateispeicherort per Rechtsklick
  • Lokale Songs als .m3u8-Playlist speichern
  • Zeigt Anzahl Songs, Gesamtlänge und wie viele von FTP kommen

Equalizer

10 Bänder von 31 Hz bis 16 kHz, je ±12 dB, plus Preamp und Links/Rechts-Balance. Es gibt 15 Presets – darunter Bass boost, Loudness, Vocal, Rock und Small speakers – und Custom, sobald du selbst einen Regler bewegst.

Der Equalizer mit dem Preset Bass boost: Preamp links, 10 Bänder von 31 Hz bis 16 kHz und Balance unten. Doppelklick setzt einen Regler zurück.

Änderungen wirken sofort während der Wiedergabe, und ein Limiter verhindert, dass starke Anhebungen knacken.

  • 10 Bänder, 31 Hz – 16 kHz, ±12 dB
  • Preamp und Balance
  • 15 Presets plus Custom
  • Limiter gegen Verzerrung

Wie der Ton zu den Lautsprechern kommt

Der Ton läuft durch eine einzige Kette, egal ob die Datei lokal liegt oder von FTP geladen wurde:

Audiodatei (lokal oder aus dem FTP-Cache)
  → Media-Foundation-Decoder (NAudio)
  → Preamp → 10 EQ-Filter pro Kanal → Lautstärke → Balance → Limiter
  → Lautsprecher

Der Equalizer ist von Hand geschrieben: zehn Standardfilter pro Kanal, der übliche Baustein für Audio-Equalizer. Ein bewegter Regler schickt neue Einstellungen an den Audio-Thread, der sie beim nächsten Audioblock übernimmt – ohne Klicks oder Aussetzer. Lautstärkeänderungen werden genauso geglättet.

Medientasten und ein Wechsel der Audio-Engine

Die Medientasten funktionieren auch, wenn die App im Hintergrund läuft, und das Windows-Medien-Pop-up zeigt Titel und Cover. NAudio verbindet sich nicht selbst mit den Windows-Mediensteuerungen, darum hält die App einen versteckten, stummen Windows-Mediaplayer nur dafür bereit – und teilt ihm Titel, Interpret, Cover und Wiedergabestatus mit.

Die erste Version spielte über die Windows-eigene Medien-Engine, die Medientasten und Pop-up gratis mitbrachte. Als der Equalizer dazukam, zeigte sich, dass diese Engine nur einen einfachen 4-Band-EQ bietet. Die Wiedergabe wurde deshalb auf NAudio umgestellt, die Medientasten blieben über den versteckten Player erhalten.

Aufbau des Codes

Der Code ist in Fenster, Services und Modelle aufgeteilt:

DateiWas sie macht
MainWindow.xaml/.csHauptfenster: Playlist, Wiedergabelogik, Shuffle und Repeat, FTP-Browser
FtpProfileWindowServer hinzufügen/bearbeiten mit Verbindungstest
EqualizerWindowEqualizer-Fenster
Services/AudioEngine.csWiedergabe, Spulen und Medientasten
Services/EqualizerSampleProvider.csDie Klangverarbeitungskette
Services/FtpService.csDurchsuchen, Downloads und Cache
Services/AudioFiles.cs, MetadataReader.cs, SettingsStore.csDateiscan und Playlists, Tags, gespeicherte Einstellungen
Models/Songs, Server, Equalizer und App-Einstellungen

Einstellungen liegen in %AppData%\LocalMusicPlayer\settings.json, der FTP-Cache in %LocalAppData%\LocalMusicPlayer\Cache.