Fork me on GitHub
#overtone
<
2024-01-10
>
plexus13:01:17

@danieleneal it seems that's part of a third party extension? I think that basically everything from the core distribution and a good chunk of the official "extras" (sc3-plugins) is available. The README in this directory contains an overview (could be out of date) https://github.com/overtone/overtone/tree/master/src/overtone/sc/machinery/ugen/metadata/extras To add additional UGens you need to write a spec, like this: https://github.com/overtone/overtone/blob/master/src/overtone/sc/machinery/ugen/metadata/extras/glitch.clj

plexus13:01:23

I plan to add some info about that to the wiki, including how to debug these things, as I had to do that recently to figure out what was wrong with loop-buf, which involved generating synths that use it with both sclang and overtone, decompiling the binary synth format, and comparing what's different.

plexus13:01:34

Overtone can also load compiled supercollider synth definitions, so as a workaround you could create the synth in sclang that uses additional ugens, and then use it from overtone.

plexus13:01:27

There's probably room for a more direct and condensed way to define UGens, in case you want to use some third party ugen directly.

plexus13:01:02

you should also be able to use the regular PitchShift / pitch-shift on live audio

danielneal13:01:43

ah ok cool, so the regular pitch-shift is a built in one

danielneal13:01:50

thanks for the answer

otfrom14:01:52

tried getting things going on guix and it is the most trouble I've had with jvm/clojure/sound in ages (sound works fine in things like the browser). I think it is down to things like jack and pipewire, but I've not had a chance to dig in much yet. It has been aaaages since I've trouble with any of that on linux (at least 10 years or so)

plexus20:01:03

@otfrom what are the symptoms? Can you share the output from overtone starting up?

otfrom20:01:32

I'll make a gist next time, but it was even things like clj complaining about not having an S3 transport. So much seemed broken. It is an experimental machine so I might wipe it and start over. I'll get the messages that are there first in case it is something easy

otfrom20:01:37

Or helpful

plexus08:01:58

:thinking_face: curious to see anyway

otfrom09:01:15

tried it in nix (my daily driver where clojure does work) and couldn't connect to supercollider https://gist.github.com/otfrom/f594a8b979e25bb5608cb7d84ee73154

otfrom09:01:49

sound is (usually) fine on that machine, though it was generally a bit flaky connecting bluetooth/google meet today. A reboot fixed that though

plexus09:01:21

can you see if there's a package that provides pw-jack?

otfrom09:01:49

[nix-shell:~/src/happy-vibes]$ pw-jack
The program 'pw-jack' is not in your PATH. You can make it available in an
ephemeral shell by typing:
  nix-shell -p pipewire

otfrom09:01:55

hmm... just did the nix-shell -p pipewire and I still can't find pw-jack

plexus09:01:11

[scynth] jack server is not running or cannot be started
you have pipewire, which can act as a jack server, but it may require prepending the pipewire-jack libraries to your LD_PATH (or whatever it's called), which pw-jack does. Overtone will run scsynth through pw-jack if it can find pw-jack.

plexus09:01:01

this is essentially what it does

LD_LIBRARY_PATH='/usr/${LIB}/pipewire-0.3/jack'"${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}"
export LD_LIBRARY_PATH

otfrom09:01:46

ok. Sounds basically like my sound config which is fine for youtube and video conferencing isn't set up properly yet (not too surprising)

otfrom09:01:53

I'll have another go later

otfrom09:01:28

thx for reading the error msgs and making sense of them

plexus09:01:41

It's complicated (as linux sound usually is). Pipewire can mimic both pulseaudio and jack, most desktop stuff will use it as a pulseaudio client. Jack is mostly just used for pro-audio stuff.

otfrom09:01:20

ah, that would explain why the jack side of things isn't working as well

plexus09:01:42

for me without pw-jack I would have to do something like this

export LD_LIBRARY_PATH="/usr/lib/x86_64-linux-gnu/pipewire-0.3/jack"

plexus09:01:00

so if you can figure out the equivalent that could work

otfrom09:01:00

I'm going to have a read of this: https://nixos.wiki/wiki/JACK

plexus10:01:06

yeah they're basically saying the same thing > Connecting nix JACK clients to Pipewire installed via other package managers

plexus10:01:15

> Pipewire offers a JACK API, but applications installed via nix are not able to connect to it out of the box. > > Use the following command to make them work (using qsynth as an example):

LD_LIBRARY_PATH="$(nix build nixpkgs#pipewire.jack --print-out-paths)/lib" nix run nixpkgs#qsynth

otfrom10:01:04

IIUC scynth is the bit that needs to be wrapped by jackWrap

otfrom10:01:11

not clj or java

otfrom10:01:29

but I'll have a dig later. Other work calls today, but I thought I'd poke it as I was wondering if it was going to be quick

plexus10:01:07

it should inherit the environment, so prefixing clj with that LD_LIBRARY_PATH should be fine, but you can try starting scsynth manually and connecting to it from overtone.

plexus10:01:03

I'm also busy with some other stuff, but I'll get you some more pointers. You can configure the scsynth executable in ~/.overtone/config.clj, so you can also use that to point at your own wrapper script

👍 1
otfrom10:01:09

actually, I think this is the bit I need to dig through here: https://nixos.wiki/wiki/PipeWire

otfrom10:01:33

I'm going to wait a bit before I do it as I don't want to wreck my sound set up on my work machine when I have a lot of meetings 😄

plexus11:01:14

smart 🙈

plexus11:01:35

those are some great wiki pages! Might link to them from the overtone wiki. I knew Arch wiki was a good place to check but didn't think of looking at nix.

plexus12:01:42

so in ~/.overtone/config.clj you can configure a :sc-path, so you can make a script like this, e.g. ~/bin/pw-scsynth.sh

#!/bin/sh

export LD_LIBRARY_PATH="$(nix build nixpkgs#pipewire.jack --print-out-paths)/lib"

exec scsynth "$@"
And then configure it
;; ~/.overtone/config.clj
{,,,
 :sc-path "/home/otfrom/bin/pw-scsynth.sh"
}