An Musikplayern für den Mac fehlt es nicht, und die meisten scheitern auf dieselben drei Arten: sie sind aufgegeben, sie sind eine Web-App im Fenster, oder sie sind ein Streaming-Client, der einen Ordner voller FLACs als Randfall behandelt. Bòcan zielt genau auf das dritte Problem. Es ist eine native Swift-6- und SwiftUI-App, gebaut um eine Sammlung, die dir gehört, und das README beginnt mit dem Satz, der das ganze Projekt erklärt: kein Electron, kein Catalyst, kein Abo, keine Cloud.
Für ein so junges Projekt ist es außerdem ungewöhnlich gut dokumentiert. Das Repository wurde im April 2026 angelegt, die aktuelle Version ist 2.16.0, und der Code steht unter Apache-2.0. Diese Kombination, eine echte veröffentlichte App, die du heute installieren kannst, plus Quellcode zum Lesen oder Weiterverwenden, macht es eher zu einem Artikel als zu einem Lesezeichen.
Was er kann
Du zeigst ihm einen Ordner, und er indexiert die Musik darin. Der Browser ist ein Dreifenster-Fenster: links Quellen und Playlisten, in der Mitte ein Raster oder eine Liste, rechts die Titelliste. Alben, Titel, Interpreten, Genres, Komponisten und zuletzt hinzugefügt haben je eine eigene Ansicht, und Tippen irgendwo springt in die Suche. Ein Buchstabe, ein Wort oder eine Jahreszahl wie 1984, die die Albumwand auf dieses Erscheinungsjahr filtert.
Die Formatbreite ist der Teil, der überrascht. AVFoundation erledigt FLAC, ALAC, AAC, MP3, WAV, AIFF, CAF und M4A nativ. Alles Sperrige übernimmt eine integrierte FFmpeg-Brücke, ohne dass du Plugins installieren musst: Ogg Vorbis, Opus, Monkey's Audio, WavPack, DSD, DTS, Dolby Digital und Dolby Digital Plus sowie Matroska mit allem, was darin steckt, TrueHD eingeschlossen. Surround-Mischungen werden auf Stereo heruntergemischt, statt nur die halbe Abmischung zu spielen, und CUE-Sheets werden zu Kapitelmarken, damit ein Single-File-Rip seine Trackliste behält.
Die Sammlung selbst wird als schreibgeschützt behandelt. Das Scannen verändert keine einzige deiner Dateien, ein FSEvents-Watcher bemerkt Änderungen, und Duplikate werden über Änderungszeit plus Fingerprint erkannt. Für Musik mit fehlenden oder falschen Tags gibt es AcoustID-Fingerprinting gegen MusicBrainz: Es schlägt Änderungen vor, zeigt sie neben dem, was du schon hast, und du kreuzt die Felder an, die du übernehmen willst, bevor irgendetwas geschrieben wird. Dazu kommen ein Tag-Editor für mehrere Titel mit Undo, automatisch erkanntes Sidecar-Cover und ein Flag „Nicht shuffeln“, damit ein Regengeräusch-Album keine Playlist mehr überfällt.
Über lokale Dateien hinaus spricht er drei weitere Protokolle. Subsonic-, Navidrome- und Airsonic-Server erscheinen als gleichwertige Quellen mit übergreifender Suche. Podcasts kommen aus RSS, Atom, dem Podcast Index oder der iTunes-Suche, inklusive Podcasting-2.0-Kapiteln, Transkripten und Credits. Internetradio ist ein Katalog in der Seitenleiste, und eine eingefügte .pls- oder .m3u-URL wird zu den Stationen, die darin stehen. Gescribbelt wird zu Last.fm, ListenBrainz und Rocksky, offline in eine Warteschlange gestellt.
Wie man ihn installiert
Du brauchst macOS 15.0 Sequoia oder neuer. Lade das signierte und notarisierte DMG zuerst aus GitHub Releases. Die offizielle Download-Seite ist eine zusätzliche direkte Route. Homebrew bleibt eine optionale Paketmanager-Route und ist nicht der primäre Download-Weg. Jedes Release veröffentlicht außerdem ein Build-Attest, mit dem du prüfen kannst, dass das heruntergeladene DMG wirklich aus dem Release-Workflow dieses Repositorys stammt.
# Open GitHub Releases and download the signed and notarized DMG:
open https://github.com/bocan/bocan-music/releasesUpdates kommen über Sparkle in der App. Wer Homebrew bevorzugt, kann weiterhin brew upgrade --greedy bocan verwenden; der Build aus dem Quellcode ist ein separater Weg für Mitwirkende und in DEVELOPMENT.md beschrieben.
Wie man ihn benutzt
Der erste Start ist eine Ordnerauswahl. Danach sind es die Gesten, die du erwartest: Doppelklick auf ein Albumcover spielt es, Klick auf eine Spaltenüberschrift sortiert neu, Tippen filtert. Die Navigation verhält sich wie im Browser, mit Zurück- und Vorwärts-Pfeilen, den Daumentasten einer Mehr-Tasten-Maus, ⌘[ und ⌘] sowie Esc, um aus jeder Ebene wieder herauszuklettern, und beim Zurückkehren sind sowohl deine Scrollposition als auch dein Suchtext wieder da.
Die Shortcuts, die man sich merken sollte, sind ⌘⇧F für den Vollbild-Visualizer, ⌘⇧I für den experimentellen Immersive Mode, ⌘⇧Y für die Library Summary und ⌘⇧L für die Log-Konsole. Die Library Summary ist das, was es anderswo nicht gibt: sechs Tabs voller Statistiken, auf deinem eigenen Rechner berechnet, von der Hygiene der Sammlung über Audioqualität, Form der Sammlung und Hörverhalten bis zum Podcast-Rückstand, bis hin zu einer Abschlussquote, die dir verrät, wo die Werbeunterbrechung einer Sendung sitzt.
Smart Playlists werden in einem Regeleditor gebaut und zu live SQL kompiliert, die Zugehörigkeit aktualisiert sich also mit der Sammlung. Manuelle Playlists synchronisieren während der Wiedergabe: Entfernst du einen Titel, passt sich Up Next sofort an. Es gibt sechs GPU-gerenderte Visualizer, vier Mini-Player-Layouts und einen Phone-Sync-Bereich, der einer gekoppelten Android-Telefon eine schreibgeschützte Kopie der Sammlung über dein lokales Netzwerk serviert und auf Wunsch nach MP3 oder Opus transcodiert.
Die Demo
Das README enthält Screenshots der Songs-Ansicht und der Visualizer; ein Demo-Video liegt im Repository nicht. Was ein Screenshot nicht zeigen kann, ist der Teil, der im Alltag zählt: ein Suchfilter, der das Zurückgehen aus einem Album überlebt, eine Warteschlange, die deine Position hält, wenn du eine laufende Playlist bearbeitest, und Sortierung und Scrollposition, die dorthin zurückkehren, wo du warst. Das sind die Dinge, die sich in den ersten zehn Minuten zu testen lohnt.
Wie der Ton entsteht
Lückenlose Wiedergabe ist das Kernversprechen, und der Mechanismus lohnt die Kenntnis: Die Wiedergabe wird im Nanosekundenbereich an AVAudioTime verankert, sodass ein Live-Album oder ein DJ-Mix über Titelgrenzen läuft, ohne dass die Stille oder das Klicken eines normalen Übergangs entsteht. Darüber liegt eine DSP-Kette zwischen Decoder und Ausgang: ein 10-Band-Grafik-EQ, Bassanhebung, ein Stereo-Expander, binaurales Crossfeed und ein Peak-Limiter.
ReplayGain wird zur Wiedergabezeit angewendet statt in die Dateien geschrieben, und alles ohne Gain-Tag wird im Hintergrund nach dem Loudness-Standard EBU R128 analysiert. Der Analysator dekodiert über denselben Weg wie die Wiedergabe, weshalb auch die reinen FFmpeg-Formate einen Wert bekommen und eine Surround-Datei über die Stereo-Faltung gemessen wird, die du tatsächlich hörst. Crossfade geht von null bis zwölf Sekunden, die Wiedergabegeschwindigkeit mit Tonhöhenkorrektur von halb bis doppelt, und der Sleep-Timer blendet aus, statt mitten im Ton abzuschneiden.
Zwei Decoder, ein Graph. AVFoundation übernimmt, was es gut kann, die FFmpeg-Brücke den Rest, auch eine Datei, die der Systemdecoder öffnet aber nicht spielt, etwa Opus in einem MP4-Container. Die Player-Leiste zeigt, was wirklich dekodiert wird: Codec, Bitrate, Samplerate, Bittiefe und Kanal-Layout, gelesen aus dem offenen Decoder statt aus der Dateiendung geraten, sodass eine .m4a korrekt als AAC, ALAC oder E-AC-3 angezeigt wird.
Wie der Code aufgebaut ist
Das Repository ist in zwölf Swift-Package-Module ohne Aufwärts-Imports geteilt, und das ist der Teil, den ein Swift-Entwickler zuerst lesen sollte. AudioEngine besitzt den Decoder-Graphen und den Playback-Actor, Metadata umschließt TagLib, Acoustics erledigt Chromaprint-Fingerprinting und die AcoustID- und MusicBrainz-Abfragen, Library betreibt den Ordner-Scanner und den FSEvents-Watcher, Playback besitzt Warteschlange, Shuffle und den Gapless-Scheduler, und SyncServer macht das Phone-Pairing mit Mutual TLS. Die Persistenz liegt bei GRDB 7 mit FTS5-Volltextsuche und reaktiven ValueObservation-Streams.
Die Disziplin ist als Anforderung formuliert, nicht als Vorsatz: Swift 6 mit strikter Concurrency, @MainActor-Isolation und Sendable-Konformität, eine Line-Coverage-Hürde von 80 Prozent, bei deren Unterschreitung der Build scheitert, eine End-to-End-Suite, die die echte UI bedient, und XcodeGen, damit niemals eine .pbxproj von Hand editiert wird. SwiftLint, SwiftFormat, gitleaks und Snyk laufen bei jedem Pull Request, und Updates liefert Sparkle gegen einen signierten Feed.
Wo er schwächelt
Fangen wir mit der Untergrenze an: macOS 15.0 und nichts darunter, was jeden Mac ausschließt, der auf einer älteren Version feststeckt. Phone Sync geht nur zu Android und nur in eine Richtung: Der Mac serviert, das Telefon hält eine Kopie, und nichts wird jemals in deine Dateien oder deine Datenbank zurückgeschrieben. Es gibt keine iPhone-App, und den Mac vom Telefon aus zu steuern steht unter „Als Nächstes“ statt unter „Enthalten“.
Die andere Lücke ist die Dateiverwaltung. Bòcan indexiert, taggt und erkennt deine Musik, verschiebt und benennt sie aber nicht um; das Organisieren der Sammlung aus der App heraus steht auf der Roadmap. Der Immersive Mode ist im README als experimentell gekennzeichnet und kann sich verändern oder verschwinden. Deep Dive, der Report-Generator aus MusicBrainz und Wikipedia, ist standardmäßig aus, und sein erster Durchlauf über eine große Sammlung ist auf eine Anfrage pro 1,5 Sekunden gedrosselt, dauert also Stunden statt Minuten.
Die Lizenz: Was du darfst
Bòcan steht unter Apache License 2.0, © 2026 Chris Funderburg. Apache-2.0 ist auf dieselbe Weise permissiv wie MIT, aber es ist ein längeres Dokument, und die Unterschiede zählen, wenn du den Code ausliefern willst statt ihn nur zu lesen.
Du darfst ihn kommerziell und in Closed-Source-Produkten einsetzen. Du darfst ihn verändern und das Ergebnis unter Bedingungen deiner Wahl weitergeben, auch als Teil einer größeren proprietären App. Anders als MIT gewährt Apache-2.0 eine ausdrückliche Patentlizenz jedes Beitragenden für die Patente, die sein Beitrag zwangsläufig verletzt, und diese Lizenz endet, wenn du Patentklage erhebst, die das Werk der Verletzung bezichtigt.
Die Pflichten betreffen Hinweise, nicht Offenheit. Liefer eine Kopie der Lizenz mit allem, was du verteilst, kennzeichne die Dateien, die du geändert hast, behalte die Urheber-, Patent- und Markenhinweise aus dem Quellcode und gib die Attributionen aus der NOTICE-Datei des Projekts wieder. Es gibt kein Copyleft: Du musst deine Änderungen nie veröffentlichen und deine eigene App nie gleich lizenzieren.
Zwei Dinge gibt Apache-2.0 dir nicht. Es gewährt kein Recht, Name, Logo oder Marken des Projekts über die Beschreibung der Herkunft des Codes hinaus zu nutzen, und es schließt jede Gewährleistung aus: Die Software wird wie sie ist geliefert, und kein Beitragender haftet für Schäden. In der Praxis: Behalte die Hinweise, kennzeichne deine Änderungen, und du bist frei.
Solltest du ihn installieren
Wenn du auf einem Mac mit Sequoia oder neuer eine lokale Sammlung hast, kostet der Download nichts, und die einzige Einrichtung besteht darin, ihn auf deinen Musikordner zu zeigen. Wenn du Swift-Entwickler bist, liegt der Wert weniger in der App als im Repository: zwölf Module, ein funktionierender Decoder-Graph von FFmpeg zu AVAudioEngine, GRDB mit FTS5 und strikt nebenläufiges Swift 6, das gegen eine Coverage-Hürde gebaut wird, alles unter einer Lizenz, die dir erlaubt, jeden Teil in ein Produkt zu tragen, das du verkaufst. Die Lücken sind aufgeschrieben statt versteckt, eine auf Android beschränkte Telefon-Synchronisation, noch keine Dateiverwaltung und eine harte Untergrenze bei macOS 15, und das ist ein besseres Zeichen als eine Funktionsliste ohne jeden Vorbehalt.
Projektübersicht
- Lizenz
- Apache-2.0
- Plattform
- macOS 15.0+ (Sequoia)
- Sprache
- Swift 6, SwiftUI
- Geprüfte Version
- v2.16.0 (2026-09-16)
- Repository
- github.com/bocan/bocan-music
Installation
# Open GitHub Releases and download the signed and notarized DMG:
open https://github.com/bocan/bocan-music/releasesLizenzübersicht
Apache-2.0 ist permissiv: Der Code darf in kommerziellen und Closed-Source-Apps verwendet, verändert und weitergegeben werden, solange du die Lizenz und ihre Hinweise mitlieferst, geänderte Dateien kennzeichnest und die Attributionen aus der NOTICE-Datei des Projekts weitergibst. Hinzu kommt eine ausdrückliche Patentlizenz. Es gibt keine Gewährleistung und kein Recht an den Marken.



