Responsibility Principles & Music Syncing
The single-responsibility principle (SRP) is a computer-programming principle that states that every module, class or function in a computer program should have responsibility over a single part of that program's functionality
Robert C. Martin
I believe in this principle and thats why im always doubtful of "All in One Apps"
Just do One thing
I have been thinking of ways to shift my life from all in one mega APIs to smaller composable SRP technology because as I get older I can see APIs sunseting, Apps closing down and the fragility of the system.
you can have a look at killedbygoogle.com for a long list of products killed by google. This is a the big difference between now and the yester-years. When a program was cancelled, you still had access to that program on your PC.
This was especially noticeable in the art community because they had favourite versions of photoshop or blender and could stay on their favorite version or even retro games. Those days are over now, you are forced to update until they kill the app and its lost forever.
I mentioned this in a previous post but I like INPUT
=> OUTPUT
approach where you start with an entity
(Robert C. Martin language) and generate a new entity
from that.
Music
The most popular app is Spotifiy and I think it fails at Single Responsibility Principle approach because it does may things:
- Album Art
- Metadata
- Sound data (quality controlled by Spotify)
- Syncing
- Playlists
all of which it doesn't output to be used anywhere, which is one of the reasons i don't use it
My Setup
I have about 20GB of mp3 files from my CDs that I recently got out of Youtube Music. These files are "Entities", their job is to store data like:
- Album art
- Sound data (Controlled by type eg mp3/flac/wav)
- Metadata
Having these files handle this responsibility means that the solutions to my problems have less responsibility thus they can be less complex and offline.
Syncing
I know have files and the music aspect of them is the files
responsibility, the syncing can be ANY file syncing system. I currently use Tresorit for no knowledge encryption and great linux support but the point is, it could be dropbox or one drive any syncing system that has the tools you want.
Playlists
I thought this would be harder because I thought the links would be broken after syncing but actually m3u3 files (oepn source standard playlists) all use relative linking. Now I have a playlist FILE which feeds back into my syncing solution.
Players
This is the beauty of this system, I can move to any app that I like to play my music. On Mac VLC is not as good as on Linux so I use Aural, On Linux I use VLC because it has great album art and folder structure UI and on Android I use Nomad Player because It has good album art UI. I have no long term investment in the app because its only responsibility is to read the data in my files. This gives me the freedom to judge apps on their UI and sound quality instead of anything else.
Whats Next
I have already moved my projects into this syncing system for the same reason, This website as well is all statically generated from files and uploaded. I want to target Audio Book, Books and Manga using this same principle. Maybe not much to do(because they already files) but I think playing around with FFMPEG and text to voice will be fun and possible create new media from my files.