Alex-aut wrote on 2020-12-15, 18:56:
@kitrinx, @newrisingSun and all others 😀 crazy guys are here:-) sf2 works 😀 sometimes i think, your former employee was Roland 😀 Thank you so much for all the work.
Compiler under windows compiles even with noted compiler options with a lot of warnings, but at the end, sf2 is created.
Attachment shows errors during creation under gcc windows. Never than less, very very exiting work.
Yes, lots of printf's. Not all of those warnings are significant, but it's good to be aware of them. If all went well, the SF2 should sound pretty good in fluidsynth or another full features soundfont synth. Instruments that rely heavily on the other two envelopes will understandably not sound correct.
Time Variable Pitch is an unusual envelope. Time variable filter and amplitude are pretty common. In the SC55, the envelopes more or less share the same structure 5 phases with the first phase being "attack" and the last phase being "release". All envelopes have an Attack, Release, and at least one other phase, but sometimes P3 and P4 are unused. Unlike typical synths, all five phases can be any level, where normally attack would simply be maximum value. Each of the three envelopes has an LFO associated with it, Pitch is Vibrato, Amplitude is Tremolo, and roland calls the TVF LFO "Growl". TVA specifically can have two shapes in it's transitions, either linear or logarithmic depending on the first bit of the duration value.
These complex envelopes can actually be seen as a form of compression, so they could shape the sound more with less data, rather than having to pre-render the complex changes. This can be somewhat adapted to SF2 format by pre-rendering any pitch, filter, and amplitude effects that the SF2 synth can't represent. I believe the TVF and TVP are very similar (possibly even recycled tech) from the MT32, which is why MUNT is probably a good reference for applying these.
There's still much to discover. What I have been doing is modifying the control rom to have 128 copies the same instrument (organ1 is good) and then modifying one of the values for each copy of the instrument, then burning that modified ROM to an eeprom and popping it into my sc55.