Giter VIP home page Giter VIP logo

residentsynthhosttestsite's Introduction

ResidentSynth and ResidentSynth Host

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.


Acknowledgements

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

residentsynthhosttestsite's People

Contributors

notator avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

residentsynthhosttestsite's Issues

TODO: Provide the option of loading complete banks from existing soundFonts

Currently (May 2024), the ResidentSynth loads individual presets (=instruments) from files that Sergey Surikov extracted from existing soundFonts.
Doing this can be quite tedious, if all one wants is one (or more) complete, working banks.
It should be quite easy to provide the ability to load whole banks from existing soundFonts.
Hint: see the setSoundFont(soundFont) function in residentSf2Synth.js in my archived WebMIDISynthHostTestSite repository.

Unable to connect my MIDI output to your MIDI input

Hello,

I am building a Web-based score player, very similar to your work in this area. Here's my demo: https://blog.karimratib.me/demos/musicxml/

I wrote a pared-down web audio synth using surikov's webaudiofont module, but I wouldn't mind swapping it out for yours which looks more complete.

However, when I open your demo app at https://james-ingram-act-two.de/open-source/ResidentSynthHost/host.html, and select Midi Through Port-0 as input, and the same as output on my demo, I get no sound out.

If I output to the DX7 emulator instead https://mmontag.github.io/dx7-synth-js/, I do get sound.

On your demo app, I see a warning about a deprecated feature related to Web MIDI, screenshot below. I suspect Web MIDI is not initializing properly on your page.

Screenshot from 2023-08-04 23-45-31

Can you advise?

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.