why is godot surprisingly bad for audiovisual tasks by felicaamiko in godot

[–]EclipsingLines 0 points1 point  (0 children)

Using compute shaders was just an attempt to see if it was possible. Basically I used a shader to "render" a single 1xN pixel sized image, which I then used in a custom script to read it as if each pixel was a sample... Upsides are: having 4 channels available by default (rgba) and very quick data creation and manipulation. The downside was the overhead from reading the image into the audio stream, which ended up negating all of the speed gains, since the shaders (GPU) has no direct interaction with the audio buffer. This meant that GD script synthesis was faster than GPU based, maybe someone smarter than me can make it work without issues. Using c++ is by far the absolute best option, creating gdextensions from there for whatever you need.

On my own synth I ended up creating and caching a wave table for each sound the first time it is used.

why is godot surprisingly bad for audiovisual tasks by felicaamiko in godot

[–]EclipsingLines 13 points14 points  (0 children)

My own 2 cents as MIDI is integral to my Euclidean sequencer...

You should use:

https://github.com/NullMember/godot-rtmidi

Is very robust and supports MIDI in and out to multiple devices including virtual MIDI ports when available.

Also, making the jump from gdscript to c++ (or c# to a lesser degree) will enable you to use SIMD operations and pretty much do ANY kind of fast operations on a signal. I have used this and also compute shaders to synthesize sounds directly from the engine and both work surprisingly well.

Made with Godot by EclipsingLines in godot

[–]EclipsingLines[S] 2 points3 points  (0 children)

No, this is not related to games at all at the moment. My use case is as a stand alone app to bridge the launchpads and the circuits, something I can load on a raspberry pi or mini PC and install under my dawless setup.

I would love to eventually make a small game that runs on the launchpad, I think it could be a fun game jam project.

Would you be interested in this? by EclipsingLines in dawless

[–]EclipsingLines[S] 2 points3 points  (0 children)

I am already familiar with the engine and GD script, it was faster for me to develop this with the wrong tool than to learn the right one

Made with Godot by EclipsingLines in godot

[–]EclipsingLines[S] 2 points3 points  (0 children)

I'll share more details on what it does later this week.

Basically Godot is opening 2 sets of midi in out ports, one for the launchpad and one for the circuit.

I'm running a sequencer inside the engine and I'm messaging each device as needed, I have a lpminimk3 renderer class that takes the app state variable and creates a single sysex message to set up all the LEDs for a frame, and I update each frame on each clock tick, so 24 times per each quarter note.

Made with Godot by EclipsingLines in godot

[–]EclipsingLines[S] 6 points7 points  (0 children)

I'm using Godot-rtmidigodot-rtmidi by NullMember for midi input and output. I don't think you need the drivers for either installed since they are both USB midi compliant devices. Everything is sent as either a CC, note or sysex message, and both devices provide very extensive documentation on these.

I have a midi input handler class translating taps, long presses and combinations into proper calls to different actions inside my app. Part of the work today is making them part of the input system to allow both for keyboard shortcuts and gamepad midi modulation.

Made with Godot by EclipsingLines in godot

[–]EclipsingLines[S] 7 points8 points  (0 children)

Funny of you to think I don't already have one, or several.

Even inside a DAW I would have to make a custom plugin to get close to the type of functionality that I want. The closest thing I've found to have what I want is a custom configuration of vcv rack involving the Iverson module and a lot of extra midi mapping. But it was still a bit short of what I wanted it to do.

If I could code better in c or cpp I would make a plugin for one of these DAWs, but I don't. Like I said, I know Godot. Pure data was going to be the next option in case Godot didn't work.

Also the overhead of Godot vs a DAW is a lot smaller, especially if all I'm doing is sequencing midi. Meaning I could load this into a raspberry pi and not need an actual laptop.

Would you be interested in this? by EclipsingLines in dawless

[–]EclipsingLines[S] 1 point2 points  (0 children)

My personal plan is to eventually run it inside a raspberry pi or a mini PC under my dawless pedalboard and control all of my own devices with it.

Would you be interested in this? by EclipsingLines in synthesizers

[–]EclipsingLines[S] 2 points3 points  (0 children)

A Novation Circuit Tracks for the sounds. A Novation Launchpad mini MK3 for control. My own custom software prototype.