New App: HaikuSuperMusicThingy

Hi All,

Here is my SuperMusicThingy app revamped for Native Haiku Window.

What changed:

  • Added Haiku Interface Window
  • All Haiku code, no Linux code.
  • No cmake. Easy to build and package with just make release
  • Shows album art.
  • Dark and Light Themes

What might come next:

  • Check if opengl is installed and run SDL-GL projectM visualizer.
  • Add any user requested features.



Source
Hpkg-64bit

8 Likes
  • projectM v4.1.6 support
1 Like

@cocobean

Updated! Projectm Visualizer support now builtin and working!

  • Remember, you will need to have projectm installed.
  • This version added a little improvement to the UI.
  • Also added new build flag to the make file if you want to build it yourself make release ENABLE_PROJECTM=ON
  • Cleaned up the code…had some old relics from the previous Terminal app.

Download 64bit Hpkg
Source

3 Likes

@cocobean ~ Alrighty then!

I modified the makefile to include the projectm libs when projectm=on. Definitely saves time. Here’s the bundle package.

About defaulting to native Haiku Mesa… I don’t believe this is possible with the heavy lifting required by projectm. The app still runs fine but if you try to load the visualizer it just closes the visualizer window immediately. Pretty harmless.

1 Like

The app still runs fine but if you try to load the visualizer it just closes the visualizer window immediately.

In the data directory/… is a directory pre-defined for projectM files for loading projectM contributor files and viewing within app?

Otherwise, works for me on Haiku R1B5 hrev59671 x64.


Notes:

  1. Better shuffle control on what specific Soma FM channels I want shuffled and are available.
  2. Show length of song, bit rate, bit depth, sampling rate info
3 Likes

@cocobean

  1. ~/config/settings/SuperMusicThingy/milk_presets/ is where you should put all your milkdrop projectM presets. That’s what I have coded the app to look.
  2. Keep in mind the app iterates recursively through the preset folder to load a random preset, and if you have a huge amount of presets the visualizer window might have a slight latency when updating to the new preset. If you notice latency you can decrease the amount of presets.
  3. Regarding #1 better shuffle control: This I can implement in the config with options to shuffle only predefined genre instead of the every channel as the app currently does.
  4. Regard #2 - Song length isn’t possible with the available metadata provided by somafm. The bitrate is listed on the main 128k for Highest, 64k for High, and 32k for Low. The sample rate is predefined at 44.1khz for any native audio sources, unless an option is available to manually request a different sample rate as with the case with MidiSynth. In Haiku Media Preferences, you can resample the 44.1khz up or down if your audio card supports that. Hope that helps and thanks for the great user input! The latest nightly build added mouse wheel support for the volume and a checkbox to turn on/off the 30 second milkdrop auto shuffle option.

/config/settings/SuperMusicThingy/milk_presets/

I’ll test this out. Any thoughts on an equalizer feature like the 10-band ADI 560 graphic equalizer?

1 Like

@cocobean

  1. Regarding a 10-band EQ: Currently the app has a little space at the top for a EQ tab… I’ll check in to it :wink:
  1. mkdir -p ~/config/settings/SuperMusicThingy/milk_presets/

Then:

~/MilkDrop> ls presets-cream-of-the-crop-master/Supernova/Lasers
'$$$ Royal - Mashup (290).milk'
'$$$ Royal - Mashup (405).milk'
'$$$ Royal - Mashup (58).milk'
'$$$ Royal - Mashup (59).milk'
'$$$ Royal - Mashup (63).milk'
'$$$ Royal - Mashup (83).milk'
'$$$ Royal - Mashup (85).milk'
'$$$ Royal - Mashup (96).milk'
'GreatWho - Lasershow.milk'
'GreatWho + goodie - Lasershow [burning down].milk'
'GreatWho + goodie - Lasershow [sunset rift].milk'
'GreatWho + Hexcollie - Lasershow [stress point].milk'
'GreatWho + Martin + Flexi - Lasershow [sparky kaleidoscope].milk'
'ORB - Fire and Fumes 2.milk'
'ORB - Flexi - Eleventh Element.milk'
'ORB - Waaa (Jelly 5-55).milk'
'ORB - Waaa.milk'
'ORB - Wheel of Fire.milk'
~/MilkDrop> cp presets-cream-of-the-crop-master/Supernova/Lasers/'GreatWho - Las
ershow.milk' ~/config/settings/SuperMusicThingy/milk_presets
~/MilkDrop>

