The ResidentSynthHost is a Web Audio application, written in HTML5 and Javascript, that uses a GUI-less ResidentSynth synthesizer located on the same web site.
These are separate, but related, pieces of code separated by a MIDI interface. They are being developed together here, in this repository. Issues relating to either should be raised here.
The repository has two major branches:
dev: the unstable development application.
stable: the current stable application.
The dev branch was fully merged into the stable branch in May 2024, and the two online web applications are identical. There is, however, no guarantee that this state will persist.
This project is designed to be an investigation of the concepts involved. It is not intended to be a finished product. Its top-level architecture and what it does is much more important than the code itself (which is rather old-fashioned javascript). Both the host and synth are working prototypes whose actual code could well be improved.
The ResidentSynth does not require Web MIDI support from the browser. It uses the Web Audio API to implement the Web MIDI MIDIOutput interface. The ResidentSynthHost, on the other hand, is best used with a MIDI keyboard input device, which does require the Web MIDI API.
The ResidentSynth is designed to be configured for, and installed with, a web application that knows in advance
- which MIDI messages it supports. It can, and does, therefore use non-standard MIDI messages.
- which presets it needs. Loading time can therefore be minimized by not installing redundant presets.
Software synthesizers like the ResidentSynth can be used by any web application. It is, for example, also installed and working with my AssistantPerformer (repository, application).
Detailed documentation for both the ResidentSynth and the Host can be found here.
Many thanks to Sergey Surikov:
-
The ResidentSynth uses clones of freeware wavetables (=presets, instruments) found on his WebAudioFont page. These are organized into a custom WebAudioFont that can have 1-127 banks, each of which can contain 1-127 presets. For illustration and test purposes, the ResidentSynthHost uses a ResidentSynth that is configured to contain multiple banks and a large number of presets. Other installations would typically use less.
-
The code for loading the wavetables is very similar to that found in Surikov's WebAudioFontPlayer.
-
The reverberation control is practically a clone of (a possibly old version of) his WebAudioFontReverberator.
The ResidentSynth provides support for different tuning types (see the documentation):
Many thanks to Prof. Paul Poletti, who is the author of a table of Baroque tunings giving the offsets from Equal Temperament of each keyboard key in each tuning. The table was downloaded from Just-Say-Do.com a few years ago, but the site is no longer available, and I have been unable to contact the author. Any help in finding Prof. Poletti would be very welcome!
James Ingram
May 2024