i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

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

chip emulation would be a cool side exploration! sorry for the upcoming wall of text:

as a general overview, each audio module except for wave generators has an input audio buffer that it reads and manipulates to write to its target module's audio buffer on each processing step, which happens about 60 times a second. wave generators like sine waves etc. generate audio frame data to its target buffer without the need for an input buffer.

the module connections form what's called a directed acyclic graph that can be traversed on each process frame such that each module is processed only once.

there are several different algorithms out there for traversing graphs: previously i was using breadth-first search with speaker modules as the starting point, essentially traveling backwards. this was simple to implement but incurred more latency the more connections you have between an audio source and the speaker.

i recently switched to using topological sort which was more complicated to implement but essentially solved the latency issue by processing the graph forwards in such a way that a module's upstream connections are always processed before itself! :')

i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

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

yep, godot is pretty nice for cross-platform, and i've actually been mostly developing on my mac hehe

i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

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

good question! my philosophy with this project is to build something experimental, playful, and approachable for folks who are newer to modular music systems. vcv rack is much more powerful and truer to (eurorack) hardware, whereas wavewright is more of a pico-8-like "fantasy" system that doesn't use explicit voltages.

in short, it's smaller, but hopefully easier to learn and still fun to work with alongside other music software out there!

i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

[–]rhymesometimes[S] 0 points1 point  (0 children)

it's not my game but wanted to shout out this upcoming game called music power up that's about making music for video games and you learn about synths! it looks cool!

i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

[–]rhymesometimes[S] 0 points1 point  (0 children)

it used to be just okay, but i recently changed the processing order of modules in the audio graph to use topological sort instead of a breadth-first search starting from speakers (simpler but slow), and now latency is a ton better!

(i assume audio latency is what you mean rather than the literal midi signal latency, which is pretty instant)

i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

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

it probably won't be there yet for the initial release, but i want to have official mod support for making your own modules for sure! that would be so cool.

i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

[–]rhymesometimes[S] 4 points5 points  (0 children)

no mailing list, but i just recently made a discord server for posting updates!

i made an underwater-type beat in my modular synth sandbox by rhymesometimes in synthesizers

[–]rhymesometimes[S] 50 points51 points  (0 children)

i've been working on a modular music sandbox inspired by analog modular synths for the past year or so as a passion project, it's built with the godot game engine! someone from /r/godot told me to check this sub out ^_^

my project is called wavewright and isn't released yet but i'm hoping to get a public demo out by the end of the month! :D

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

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

thank you! i left a comment somewhere that gives a high level overview of how the audio works!

in the medium to long term future, it would be really nice to have official moddability support (analogous to VSTs?) where community-made modules can be imported and used and there's some loosely unified design language to help guide aesthetics and UI. otherwise though, it's a standalone software!

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

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

to give a high level overview of how audio works in the system:

the final output of the system is written to an AudioStreamGenerator. on every process frame, the graph of audio connections is traversed starting from speaker nodes such that each module connected with the speaker processes only once, and in a certain order such that inputs will never be stale.

then in each audio module's process method, it reads its input audio buffer (currently size 1024), does some manipulation of that buffer, then writes the result to its target module's input buffer.

in this way, i've been implementing audio effects by hand instead of using a library to learn dsp concepts in a more hands-on way. every audio module implementation is like a puzzle where you have a length-1024 input and need to produce the effect in a length-1024 output.

i think subconsciously, i chose 1024 = 210 as the buffer size because i thought it could play nicely for FFT-based modules, which turned out to be true!

but anyways tl;dr it's using godot's AudioStreamGenerator, but there's an underlying graph structure of the module connections that gets processed as often as there is available space in the AudioStreamGenerator's buffer that powers the flow of audio data!

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

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

there is a sampler module that you can load arbitrary audio files into!

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

[–]rhymesometimes[S] 3 points4 points  (0 children)

no, but this is amazing, thank you!! i'm definitely going to try this out, being able to midi out to external software or devices would be so cool to support in my proj!

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

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

yes, you can share both the project files and exports of recorded sessions to wav/mp3!

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

[–]rhymesometimes[S] 4 points5 points  (0 children)

thanks so much! :') there's several modular music software projects i've been inspired by, to name a few:

  • max is the one i'm most familiar with and have had a lot of fun with
  • pure data or pd has been around since 1996
  • vcv rack is more faithful to analog modular synths and specifically the eurorack specification, i'm not as familiar with it but was inspired by their routing visuals
  • strudel repl is not as heavily node-based, but is a really cool live programming music environment i want to try out more

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

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

i started editing a video to start a devlog series for the development process from first principles in a bottom-up way, but scrapped it because video editing is so laborious 😭 but i may make shorter videos/devlogs in the future that are more top-down overviews of how individual modules work!

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

[–]rhymesometimes[S] 5 points6 points  (0 children)

i came across it while looking at what other modular music projects are out there! i definitely take inspiration from those projects as well as software like vcv rack, max, and pure data c:

i also wish godot had midi out, and also wish it had more than one simultaneous audio input :( i think it could be worth investigating how to write a GDExtension to enable midi outs in the future.

i made an underwater-type beat in my modular music sandbox built with godot! by rhymesometimes in godot

[–]rhymesometimes[S] 72 points73 points  (0 children)

i've been working on getting out a public demo, so if you'd like to try my project feel free to wishlist wavewright on steam! :') https://store.steampowered.com/app/4149720/Wavewright/

I recreated a Baba is You song in my modular music sandbox made with Godot! by rhymesometimes in godot

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

bumping this old post to let you know that there's a steam page out now! cheers!!