The idea of an asset-based workflow is commonplace but deserves some focused discussion.
flag Important A soundscape is constructed by combining a number of separate assets of different types. At the root of it all a master javascript describes relationships between other assets and can thus represent the process to produce a final result. Javascripts can reference other javascripts, audio plugins, audio files, song.hz files, envelopes, etc all of which combine to produce your final mix.
Let's now elaborate these themes in the context of Hz.
The workspace is the folder where assets reside. A Hz session
operates relative to a single active workspace and you can change
this at any time (but not mid-performance). The default workspace
is ~/Documents/Hz or /HzWeb and it's possible that you'll never
need to change it. This is because you can create any number of
sub-projects within your workspace and then easily share assets across
sub-projects. In larger-scale productions you may find value in
segregating assets by project and now you'll switch workspaces as
you move between projects.
The Workspace Panel displays files and subfolders of your current workspace and can assist with tasks of file creation, deletion, renaming and organization. You can drag files atop other panels within Hz to drop an asset reference onto a parameter or into your Code.
In order to maximize the portability of your projects across machines, it's best to refer to assets in a workspace-relative form. Again, the Workspace Panel and the Hz Runtime's WSLoader class come to your aid in producing and resolving relative asset references.
Asset files come in a variety of types and represent the core of your project. The usual suspects for music production include:
.wav, .aiff).knt, .vitallfo).mid)Hz extends this set to include
.js).hz).yaml, json)Taking the asset-based idea to its extreme, each significant
asset resides within its own file. For example, rather
than burn several note sequences into a larger driver file,
storing these notes into its own separate file (.hz, .abc, .mid)
will allow for more flexible mashups down the line. Moreover,
assuming you organize your assets by subproject you'll be able to
understand the constituents of your project simply by inspecting the
workspace contents.
A product can be a lot of things:
.js file that combines input from
the performer, OSC Events, Midi Events, HID Events, etc.In the context of Hz, the idea is to have a reproducible recipe that can be used to recreate a final product. Ideally the recipe is compact and concise. This allows you to tweak a final production recipe in small ways to achieve a predictable outcome with minimal cognitive overhead.
In Hz we accomplish this either by the .js driver file.
These files have a number of references to external assets and
represent the gluing agent that brings it all together.
Hz's workflows are decidedly non-linear in the sense that there is no single view that captures a serialization of all the events in your project. The composition paradigm of a linear-timeline is both easy-to-learn and very powerful but it has difficulty representing randomness and procedural / programmatic / performative composition elements. Since the pitch for Hz is programmability we've not made timelines central to the authoring experience.
But all is not bliss in the world of pure proceduralism. Somehow the composer must bend stochastic madness to their will and onto a composition. There are a number of tools and methods for doing so in Hz and these are explored elsewhere.
But before we leave this topic of non-linearity consider:
.js, and .hz files open
in a Hz session. Parameters can be changed, programs can be altered,
fibers can be cleared and restarted.… Q.E.D …