Home Artists Posts Import Register

Content

If you click the button on the top right of a block you can switch the playback mode from "Classic" to "Fudge". This is a granular resynthesis algorithm which is designed to sound "interesting" and be very flexible. If it also happens to sound "good" at times then that's more of a happy side effect than a design goal. Many good sounding granular or time-stretching approaches are best at one thing or another, for example some might be good at maintaining snappy transients, some have good sounding formant shifting etc etc.

Fudge doesn't attempt to be particularly good at anything but allows you to push the parameters to stupid places, and smoothly transition from one state to another.

This post will get a bit technical at times. Some details of the algorithm work in a way which do not translate easily into a simple, intuitive UI, but hopefully those are things that can be improved in the future.

When you switch to Fudge mode there will be more parameters available in the modulation menu. You can see them all by typing 'fudge' in the search box.

You will also be able to stretch and squash parts of the sample by holding down ALT and clicking and dragging on the sample. The vertical dashed lines that appear are similar to what I think is called "warp markers" in Ableton Live. Right click to remove a marker.

By default every block will have one marker already inserted at the left edge of the block.

The warp markers will interact with the "Speed" parameter which effects how quickly the sample is traversed. If warp markers end up falling off the left edge of the block you can reveal them by holding down shift, clicking the left edge of the block and dragging it left.

This is also useful for revealing the hidden parts of the block after performing a slice (hover over part of a block and press S).

Geometry

The parameters in the "Geometry" group all affect the size of the grains and how they are laid out. "Size" obviously affects the size of the grains.

In a naïve granular resynthesis implementation, as you make the size of the grains smaller and smaller, the rate at which they are being retriggered eventually enters audio rate and you get a kind of ring modulation effect. You can reproduce this by setting the "Uniformity" parameter to 100%. (Currently the value is displayed as 0.0 to 1.0 in the editor rather than 0.0 to 100.0 because I didn't fix that yet.)

By default Blockhead sets "Uniformity" to 0% which means it will automatically adjust the positions of the grains in an attempt to maintain consistent wave-cycles. It doesn't affect the size of the grains, only their positioning.

It currently does this by using offset data that Blockhead generates whenever a sample is loaded. The sonic characteristics of Uniformity=0% will probably change a bit in the future (hopefully for the better) because I want to change the way offset data is generated to more sophisticated approach.

When the Uniformity parameter is set to a high value, and the sample is being traversed slowly (either through use of warp markers or Speed modulation, or both), the algorithm will produce results similar to that of a wavetable synthesizer. At this point the "Transpose" parameter can be used to shift the perceived pitch chromatically by adjusting the size of the grains by very small amounts. If you increase the Transpose, it makes the grains slightly smaller (and closer together), and when you decrease the Transpose, it makes the grains slightly bigger (and farther apart).

So the "Size" and "Transpose" parameters both affect the size of the grains, though the effect of the "Transpose" parameter is mostly only useful when:

  • "Uniformity" is high
  • "Size" is already small enough to produce a perceived pitch
  • The sample is being traversed slowly

In this state you'll notice the "Pitch" parameter is not really effecting the perceived pitch anymore. It's more of what some granular algorithms would refer to as a "formant" control.

Sometimes you might have trouble getting the "Transpose" parameter to actually produce chromatically correct results. For example you might draw in a ramp from 0.0 to 5.0 and the perceived pitch doesn't actually go up by 5 semitones as expected. This is not really a bug in the algorithm, but it's a non-intuitive side-effect of allowing the parameters to be pushed so far, and is probably why good software developers don't do stuff like this - it's too confusing from a UI perspective.

When dealing with small, uniformly sized grains, the perceived pitch is a result of several factors:

  • The size of the grains
  • The "pitch" (or formant) of the grains
  • The speed at which the sample is being traversed

Therefore the "Transpose" parameter will behave most intuitively when the sample is being traversed very slowly and the "Pitch" parameter is not too low. When these fuzzy requirements are met the "Transpose" parameter can be useful for creating melodic lines.

Harmonics

If you increase the "Amount" parameter in the "Harmonics" group, Blockhead will fade in up to three more grain lines. Each grain line has a pitch offset and grain size offset applied to it, which can be modulated by the "Spread" parameter.

The pitch offset of each grain line is always relative to the base "Pitch" parameter. The grain size offset of each grain line is always relative to the base grain size, controlled by the "Size" and "Transpose" parameters. The grain sizes of the harmonics are adjusted chromatically in the same way that the "Transpose" parameter works.

By clicking the little piano roll icon on the left of the "Harmonics" group you can open an editor which allows you to draw in a scale to which the additional grain lines will snap their pitch and grain size offsets. Again this scale is relative to the base pitch and the base grain size, so if you fill in only the bottom lane then the grain lines will snap to octaves relative to the base.

Comments

Anonymous

Thanks so much for the write up on this! Have you considered starting a discord server for this group/daw. It would allow all the users to have a central place for bug reporting and known bugs as well as a great place to share our explorations!

colugomusic

good idea. I'm not very familiar with discord but i know a lot of people like it so i will look into it

Anonymous

shoot me a private message when you have time I'd love to help you get it set up if ur busy

Anonymous

yup, i second that! write-ups like this are very useful, as well as interesting