Help with note transient sharpener...


    Jun 13 2011 | 4:55 pm
    I am trying to come up with a utility that lets me extract bass lines
    from songs. The plan is to use a filter to turn up the gain on lower
    freqs and remove all the high end, then run it through ~fiddle.
    Then problem is that turning up the bass removes the note definition.
    I would like to have a way to sharpen the transients of the notes
    so that fiddle can detect things better.
    Can someone give me an idea as to how I would go about doing this?

    • Jun 13 2011 | 10:22 pm
      I would try using wave-shaping to introduce harmonic distortion to brighten the sound . If you use chebyshev polynomials to create the transfer function you'll get a 'clean', non-arbitrary distortion. Use 1st order, or a blend of 1st and 2nd order.
      I don't know if there is an external to generate chebyshev polynomials, but if not it wouldn't be hard to implement as a patch.
      hth
      T
    • Jun 13 2011 | 10:27 pm
    • Jun 13 2011 | 11:25 pm
      I don't really need to brighten the sound, I am trying to give
      the transients a steeper slope. In my mind that is some kind of
      dynamic gain scaling.
    • Jun 14 2011 | 1:39 pm
      fiddle~ might not be the best choice for this task, because it looks at harmonics to find the best pitch candidate. Setting "npartials" to a really low number might give better results.
      I would give a try with sigmund~ (which is puckette's successor to fiddle~) instead, which also outputs sinusoidal tracking. Then simply pick the lowest (reasonable) sinusoidal.
      If you want to sharpen your transients anyway (which is always a good thing to have ;) - the technique used by SPL's Transient Designer is amazingly simply (and probably protected by patent).
      There's a short explanation with nice diagram's in Transient Designer's manual (google).
      You need two envelope followers. One with a long attack time and the other with a short attack time. Subtract the slow envelope from the fast envelope and use this as your "dynamic gain". Voila !