Home Artists Posts Import Register

Downloads

Content

Bouncing and exporting changes

Some subtle changes were made to the bouncing behavior. As detailed in an old post, Blockhead automatically generates a fade-out period at the end of blocks to avoid clicking when there is audible data right at the end. This is used during bouncing too so for example if you bounce a block with a length of 10000 frames the resulting sample size might be something like 10512, because the block carries on rendering for ~512 frames after the end of the block, while applying a fade-out.

The above behavior has not changed, but now samples generated from a bounce operation will have some hidden meta-data stored against them specifying the length of the fade-out period, which is used to hopefully make things acts more intuitively.

The visible changes are as follows:

  • A new block created from a bounce sample will now always start with a size equal to the original source block(s) (the sample size minus the fade-out period)
  • When "Loop" is turned on for a bounce sample, the generated fade-out period is not included in the loop area
  • When exporting a bounce sample, the sample export dialog has a new "Include Fade-out Period" checkbox
  • When exporting a block, the block export dialog has a new "Include Fade-out Period" checkbox

This required changes to the project format. v0.17.x projects will still open but any existing bounce samples will behave as they always did.

New effect plugin: Wavebender

It detects wavecycles in the input signal by looking for zero-crossings and then plays them back in-sequence. Some detected wavecycles may be skipped or repeated depending on the parameter settings.

Parameters:

  • Tilt: Distorts the wavecycle as it plays back. The basic effect of the tilt parameter on a simple sine wave is something like this:

The actual transformation is a bit more sophisticated than this but you can look at it with an oscilloscope if you're really interested

  • Crossfade: When a new wavecycle is ready to be played the most recently detected wavecycle is crossfaded up while the current wavecycle is crossfaded down. The crossfade affects not only the volume but also the speed that each wavecycle plays back. The crossfade parameter adjusts the length of the crossfade period.
  • Pitch: The pitch at which each wavecycle will be played back
  • Bubble: Increases the number of zero-crossings the detector will look for before registering a new wavecycle (range: 1-64)
  • Smoother: Adjusts the frequency of a lowpass filter which the input is run through before entering the detection stage. A higher value decreases the cutoff frequency, resulting in less wavecycles being picked up

Updates to the plugin system

Several changes were made to the blink plugin API. The major change is that plugins can now package arbitrary binary data in a virtual filesystem which Blockhead can access. This is currently only being used to display custom plugin icons.

The sampler API was also extended to allow sample loop points which is currently only being used for bounced sample data where the intuitively loopable region of the sample is not equal to the entire sample range.

Additional Changes

Feature: "Rescan Audio Devices" button added to audio settings page
Feature: "Include fadeout period" checkbox added to sample and block export dialogs (see above)
Update: Meta blocks can now be used to add silence at the beginning or end of a bounce
Update: Synth and effect plugins now display custom icons provided by the plugins themselves. All the current icons are just temporary programmer art.
Update: New/Save/Load operations will now wait for all background tasks to complete before proceeding, which hopefully solves the project corruption issued exposed by instinctive quick-saving
Update: Color overrides are now per-block instead of per-reference. This incurs a small change to the project format. Existing v0.17.x projects should still open but color overrides already set will be lost
Internal: Another round of refactoring was done to convert more old GDScript code to C++. This mainly involved rewriting the track and lane controls. Several stupid inefficiencies were found and fixed in the process but on the surface everything should work the same as it did.
Bugfix: Fixed a crash on exit if an export is currently in progress
Bugfix: Fixed a visual error that occurs when dropping a stereo sample onto an existing mono sampler block
Bugfix: Fixed a situation where envelope points could still be editable when the block is on a contracted lane

Comments

No comments found for this post.