Jamin_0.98.9 port making progress! ( AI assisted )

Hi all,

I’ve started a port of jamin to Haiku

The Goals here would be:

  • Functional plugins
  • Use cortex to map rakarrack input to jamin, then to Mixer.

It currently just show the UI with fake plugin support :slight_smile:

Here’s my github jamin-haiku repo for anyone interested in that!

Screenshot

8 Likes

not to be that guy, but it seems like all you do is *ai-assisted*
why is that?

Honestly I don’t care much for the use of AI in this or not, but I feel the focus on porting the apps themselves is a bit misguided.

What I mean is that apps like Rakarrack, Jamin etc. use various libraries that are already present and ported and what has stopped ports of them until now is (mostly) something that can take the place of whatever audio thingy they use on Linux, like ALSA, Jack, PulseAudio or any of the other audio systems out there.

In other words I feel like the better idea would be to work towards ports/replacements of those audio systems instead of the apps themselves, once the audio system replacements are functional porting the apps should be trivial.

I feel it would also be easier for humans to later vet and amend the AI work (or take notes from it and re-implement the changes from scratch, whatever’s appropriate) as it would be confined to a handful of shared libraries instead of being a per-app thing.

Maybe Ablyss just wants these apps to work, because he’s a music maker and uses these specific apps?

Nothing wrong with a ported app. HaikuPorts is filled with them. If you, or anyone else, wants to convert it to a native app, even better. Nobody is stopping you.

This is a amazing app, only problem is I that I’m trying to learn the basic or where to import sound?

That’s not at all what I said. I said it’d be more useful to port the audio backends instead of the apps, because the audio backends are the only thing blocking ports like these.

Have I said anything against ported apps? I’m porting apps to Haiku myself! The more the better, sure, I’m questioning the targets of the ports. If you port an app it’s just an app, if you port a backend you open the door for DOZENS of new apps, not just one.

I’m guessing that ALSA for example would be an issue because of latency or being too tied to Linux.

1 Like

@chld - I enjoy it and obviously I am good at it.

@MichaelPeppers - Why port jack if rakarrack doesn’t need it? I’ve proven it doesn’t.

@Akakor - Yes! That’s 100% correct. I would just like to add here is this: I am turning ideas into reality via AI assistance. If the peeps who think that is easy or trivial, let them try it. Let’s see what “ideas” they can turn into reality.

@Philipingram25 - jamin is mostly pretty at the moment but the audio backend is not complete so that is why you do not hear anything. Ideally, it would autoconnect between the Mixer and sound output node and act as an effects engine to process the sound output. Hopefully in time. It’s been a bugger to work with for some reason.

@x68k The MediaKit does a fantastic job with latency already if you have a supported realtime audio hardware card and have it enabled via custom audio file.

1 Like

Why port Rakarrack when a Jack port or compatibility layer would naturally give you a Rakarrack port and many more? You’re just doing more work for less gain is my point.

Also, whatever custom code you’re using to get rid of the Jack dependencies will be harder and harder to maintain overtime as the code for audio output diverges more and more.

I’m not saying adapting the Jack libraries to Haiku wouldn’t face similar issues, but I think it would be more sustainable in the long run.

@MichaelPeppers a lot of jack apps are hardwired to look not only for jack, but alsa, and other linux only stuff. Just porting jack may solve one piece of the puzzle but not all. And a jack port too would need to be updated if it inherently talks to the MediaKit just like my rakarrack without jack would need to be updated. Also, I really don’t think my code will be hard to maintain: it’s pure c++ and basically is just creating fake linux stubs so rakarrack build is satisfied. While it may not be pretty in a professional developers eyes, it is remarkably quite easy to get passed the jack/alsa stuff this way and achieve the reality.

1 Like

Alright, thank you for elaborating on that, now I can see more clearly why you’re going with this approach.

Tbh I hope in the long run we get to a point where Jack, ALSA etc. won’t be a problem for porting anymore, in the meantime the ports you’re making can fill some of that gap, which is no doubt a good thing.

1 Like

@MichaelPeppers Linux jack stuff is focused on realtime audio. If you look at alsa, pulse, pipewire etc, they don’t even bother with realtime audio. Since this is really the only reason to use jack, let’s see what Haiku needs for realtime audio… Nothing! The user just needs a supported audio card and to set the flags in config/settings/kernel/drivers. And bam! That’s it. :slight_smile:

2 Likes

I fully understand thank you for telling me but overall this is the best sound app I have ever played on Haiku I will definitely be using it every day and I will be waiting on the sound to be fixed

Hi all,

Here’s a demo video of the latest jamin progress.

It’s still a got a ways to go before public release but hopefully not too much longer.

2 Likes

Hi All,

I have put together a couple of repositories for my JAMin builds.

The first one is called alpha1 and the second alpha2.

Alpha1 runs well for the most part but only allow one audio source at at time. Basically what that means is if you try to run a second audio source, the sound quality will get murky. Audio sources that work are floats and integers like VLC, mpv, MidiSynth, Iceweasel etc.

Alpha2 allows multiple audio sources. This is really what JAMin is designed for. However, currently it only supports audio sources that match 441000 hz, and only supports audio source float format. VLC integer format is not coded in at the moment, but that will be soon.

Both are alpha quality. Occasionally and usually when a new audio source is first started the audio source will crash or just be silent. Restarting the audio source should fix that. This is because behind the scenes JAMin hijacks the node and reconnects to itself to it and sometimes there is a slight hiccup. The media server might crash but hopefully not. If it does does close down all the audio sources including jamin and restart the media server.

Lastly, restoring the audio source to the mixer once JAMin is closed is not functionally working. Basically that means you will have no sound out of what is supposed to be playing until you restart your audio source.

The hpkg packages in the repositories include prebuilt ladspa plugins. Alpha1 also includes a 32bit version of JAMin.

1 Like

Just sharing…
:slight_smile: