Csound Csound-dev Csound-tekno Search About

Morphing and more

Date1997-03-04 03:43
FromGraeme Gerrard
SubjectMorphing and more
Morphing

Given 2 soundfiles, S1 and S2.  There is a unique transformation function 
, T, such that
          S1 x T = S2          (1)
T can simply be derived:
          T = S2 / S1
This means that any soundfile can be converted to any other soundfile.
Given an appropriate T function The Black Dog's "Spanners" can be 
converted into Stravinsky's "Requiem Canticles" using a process of 
multplication. (Copyrighters could go crazy on this one).

There must be a function, Tm ,that will create a soundfile Sm, that is 
part way between S2 and S3. So, if
              S1 x T1 = S2, and 
              S1 x T2 = S3
maybe Tm = (k x T1) + ( (1-k) x T2). So
              S1 x Tm = Sm
If k was a linear function between 0 and 1, then we would have a morph 
right?

I implemented this a few years ago, in Csound and in C.  Turns out that 
the resultant "morph" is just a straight mix of the 2 soundfiles :-(

I hoped that by fiddling with Tm (or substituting S1) I could create new 
soundfile variants.  It turns out that T is VERY sensitive to 
modifications - you can easily get samples wildly out of range or a lot 
of noise.

Any comments?  A mathematically literate friend has told me that in (1) 
the spectrum of S2 is the convolution of the spectra of S1 and T.

Practical or not, transformationists may enjoy the knowledge that any 
sound can be derived or converted into any other.  And you don't even 
have to hear that to appreciate the elegance.

Date1997-03-04 19:54
FromEli Brandt
SubjectRe: Morphing and more
Graeme Gerrard wrote:
> Given 2 soundfiles, S1 and S2.  There is a unique transformation function,
> T, such that
>           S1 x T = S2          (1)
> T can simply be derived:
>           T = S2 / S1
[* * *]
> It turns out that T is VERY sensitive to modifications - you can
> easily get samples wildly out of range or a lot of noise.

Alternatively, define the transformation function T' such that
        S1 + T' = S2
Then
        T' = S2 - S1

This should help with the stability problem.

-- 
   Eli Brandt
   eli+@cs.cmu.edu
(deadpan is hard in ASCII)