Reverse Egineering for Sample Player.
There is a spec for "Soundfont2", but not clear what the hundreds of fields really MEAN.
So here first attempts to DISPLAY them.
For background details see sig/doc/internal/recherche_java_linux_sound.d2d
Assume "gervil" being the default synthesizer and accessible.
HACK use "gervil" classes directly. MANY WARNINGS ("may be removed")
Positive: SF2Soundbank EN/DECODES a file vs. an object structure, in a
seemingly canonical way; could be a little bit more abstract, imho.
(SF2SoundbankReader extends javax.sound.midi.spi.SoundbankReader)
|
SF2Soundbank (implements javax.sound.midi.Soundbank)
| getSamples() --> []SF2Sample
| javax...SoundbankResource
| | |
| javax...Instrument |
| | |
| getInstruments() --> []SF2Instrument |
| |
| getSamples() --> []SF2Samples (getEndLoop(), getDataBuffer())
|
Datenaufbereitung ist in SF2Instrument
füllt eine "ModelByteBufferWavetable"
Abspielvorgang ist in SoftAbstractResampler <--- SoftLinearResampler
<--- SoftLinearResampler2
<--- SoftLanczosResampler2
SoftResampler
|
SoftAbstractResampler --> uses ModelWavetable
|
ModelByteBufferWavetable
Viele "spi" = "Service Provider Interfaces" sind UNTYPISIERT ("Object")
Alle Modifikationen werden extern über "addRessource()" gemacht und intern mit
"instanceof" in verschiedene Listen verteilt.
See sig/doc/internal/recherche_java_linux_sound.d2d