The SFZ has been created by our @jlearman, that kindly accepted my proposal of writing a SFZ with all the sound controllers from the original device. He did it super fast and enlighten me about the way of (not) writing good and maintainable SFZ files.
Thanks a lot, @jlearman! I’ve learned a lot while adding the pan and level controllers. Indeed, i added some code to generate the zynthian YML file, that now includes the keymap too!. A PR is waiting for you in your repo.
The soundfont is available in my forked repo and also as a package for zynthian vangelis (don’t forget to update the package list with CTRL+F5).
And this is the YAML file for the TR808-Fischer package:
TR808 Fischer
Author: Michael Fischer (samples) & Jeff Learman (SFZ) (source) License: CC0 Content: soundfonts (sfz) Size: 12MB
Sample-based Roland TR-808 drum machine emulation with all the sound controllers from the original device plus individual pan control for each sound. It uses the Fischer’s sampleset, composed of 116 high quality samples recorded directly from the original device at different control positions.
TR808.sfz
The original sound without blend. Only 5 control positions for the controllers, but you get the purest TR808 sound.
TR808_xfades.sfz
It blends 2 samples to simulate intermediate controller values. Not the purest sound, but increased control possibilities.
I merged the PR. Let’s live with your fork for now and fix anything that pops up. When we’ve decided we’re ready, I’ll issue a PR to the original repo, and if merged we can all use that one.
Indeed yes.
The no-xfade version use 5 ticks for the controllers, matching the 5 samples, while the xfade versión has continous controllers, from 0 to 127.
The xfade version keeps the keyswitch mechanism to toggle xfades, but the controllers are continous all the time. Changing the controllers behaviour on-the-fly is challenging.
I don’t understand, because I did it and it wasn’t an issue.
The xfade version keeps the keyswitch mechanism to toggle xfades, but the controllers are continous all the time.
I don’t understand that at all. I guess I’ll have to take a closer look at the sfz. Of couse volume and pan would always be continuous all the time. But for say, “snappy”, we’re either selecting a single file (no-xfade) or fading between two files (xfade). The latter is continuous, the former is not.
But I hadn’t tried xfade with two different controllers yet (e.g., tone and snappy.) Maybe that’s an issue?
The SFZ with xfades works as you programmed. It use continuous values for the controllers (0-127) and you can toggle on/off the xfades.
When xfade is disabled, changing controller values (0-127) only affects the sound when changing regions. This is undesirable. In this case it’s better having a selector with 5 ticks, that is what i’ve implemented. The zynthian controllers act effectively as sample selectors.
I’m not too convinced of the result with the xfades.
Perhaps we could consider pre-generating extra samples to have more control points. We could try the IA way or a more conventional method.
Someone in the forum has knowledge about generating “intermediate” samples from a set?
I mean, let’s suppose you have a set of N audio samples for an “instrument”. They have been recorded modifying a single parameter at N different positions going from the minimum (0) to the maximum (100). We would like to generate extra samples for intermediate positions. What approach would you suggest?
Now imagine having a bidimensional sample set NxN, recorded varying 2 parameters.
It seems a good task for the IA, right?
For pitch shift intermediate samples, it’d just be pitch-shifting the sample.
For tone, cross-fading causes some artifacts because filters add delays that are frequency-dependent. I confess I can’t hear them, though! The way I’d approach it is to do an FFT for the two samples, average the two (both frequency and phase) and then convert back to time domain. Repeat as needed.
You could do the same for “snappy”.
I’m pretty ignorant of how to use AI, but it’d be interesting to see what it’d do. If anyone here is good at this sort of thing.