Re: polyphonic-portamento another bug(!?)
Posted: Thu Dec 31, 2015 10:02 pm
try checking 3xosc porta or also checking exos porta on guru site.
DSP Robotics and FlowStone Graphical Programming Software Support and Forums
https://dsprobotics.com/support/
Father wrote:tulamide wrote:If it is what you are talking about, then I don't understand why it is working for me, but not for you.
Yes but try doing it in your DAW. Its easier because you can paint two or more notes at exact time and hear it.
Maybe a pattern like this:
D note => C chord => C chord
You can't easily notice on the first time because the slide is happening, but the second time instead of a C chord (c+e+g) you only hear a louder c note.
Code: Select all
//Read
mov eax,temp[0];
movaps xmm0,[eax];
movaps out,xmm0;Code: Select all
//Read
mov eax,temp[0];
fld [eax] ;fstp Out[0];
fld [eax] ;fstp Out[1];
fld [eax] ;fstp Out[2];
fld [eax] ;fstp Out[3];Father wrote:This solves the read problem:Code: Select all
//Read
mov eax,temp[0];
fld [eax] ;fstp Out[0];
fld [eax] ;fstp Out[1];
fld [eax] ;fstp Out[2];
fld [eax] ;fstp Out[3];
But still all the channels are the same. Is it the read or we're not writing correctly...
mov eax,temp[0];
fld [eax] ; fstp Out[0];
mov eax,temp[1];
fld [eax] ; fstp Out[1];
mov eax,temp[2];
fld [eax] ; fstp Out[2];
mov eax,temp[3];
fld [eax] ; fstp Out[3];
Exo wrote:Try this...mov eax,temp[0];
fld [eax] ; fstp Out[0];
mov eax,temp[1];
fld [eax] ; fstp Out[1];
mov eax,temp[2];
fld [eax] ; fstp Out[2];
mov eax,temp[3];
fld [eax] ; fstp Out[3];
I did a quick test and that seemed to work. The very short read code was a 'clever' optimization, seemed to work fine when playing via a keyboard but doesn't seem to work with the piano roll when all the start times will be exactly the same.
Code: Select all
polyintin addr;
streamin data;
streamboolin write;
streamout Out;
int temp = 0;
movaps xmm0,addr;
movaps temp,xmm0;
//Read
mov eax,temp[0];
fld [eax] ;fstp Out[0];
mov eax,temp[1];
fld [eax] ;fstp Out[1];
mov eax,temp[2];
fld [eax] ;fstp Out[2];
mov eax,temp[3];
fld [eax] ;fstp Out[3];
//Write
mov eax,write[0];
cmp eax,0;
jz skip0;
mov eax, temp[0];
fld data[0]; fstp [eax];
skip0:
mov eax,write[1];
cmp eax,0;
jz skip1;
mov eax, temp[1];
fld data[1]; fstp [eax];
skip1:
mov eax,write[2];
cmp eax,0;
jz skip2;
mov eax, temp[2];
fld data[2]; fstp [eax];
skip2:
mov eax,write[3];
cmp eax,0;
jz skip3;
mov eax, temp[3];
fld data[3]; fstp [eax];
skip3:
bypass: