Skip to content

New Synthesis Engine  #86

@spessasus

Description

@spessasus

Hi cifkao,
Thanks for this great project! The visualizer looks really nice and the simplicity of embedding the player on a website is really convenient.

Unfortunately I've noticed that a lot of MIDI features are missing. They have been reported as issues here and most of them are caused by the underlying magenta music engine.

That's why I propose replacing it with one I've been developing. It's called SpessaSynth.

Here's why I think it's a good idea and the issues it would resolve:

  • More MIDI features: Pitch bend, sustain pedal, pan, volume, modulation and even more exotic features such as system exclusives, RPN, MIDI Tuning Standard, Multi-Port MIDIs and even portamento are all supported out of the box. So a lot of older and exotic MIDIs would be able to utilize fancy effects. (Support the Sustain pedal #11, Pitch bend not working #56)
  • Custom soundfonts: I saw a discussion about it here. Spessasynth fully supports SF2, SF3 and even DLS soundfonts out of the box, which would make it very easy to allow users to use their own custom ones. (Custom soundfonts? #74, Add a looping option #51)
  • Audio worklets: spessasynth uses audio worklets for the synthesis. This would not only solve Players cannot play simultaneously #1 but also ensure no lag on the main thread as the entire synthesis+playback process runs on a separate audio thread. (Are there any plan to replace ScriptProcessorNode with AudioWorkletNode? #71)
  • Faster loading times: spessasynth supports SF3, which are OGG Vorbis compressed soundfonts. A high quality one such as GeneralUserGS can be compressed down to just 8MB, and low quality ones such as the msgs soundfont to even lower (less than a megabyte!). Not to mention that it won't have to download all samples as they would be ready out of the box with a single SF3 file.
  • Loop points: automatically detected (Add a looping option #51)
  • Enhancing Download button #13: not only writing out a MIDI file is supported natively, but you can also export a rendered WAV file as well. So the download button would allow users to both get the MIDI and a rendered audio file.
  • Tempo control: there's a playbackRate property for exactly that. (Tempo control #21)

If replacing the synth engine wouldn't be too much work, I think these features are worth it.

What do you think?

Regards,
spessasus

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions