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

Sample Scanner


I guess it is more correct to say that it only goes down to 1/32.


I was figuring two of them in series (one set to 1/2) goes to 1/64. However, I guess that’s not a very convenient scenario for making adjustments.


That’s for the input everyone - hopefully going to try and put it together once I finish work.

The good news is that I already created the concatenated 64 waveforms so just need to get into the detail of the patch.


Ok, so after quite a bit of head scratching I’ve managed to make two new custom units using the ‘sample scanner’ unit.

  1. 1D Wable Scan (wave table oscillator)
  2. Wave Scaper (wave shaper/distortion unit)

The 64 waveform wav files come directly from the ‘Synthesis Technology WaveEdit’ software (Under ‘File’->‘Save Bank as …’. I’ve included two wav files, one for each unit - see the README file in the zip file below.

Sample-Scanner_Custom_Units.zip (50.8 KB)

I’m pretty pleased with these :smiley_cat: - here’s an Instagram video of the two being used one after the other. The wave table oscillator, with pitch and wave index being modulated by an ER101, is being run into the wave shaper, with the wave index being modulated by a skewed envelope, triggered also by the ER101, to bring some dynamics.

All comments and improvements welcome!


Awesome stuff. Wave Scaper works great, however I’m having mixed results with the wable scan, now trying to investigate why. I’ve spent some time already on sample scanner unit with waveedit files (i own a E352 as well) but couldn’t so far make it reliably loop it in a way that loop borders would perfectly embrace one of 64 waveforms - whatever i do loop borders would fall on non-zero crossing, generating unwanted harmonic content (in my system that is what’s also happening with 1d wable scan i believe)

ps: those ppg wavesets recently posted on waveedit online are gorgeous.


Glad you like the ‘wave Scaper’ :+1:t2:

The calculations to select the waveform and the generation of the waveform for the 1D Wable Scan is identical to the wave Scaper so I’m not sure why it wouldn’t be working as well as the Scaper. I’ll have another look tonight when I get time.


Could you please explain the purpose of the 2 rational VCAs? what are they dividing by 64? i’m having a brain glitch.


I would let go of the desire to build a perfect wavetable oscillator with Sample Scanner unit and instead embrace what is was designed for: processing and transforming incoming signals. :man_cook: You will still get wavetable-like results.

For example, have you tried replacing the saw with a triangle wave? Or sine?


absolutely! i was just playing with sine wave osc and one of the PPG wavesets loaded into the sample scanner unit as sound source -> optomix -> echophon (feedback loop through mannequins three sisters):


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:



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.