The
ResidentSynth is a
GUI-less 16-channel MIDI synthesizer, written entirely in Javascript, that can be installed and used in any web application — including, in particular, both the
ResidentSynthHost application (
repository) and the
Assistant Performer application (
repository).
The
ResidentSynth inherits code from, and supercedes, two previous synthesizers: the
ResidentWAFSynth and
ResidentSf2Synth. These are no longer in development, but can be heard working in the archived
WebMIDISynthHost application (
repository).
This software is the latest chapter in a story that goes back to 1970, when I was a music student unhappy with the state of notation in contemporary music. At the time, something had obviously gone very wrong with written music, so I turned my back on “the system”, went back to first principles, and began thinking seriously about the relations between music notation (in space) and time.
After a few years earning my living as
Karlheinz Stockhausen’s copyist, personal computers became available, and I began to program
my own projects (Apple II, 1981). Writing software became, for me, a way to tie problems down, and to be conceptually precise. Its the best way to make progress.
Like hammering pitons in while climbing a rock face...
The scores I produced for Stockhausen continued to be handwritten until 1993 when he joined the desktop publishing community. At the time, none of the available score editors were able to meet his strict requirements, so we ended up exporting postscript from (buggy, over-complicated) Finale to a good commercial graphics editor (FreeHand) and finishing the scores off there. Fortunately, I had had several years of programming experience at the time, so was able to create specialized
FreeHand plugins when that became possible in 1995.
My first website was published in 1999. This was one of the factors that lead to my break with Stockhausen. It became very clear to me that, as I had long suspected, software has the power to create disruptive technologies. The process can, however, take some time. Institutions and communities have more inertia than individuals...
The projects that immediately preceded the
ResidentSynthHost —
Moritz (
repository) and the
Assistant Performer (
web applicaton,
repository) — lead not only to the development of an SVG-MIDI file format for scores, but also to the need for a
ResidentSynth.
The SVG-MIDI format is standard SVG containing (temporal) MIDI information in a specialized namespace. Most of that information is physically located inside chord (=event) symbols in the file. The current SVG-MIDI version is a prototype. More advanced versions, using MIDI 2.0 for example, would of course be possible.
The general use of hybrid (space|time) formats on the web would allow composers to provide realistic aural realizations of their notation to performers before any multi-person rehearsals begin. This would, in turn, re-enable the evolution of performance practice traditions. (The Early Music revival would not have been possible in the 1950s without the use of recordings.)
In the long term, a resurgence of musical literacy would probably also have other socio-economic consequences.
Note that, in contrast to the 19th century paradigm, there are no “perfect” or “ideal” interpretations here: Multiple interpretations can be embedded in the same score. Different (e.g. transposed) scores can contain the same temporal information. The notation is only an aide-memoire, reminding performers what to do. It does not duplicate the temporal information. Performance practice traditions are transmitted by human memory.
Note also that:
- Since the synth and host application are installed on the same web site, they can use mutually agreed, non-standard MIDI messages. There is, in principle, no restriction on the form of such messages, or what they might mean. The MIDI messages implemented by this ResidentSynth are documented below. Many of them have to do with tuning, simply because I want to use non-standard tunings in future projects.
- Control messages can be implemented for any kind of synthesizer. Synthesizers don't have to be sample-based like the ResidentSynth.
-
Contrary to space=time notation, symbolic music notations can be used
to
- compose high level musical logic
- synchronize multiple live performers, both inside and outside recording studios.
- save space in DAW GUIs by encapsulating complex information.
The
ResidentSynthHost was originally conceived as a test-bed within which to develop the
ResidentSynth, but it turned out to provide a solution to another problem I was facing with the
AssistantPerformer:
It has always been my dream to get music to
breathe again, so I had tried, but failed, to do that by using “conducting options” to alter the durations stored in the original SVG-MIDI files.
Live performance, using durations that are related to complex human memory, experience and taste, is actually the best way to generate durations that are “comprehensible” or “interesting” for humans. This is why the
ResidentSynthHost supports
recording.
The host's recordings are of what the performer does, not how the synth sounds. The sounds depend on the way the ResidentSynth has been set up beforehand. The recordings can, however be transcribed automatically into SVG-MIDI files, using a specialized Moritz algorithm and the notation conventions previously developed for the Assistant Performer.