Today I wanted to make a little blog post (also my first one) about my first big open source project.
The beginning
It started with me switching full time to Linux. (arch btw)
I was wondering if there was a soundboard for Linux and found that there were no good alternatives to the Windows counterparts.
Often when I realize something like this I think something like: "How can it be that no one really created this?".
That combined with the fact that I had been planning to get into C++ for a while, then led me to start the project.
First functional version
After a little research I found out that it's fairly easy to implement a soundboard on Linux with PulseAudio modules.
Here is a screenshot from the first version:
I wrote it with C++ and Qt5 as widget toolkit. I had a little help from a friend who was still using Windows at the time and is more proficient in C++ than I am.
It used system calls to the PulseAudio CLI and another CLI program called mpg123
to play the sounds.
Collaboration
Then I collaborated with him and made a new version which was a major rewrite and looked like this:
I did most of the UI work with QML and he did the backend stuff. This was also the first version to support Windows with VB-Cable.
Up until that point the logo looked like this. This was my first attempt on creating a logo using Inkscape
Next-gen version
At some time we both agreed that we want to change the UI framework again because we were not so happy with QtWidgets and QtQuick.
When I created the first version I was more into coding with languages like Java, Kotlin and despised JavaScript a bit back then.
However, by then I was a fan of Web development and JavaScript/TypeScript frontend frameworks and we decided to use a web based UI.
He coded a webview library which uses WebView2 on Windows and Webkit2GTK on Linux. I created the new UI using Vue.js and Vuetify.
This is how the current version looks like:
(We've come a long way 😮)
We also created a new logo using Canva:
This version also introduces major new features like an integrated downloader and pass-through which can be used as a workaround to share an applications' sound on Linux.
Closing words
Thank you for reading my post! I've never written a blog article before, so criticism is very much welcome.
Links
- See our current website which I created using Nuxt.js + Vuetify
- Our future plans can be found on our GitHub issue page
Top comments (1)
Nice blog post