Started app. Didn’t work (opened visualizer window and then closed window). I was thinking I can read and select my MilkDrop preset so I can change it from the GUI to test them.

2 Likes
  1. Make sure you’re not symlinking your custom presets into ~/config/settings/SuperMusicThingy/milk_presets/ but instead copy them there and symlink to your user directory if needed.
  2. You don’t have to use mkdir -p as the app automatically created the folder.

On a different note, the visualizer window accepts some keyboard and mouse input and has a code to only shuffle favorites instead of all the channels. Pressing the ‘F’ key on your keyboard will shuffle only your favorites. Just thought I’d mention this until I add code for shuffling genre.

I noticed you used cp so we can disregard the symlink theory.
I put the same file in my preset folder

~/config/settings/SuperMusicThingy/milk_presets> ls
'GreatWho - Lasershow.milk'
~/config/settings/SuperMusicThingy/milk_presets> 

Started the app and it runs normal and the visualizer works normal.

  1. Did you modify the milk preset code? Perhaps that is why it did not work.
  2. Try a different preset and see what happen.
  3. Make sure you have a supported nvidia card and libglvnd-1.7.0-4-x86_64.hpkg and nebula-0.0.2-1.x86_64.hpkg installed and not using the native Haiku Mesa, as that will not work with projectm.
1 Like

That was the issue. I can fix that. Otherwise, looks good for now.

2 Likes

If you want a Haiku source equalizer (with gui), have a look at the Medo Equalizer add-on:

5 Likes

Ok. Medo has a 20-band equalizer… :slightly_smiling_face:

@Zenja @cocobean ~

I will probably instead write something to use ladspa plugins and hopefully be as good, or at least similar in sound quality to jamin. Jamin does actually work but only one audio source at a time. My jamin code isn’t complex and proper enough to handle multiple sources. Jamin does have a very large EQ, and very nice low,mid,high band filtering engine. I love it. Of course that’s too big for my little music app, but maybe with a little tweaking and whatnot … can fit it in.

Visualization - I’ll just suggest a player version that uses Mesa GL moreso for wider adoption for non-Nvidia Haiku users.

Nvidia driver - is still new and not officially implemented yet.

Equalizer - the older players had 10-band with pre-amp. Good enough.

Manual channel selection - suggested

Otherwise, I really like where the player development has grown.

1 Like

Any reason to implement your own? It should work out of the box with the system colours. By recursively changing colours just to text views, you get the problem that can be seen in the second screenshot in the repo (the audio quality menu with black text on dark background in the config tab).

BTW, a BMenuField already accepts text for a label and makes it part of the menu, no need to add a BStringView with it.

1 Like

The reason for adding a dark theme in the app is simple: some users will prefer not to have tracker and deskbar dark and just the app. It’s really a matter of choice and having the best of both worlds. The reason for the BMenu code logic was for the theme logic. The theme logic doesn’t seem to work unless I use what I currently use. I appreciate the advice though as I did look into it.

1 Like

New latest updates

  1. Add channel tab
  2. Updated the fav tab
  3. Removed the old download icon logic and now icons are stored in a vector cache.
  4. Right click to remove a favorite in favorite tab.
  5. Add nifty icons. The heart icon brilliantly updates itself using only one icon, not two – This was my idea Not AI :wink:
  6. Added more code to clean SDL/GL logic – hopefully nips some reference crash bugs when closing the app and SDL/GL is running.

Regular Version: HaikuSuperMusicThingy-1.0.0-1-x86_64.hpkg ( no SDL/GL logic )

If you have Haiku Nightly, a Turing+ GPU supported Nvidia card, libglvnd-1.7.0-4-x86_64.hpkg and nebula-0.0.2-1.x86_64.hpkg you can try this version: HaikuSuperMusicThingy-projectM-bundle-1.0.0-1-x86_64.hpkg



5 Likes

I didn’t even know milk2 & milk3 even existed! Neat! Sounds like a great idea. I’ll do that soon as add the option to select notify icon sizes. Big icons are fun I think.