Closed curlymorphic closed 4 years ago
I like it. Everything looks good and it's clean and clear what everything should do. I think it's good to merge
This pull request has now been updated to include a working version of the module Zazel for testing and discussion.
As well as fulfilling it's the primary purpose of a live control device, the module can also function as an LFO and envelope generator.
Having used the module connected to an APC mini, I would like to make the following proposals
@mattcollier I feel this could be tested now to get feedback, I shall post download links on discord
Downloads can be found : https://github.com/StudioSixPlusOne/rack-modules/releases/tag/RC1.00.00.02
Build warnings: https://gist.github.com/mattcollier/5fd897de11a66690fa401dc0c5a7b66f
One just looks like a typo in the word default
Looks like something bad happens when the duration knob is turned to zero.
CV Input on start or end value appears to disregard the min/max set by the main start/end knobs.
Build warnings: https://gist.github.com/mattcollier/5fd897de11a66690fa401dc0c5a7b66f
One just looks like a typo in the word
default
Fixed
Looks like something bad happens when the duration knob is turned to zero.
The minimum duration was set at 0.000001 * the clock signal, this was far too low, I have adjusted to 0.001.
CV Input on start or end value appears to disregard the min/max set by the main start/end knobs.
I don't think these are min/max just start and end levels. I would expect these to be adjusted both positive and negative from the parameter setting via CV, this is a design decision, so let's wait for ZenCoderMe to return before we make any changes.
Curlymorphic could this be a good pairing for a latching button implementation? https://library.vcvrack.com/AS/TriggersMKI there are a number of button modules that feature latching
I am aware of a few modules that can be used for latching, but by using this we require 2 additional modules alongside Zazel to fulfill the original design requirements, A midi to cv gate, a latch, and Zazel. An alternative to reinstating the trigger buttons could be to handle the midi in Zazel, reducing this to just a single module. Again I feel this is more of a design decision and we should wait for ZenCoderMe.
Comments based on 958ec9c10bcf0fbfeeb52923918f07373ddf3530
Build warnings and zero delay issues are fixed, TY!
Trying out one-shot with a button. First, I was surprise that the start input is behaving like a gate and not a trigger. Don't know if this is intended or not. I believe this is just an AD envelope, so trigger seems more appropriate.
More importantly however, the shape of the envelope is nothing like what I would expect. I expect that the delay setting would affect the attack curve, but it only seems to be affecting the decay.
Am I correct that this is doing an AD envelope where the A and D duration are the same producing a mirror image? That's how it appears in the 'cycle' mode.
Issues related to mapping a module parameter/learning mode.
If I click the module parameter UI in Zazel and then choose X SCL
knob on the scope, Rack locks up 100% of the time. The window won't close and most of the UI is non-responsive. Seems like probably a Rack issue since the whole platform is locking up, not qualified to debug myself.
Similar problems occur if I click the module parameter UI and click on any of Zazel's own buttons. I imagine the disallowing modulation of Zazel's own parameters if possible would be a good idea.
Comments based on 958ec9c
I will include a youtube video looking into these points, as it may be clearer, I am also not sure we are talking about the same things, so it may add some clarity. I have copied my terminal output from git to a note in the patch, as a confirmation of the SHA used.
I have noted an additional bug that I shall fix, where the one-shot, cycle switch appears not to load it's state correctly, as your patch UI shows oneshot mode, but Zazel is clearly working in cycle mode upon initial loading
Trying out one-shot with a button. First, I was surprised that the start input is behaving like a gate and not a trigger. Don't know if this is intended or not. I believe this is just an AD envelope, so trigger seems more appropriate.
Zazel is an AHD envelope, allowing for the parameter to be held at one of the states, thus requiring a gate. With an external controller, it is normal to want some buttons to latch, and some to toggle, this is why gates are used. All software I have used with external controllers has worked in this manner. In VCV Rack I would select this option using the momentary or toggle options from the context menu of the midi routing module, such as MIDI-CAT. This would soon become a complex arrangement of modules when setting up multiple external triggers, I currently have 72 external triggers setup for a drum sequencer, and filter fades, This would be a lot of additional modules and processing power if this were only to work on triggers. I am still having to put additional button modules between MIDI-CAT and Zazel, due to the removal of the trigger buttons, I feel it is very important these are reinstated.
More importantly, however, the shape of the envelope is nothing like what I would expect. I expect that the delay setting would affect the attack curve, but it only seems to be affecting the decay. Am I correct that this is doing an AD envelope where the A and D duration are the same producing a mirror image? That's how it appears in the 'cycle' mode.
All the curves are using Robert Penners easing functions, http://robertpenner.com/easing/ .When in one shot mode the attacks are using the easein, the decay the easeout functions, when in cycle mode the easeinout functions are used. This corresponds with zengamers request on discord. The duration control affects both the attack and decay times. this can be seen in the video.
Issues related to mapping a module parameter/learning mode.
If I click the module parameter UI in Zazel and then choose
X SCL
knob on the scope, Rack locks up 100% of the time. The window won't close and most of the UI is non-responsive. Seems like probably a Rack issue since the whole platform is locking up, not qualified to debug myself.Similar problems occur if I click the module parameter UI and click on any of Zazel's own buttons. I imagine the disallowing modulation of Zazel's own parameters if possible would be a good idea.
This is a concern, as I can not replicate this behavior on my desktop under Linux or widows, nor on my old laptop. Maybe there is a chain of events that would need identifying so I can investigate. Again I will demonstrate in the video
https://youtu.be/Ckv7Fdl63Bw going for the lowest quality youtube video has made me sound like a 1960's robot
ZengamerToday at 6:55 PM Sorry for the delayed response, it's been a long, rough week here. I'm really loving what I've seen so far after about 20 minutes using it. I second the proposed changes and would like to propose a few others. These aren't necessarily new functions, just additions to what's there.
Use case 2: Bob wants to change the resonance of a filter while making a patch. He clicks the learn button on Zazel, then clicks the filter frequency knob. Zazel records the know that was clicked and the value it's at right now. The Start knob on Zazel moves to a location like the case above. Bob wants to have really fine control over the change of the parameter so that it tracks to his patch, he moves the start knob on Zazel and the frequency cutoff of his filter moves along with the value Bob dials in with Zazel. The same behavior would work for the end value too. Use case 3: Wendy wants a sequencer to change the resonance on a filter. She likes the easing functions of Zazel so she connects the output of a couple of sequencers to the Start and End CV inputs. She clicks learn on Zazel, then the frequency cutoff on the filter. The Start and End knobs on Zazel will change as the CV values change. The filter frequency cutoff modulates according to the easing function and values the module has every time it receives a trigger. The duration knob is great The CV out is great because it allows a CV modulation that tracks along with the modulated control. Run Zazel through an inverter and get movement in the opposite direction. It makes for some nice effects That does make me wonder if a multi-parameter Zazel would be a useful tool. Maybe a version that's got three or four sets of controls stacked vertically on top of each other. I don't know, that's a stream of conscious idea I'm having in real time
CurlymorphicToday at 10:54 PM @Zengamer cool, I will have a look over the coming days, to see what can be done, as always with ideas comes questions.
1. Add a choice for a random easing function. I love random and that's a great candidate for consistent randomization
I think this is best handled by noise/sample hold on the easing shape
input. Then we don't have a proliferation of controls related to when the shape gets randomized, the user works with sample/hold module for that. Maybe a nice pairing with Tyrant!
1. Add a choice for a random easing function. I love random and that's a great candidate for consistent randomization
I think this is best handled by noise/sample hold on the
easing shape
input. Then we don't have a proliferation of controls related to when the shape gets randomized, the user works with sample/hold module for that. Maybe a nice pairing with Tyrant!
I agree with @mattcollier, as this control does not form a core function, and can easily be produced with the addition of a single module only where required.
Initial UI as discussed on discord