FX ordering on the fly

Post any examples or modules that you want to share here
User avatar
Nubeat7
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna
Contact:

FX ordering on the fly

Post by Nubeat7 »

for shure you all know how to reordering your signalflow using busses, it is pretty handy but the audiodropouts and the work to avoid audiocrackles because of recompiling is really annoying, so i thought it would be great to havea solution in DSPcode/asm to reorder your fx on the fly without any audio dropouts...

for the ruby selector i used some technics from trogs cell array - thanks for that!
Attachments
2018-12-21 00_13_03-FlowStone - [FX-order.fsm_].png
2018-12-21 00_13_03-FlowStone - [FX-order.fsm_].png (95.57 KiB) Viewed 22795 times
2018-12-21 00_12_22-FlowStone - [FX-order.fsm].png
2018-12-21 00_12_22-FlowStone - [FX-order.fsm].png (31.13 KiB) Viewed 22795 times
FX-order.fsm
(5.31 KiB) Downloaded 1172 times
Last edited by Nubeat7 on Fri Dec 21, 2018 12:14 am, edited 14 times in total.
User avatar
Nubeat7
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna
Contact:

Re: FX ordering on the fly

Post by Nubeat7 »

did a few changes, ruby code was a bit buggy, i added a preset part so the fx order can be save in presets now, and you can custumize the graphic easier and better now.. updated file in the first post
Jay
Posts: 276
Joined: Tue Jul 13, 2010 5:42 pm

Re: FX ordering on the fly

Post by Jay »

very cool m8! i was using the one Trogg created a while back and it was good except it crashed when changing efx order whilst sound was running! this is great though! cheers! :D
User avatar
Nubeat7
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna
Contact:

Re: FX ordering on the fly

Post by Nubeat7 »

thanks jay,
yes, trogs fx chainer was my inspiration for this one
you also could use just the streampart of this one in trogs fx chainer, just delete all the audio parts in trogs chainer and place this one instead, so you can use trogs grafx part which is really neat with the transparent moving selection window while dragging...

but the benefit of this one is that you can place teh slots in different ways using the rows, or if you want to place each area individual you could change the createArrays methode to something like this:

Code: Select all

def createArrays
  cell_w = 5
  cell_h = 2
  @areas = []
  @areas[0] = [0,0,cell_w,cell_h]
  @areas[1] = [2,5,cell_w,cell_h]
  @areas[2] = [4,10,cell_w,cell_h]
  @areas[3] = [6,15,cell_w,cell_h]
end


and the ordering will still work..
User avatar
Nubeat7
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna
Contact:

Re: FX ordering on the fly

Post by Nubeat7 »

finally, i added a ghost slot which appears when dragging a slot from one position to another.

i also implemented a second option how the position changing is done, you can choose between "swap positions" and "insert at position" in the swapOrder methode

a question to all DSP code and asm gurus, can this code be optimised in any way? i was watching the asm code for it but couldn`t really optimize anything inside?

the updated file is in first post
Last edited by Nubeat7 on Mon Oct 14, 2013 12:23 pm, edited 1 time in total.
User avatar
MyCo
Posts: 718
Joined: Tue Jul 13, 2010 12:33 pm
Location: Germany
Contact:

Re: FX ordering on the fly

Post by MyCo »

Here is my quick&dirty approach. I haven't tested this! It shortens the code and eliminates the selector. Maybe an assembler version could use an array in this version. It would require some testing if the memory access for a 5 item array is faster than doing 20 cmpps+andps plus 15 orps.
Attachments
FX order (Nubeat7, MyCo).fsm
(4.52 KiB) Downloaded 1432 times
User avatar
Nubeat7
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna
Contact:

Re: FX ordering on the fly

Post by Nubeat7 »

thanks a lot myco, asm from the dsp code is already about the half of the previous version!

but you went in the same trap as me when i was doing the first version, all if statements have to be in braces to work right.
Last edited by Nubeat7 on Tue Feb 04, 2014 8:10 pm, edited 1 time in total.
User avatar
Nubeat7
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna
Contact:

Re: FX ordering on the fly

Post by Nubeat7 »

MyCo wrote:..Maybe an assembler version could use an array in this version. It would require some testing if the memory access for a 5 item array is faster than doing 20 cmpps+andps plus 15 orps.


did you mean something like this?

just couldnt get it work :(

Code: Select all

float ArrFrom[5];

ArrFrom[0] = fromAudioIn;
ArrFrom[1] = fromFX0;
ArrFrom[2] = fromFX1;
ArrFrom[3] = fromFX2;
ArrFrom[4] = fromFX3;

toFX0   = ((asgAudioIN == 0) & ArrFrom[0])
      | (ArrFrom[asgFX0To]);
toFX1   = ((asgAudioIN == 1) & ArrFrom[0])
      | (ArrFrom[asgFX1To]);
toFX2   = ((asgAudioIN == 2) & ArrFrom[0])
      | (ArrFrom[asgFX2To]);
toFX3   = ((asgAudioIN == 3) & ArrFrom[0])
      | (ArrFrom[asgFX3To]);

toAudioOut = ((asgFX0To == 4) & ArrFrom[0])
         | ((asgFX1To == 4) & ArrFrom[1])
         | ((asgFX2To == 4) & ArrFrom[2])
         | ((asgFX3To == 4) & ArrFrom[3]);
User avatar
MyCo
Posts: 718
Joined: Tue Jul 13, 2010 12:33 pm
Location: Germany
Contact:

Re: FX ordering on the fly

Post by MyCo »

You think way to complicated :mrgreen:
Attachments
FX order2 (Nubeat7, MyCo).fsm
(6.58 KiB) Downloaded 1439 times
User avatar
Nubeat7
Posts: 1347
Joined: Sat Apr 14, 2012 9:59 am
Location: Vienna
Contact:

Re: FX ordering on the fly

Post by Nubeat7 »

MyCo wrote:You think way to complicated :mrgreen:


but the surprise to see how easy it is is always great :lol:

thanks, for the help, i did a fast performance test in one of my projects, and the array version needs 0.3% more cpu than the if /or version .. watch the first post for optimized versions of both..
Last edited by Nubeat7 on Tue Feb 04, 2014 8:15 pm, edited 1 time in total.
Post Reply