Support

If you have a problem or need to report a bug please email : support@dsprobotics.com

There are 3 sections to this support area:

DOWNLOADS: access to product manuals, support files and drivers

HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects

USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here

NEW REGISTRATIONS - please contact us if you wish to register on the forum

Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright

Poly - Bypass Code Section

DSP related issues, mathematics, processing and techniques

Poly - Bypass Code Section

Postby Tronic » Sun Mar 02, 2014 9:31 am

Trog had made in the past few modules, which perform the bypass section of code,
but they only work with mono signals.
No chance to do this in Poly?
The management of Poly afflicts me.
Tronic
 
Posts: 539
Joined: Wed Dec 21, 2011 12:59 pm

Re: Poly - Bypass Code Section

Postby KG_is_back » Tue Mar 04, 2014 5:15 pm

Poly section is computed similar to mono4, each 4 channels run new code channels (you can observe that while playing and adding notes, each 4 new notes added the CPU rises). Stage0 is computed for each channel separately (I think) in the moment it starts, then stages 1-3 are computed for each 4 notes as they run. I mean when you play one note and hold it it starts with stage0 and goes stage2 afterwards. when you add new note, it computes stage0 for the new note and code continues as second channel in stage2 that is allready running.

To create bypass in poly section per voice you'd have to write the code that each channel is computed separately and bypassed separately. That would make the code 4x as long (and cpu 4x as high). There is a way to overcome this problem by shuffling. Basically if you set one channel in poly stream to off it would compute all streams as normal, but for the one that is off it would copy the input to output (override the output) - that wpuld have no effect on CPU. If all 4 channels are off it would truly bypass the code.

Code: Select all
streamin in;
streamboolin bypass;
streamout out;


float F5=5;

stage2;

//check if bypass all channels
movaps xmm0,bypass;
movaps xmm1,xmm0;
shufps xmm1,xmm1,177;
andps xmm0,xmm1;
movaps xmm1,xmm0;
shufps xmm1,xmm1,12;
shufps xmm0,xmm0,3;
andps xmm0,xmm1;
movd eax,xmm0;
cmp eax,0;
jnz bypasscode;


///The code to bypass
movaps xmm1,in;
mulps xmm1,F5;
movaps out,xmm1;

/// end of code

bypasscode:
// bypass any channel
// code version: out=out+(in-out)&bypass;

movaps xmm0,bypass;
movaps xmm1,xmm0;
andps xmm0,in;
andps xmm1,out;
subps xmm1,out;
subps xmm0,xmm1;
movaps out,xmm0;


assembly version that bypasses output of every channel and bypasses the code execution of all sse channels are set to bypass
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: Poly - Bypass Code Section

Postby Tronic » Wed Mar 05, 2014 5:12 pm

anyway thanks.
what I think would be a management for voice,
for example,
using an "execute code only if the value is changed", now it is difficult to apply in poly,
like you said, would not bring benefits with splitting the voices comparation check.
Tronic
 
Posts: 539
Joined: Wed Dec 21, 2011 12:59 pm

Re: Poly - Bypass Code Section

Postby KG_is_back » Wed Mar 05, 2014 6:20 pm

Above code is the closest you can get to that task
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia


Return to DSP

Who is online

Users browsing this forum: No registered users and 74 guests