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

FINALLY - a way to to OVERSAMPLE your schematic for real!!!

DSP related issues, mathematics, processing and techniques

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby KG_is_back » Sat Jan 27, 2018 3:37 pm

tulamide wrote:Hmm, why am I experiencing something completely different? I started the schematic, it all went ok, then I switched the selector to the oversampling module and Flowstone crashed immediately.

Maybe it is not compatible back to the stoneage? Using v3.0.6 of Flowstone, that's why I ask.


Oh... I think I know what the issue is. The first assembler block uses "jmp" instruction, which was added in 3.0.8
The fix was easy - change jmp to jnz (jump if not zero - it just happens to be that result of previous operation always non-zero) and change "add eax,16" two lines above to "add eax,17" (this is because jnz instruction is 1 byte longer, thus the pointer to next line of code must be adjusted one more).
Attachments
oversampler_v2(pre2.0.7 compatible).fsm
(143.14 KiB) Downloaded 1344 times
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby martinvicanek » Sat Jan 27, 2018 4:58 pm

Hey KG, some serious hacking going on here! :ugeek:
I can see at least two areas of CPU syvings:
1. use SSE (all four lanes instead of only one)
2. Use polyphase filters, i.e. Don't waste time on samples that you throw away later.
Last edited by martinvicanek on Sat Jan 27, 2018 5:11 pm, edited 1 time in total.
User avatar
martinvicanek
 
Posts: 1328
Joined: Sat Jun 22, 2013 8:28 pm

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby FlowStoner » Sat Jan 27, 2018 5:01 pm

voodoo.png
voodoo.png (13.65 KiB) Viewed 25253 times

well, I'm trying to figure out what this system really use,
there is a bit of voodoo in it?
if you try to connect the input of the oscillator directly to the downsampler module (the 10 pole filter),
then not using the output of the your code module in the first section,
it works the same way.
where is the voodoo?
FlowStoner
 
Posts: 24
Joined: Tue Aug 01, 2017 2:03 pm

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby KG_is_back » Sat Jan 27, 2018 5:59 pm

FlowStoner wrote:
voodoo.png

well, I'm trying to figure out what this system really use,
there is a bit of voodoo in it?
if you try to connect the input of the oscillator directly to the downsampler module (the 10 pole filter),
then not using the output of the your code module in the first section,
it works the same way.
where is the voodoo?


All stream inputs to the code you wish to oversample should pass through the first assembler block to ensure correct order of execution:
1. code before inputs gets executed
2. first ASM block gets executed
3. the oversampled block gets executed
4. second ASM block gets executed (which loops back to 2nd step N times, before continuing to 5.)
5. code after the output gets executed.

If you don't pass your inputs through the first ASM block and outputs through the second ASM block, you run risk of faulty order of execution. for example:
2, 1, 3, 4, 5 => your code of your inputs end up being oversampled too
1, 3, 2, 4, 5 => your code will not get oversampled, because the first ASM block gets executed after it.
1, 2, 3, 5 => last asm block will not get executed, so nothing gets oversampled (there is nothing to loop the code back)
etc.
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby RJHollins » Sat Jan 27, 2018 6:22 pm

wanted to check this out ... but as soon as I switch the BOOLEAN, v3.04 crashes :cry:
RJHollins
 
Posts: 1571
Joined: Thu Mar 08, 2012 7:58 pm

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby KG_is_back » Sat Jan 27, 2018 6:39 pm

RJHollins wrote:wanted to check this out ... but as soon as I switch the BOOLEAN, v3.04 crashes :cry:


I honestly have no idea why that should be the case. Here are possible culprints:

1. check if the "call of cuthulu" module outputs non-zero value

2. connect text prim to the assembler components' (green C) output and check if they match following:

fist one
Code: Select all
----- inputs -----
type=39 name=CallOfCuthulu
type=39 name=oversampling
type=39 name=in0
type=39 name=in1
----- outputs -----
type=39 name=codepoint
type=39 name=out0
type=39 name=out1
----- vars -----
F1=1.000000
  1.56,
c=0.000000
  1.45,1.83,
CallOfCuthulu=0.000000
  1.2,
codepoint=0.000000
  1.26,1.90,1.97,
oversampling=0.000000
  1.66,
in0=0.000000
  1.104,
out0=0.000000
  1.111,
in1=0.000000
  1.118,
out1=0.000000
  1.125,
----- stageInit -----
size=0
----- stage1 -----
size=0
----- stage2 -----
size=129
000--8B 85 70 1C 00 00 3D 00 00 00
010--00 0F 84 70 00 00 00 FF D0 05
020--11 00 00 00 89 85 40 1C 00 00
030--0F 85 01 00 00 00 58 66 0F 72
040--F3 20 0F 28 85 A0 1C 00 00 0F
050--C2 D8 00 0F 58 85 90 1C 00 00
060--0F 28 C8 0F 28 95 80 1C 00 00
070--0F C2 CA 00 0F 54 D1 0F 5C C2
080--0F 29 85 A0 1C 00 00 0F 55 8D
090--40 1C 00 00 0F 29 8D 40 1C 00
100--00 0F 28 85 B0 10 00 00 0F 29
110--85 50 1C 00 00 0F 28 85 00 00
120--00 00 0F 29 85 60 1C 00 00
----- stage3 -----
size=0


