Stoermelder ARENA: Preview

I have started working on a new module called ARENA. It is inspired by Sugar Bytes’ Aparillo softsynth and I thought it would be a nice idea to have something like the “Orbiter” in Rack as a module.

The principle is quite simple: 8 inputs and 2 outputs are represented as objects in 2d space. Each input signal has an assigned radius. If the output object is within the radius of an input object the signal is mixed according to its euclidian distance between the objects. You can say it is some sort of 2-dimensional mixer. The real fun begins if you start modulating one of the various parameters like position, radius, input amount…

The implementation is coming along very well but it should be considered unstable and unfinished code. I’m starting this thread to collect some thoughts and ideas that could influence the further development :slight_smile: I’m curious what you think about it!

You can test ARENA if you download the latest build from my GitHub-repository and following the manual for installing plugins outside the Library.

29 Likes

I find visual methods of working with audio in this way fascinating. I have been working with this. Soundgrain a graphical interface where users can draw and edit trajectories to control granular sound synthesis. I shall look forward to experimenting with Stoermelder Arena.

1 Like

This looks interesting! Thanks for the link!

I‘d like to share some thoughts I had in mind while working on this module:

The functionality could have probably easily done without any special visual interface, but I wanted to create something that is not hard to understand and fun to look at and play with. I hope the graphics also support somewhat the usability :slight_smile: I think there are many many great modules for Rack that are not easy to understand because of no visual feedback (including some of my own) and I’m going to create more graphical modules in the future as Rack provides a great framework for that… @Vortico thank you for that!

Currently there is no manual as the module and panel are not yet finished, so I give you some hints to get you started:

  • The module produces no signal on its own. You have to plug in some signal in one of the eight inputs in the top row. The module processes everything at audio rate but I haven’t tested yet how well it works with audio signals.
  • Each input has a radius and amount. The amount is used to scale the input between 0-100%. The radius defines the range of influence of the input on the output in 2d space considering the x/y coordinates of the objects.
  • If a line is drawn between a white and yellow circle it means that the input is in range according to the radius. In the latest build each outer circle visuals the current amount set for the input.
  • The radius of an input is only drawn if the object is selected. This can be done by clicking on the circle or on the led of the „channel“.
  • Each input has its own output besides the two mixed outputs. It sends the scaled input according to the sum of proportional distance of the two yellow circles within the radius assigned to the input. Being two output objects the sum could be above 100% of the input which is currently limited. I’m going to add some other methods of handling this situation later, like clamping or folding.
  • The objects in the arena are not MIDI mappable. To address this issue I added the two tiny circles next to the led of each „channel“ which represent the x and y position of the object. Using MIDI-MAP (or my MIDI-CAT) you can map your controller by clicking on the circle. The led signals currently if a object is selected.
  • I will add a function to record the movement of the two yellow circles by mouse. In the latest build the inputs and some control are already there but without any function. I still have to figure out how to do this in a usable way so this is going to take some time.
  • The ports labeled „OP“ can have different targets for modulations, like amount, radius, x-offset, y-offset or random walk. More will probably added. It is was an deliberate chosen limitation that you can only select one of these modulation targets for each input.

Feel free to ask any question that comes to mind!

3 Likes

Any chance of quad outputs?

I’ve written the module completely generic, the number of inputs and outputs are parameters currently set to 8 and 2. So yes, definitively possible :slight_smile:

1 Like

How about an additional bigger version, I’m thinking about 16 ins and 8 outs?

2 Likes

Done.

6 Likes

Will this be selectable ? Via right click because I only have 2 ears and so does my headphone…And I liked the bigger screen for the balls… Yeah I know its not supposed to be used for audio but hey…

EDIT: Already got used to the small(er) screen :+1:

1 Like

Very much agreed on the importance and scarcity of visual feedback. Same happens with documentation (pardon my french).

1 Like

It is selectable now. As you say, my idea for the module was mixing different CVs but it is perfectly fine to use it for audio signals.

Actually, the screen got bigger :wink: (same width but taller)

Yes, i agree with that. I haven’t started yet to write some manual for this module…

You’re right, it felt smaller. The selectable Ins and Outs is nice it removes the unused balls from the field. Alas this update broke the compatibility, but that’s a small price to pay. :+1: Thank you stormy Ben. :smiley:

1 Like

right clicking in rack crashed it with this in the log.txt

[126.132 fatal src/main.cpp:45] Fatal signal 11. Stack trace:
22: ZN4rack10appDestroyEv 0x456435
21: gai_strerrorW 0x739800
20: _C_specific_handler 0x775f72fc
19: _chkstk 0x7760bee0
18: RtlInitializeResource 0x775dff00
17: KiUserExceptionDispatcher 0x7760b5f0
16: ZN5Arena11ArenaWidgetC1EPNS_11ArenaModuleILi8ELi4EEE 0xca48fb0
15: ZZN4rack11createModelIN5Arena11ArenaModuleILi8ELi4EEENS1_11ArenaWidgetEEEPNS_6plugin5ModelERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEN6TModel22createModuleWidgetNullEv 0xca77680
14: ZN4rack3app8ModelBox4drawERKNS_6widget6Widget8DrawArgsE 0x75c360
13: ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE 0x4a776c
12: ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE 0x4a776c
11: ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE 0x4a776c
10: ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE 0x4a776c
9: ZN4rack2ui12ScrollWidget4drawERKNS_6widget6Widget8DrawArgsE 0x4a3fd4
8: ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE 0x4a776c
7: ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE 0x4a776c
6: ZN4rack6widget6Widget4drawERKNS1_8DrawArgsE 0x4a776c
5: ZN4rack6Window3runEv 0x4594ea
4: main 0x781840
3: main 0x781840
2: main 0x781840
1: BaseThreadInitThunk 0x77395560
0: RtlUserThreadStart 0x775f3840

Version Stoermelder-P1-1.0.0638c3b-win-20191110

Version Stoermelder-P1-1.0.9106e92-win-20191110 Works without crash

Thanks, fixed…

It wasn’t meant as a jab against you: you have some of the best docs out there. I’m frustrated about the overall situation.

Many plugins are not documented at all including, unbelievably, some paid ones, and there’s one case of explicit disdain/sarcasm against docs (you know who you are).

2 Likes

No offense taken, all fine :grinning:

I‘ll try my best to write meaningful manuals but it takes time and effort. I‘m also planning to add some videos for my less known modules in the future, maybe in December.

1 Like

Fixed Indeed :+1:

Oh holy… that looks nice. This has some ideas I wanted to pick up when I started looking at the code. I had something like this in my mind https://www.senode.org/ But actually I’m not sure I ever start coding it :slight_smile: So if you find some nice ideas inside this app … :wink: It may already be very doable by connecting some existing modules, but I don’t have a good overview of the existing modules.

EDIT: I acutally have a feature idea: Ball Physics. If you can’t find proper simulation code in C/C++ code there is some good code Open Source available in Googles Flutter framework. Here is the API documentation for the Simulation class: https://api.flutter.dev/flutter/physics/Simulation-class.html

1 Like

Thanks! That sounds interesting and I will take a look! For the first release I won’t add something fancy, but maybe for a future update :grinning: