For the past 8 months I’ve been working on a single synthesizer that takes full advantage of what the Striso can do. I’m not nearly as far along as I want to be. In my enthusiasm I hijacked another thread talking about it. So, I’m moving the conversation over here, with a bit of context.
The work to date is in the main
branch of my dyanamic Striso control firmware repository. If there’s interest I’ll see about putting together a compiled release. What’s in main
at any given point in time should be fully playable.
My first work was to spend time improving the amplitude envelope. After months of work I think I’ve finally got it to the point where it’s a matter of twiddling parameters. The envelope rises to an attack based on the highest pressure (z-axis) before the attack is reached. It does not make use of the velocity at this time. Instead what I have works (roughly) like this:
- Initial State is at 0 pressure (what the musician is doing) and 0 amplitude (the sound the instrument is making.
- Attack: The musician has increased the pressure to a nonzero value. The amplitude starts increasing to that value plus a fixed percentage over the pressure at a linear rate. This target will be based on the maximum pressure reached during attack, so should the musician very quickly press down, then back off, it will still be based on their highest pressure.
- Decay: When the attack value has been hit, decay will begin in the same way, now targeting the current pressure.
- Sustain: The amplitude will follow the pressure with a certain degree of delay (this allows for an actual ‘release’ value instead of just going to zero when pressure does).
- Release: If the pressure is ever at 0, then release will begin, descending to 0 at a fixed velocity.
- Quick Release: If, during release, the pressure goes above the amplitude then it will quickly drop to 0, and attack will begin again, allowing for more staccato play.
This basic pattern holds for all playing. The Y axis will vary the results as follows:
- Centered: Play feels fairly similar to how it does with the current normal mode, with a little more attack and a little longer release, there is also just a bit of lag in response time during sustain.
- Pushed Forward: Extremely tight play, there is no lag at any point.
- Pulled Back (think as though you were ‘plucking’ the buttons): This is intended to be more like strumming. Attack is a little slower, and release is MUCH longer.
All of the above is based on constants that can be set in the code. I like where they are now, but I’m not convinced that they’re perfect, just good enough that I’m comfortable moving on to the instruments timbre.
So, that’s my 8 months of work to date. A lot of it was spent picking the right way to solve the problem and the right tooling, then getting good with Faust, and learning as much acoustics & psycho-acoustics as I can… I’m still working on the last two parts.
The rough model I’ve had in my head for the target sound is a violin… mixed with a guitar… mixed with a Yaybahar. In the last case, I’m thinking of using to add richness to Bass notes.
The Striso is a highly responsive instrument, we should use that responsiveness to create the maximum expressiveness imaginable.
To that end, here are a few of my own thoughts:
- At lower frequencies I want to aim for having more complex overtones.
- By corollary, higher frequencies should be more ‘pure’, though perhaps with some element of white noise to keep them from being piercing.
- The kind of timbre we get should be influenced by how hard we press. In addition:
- Because I have an amplitude that follows pressure, how far apart they are will effect timbre.
- The current velocity of pressure will also have effect.
- Obviously Y-Axis will already effect timbre because it will effect distance between pressure & amplitude, but it should also effect it on its own. I’m thinking more complex timbre the to less = forward to back. This will mean the ‘plucking’ will have a less complex sound and make it better for acting as accompaniment.
When I’m reasonably satisfied with the timbre. Then I want to start hitting the Striso.
I’ve already done proof of concept, it’s possible to use jerk(jerk is to acceleration as acceleration is to velocity), to detect if the Striso is being tapped. Tapping on one side will give one kind of drum sound, tapping on another will give another kind. It can detect how hard you’ve tapped, so that can effect amplitude. I think it’s rotation will even be able to give a hint on whether it was tapped close to the center or edge. But all I’ve done is proof of concept, so take a pinch of salt with the lot of it.