Home Artists Posts Import Register

Downloads

Content

A note about version numbers

...because I have never mentioned it anywhere:

  • Each blockhead build gets a version number in the format v0.0.0.
  • The first number is always zero because we are still in alpha.
  • I increase the second number by one when I add new features.
  • I increase the third number by one for anything else (e.g. bug fixes and other non-feature updates)

So with this build we are going from v0.28.2 to v0.28.3 because there are no new "features" introduced. However this is actually a very large update just in terms of the amount of code that has changed since the previous build. Most of what has changed is internal and so is not listed below.

Why did this build take so long?

I have had to spend a lot of time refactoring things and fixing various implementation issues. There are still a lot of problems so I will be doing more refactoring in the future. This all slows down the speed at which I can add all the new interesting things that I want to add but unfortunately it's necessary as things get more complex. I think Blockhead has long since passed the point where it is just too big for a single person to be working on but I will keep on grinding.

Working on Blockhead is a continuous learning experience and one major aspect of this has been learning how to use Godot effectively for a UI-heavy software project with lots of interacting parts. Blockhead is not a game and a lot of the typical advice and resources you can find online about how to use Godot turn out to not be very relevant to what I am doing. As a result a lot of the code that I wrote early on looks quite different to new code that I am writing now that I have figured out my own way of doing things. One nice thing is that I think I understand Godot well enough now that it is no longer an obstacle. I spend a lot less time these days just trying to figure out how to bend Godot to my will. On the flip side more time now has to be spent cleaning up my past mistakes.

Other factors that have been slowing me down:

  • I have officially burned through my savings account now so I have to spend more time doing contract work.
  • I have been working on Blockhead for three years now and only recently feel like I learned the true meaning of "burnout". I have a habit of saying things like "X will be done in a couple of weeks", "the new build will be ready soon" etc. If you see me making these kind of predictions about when things are going to be done then please tell me to shut up because I think a lot of unnecessary stress stems from me making these kind of statements and then automatically setting myself mental deadlines. This kind of thing ends up making me take longer in the long run so I will try to get a handle on it from here on.
  • This build in particular also took a bit longer because I had jury service which lasted for several weeks.

Update Notes

UPDATE: Added visual indicators for block gestures (when holding down SHIFT, SHIFT-CTRL and SHIFT-ALT.)

UPDATE: Can now remove a single block from the current selection by holding down CTRL and clicking on it.

UPDATE: There is now a lot more runtime error checking going on. I tend to sprinkle a lot of asserts throughout the code and typically these are only enabled in debug mode. I have now enabled them in release mode and so they will be present in the Patreon builds.

The point of this is to help me get more information when bugs or crashes occur. If an assertion fails then in many cases Blockhead will likely crash soon after, but it will try to continue running anyway to give you a chance to save your work, and to pop up a message stating that the error occurred. This happens for "unexpected" program errors so if Blockhead manages to carry on running then it is considered to be in an invalid state.

Assertion failures and other types of unexpected runtime error will be written to a log file. Blockhead will stop logging after 100 errors occur in a single run of the program. If a crash dump is generated then logs will be automatically added to the zip file. Logs are written to the user data directory which on Windows is usually something like "C:\Users\[username]\AppData\Roaming\Blockhead\logs".

UPDATE: "Open Logs" button added to the Alpha Tools panel.

UPDATE: General UI performance improvements. There is now less reliance on signals and slots and task queues for many common operations which have to occur under the hood while interacting with blocks and dragging them around. There might be slight visible improvements when dealing with large selections of blocks or deeply nested macros.

UPDATE: Manipulators are now applied to target parameters in a separate thread which should eliminate input lag in some cases.

UPDATE: Block instance counts are now displayed in the block browser again.

BUGFIX: Undo'ing the deletion of a send block will now correctly restore any lost receive block connections.

BUGFIX: Fixed several crashes related to manipulators being inside macros.

BUGFIX: Tempo guide snap points now stop when they hit a block to the right.

BUGFIX: Tempo guides in the current selection are no longer affected during a resize operation.

BUGFIX: Fixed more instances of ALT key getting stuck in a pressed state after ALT-tabbing.

BUGFIX: Fixed issue where selecting a single block was sometimes really jank and annoying

Comments

Anonymous

take your time king

Anonymous

can relate as an audio programmer myself. projects can get huge in 3 years!