BlackHole - An Open-Source Music Player


Hello everyone, I am Ankit Sangwan, a Software Engineer and a Flutter developer. In this article, I want to share with you my experience of creating and maintaining BlackHole, an open-source music player app for all your needs.
What is BlackHole?
BlackHole is a music player app that I made with Flutter, a cross-platform framework for building beautiful and fast native apps. I started this project as a hobby to learn Flutter and to create an app that I would love to use myself. I was inspired by Spotify’s user interface and features, but I wanted to make something that is free, open-source and customizable.
BlackHole allows you to stream and download music in over 15 languages at a solid 320kbps AAC audio quality. You can search for songs, albums, artists and playlists, as well as discover new music from trending songs, artist and genre radios, and language-specific promoted playlists. You can also import playlists from Spotify and YouTube, or create your own playlists and share them with others. You can also enjoy lyrics support, a sleep timer, a listening history record, dark mode, accent color, custom gradients and other theme options.
BlackHole is not just a music player app, it is also a music downloader app. You can download any song for offline play with ID3 tags and album art. You can also edit the tags of your downloaded songs and manage your cache. BlackHole does not require any subscription or registration, and it does not show any ads. It is completely free and open-source, and you can contribute to its development on GitHub.
How does BlackHole compare with other music player apps?
There are many music player apps available on the market, such as Spotify, YouTube Music, Apple Music, etc. Each of them has its own advantages and disadvantages. Here is a table that compares some of the features of these apps with BlackHole:
Feature | BlackHole | Spotify | YouTube Music | Apple Music |
Streaming quality | 320kbps AAC | Up to 320kbps Ogg Vorbis | Up to 256kbps AAC | Up to 256kbps AAC |
Download quality | 320kbps AAC with ID3 tags | Up to 320kbps Ogg Vorbis | Up to 256kbps AAC | Up to 256kbps AAC |
Music search | Yes | Yes | Yes | Yes |
Trending songs | Yes | Yes | Yes | Yes |
Artist and genre radios | Yes | Yes | Yes | Yes |
Language-specific playlists | Yes | Yes | No | No |
Local and global top Spotify songs | Yes | Yes | No | No |
Playlists support | Yes | Yes | Yes | Yes |
Import playlists from Spotify and YouTube | Yes | No | No | No |
Share playlists | Yes | Yes | Yes | Yes |
Lyrics support | Yes | Partially (only some songs) | Partially (only some songs) | Partially (only some songs) |
Sleep timer | Yes | No (only on iOS) | No (only on Android) | No |
Listening history record | Yes | Yes (only on desktop) | No (only on Android) | No |
Dark mode / accent color / custom gradients / theme options | Yes | Partially (only dark mode and some color options) | Partially (only dark mode and some color options) | Partially (only dark mode and some color options) |
Tag editing support | Yes | No | No | No |
Cache support | Yes | Yes | Yes | Yes |
Auto update check | Yes | Yes | Yes | Yes |
Subscription required | No | Yes (for premium features) | Yes (for premium features) | Yes (for premium features) |
Ads | No | Yes (for free users) | Yes (for free users) | No |
As you can see, BlackHole has many features that make it stand out from other music player apps. It is not only a Spotify-like app, but also a YouTube-like app, as it can play videos as audio and import playlists from YouTube. It is also a music downloader app, as it can download any song for offline play with high quality and metadata. It is also a music editor app, as it can edit the tags of the downloaded songs. And it is also a music customizer app, as it can change the appearance of the app with various theme options.
Why did I choose Flutter and Dart for BlackHole?
Flutter is a cross-platform framework that allows you to build beautiful and fast native apps for mobile, web and desktop with a single codebase. Flutter uses Dart, a modern and expressive programming language that is easy to learn and use. I chose Flutter and Dart for BlackHole because they offer many benefits, such as:
Hot reload and hot restart: These features allow you to quickly see the changes in your app without losing its state or restarting it. This makes development faster and easier.
Widgets: Flutter uses widgets as the building blocks of the user interface. Widgets are reusable and composable components that can be customized and styled according to your needs. Flutter has a rich set of widgets for layout, navigation, input, animation, etc.
Stateful hot reload: This feature allows you to change the logic and state of your app without losing its state or restarting it. This makes debugging and testing easier and more efficient.
Performance: Flutter apps run on a fast and efficient engine that renders the widgets directly on the screen, without using any intermediate views or bridges. This results in smooth animations, transitions and interactions.
Native look and feel: Flutter apps can adapt to the platform they are running on, by using platform-specific widgets, themes, fonts, etc. This gives the users a native look and feel of the app.
Open source: Flutter and Dart are open-source projects that are supported by a large and active community of developers and contributors. You can find many resources, tutorials, packages, plugins, etc. that can help you with your development.
According to GitHub, BlackHole uses 93.2% Dart, 3.9% C++, 2.3% CMake, 0.2% Ruby, 0.2% Swift, 0.1% Kotlin and 0.1% Other languages. The majority of the code is written in Dart, which is the main language for Flutter development. The other languages are used for some native functionalities or dependencies.
Conclusion
In this article, I have shared with you my experience of creating and maintaining BlackHole, an open-source music player app for all your needs. I have explained what BlackHole is, how it compares with other music player apps, and why I chose Flutter and Dart for its development.
I hope you enjoyed reading this article and learned something new from it. If you are interested in trying out BlackHole, you can download it from our official website. You can also contribute to its development by reporting issues, suggesting features, or submitting pull requests.
Subscribe to my newsletter
Read articles from Ankit Sangwan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Ankit Sangwan
Ankit Sangwan
Hi, my name is Ankit Sangwan also known as sangwan5688. I am the CEO and founder of BlackHole Music Player, an open-source music application. BlackHole Music Player has the advantage of allowing users to stream and download high-quality music from various sources, providing custom options, and promoting unrestricted music enjoyment. As a Flutter developer passionate about app development, I actively take part in contributing to several projects on GitHub. Creating this music player application was my way of providing a seamless music listening experience, free from advertisements and maximising personalisation options.