announcements

Project/library announcements ONLY - use threaded replies for discussions. Do not cross post here from other channels. Consider #events or #news-and-articles for other announcements.
alexmiller 2020-12-08T04:55:36.062Z

A new version of the clojure tools is now available (https://clojure.org/releases/tools#v1.10.1.754) • New, more informative tree format for clj -Stree / clj -X:deps tree • Added https://clojure.github.io/tools.deps.alpha/clojure.tools.cli.api-api.html#clojure.tools.cli.api/tree for use with clj -X:deps tree • Use https://github.com/clojure/tools.deps.alpha/blob/master/CHANGELOG.md 0.9.857

👍 4
❤️ 15
genmeblog 2020-12-08T15:00:00.068900Z

https://github.com/genmeblog/soundsynth Wavetable sound synthesizer. It's a study project which helps me to understand DSP needed to implement similar thing on STM32 chips. It contains minimal path for subtractive synthesis. It works, plays a nice piece, allows live patch changes, consists of: wavetable oscillator, state variable filter, adsr envelopes, wave shaper, phase modulation, sequnecers with bpm timer. Listen to the song generated by it and defined in sound.patch namespace: https://soundcloud.com/tsulej/lost-woods

👍 3
👏 8
❤️ 10
🎶 4
plexus 2020-12-09T09:42:42.076800Z

The javax.midi stuff isn't hard to use, just a little tedious because of the amount of classes and interop involved. Here's an example of getting key presses from a midi controller https://gist.github.com/plexus/27dfe6a69cda7ec90dab479d37b7b1cc#file-obs_controller-clj this uses a defwrapper macro to sweeten doing interop, I posted that also on ClojureVerse a while ago and someone ran with it and turned it into a library: https://github.com/emlyn/tortilla

plexus 2020-12-09T09:43:48.077100Z

Sorry I don't have a cleaner example handy right now, but find some java examples, they should be straightforward to port.

ordnungswidrig 2020-12-09T10:51:38.078400Z

Are you using a midi keyboard to control OBS? 😈

genmeblog 2020-12-09T11:44:56.078700Z

@plexus Thank you, I think this is enough material to digest. As I said previously I'm not sure if I want to add midi controller support, since I achieved what I wanted, ie. dsp path works and can be used to implement target synthsesizer on STM 🙂 (btw. I remember and forget about defwrapper - great idea and I happy to see this as a library)

plexus 2020-12-09T12:49:23.079100Z

@ordnungswidrig doesn't everyone? 😁 I use the pads on the keyboard to switch betweens scenes like camera, share screen, etc

ordnungswidrig 2020-12-09T13:03:16.079500Z

Hehe, as one of the nerds that build their own keyboards I would rather create custom keyboard or use a “macro pad” to trigger some key combinations… Or use a wifi enabled chip to directly manipulate OBS, now that I think about it 🙂

eggsyntax 2020-12-09T16:26:59.087100Z

@tsulej looking forward to checking this out! Wavetable synthesis has made so many interesting advances in the past few years...

👍 1
genmeblog 2020-12-09T17:02:56.087700Z

@eggsyntax I relied on Mutable Instruments source code. Their products sound pretty awesome.

eggsyntax 2020-12-09T17:22:16.088Z

Have you seen that there are free ports of the Mutable Instruments devices to the (also free, and awesome) VCV Rack virtual modular environment? Although I haven't used the physical modules, reviews suggest that the ports are a pretty close match. Tons of fun to play with 😀 https://vcvrack.com/AudibleInstruments

genmeblog 2020-12-09T17:28:46.088400Z

Yes!!! I know VCVRack and played with Audible Instruments. Actually, this a wrapper to the MI source, which helped me to find entry point to the Plaits instrument and their wavetable oscillator I've stolen the idea from. I want to say that code is highly readable and it was really fun to port some parts to the Clojure.

🤘 1
genmeblog 2020-12-09T22:56:29.090400Z

@ghadi I haven't seen this before! Lovely stuff. Mostly based on overtone/supercollider rendering though. Here I render sound purely in clj.

vemv 2020-12-08T15:51:45.069900Z

Ace! I'm giving it a spin. So you foresee giving it support for accepting midi inputs? (I have no idea of how hard that would be).

genmeblog 2020-12-08T15:58:33.070100Z

Yes, we are (I'm helping my 16yo son with this project) after tests on STM32 and MIDI is quite simple there. You just receive note on/off events with note value and velocity. I don't know yet if add MIDI in Clojure but looks like it's a straightforward java interop.

🙂 1
lukasz 2020-12-08T16:06:31.070600Z

Overtone has MIDI support - maybe you can take some inspiration from it: https://github.com/overtone/overtone/blob/master/src/overtone/midi/file.clj

lukasz 2020-12-08T16:07:08.070900Z

This is probably more useful: https://github.com/overtone/overtone/blob/master/src/overtone/midi.clj

❤️ 1
genmeblog 2020-12-08T16:14:22.071800Z

Oh lovely! Thanks.

genmeblog 2020-12-08T16:17:58.072Z

It's not as easy as I thought.

Ben Sless 2020-12-08T17:44:35.072900Z

DSP, that takes me back...

ghadi 2020-12-08T22:55:56.075300Z

Hopefully you’ve seen Rich’s conj talk about additive synthesis https://youtu.be/bhkdyCPYgLs

1
🤯 1
👀 2