Nowhk wrote: ↑
Wed Dec 19, 2018 1:31 am
Why they are called Intel
Intrinsics so? Because Intel introduces them as SSE2/AVX/etc?
I mean: the SSE2 on AMD are the same Intel Intrinsics?
Or I will use somethings different than emmintrin.h?
(sorry for the "stupid" question, but I also think terminology helps on learn stuff hehe).
Because Intel invented the x86 architecture and owns intructions set specifications for it.
AMD has licenesed it and build chips based on same ISA.
Look at ARM than it is getting even more clear how the "ISA model" works.
ARM (a UK company) specifies instruction sets (i.e. NEON, which is the SSE for ARM) and the chip design, but they do not not build actual hardware. Instead they license their designs to Samsung, Qualcomm, Huawei, Apple, ... and they build the chip.
So you end up with a lot of different ARM processors, since they all support ARM insturctions - but they are build by Samsung or Huawei.. not by ARM.
I see. So basically you "sync" the refresh of param changes at fixed rate (the smoothing length).
If I change a param value in between blocks (after 2 blocks, where only 500 samples has processed instead of 1000, for example), you simply ignore the param change at that step, "delaying" it on the next block, right?
Yes and no. I "sync" the refresh (aka control rate) to sample rate, but the smoothing length is the length of the interplotation (= how many steps from t=0 to t=1). This must not necessarily be same as control rate (but beeing it or factor of it helps a lot
If I pick 1:48 control rate to sample rate ratio on 48kHz, I read the UI value on sample 0, sample 1000, sample 2000, ..
If it changes on sample 500, the change will be picked up 500 samples later.
I avoid any kind of dynamic / event driven logic in there because it would make the control rate dynamic - depending on how many UI events you receive within a certain timeframe. Like: how many control param samples is 1 second? No idea, this will change if uses moves the knob, depending on how many UI events arrive within thin this second.
It just complicates things...
Prefer to have fixed control rate : sample rate ratio.
If a 1:1000 control rate to sample rate is too slow / want to pick up changes faster, I simply reduce the ratio. A 1:1000 on 48kHz sample rate would be 20,8ms of worst case latency, a good drummer can notice this. 1:64 would be 1,3ms - nobody can notice this and you still reduced rate of control signal by factor 64 compared to audio singal.
Since the smoothing window are pretty small (probably, 100 samples @ 441000 are enough; or which length is preferable?), in effect this won't be really noticeable.
If it is only about to avoid the click and the fade shouldn't be noticable, I usually go for something arround 10ms. That would be 480 samples on 48kHz