Your favourite synths (not iPad)?

It’s always nice to find someone else interested in the same problem. First, here’s my repo, with a second pair of eyes I’ll have to start thinking on branching instead of just living on main. Pull requests are welcome, but since I have my own vison, forks are also welcome. grin

That being said, I think we’re of like mind in the generalities. My first work was to spend time improving the 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 works similarly to how you surmised the original does, but I ignore the midi velocity value entirely. Instead what I have works (roughly) like this:

  1. Initial State is at 0 pressure (what the musician is doing) and 0 amplitude (the sound the instrument is making.
  2. 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.
  3. Decay: When the attack value has been hit, decay will begin in the same way, now targeting the current pressure.
  4. 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).
  5. Release: If the pressure is ever at 0, then release will begin, descending to 0 at a fixed velocity.
  6. 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 & psychoacoustics 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 think I’m going for the same thing you are in your Bass notes.

While the specifics of our lines of thoughts/inspiration are some what different. I think the essence is the same. 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:

  • I agree, at lower frequencies we want to aim for having more complex overtones.
    • By corollary, higher frequencies should be more ‘pure’
  • Absolutely 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.

So, that’s where I am today. I’d love your feedback on the work so far. I’m open to tweaking the values on the ADSR and how strong the attack is.

-Frank

2 Likes