second one:
Code: Select all
----- inputs -----
type=39 name=codepoint
type=39 name=in0
type=39 name=in1
----- outputs -----
type=39 name=out0
type=39 name=out1
----- vars -----
F1=1.000000
c=0.000000
temp=0
in0=0.000000
  1.3,
out0=0.000000
  1.10,
in1=0.000000
  1.17,
out1=0.000000
  1.24,
codepoint=0.000000
  1.30,
----- stageInit -----
size=0
----- stage1 -----
size=0
----- stage2 -----
size=47
000--0F 28 85 B0 1C 00 00 0F 29 85
010--20 1C 00 00 0F 28 85 00 00 00
020--00 0F 29 85 30 1C 00 00 8B 85
030--40 1C 00 00 3D 00 00 00 00 0F
040--84 02 00 00 00 FF D0
----- stage3 -----
size=0

Particularly, the hexadecimal strings (the "000--8B 85 70 1C 00 00 3D..." parts) need to match. If they don't please PM them to me...
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby RJHollins » Sat Jan 27, 2018 7:15 pm

Hi KG.

I only checked the first 'cuthulu' module. I think I found a mis-match in the HEX section.

Here is my readout:
Code: Select all
----- inputs -----
type=39 name=CallOfCuthulu
type=39 name=oversampling
type=39 name=in0
type=39 name=in1
----- outputs -----
type=39 name=codepoint
type=39 name=out0
type=39 name=out1
----- vars -----
F1=1.000000
  1.56,
c=0.000000
  1.45,1.83,
CallOfCuthulu=0.000000
  1.2,
codepoint=0.000000
  1.26,1.90,1.97,
oversampling=0.000000
  1.66,
in0=0.000000
  1.104,
out0=0.000000
  1.111,
in1=0.000000
  1.118,
out1=0.000000
  1.125,
----- stageInit -----
size=0
----- stage1 -----
size=0
----- stage2 -----
size=129
000--8B 85 F0 17 00 00 3D 00 00 00
010--00 0F 84 70 00 00 00 FF D0 05
020--11 00 00 00 89 85 C0 17 00 00
030--0F 85 01 00 00 00 58 66 0F 72
040--F3 20 0F 28 85 20 18 00 00 0F
050--C2 D8 00 0F 58 85 10 18 00 00
060--0F 28 C8 0F 28 95 00 18 00 00
070--0F C2 CA 00 0F 54 D1 0F 5C C2
080--0F 29 85 20 18 00 00 0F 55 8D
090--C0 17 00 00 0F 29 8D C0 17 00
100--00 0F 28 85 90 10 00 00 0F 29
110--85 D0 17 00 00 0F 28 85 00 00
120--00 00 0F 29 85 E0 17 00 00
----- stage3 -----
size=0


I check the others later today ...
RJHollins
 
Posts: 1571
Joined: Thu Mar 08, 2012 7:58 pm

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby KG_is_back » Sat Jan 27, 2018 7:46 pm

I've run the code through disassembler and they appear to be identical. Only difference being positions of variables in memory, which is expected and normal. I really don't know why it crashes... :( I'm unaware of any changes in flowstone from 3.04 that could be responsible for this...
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby tulamide » Sat Jan 27, 2018 8:51 pm

I'm so sorry, KG, but the changes didn't help. v3.0.6 still crashes when switching the selector to the oversampling module.

But at least it works in 3.0.8+, so that's more important (Given that we will see a new version in the future, that may spread out quickly because of 64-bit).

I would love to help you getting to the root of this crash, but Assembler is a foreign language I'll never learn. And how the heck do you keep track of supported/unsopported opcodes in various versions of Flowstone?
"There lies the dog buried" (German saying translated literally)
tulamide
 
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: FINALLY - a way to to OVERSAMPLE your schematic for real

Postby KG_is_back » Sat Jan 27, 2018 9:27 pm

tulamide wrote:And how the heck do you keep track of supported/unsopported opcodes in various versions of Flowstone?


http://www.dsprobotics.com/versions.html

assembler was really updated only twice. First in 2.0.8 and then 2.0.9 beta... So everything except stuff mentioned there should be compatible back down to synthmaker.

....
Now I remembered... I also used andnps which has weirdly semi-supported in older versions... Try if this one works:
Attachments
oversampler_v2(pre2.0.7 compatible).fsm
(143.11 KiB) Downloaded 1311 times
KG_is_back
 
Posts: 1196
Joined: Tue Oct 22, 2013 5:43 pm
Location: Slovakia

PreviousNext

Return to DSP

Who is online

Users browsing this forum: No registered users and 27 guests