SynthMaker

Box Plot

Archive · 2010 11 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

MegaHurtz ·

Hello, Here`s something I came up with that I`d like to share. It`s a 256 point box plot. With room for n points. All you Asm And Gui Heads, Shure there`s room for tweaks,(And theyre welcome). Be shure to check out the format. Enjoy!

infuzion ·

I think it is a very good start, but needs alot of work to be useful. That averaging can be handy sometimes, but is a pain if you want to do fast A/B studies.

1) Is that "10 sec Uniform noise By Mhz" = "White noise"?!? I've been looking for white noise for... 2 days now. 2) I guess that slider adjusts the readout, but not sure exactly how. The knob needs a readout, &/or the display need a vertical scale also. 3) Really needs a reset. 4) Your ASM is good, but with out the original Code or atleast a block-by-block description of what that block is supposed to really do, it is hard to understand. I can read ASM & reverse-engineer it, but it helps so much to know why & original what. Also, labeling variables F0 does not help since you save to it, & by default SM & many ASM authors use F# as a read-only variable to load a float. 5) If you only need a single mono signal (not Pack4), then you might as well skip the SSE & do all your math in x86. Here, "if only mono" = never never need in stereo or poly. So I would have done the entire BoxPlot in x86, since you know it will feed a mono forever & you more or less had ASM it from scratch. I would keep the noise generator in SSE like you did, & if for some reason you need poly that is easy to do. Your noise is not worth putting to x86 unless you are bored, since as it stands it uses the same CPU as SM's Sine. 6) Might need a readout for how long the signal was averaged.

Take my opinions for what they're worth. You don't have to change a thing if you don't want; my comments are more for future reference. cheers 🙂

MegaHurtz ·

Edit: Infusion, it keeps on plotting boxes that`s why the average.. (no smoothing hacks the real deal ) to get a global view of the boxes plotted.

Thanks for the advice, I will try but my 86 lingo not that good. Indeed asm`d it from scratch. More of a killing concept so far. For longer tables of noise i`d prefer a generator simply becouse this eats up a lot of ram. all that can be used for patches.. Im kind of in the middle of two things right now. making music .. And this box idea I had. Scuse my half-assed approach on both. 😉 My brain is losing nuts and boults all over the place.

MegaHurtz ·

You could do something fancy with the average, not quite sunk in yet. Here`s a few hints with the code..

streamin cycle; streamout plot; float F1=1; float F0=0; float FH=128; float FW=256; float mem[256]=0;

movaps xmm0,cycle; movaps xmm6,xmm0; cmpps xmm0,late,4; movaps late,xmm6; movaps sync,xmm0; // compute jz mov eax,sync[0]; cmp eax,0; jz end1;

movaps xmm2,cycle; // scale input to mem + 0.5 * mem mulps xmm2,FH; addps xmm2,FH; maxps xmm2,F0; minps xmm2,FW; cvtps2dq xmm2,xmm2; movaps pointer,xmm2;

push eax; // read @ pointer mov eax,pointer[0]; shl eax,4; fld mem[eax]; fstp this[0];

movaps xmm1,this; // add 1 to location specified @ pointer addps xmm1,F1; movaps this,xmm1;

//mov eax,pointer[0]; // store @ pointer //shl eax,4; fld this[0]; fstp mem[eax]; pop eax;

movaps xmm1,adder; // count changes jz "tweakable to respond every sample ;)" addps xmm1,F1; movaps adder,xmm1;

end1:

movaps xmm1,ramp; // cycle mem addps xmm1,F1; movaps xmm2,xmm1; cmpps xmm1,FW,5; andps xmm1,xmm2; subps xmm2,xmm1; movaps ramp,xmm2; cvtps2dq xmm2,xmm2; movaps rampie,xmm2;

push eax; // read the results mov eax,rampie[0]; shl eax,4; fld mem[eax]; fstp peaceout[0]; pop eax;

movaps xmm1,peaceout; //average movaps xmm2,adder; divps xmm1,xmm2; movaps plot,xmm1;

// BoxPlot V1.0 By Mhz \\

MyCo ·

haven't had the time to test it, just looked over the code.

"late", "pointer", "this", "adder", "ramp", "rampie", "peaceout" and "sync" never get initialized, this might work now, but might not be future proof.

I suppose the valid range for Cycle is from -1 to +1, and you scale it with cycle*128+128 and use the result as index for mem... so Index for -1 is 0 and for +1 it is 256, BUT: you declare mem with a length of 256, so the lowest index is 0 and the highest index is only 255. Good that S|M is so solid now, otherwise it would crash 😈

infuzion ·

MyCo wrote: "late", "pointer", "this", "adder", "ramp", "rampie", "peaceout" and "sync" never get initialized, this might work now

+ are confusing to understand later, peaceout 😉

MegaHurtz ·

Havnt had too much trouble with the junk in the registers, guess im lucky today.

It did crash couple of times at first, that`s why I rounded. (so.. round some more) Also to get a better plot, it pays to have an extra index or two to write and not show, so it doesnt pile up at clipping points.

After I had a nap (or kato by now) ittl be sorted, also take to Infuzions suggestions to do a limmited plot, Atleast see if it`s possible without repadding the memory with zero`s. And clean the redundance a little.

So.. Thanks for the help, this thing will be unbeatable 😀.

MegaHurtz ·

infuzion wrote: MyCo wrote: "late", "pointer", "this", "adder", "ramp", "rampie", "peaceout" and "sync" never get initialized, this might work now

+ are confusing to understand later, peaceout 😉

🙂 srry

MegaHurtz ·

Man.. MyCo the initialising of the variables makes all the difference. Recompiles like there`s nothing there now. Thanks!

MegaHurtz ·

A more solid version..

MegaHurtz ·

I made another version of this.. be shure to pick up a copy 🙂

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.