logicomacorp/WaveSabre

Add new sampler device

Opened this issue · 0 comments

I developed pulsejet specifically to replace our usage of GSM06.10 here (and because it was really fun!), however, I never actually did the integration work, and I keep forgetting to with other projects/life stuff happening lately. Thus, this tracking issue.

I don't think we really need to reinvent the wheel and deep-dive into better resampling strategies than we use currently in Specimen (we could consider that for future versions, for example), so the work to be done is roughly as follows:

  • Fork Specimen (perhaps even just call it "Specimen 2")
  • Replace usage of GsmSample with something pulsejet-related
  • Add a target bitrate parameter/knob (and ideally a matching display) to control codec quality
  • Make sure we store both the uncompressed sample data as well as the compressed sample data in the device chunk so that we can re-encode as the quality parameter changes (only in the VST ofc; at runtime we should assume this is static)
  • As the pulsejet encoder/decoder are fairly slow (the encoder may be improved in future versions but the decoder is unlikely to change in this area unless we need really long samples or something), at least encoding should ideally happen on a separate thread, but this may not be entirely necessary.
  • Strip the uncompressed sample data from the chunk in the converter (this means the device needs to support cases where the encoded sample data is missing, which shouldn't be too difficult as this data shouldn't ever actually be used by the device, only made available to the VST)
  • Deprecate Specimen
  • Optionally, warn/error if the quality parameter is automated (at conversion time)