Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Propose a 'Wolf Shaper (Lite)' binary? #116

Open
pdesaulniers opened this issue Nov 3, 2018 · 4 comments
Open

Propose a 'Wolf Shaper (Lite)' binary? #116

pdesaulniers opened this issue Nov 3, 2018 · 4 comments

Comments

@pdesaulniers
Copy link
Member

pdesaulniers commented Nov 3, 2018

It should be possible to optimize the DSP usage of the plugin by pre-calculating the graph's function, instead of recalculating some parts of it at every frame.

However, this would make warp modes unsuitable for automation. So, perhaps it would be good to propose a different build without the warp modes and with lower CPU usage.

@reidevries
Copy link
Contributor

We could implement the warp modes in DSP by simply applying the warp functions to the samples before or after processing through the wavetable, and visualising the effect in the graph without recalculating every time. This would give a slightly different effect, but i think it would sound very similar. I am interested in possibly implementing this feature along with presets because it would make it relatively simple to implement preset morphing. Preset morphing would bring this plugin more in line with the features offered by wavetables on commercial synths like Serum. I don't think it would be possible to implement preset morphing well in the current setup because of the possibility of presets having a different number of nodes.

@pdesaulniers
Copy link
Member Author

pdesaulniers commented Mar 4, 2021

We could implement the warp modes in DSP by simply applying the warp functions to the samples before or after processing through the wavetable, and visualising the effect in the graph without recalculating every time.

I think that makes sense! Right now, I don't remember why I chose to apply the warp functions to the vertices positions instead of the graph function itself...

I don't think it would be possible to implement preset morphing well in the current setup because of the possibility of presets having a different number of nodes.

Actually, I'm not sure if presets should have different number of nodes. One of my concerns about preset morphing is that simply cross-fading between the preset functions might not sound very good, mostly because the "intermediate" stages of the graph would not resemble the presets. Here's a crappy example I've made by hand in a few seconds 😛

image

The cyan and red lines represent presets. The purple line represents a cross-fade between the two presets.

The purple line in the example above doesn't really match the shape of the two other lines... But if all presets had the same amount of vertices, then we could interpolate between vertices positions instead, which would yield a more pleasant result (IMO)

image

@reidevries
Copy link
Contributor

reidevries commented Mar 5, 2021

Right now, I don't remember why I chose to apply the warp functions to the vertices positions instead of the graph function itself...

I can't speak for why, but the difference is clearest in the linear regions of the graph. Applying it to the graph function itself would bend the linear regions, applying it to the vertices keeps them linear.

Actually, I'm not sure if presets should have different number of nodes. One of my concerns about preset morphing is that simply cross-fading between the preset functions might not sound very good, mostly because the "intermediate" stages of the graph would not resemble the presets.

That makes perfect sense. I think the method you described is more intuitive and unique compared to wavetable synths, and opens up some possibilities beyond crossfading. I don't think it would be very nice or useful to limit preset selection for morphing to only presets with the same number of nodes though. Perhaps we could allow node movement to be defined freely within the editor instead. So the graph editor can store several "keyframes" at once and morph between them. There could be a series of number button widgets below the graph editor to switch the currently visible keyframe, with a + button to add more. Adding a new node would add a new node to all keyframes at the same y position, between the same nodes (so that if nodes are in a drastically different position, it will maintain ordering). If the preset feature were to be implemented, I think this would make it more useful because you could save all keyframes in one preset.

I'm kinda just spitballing at this point but interested to know what you think. maybe these ideas are more suitable for a fork or new version rather than a regular PR.

@pdesaulniers
Copy link
Member Author

pdesaulniers commented Mar 10, 2021

Yes, I like the keyframes idea! I think the hardest part would be to come up with an intuitive UI for this feature.

maybe these ideas are more suitable for a fork or new version rather than a regular PR.

I think the new features should go into "Wolf Shaper 2". In that case, I would bump the current version of Wolf Shaper from v0.1.8 to v1.0.0.

Anyway, feel free to send some PRs in this repo!

(On an unrelated note, I have transferred my projects to the Wolf Plugins organization. In a later release, I will rename every instance of "Patrick Desaulniers" to "Wolf Plugins" in the code)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants