Home Artists Posts Import Register

Content

The last one I posted is pretty out of date now. Things changed a lot because I decided to abandon those plans for the modular effects system in favour of something which I think will be much better in the long run.

1.1 Finish modularizing the sampler engines

I was previously thinking of putting this on hold and reverting back to the old system because it was giving me so much trouble but I struggled through the worst part and I'm feeling a lot better about it now. Part of this task is to move parts of the waveform generation code into the new sampler plugins, as it is now the plugins' responsibility to define how samples can be warped and manipulated and how they should be represented visually. The waveform generation is what I'm working on right now and it's pretty close to being done.

I've been working with a partially implemented version of the Classic mode during this transition but once the guts are all there adding Fudge mode shouldn't be too hard. There is a slightly awkward change to be made to the way that samples are processed after being loaded into the DAW: At the moment when you load a sample Blockhead always kicks off a background task to generate metadata for that sample which is used by the Fudge algorithm. This process will now have to be handled by the Fudge plugin instead and will only happen when the Fudge sampler is actually selected for a particular sample. It will then be the plugin's responsibility to store the meta data for that sample and free it when the sample is deleted. Currently this is much simpler as the Fudge metadata is just stored as a component of the sample state.

1.2 Finish re-implementing the sampler block UI

The frontends for various block types have had to be reconstructed to connect up to the new project format and the new sampler plugins. I also redesigned them to make heavy use of Godot's "InstancePlaceholder" optimization which dramatically speeds up things like block cloning and project loading and eliminates some potential UI unresponsiveness when dealing with large selections.

The most complex block type is the sampler block. Rather than simply re-implementing what was already there I've been making a lot of small improvements as I go and added some new features. After implementing the new choke feature I was planning to add some better visual feedback of where audio is being gated but I didn't get to this yet because it will have to interact with the waveform renderer which is also in the process of being changed.

Most sampler parameters are now dynamically loaded by Blockhead from the sampler plugins. The sampler plugin defines which toggles, sliders and envelopes it supports and Blockhead generates UI controls for it, and automatically sets up interactions with the gesture system and keybindings. I know that all sounds really boring but it's cool if you know how it works internally so I'm quite pleased with it.

I still have not got around to hooking up the envelope editor or the harmonics editor which I'm anticipating are going to take a bit more time than the other controls.

2. Get some broken things working again

During development I deliberately disabled a few features so that I could more easily make the large changes to the audio engine. The main things are block bouncing, sample exporting and song rendering. These all require an update to the snapshot system to render audio using the new engine. I don't foresee any big problems here.

3. Release v0.13.0 (with no effects)

For the past few months it has been difficult to find any way to release incremental builds as I was in the middle of changing large and interconnected parts of the software. However at this stage I think it should be easy to isolate the effects development from everything else.

I decided that before starting work on converting all the effects to the new system I will probably release an intermediate "no effects" build for people to start testing. This is because I have been writing the release notes for the next build as I go and it's gotten really big (it's currently 55 lines long) and I think it would be useful to test what I've done so far before starting work on the new effects. It's a bit unusual to release a software update with features temporarily removed but it is an alpha after all.

4.1 Bug fixes

Once v0.13.0 is out I will try to focus on fixing bugs that people report as the first priority.

4.2 Implement new effects system, port all the existing effects, and release v0.14.0

Hopefully this is straightforward. Most of the groundwork is ready for me to just get on with it. I have a good idea how it will all work engine-side but with the UI i'm still not sure so I will have to prototype a few ideas and see what I think works best.

5. Some PR stuff maybe

I received some requests for interviews and things which I keep turning down partly because I don't like talking to people but also because I've been in the middle of implementing these big design changes. I have received some criticism for being terrible at marketing but i always feel a bit weird about advertising an unfinished thing. Part of the problem is my plans keep growing bigger and bigger.

Comments

Anonymous

Cheers, this is so exciting!

Anonymous

I think you're doing great in terms of marketing, you got some support but nothing that justifies a finished product, as for the plans growing bigger I think it would actually be amazing if blockhead turned into a constant mutating tool, such as blender for example. We got your back!