feature: DX7 synth#1114
Conversation
|
Size smoke check: (total delta + 43k bytes). Probably reasonable for a whole synth engine |
0250448 to
0d8f907
Compare
f300e0b to
3f4fe73
Compare
86a218c to
7e3bc10
Compare
|
Im curious if this is using the DX7 oscillator type thats found in the alternative Plaits firmware? being able to load classic 6 op banks would be amazing, I think its fine to have it as a 'separate' functionality to the current synth, which is quick to edit and fun to use in that sense. |
It is a DX7 compatible oscillator but It is based on dexed (which in turn is based on music-synthesizer-for-android), not any code from plaits. you can load DX7 .syx files in the common 32-preset bank format. |
|
did you add this to the nightly build already? how can I try it out? |
0c84a38 to
7a9c156
Compare
245520f to
d919b63
Compare
dd88566 to
f458676
Compare
|
This is starting to be ready for general review. The most "controversial" aspect to discuss might be UI shortcuts needed to operate this conveniently. All of the following behaviors are only active behind a community setting:
|
|
Seems to get about 50 voices so I think we just need to worry about UI stuff |
|
I've got a couple ideas for improving how integrated this is with the deluge First one - go the opposite way and have this entirely replace the synth engine when it's active instead Pros:
Second one - leave it in the oscillator, but have the DX7 presets form a macro controlled oscillator. My idea here would be to use "wavetable position" as time for the DX7 envelopes, allowing the user to "scrub through time" by modulating position with an envelope or other mod source. PW could be used to control a global DX7 mod depth or something
|
|
I gotta say I love being able to access filter and envelope options on the classic 6OP sounds- its super cool, I think the only other device that did it was the fabled Yamaha FS1R. I bugged befredl for an early version so had a couple months on it now. If I had to choose between the two options It would be the first (wouldn't want to lose access to editing options) but I actually really like the way its acting as a layer of the subractive engine. Thats just my 2c. of course would love to have gold knob access / automatable params and maybe that would be worth losing the filter for.. that would be a tough choice. Maybe a way to add a filter back in the path? I definitely think as far as 6OP editing goes the grid is laid it very logically (operators on rows) and has pretty much most of the important stuff there, very intuitive editing. |
|
I really like the ability to use filters as a post-processing effects. That they do not work on FM4 is a consequence of a mis-match how samples are processed, IIRC. As there is no such limitation on DX7 (it just produces sound just like a wavetable, as you mentioned), it seems like an artificial restriction to not allow this. Also I think layering a sample as a initial attack together with a DX7 tail can be a very powerful sound design tool.
Unfortunately DX7 envelopes does not work a way for this to really make sense. The sound can hugely be a affected by from where the envelope happens to be when you "key up", as the envelope keeps it state but changes the rate.. They are not a time-reversable thing you can scan through like a wavetable. I'd rather just add operator 1-6 LEVEL as mod destinations, something I plan to do as a follow-up, as this PR is big enough as it is. Importantly, including making them accessible in the automation view, to fully integrate this with other added community functionality.
This is already being done in this PR. Sensitivity is controlled by ampmod on each operator, consistently how it works on DX7 and many of its emulations (so it works with many existing patches). |
Yeah, you can get very close though. Check out plaits |
|
I'm good to merge if we put the oscillator type behind a community setting to signify that it's not stable - I think the UI needs work before we put it in a release officially but the core code is good with me |
|
Maybe two modes, a DX7 synth where the shortcuts are permanently the DX7 editor pads and there's no filters etc., and a DX7 oscillator that just loads a preset and then has PW and wavetable position as macros to control it? |
Ye. It almost is already. I could make it impossible to select "DX7" type by accident without going through the shortcut to set up the patch properly, which is behind a community setting. |
Yeah I think that's reasonable |
e5a611c to
37996b4
Compare
This is done now. The only way to create a dx7 synth is via the custom shortcut (behind community setting), you cannot select "dx7" type by accident anymore (just like left/right input are not available all the time, so there is some precedent) |
dc1c15c to
bb32419
Compare
based on the Dexed/MSFA engine implementation with some adjustments to fit the deluge architecture. (less memory consumption, support variable audio buffer size) DX7 compatible .syx files (there are many to find on the internet) should be placed on the sdcard in a "DX7/" folder. Polyphony: using the "modern" engine with NEON kernel (now the default) gives polyphony up to 56 notes for a raw dx7 voice with all 6 operators (but no FX, no filter, etc.) Expected to be lower with feedback active. The "vintage" engine with lookup tables to mimic the original DX7 more closely has lower polyphony, roughly the half (~28 notes). limitations/bugs: - short attack sounds can get "clicky", not sure if this is intentional To avoid clicks, decrease "rate 1" of all operators to be 90 something which still is pretty fast but no click. - TODO: operator and rate scaling uses raw midi note - might want a mode where it tracks transposed pitch as well. - TODO: per-op integration into mod matrix, to fully support MPE and fun stuff. currently only global pitch + level can be modulated externally - TODO: send/recieve parameter changes and syx dumps over MIDI with compatible hardware.
|
sweet! nice one guys |
based on the Dexed/MSFA engine implementation with some adjustments to fit the deluge architecture. (less memory consumption, support variable audio buffer size) DX7 compatible .syx files (there are many to find on the internet) should be placed on the sdcard in a "DX7/" folder. Polyphony: using the "modern" engine with NEON kernel (now the default) gives polyphony up to 56 notes for a raw dx7 voice with all 6 operators (but no FX, no filter, etc.) Expected to be lower with feedback active. The "vintage" engine with lookup tables to mimic the original DX7 more closely has lower polyphony, roughly the half (~28 notes). limitations/bugs: - short attack sounds can get "clicky", not sure if this is intentional To avoid clicks, decrease "rate 1" of all operators to be 90 something which still is pretty fast but no click. - TODO: operator and rate scaling uses raw midi note - might want a mode where it tracks transposed pitch as well. - TODO: per-op integration into mod matrix, to fully support MPE and fun stuff. currently only global pitch + level can be modulated externally - TODO: send/recieve parameter changes and syx dumps over MIDI with compatible hardware.
This still needs a bit more work, but I'm currently in the process of reworking my old DX7 branch to integrate better with the native UI of the deluge, like using soundEditor menus instead of the homegrown "DX EDITOR" UI I played with last summer.
What has which has been reworked so for is the importing of existing patches in .syx patch bank format (those which contain 32 dx7 patches each). This can be done as follows:
pros
cons
alternatives
While this path is something I might be interested on working on myself, the time scale for such a thing will be much longer ahead, compared to the effort of finalizing this rework.