AriaSalvatrice / AriaModules

Aria Salvatrice's Signature Series - Cool and Nice virtual synthesizer modules
https://aria.dog/modules/
GNU General Public License v3.0
61 stars 14 forks source link

Darius: add portable sequence format copy-paste support #27

Closed AriaSalvatrice closed 4 years ago

AriaSalvatrice commented 4 years ago

Received a suggestion via private conversation to add the proposed portable sequence format to Darius. For now I haven't decided.

See also: https://github.com/VCVRack/Rack/issues/1708

Copying my reaction here:


I considered it, but the main problem is that it has a different amount of nodes per step. This is how it represents its steps internally:

const int STEP1START = 0;  //               00        
const int STEP2START = 1;  //             02  01            
const int STEP3START = 3;  //           05  04  03          
const int STEP4START = 6;  //         09  08  07  06        
const int STEP5START = 10; //       14  13  12  11  10      
const int STEP6START = 15; //     20  19  18  17  16  15    
const int STEP7START = 21; //   27  26  25  24  23  22  21  
const int STEP8START = 28; // 35  34  33  32  31  30  29  28

There's two major ways people use it: all probabilities to the center, or strongly biased to a side (I.E., biased to go 00 01 03 06 10 15 21 28).

I just have no idea how to interchange data in a way that'd match people's intuitions. We've got 36 nodes rather than a multiple of 8, and a different amount of potential nodes per step.

I think the least worse behavior for it would be, upon receiving a sequence, to treat it as a 8 step sequence, and assign its values to every node of the corresponding step, and let the user work from here. But I have no idea whatsoever what people would want to export. Exporting only the top or bottom path would encourage a specific way of working with the device and restrict its potential. Exporting a random possible 8 step sequence would be more in the spirit of the module, but would not be intuitive.

I'd like to see how the reference implementations do things and how much enthusiasm users have for it before I decide to do this, Darius has some really messy code due to my lack of experience with C++, so it'd require a very major rewrite, without breaking existing sequences that provide a fixed seed to the PRNG.

AriaSalvatrice commented 4 years ago

Considering implementing as follows:

AriaSalvatrice commented 4 years ago

Discussion: https://community.vcvrack.com/t/arias-thread-of-barely-working-betas-and-bug-squashing-darius-update-ready-to-test/8208/20?u=aria_salvatrice

Will be done after 1.4.1 release

AriaSalvatrice commented 4 years ago

Implemented as of 1.4.2, but behavior remains experimental