Home | ER-101 | ER-102 | ER-301 | Wiki | Contact

Sample Scanner

Check out above where I describe the patch for two waveforms with Brian but this is how it works.

Sample file with a number of single waveforms (N) concatenated that you decide when making the file (when building the patch I started with samples with 2 then 10 & then finally 64 waveforms to help me figure out how to get it working).

So if you want to scan a specific portion of the sample and in our case only one of our single waveforms then we want to scan only 1/N of the sample - to be able to do this we then need to condition the the incoming signal so that it’s peak-to-peak amplitude is also 1/N in size. Using an aliasing saw of amplitude of 1 results in a wave that goes from -1 to +1 so this is were the division by 64 comes in. After using the two rational VCAs the aliasing saw now ranges from -1/64 to +1/64 … So almost there but the range is still too big I.e. x 2 too big.
The final conditioning step is to add the limiter with an output of -7dB - this in effect divides the amplitude by 2 as needed (strictly speaking it should be 6.02dB but I reduced it slightly more by viewing the scope as I was getting occasional scanning of the next waveform) and stops any amplitudes larger passing.

Now the input audio has a peak-to-peak amplitude of 1/N. The next part is to then set the phase parameter and 64 stepped increments using the grid quantiser.
With the center parameter = 0 then the phase parameter to address the first waveform is -0.492 (derived as follows: 1/64 = 0.015625, so each waveform is 0.015625 in width and the centre of the waveform is 0.015625/2 = 0.0078125, and with the centre of the sample set to 0 then the sample with respect to the phase spans -0.5 to 0.5 so the centre of the first waveform will be -0.5 + 0.0078125 = −0.4921875 which rounds to -0.492 which you see is the bias value for the phase parameter).

Hope that explains how it works.


Yep, that’s my main intention - the wavetable was for a bit of fun to see if it could be done :grinning:

Oh yes!!! Thanks a lot. This is very comprehensive, now I understand everything.

I’d love if there was a step by step guide with examples added to the wiki? I want in on cosmo arps! I think an idiot’s guide would be helpful. While I can see that this type of info is nice to have for those wondering:

This unit is not a wavetable synthesizer. There is no phase accumulator.

…I really don’t understand a thing :smile:


1 Like

The input presented at the unit’s input literally selects a position in the sample. The unit outputs the sample’s value at that position. That’s the most important part of the unit’s mechanism. The rest is just moving and stretching the sample around on the input range. So if you loaded a stair-case sample then the output would be a quantization (or discretization) of the input.

I agree that the current description on the wiki could be made clearer.


Hi there.

I am trying to use the sample scanner as a sequencer playing “cv” files generated on my computer.
The idea is : create super small audio files in Max/MSP that are basically 16 “binary” steps (1 or 0). So just a file, 16 sample-long that could act as a rhythm pattern. Then, scan the file with an Saw going to a Sample Scanner.
What should be the sample scanner’s setting ?

My “instinct” leads me to :

Center 0.5 (that means “the center of the scanned portion is at the center of the whole file”, right ?)
Width 1 (that means “scan through the whole file”, right ?)
Height 1 (that means “don’t attenuate the output”, right ?)
Fade 0 (that means “output steps and do not ramp from 0 to 1 or 1 to 0”, right ?)
Phase 0 (no idea what this means).

I sort of recognize the file “rhythm”, but it seems to add fades.

Help ?

And a question : could it be that, when i rendered the file, it was “interpolated” ? When I open in an wavefile editor, it looks like smooth curves, not stepped as I would imagine. But I thought that might be just a UI thing.
Any help would be welcome !

Have you read this?


Also, may I ask why you are not using a sample player with interpolation turned off?

Yes I’ve read the wiki page, and I admit I’m still confused.
Also, you’re totally right, I could use a simple sample player. I just simply didn’t think of using it this way. In fact, it’s the Wiki page of the Sample Scanner that gave me the idea to do this.

Which part? Did I word something poorly?

I’ll try to explain the parameters further:

The center parameter controls where the center of the sample should be placed on the input range.

Center 0.5 (If you input 0.5 to the unit you will get the value at the center of the sample on the output.)

The width parameter controls how much of the input range the sample covers.

Width 1 (The entire sample is mapped to a length 1 interval around the Center. So if center=0.5 and width=1, then the entire sample is mapped to the interval of 0 to 1.)

The height parameter adjusts the amplitude of the sample values.

Height 1 (Don’t attenuate the sample.)

The fade parameter dictates the percentage of the width used to fade out the sample’s edges to zero.

Fade 0 (Don’t fade the beginning/ending of the sample.)

The phase parameter rotates the sample within its boundaries with wrap-around.

Phase 0 (Don’t rotate the sample. Imagine the sample is a loop. Rotation means changing where the start in the sample lies.)

Thanks for rephrasing the parameters explanation. I think i got it right. I’ll try harder.
The bad thing is that I’m not even sure of the wave fil I’m using so it’s hard to know what’s happening for real.
With an audi file that contains only 16 samples (technically speaking), should it display i the whole screen when I hit “edit Sample” ? Because here it just takes like 2% of the screen total length and I can’t zoom in.

Which part? Did I word something poorly?
No, it’s just that it’s in the suggested applications of the Sample Scanner, that’s why I thought of doing this in the first place.

I don’t believe I suggest anywhere to use the Sample Scanner as a sequencer? :thinking: Please point out the exact sentence so that I can fix it. :bowing_man:

This won’t work due to interpolation. As the wiki states:

The incoming CV selects a position in the sample and the unit outputs the value (or an interpolated value if the position falls between two samples).

Except for the beginning and end, your input value will always select an intermediate value between two samples.

Unfortunately, the maximum zoom is 1024 samples. Your sample is much shorter than that.

Haha, that’s my twisted brain. “Applications : Scan a Sample with CV” i read “Scan a Sample OF CV”.

Ok, that’s interesting. So what I had in mind is not possible : I wanted to try to use a counter to access the samples one-by-one. This way the Sample Scanner could be used as a table of values. That was the original idea in fact.

If you “oversample” your table then it could work. Also the zoom problem would not occur. Recreate the sample but this time oversample (on your PC) the 16 values by 64x so that the sample has a final length of 1024.

Twisted brains are useful! I’ve revised that sentence.

Also, in the next release, I’ll add an option to turn off interpolation in the Sample Scanner.

1 Like

I’ll do 1024-sample files then. Thanks for allowing to disable interpolation !
I’m considering making a Max/MSP app to create files to be read this way. Could be fun !

1 Like

please share it if you do! i’m a n00b at max but enjoying the ride very much! (i just created my first audio visualizer in jitter and i’m amazed by what i was able to do in two days messing with simple jitter objects and a jit.catch~ :smiley: )
every stimuli is very important for me right now, and if i can also use it in conjunction with my 301,then wow!

1 Like

Hi, I am on the version 0.5.01 and I am not able to open these files.
Please, have you got a version which work on the firmware 0.5 ?


Ok sorry fixed ! I was trying to open it direct as preset but it need to be open by loading a custom unit then loading the preset :slight_smile:

i can’t find any information about what is interpolation quality (not also in wiki)
any chance to have some explanation?