lekt player

Anything to do with computer audio, hardware, software etc.
lekt
Posts: 1102
Joined: Thu Oct 10, 2013 4:52 am

Re: lekt player

Post by lekt »

lekt wrote:...
*d++=*r++;*d++=*r++;*d++=*r++;...// 128 statments, i use different methods for this copy 128 byes
...
there's most popular and simple method.
now i use:
a:
*d=r*;
xxx...; //manipulation &d and &r depend on specific memory address of d
...
goto a;

if good address/pointers of d and r then can use xxx...; with only asign (=constant) and logical/bitwise operators, no need +/-, no need counter, use only unsigned char. in C i can use only that, no more access to memory. not sure. if use d and r as unsigned __int64 then sound more clean but hard, less vibration.

how do you do this copy? think assembly can give more directly access to memory elements.
heard you said about massage data, mqn very long time need for load player.

-------------EDIT:
forgot, can also assign by array index d=r; but i think it's mapping technical of C, compiler will make d+=i;r+=i;*d=*r; maybe...
Last edited by lekt on Sat Aug 02, 2014 1:12 pm, edited 1 time in total.
jesuscheung
Posts: 2491
Joined: Mon Oct 07, 2013 11:09 pm

Re: lekt player

Post by jesuscheung »

sbgk, lol.... just tried mqn5.95 see...
high/same energy like lekt2.90.4 when i play guns n roses

texture is still mqn texture

wonder if piano notes wll sound different... let me test
----
yes... sounds different. notes are result-oriented...
nothing beats mqn2.82...
if 2 different pianists of same level play same piece of music,
mqn2.82 can tell them apart...

result-oriented presentation makes pianists sound more similar.
User avatar
goon-heaven
Posts: 312
Joined: Sun Sep 15, 2013 9:38 pm

Re: lekt player

Post by goon-heaven »

jesuscheung wrote:
lekt wrote:uploaded v2.97.1 160

optimized code, replace some xor operators with asign = (one thing in loop ~ 100 things outside loop).
vibration much improved. try test other things.
no sound here.... nothing
no sound here neither... nothing
User avatar
goon-heaven
Posts: 312
Joined: Sun Sep 15, 2013 9:38 pm

Re: lekt player

Post by goon-heaven »

lekt wrote:
lekt wrote:weird, yesterday 0x...6240, today 0x...6250, system changed address. but v2.97 still works for you? think doesn't work today. will review code.
i suspect that in your case wasapi give different pointers depend on code of each version. could you take pointer again for v2.97.xx 160 code.

uploaded lekt.exe v2.97 160 test pointer
lekt v2.97 160 test pointer
buffer size: 160
wasapi buffer pointer1: 0x000000A062846260

lekt v2.97 160 test pointer
buffer size: 160
wasapi buffer pointer1: 0x00000041E0456260
sbgk
Posts: 1950
Joined: Mon Oct 07, 2013 9:45 pm

Re: lekt player

Post by sbgk »

have replaced some arithmetic operations with bitwise xor and or, think it makes a difference.

have 3 left

add 128 to -1792 each loop ie -1792, -1664 etc

and

two add 1792 to ram buffer pointer instructions

any ideas if these can be done with bitshift ?

ok, read how to do it, maybe best to go with bit indicator and swap pointers instead of calculation.
lekt
Posts: 1102
Joined: Thu Oct 10, 2013 4:52 am

Re: lekt player

Post by lekt »

goon-heaven wrote:
jesuscheung wrote:
lekt wrote:uploaded v2.97.1 160

optimized code, replace some xor operators with asign = (one thing in loop ~ 100 things outside loop).
vibration much improved. try test other things.
no sound here.... nothing
no sound here neither... nothing
always works for me, my pointer for buffer size 160 always is multiple of 128 (...0D80) with any code of any version, stable and best number. hehe... win8/4GBram. v2.97.1 code for multiple of 64, JC's and goon-heaven's pointers are multiple of 32, and error... OK, im making new version for this 32.

interesting: v2.94.1 abs test pointer code very good for big buffer sizes, try it with max sizes:
132x64=8448
133x64=8512
144x64=9216
160x64=10240
176x64=11264
224x64=14336
244x64=15616
256x32=8192

sound have good balance, flow. vibration not much but correctly. some factors better than last vesions.
in my case max buffer size 15616 is best, and 9216 good vibration.
weird... code of this version very simple. need learn it.
jesuscheung
Posts: 2491
Joined: Mon Oct 07, 2013 11:09 pm

Re: lekt player

Post by jesuscheung »

lekt wrote:...
in my case max buffer size 15616 is best, and 9216 good vibration.
weird... code of this version very simple. need learn it.
that's crazy...
how about a version with buffer size=6400, 3520, 12800

with xa, i carefully tested, 640 > 320, 160, 640*2 ...

xa 160 earaches is very similar to lekt 160...
when xa=640, certain earaches disappear.
only tested with earaches

simiar with mqn
512 has some earaches never exist in 1024
but going from 1024 -> 2048... don't think earaches reduce much further

i think big buffer has some good effect
lekt
Posts: 1102
Joined: Thu Oct 10, 2013 4:52 am

Re: lekt player

Post by lekt »

sbgk wrote:have replaced some arithmetic operations with bitwise xor and or, think it makes a difference.

have 3 left

add 128 to -1792 each loop ie -1792, -1664 etc

and

two add 1792 to ram buffer pointer instructions

any ideas if these can be done with bitshift ?

ok, read how to do it, maybe best to go with bit indicator and swap pointers instead of calculation.
i don't understand you. maybe need 2 result values -1792 and -1664?
lekt wrote:...for any number if need 2 value then always can find out xor number for it.
if a xor x = b then x = a xor b.
...
can do more effective:

x=d^(d+640) // x declared as signed
loop:
d^=x;
goto loop;
(notice compiler don't let xor with pointer, need type casting.)

sbgk, i think it's best method.
so then need xor 128

"two add 1792 to ram buffer pointer instructions..."
there's depend on how ram pointer is good. 1792 = 0000.0111 0000.0000 can xor/+ only 2nd byte of 8byte-pointer if it can matched. otherwise use +1792 if it's outside of loop.
lekt
Posts: 1102
Joined: Thu Oct 10, 2013 4:52 am

Re: lekt player

Post by lekt »

jesuscheung wrote:...i think big buffer has some good effect
i tried, only simple code for loop can give good sound for big sizes. good code which can improve vibration is bad for big sizes, sound have more more weight, not correctly. now im listening 15616, hehe,...

----edit:
size 12800 very good for me, perfect soundstage so then tempo and flow is good.
sbgk
Posts: 1950
Joined: Mon Oct 07, 2013 9:45 pm

Re: lekt player

Post by sbgk »

lekt wrote:
sbgk wrote:have replaced some arithmetic operations with bitwise xor and or, think it makes a difference.

have 3 left

add 128 to -1792 each loop ie -1792, -1664 etc

and

two add 1792 to ram buffer pointer instructions

any ideas if these can be done with bitshift ?

ok, read how to do it, maybe best to go with bit indicator and swap pointers instead of calculation.
i don't understand you. maybe need 2 result values -1792 and -1664?
lekt wrote:...for any number if need 2 value then always can find out xor number for it.
if a xor x = b then x = a xor b.
...
can do more effective:

x=d^(d+640) // x declared as signed
loop:
d^=x;
goto loop;
(notice compiler don't let xor with pointer, need type casting.)

sbgk, i think it's best method.
so then need xor 128

"two add 1792 to ram buffer pointer instructions..."
there's depend on how ram pointer is good. 1792 = 0000.0111 0000.0000 can xor/+ only 2nd byte of 8byte-pointer if it can matched. otherwise use +1792 if it's outside of loop.
how do you just xor the 2nd byte ?

best should be 2 loops, one with 1 pointer and 2nd with 2nd buffer pointer, have tried this, but not as good as one loop.

here is my attempt at bitwise add, doesn't work

int add(int x, int y) {

int a, b;

do {

a = x & y; b = x ^ y; x = a << 1; y = b;

}while(b);

return b;

}

http://geeki.wordpress.com/2007/12/12/a ... operators/

D:
movdqa etc

mov r10, r15 ;r15 =-1792 at start
mov r8, r13 ;r13 =128
mov r9, r15


E:
and r10, r8 ;carry
xor r9, r8 ;add
cmp r10,0
je G
shl r10, 1
mov r8, r9
jmp E
G:
mov r15, r9
cmp r9, 0
jne D
Post Reply