Self-Hosted setup for remote music lessons?

smiletolerantly@awful.systems to Selfhosted@lemmy.world – 40 points –

Basically, the title. After years of inactivty, I'll be taking music (cello) lessons again, with my teacher of yesteryear, from whom I've moved half a country away.

She has suggested Zoom but is open to alternatives. I don't particularly like Zoom, plus I have a feeling better quality can be had through a custom solution - but I'm at a bit of a loss as to what exactly would be a good fit for this project.

Maybe Jitsi? Does someone here have experience with it and could tell me if it's possible to set something like a "target" audio quality?

For hardware, I basically have two options. Both are already in use, for different things, and have sufficient processing capabilities - albeit no GPU:

  • host everything at home. Plus: lowest possible latency from me to the server. Not sure how much that is worth though.
  • root server in the Hetzner cloud: much faster network speed. Again though, not sure how beneficial that is, the ultimate bottleneck will always be my upload speed (40Mbit)

OK, I realize that this post is a but of a random assortment of thoughts. I'd be really happy about suggestions and / or hearing about other's experiences with similar use-cases!

33

You'll be hard pressed to match Zoom. Audio and video quality are very good. There's even a mode for musicians, so it won't try to filter the instrument out as 'noise'.

It's definitely the fallback option if DIY doesn't pan out. The no-filtering can definitely also be enabled in the Jitsi config, so at least in that regards I'm not too worried.

Throughout the pandemic I've largely been able to avoid both Teams and Zoom, but Zoom did cause a number of problems on Linux, so I'm not too hyped to give it another try :/

Consider your teacher’s experience with technology here. They may not understand other setups as well as zoom. Plus if there is technical trouble, that may cut into your instruction time. I’m not a huge fan of big-company services like zoom, Skype, teams, or similar, but unless you and your contacts have the time and know-how to troubleshoot issues if they arise, you may want to stick with a known thing like zoom.

I run real-time full band rehearsals with jamulus.io for low latency audio, plus any video tool of your choice (with the audio muted). we use muted Jitsi Meet for the video feed, but it really doesn't matter. it's all about the Jamulus audio

THanks, that's the second recommendation for Jamulus - I assume it's really that noticeable of a difference? In terms of latency and quality?

Consider giving MiroTalk a try. It has several versions but the P2P version would probably be perfect for your scenario. It's free, runs in your browser, doesn't need an account, and doesn't have time limit shenanigans. I've used it in lieu of Discord calls before and don't have any complaints.

GitHub

Public instance

Fascinating, thanks for sharing. I see it says peer to peer vid chat and works in the browser but I'm wondering if it requires setting up a server or using a public instance, something like that?

Or is it possible for two people to go to the web page and start a vid chat with zero installation or any other preamble?

Sorry I'm away from home so I can't look into the GitHub page deeply enough to answer my own questions

If you use the public instance you don't need to set up or host or install anything. You can selfhost it if you want, but the public instance works just fine.

One person goes to the web page and starts a room. The other can join the same room by knowing the name of the room. (It will generate a link when you create a room to make it easy to send to someone so they can join by just clicking the link.)

Thanks for the recommendation! Looks like a great option. Actually, the p2p aspect prompted me to have another look at the Jitsi docs, and lo and behold, there's an option for that, as long as no more than 2 people participate in a chat.... (The reason I'd prefer Jitsi is actually just that NixOS comes with options for jitsi out of the box, for Miro I would have to introduce containers into my setup :D)

I tried Jitsi, but was unable to match Zoom's audio quality.

The difference between Jitsi and Zoom was noticeable, but less important than the difference between the mic built in to the webcam and good mics. I use an SM58 for voice and an SM137 pointed at the cello just below the bridge, through a UMC204HD.

Oh wow, someone with the exact same usecase!! :D

Thank you for the hardware recommendations. Tbh that is not something I have put any thought into yet.

Can I ask you, is the UMC204HD necessary only because you have to mics, or would you recommend something like it regardless?

I have been thinking of just using a pair of headphones with built-in mic for talking/hearing my teacher, but yeah, it seems like at least something additional for the cello would be beneficial. Do you have any experiences with pick-up mics for the cello? I saw that there are some comparatively well-priced options around

You could use multiple USB microphones and do the mixing in software. I prefer using an audio interface (e.g. UMC204HD) because it is simpler to set up and adjust levels, and because it lets you use any widely available microphone, or plug in an instrument (e.g.: electric guitar, electric piano). You can plug your headphones into the audio interface and adjust the relative level of your own sound and what is coming from the computer (e.g.: your teacher). sweetwater.com has the UMC204HD and the UMC404HD on sale right now.

I do not have any experience with pick-up mics.

Jitsi works, and they have open relays to test with, but as the thing here is very much analog and I'd assume she'd just need to see your position, how hands move etc, the audio quality isn't the most important thing here. Sure, it helps, but personally I'd just use zoom/teams/hangouts/something readily available and invest in a decent microphone (and audio in general) + camera.

That way you don't need to provide helpdesk on how to use your thing and waste time from actual lessons nor need to debug server issues while you've been scheduled to train with your teacher.

Yeah, those are all fair points. We've been using Jitsi for work with pretty much no problems, albeit in group calls where video and audio quality don't matter too much. Someone below gave some good recommendations for hardware as well.

The helpdesk issue.... IDK. If Jitsi works, it is incredibly easy to use, right? Basically just, click this link and you're in. (If does some heavy lifting there, I know :D)

In theory you just send a link to click and that's it. But, as there always is a but, your jitsi setup most likely don't have massive load balancing, dozens of locations for servers and all the jazz which goes around random network issues and everything else which keeps the internet running.

There's a ton of things well outside your control and they may or may not bite you in the process. Big players have tons of workforce and money to make sure that kind of things don't happen and they still do now and then. Personally, for a single use scenario like yours, I wouldn't bother, but I'm not stopping you either, it's a pretty neat thing to do. My (now dead) jitsi instance once saved a city council meeting when teams had issues and that got me a pretty good bragging rights, so it can be pretty rewarding too.

Tangent, unsolicited:

Music lessons over video call, that has to be a real pain. I can't find it now, but there's an Adam Neely video where he talks about why online recording sessions can't work, as transmission latency works against the immediacy needed to play music together. He said it better than I can.

Except if your idea is to play in turns, but then capturing the thing you want to show... Can't you find another teacher closer to you?

I took lessons over zoom for years, and it works fine. Is not a recording session, you don't need to play together.

Well, paint me green and call me a pickle. More power to you if it works. 😊

Yeah, I am havong mixed feelings about this. But at least during Covid, it was apparently the norm, so it must work, somehow...

I could find a teacher closer to me, but for one thing, I only have a boke available, and biking ~10km with the cello on my back is not something I look forward to doing on a regular basis. The other thing is that I consider this teacher a friend, she's given me lessonsfor more than a decade in the past, and I know we vibe well together.

No harm in giving it a try, but I personally wouldn't bother with a selfhosted solution for it. Especially if you're not sure it will work out.

I have run Jitsi at work and found it a pain to keep up to date, but your milage may vary.

I have used most video chat things over the last 4 years, the easiest to get into is GoogleMeet. Google also has been the most reliable, I have a GoogleMeet running all day when at home.

Thanks for the suggestion, I must say though, I am very happily de-googled :D

I know that de-google is the way, but some things are best provided by a company. I dont have time to look after meeting things at home, or email for that matter

Nextcloud may be a bit overkill for your use case, but it does have a very good video chat function. It's also pretty easy to deploy as a snap package or with the AIO docker image. A downside is that the other person has to have an account on your instance and log into it to join a call. However this is not necessarily difficult to arrange.

Yeah, I think it's overkill, plus needing an account will likely lead to issues (login difficulties, forgotten password,...) compared to "just click this link". But thanks for the recommendation anyways, I did not know NC comes with video chat!

I've ran jitsi for 4 years now. You can keep your personal variables in an environment file that doesn't really change and pull down a new compose file whenever you want to update. Ever since the switch to docker from native install it has made things much easier to maintain. I'm using a lxc with debian 12. 4 cores and 4gb ram. The only reason I've allocated that many resources is because we use it to record a podcast with anywhere from 4 to 10 people on the server at a time. As far as bitrate, resolution, etc, that's all handled within your env file. You'd have to look at the docs to see what's available for you to choose from.

Thanks for the experience report! Would you say that you're happy with the video and audio quality and latency?

I'm not sure if this solves your problem, but it's an opportunity to plug Jamulus . It's FOSS, and one of the best solutions if your target is uncompromising sound quality/latency. Unfortunately, it doesn't do video. I've jammed with a band on it and was very successful. Vide was on a phone or separate machine. When we performed, video was mixed by another user using OBS, and streamed on Zoom

THank you for the suggestion! It looks like a great option for playing together. I must say though, what would probably kill it for me/my teacher is the complexity of the setup. Separate video, and from the docs, it seems like a bit of an involved setup to get good results?

Besides, we will probably not be playing together at all 😅

It's a bit involved to host the server but easier than most self-hosting services, in my opinion. Then there's the audio setup which I think is super easy for digital audio folk but may be a challenge for folks who haven't had to mess with digital audio much. The biggest thing people had problems with was turning off wifi and connecting via network cable. Reduced latency by leaps and bounds

Like I said, video was a separate device for my playing so it was kind of a non-issue. Mixing and production in OBS is way over my head.

I wish Jitsi was actually good. It's a pain in the ass to setup and I've yet to get anything more than maybe 480p on it across both Firefox and Chome as well as the mobile apps on iOS and Android. It even reports poor internet connection when the server is literally 5ms away over the Internet, so even if it has to fall back to routed traffic I've still got a full gigabit of connectivity between me and my server in a datacenter which is way more than enough. None of the open instances I tried were any different either.

It feels like a ridiculously overcomplicated WebRTC demo app, the end performance is essentially identical.

Ouh, that sucks to hear :( I think I'll still at least give it a try (it has been on my bucket list to set up for a while, not specifically for music purposes, just in general).