Transposing while keeping formants


    Oct 23 2006 | 11:27 am
    Hello,
    I would like to build a so-called "formant-preserving" transposition
    patch.
    However, I am not sure about the methodology. Is the following
    procedure correct ?
    1. FFT analysis (pfft~ + fftin~)
    2. Extraction of the original spectral envelope.
    3. Removal of the original spectral envelope.
    4. Transposition of the sound whose spectral envelope has been removed.
    5. Application of the original spectral envelope to the transposed
    sound (convolution)
    6. FFT resynthesis (fftout~)
    I am mostly dubious about step 3. To remove the original envelope,
    should I apply some kind of super-amplification and clipping so to
    raise all the non-zero partials to the maximum magnitude? But it leads
    to the question : how can one calculate the maximum possible magnitude
    according to the FFT window size and window step?
    Also, about step 2 : can I consider cartopol~'s left output as a
    spectral envelope or should I apply some kind of smoothing (with
    rampsmooth~ for instance)?
    Roald Baudoux
    --------------------------------
    Next event : Graph?mes, an installation created with the plastic artist
    Michel Cleempoel during the AVXL festival - at the Gn?thi Seauton
    bookshop, 347 Ch?e d'Ixelles 1050 Ixelles/Bruxelles - from 11/16/06 to
    12/02/06
    --------------------------------
    Composer of electroacoustic art (acousmatic music, sound installations,
    live electronics).
    Junior Lecturer for the Royal Conservatory of Music (Mons, Belgium).
    Journalist for "Les Cahiers de l'ACME-Audio Pro", Brussels.
    (http://www.cahiersacme.com)
    --------------------------------
    Tel/fax: +32.(0)2.503.23.46
    Mobile: +32.(0)497.32.38.13
    VoIP : Skype - nesdnuma

    • Oct 23 2006 | 12:07 pm
      Have a look at guizmo~ or psych~ if you are using "voiced" sounds.
      best,
      O0o./
    • Oct 23 2006 | 12:21 pm
      cepstrum "method" :
    • Oct 23 2006 | 1:02 pm
      Sorry to be thick, but I do not understand there...
      Is there a white paper somewhere I can read to understand the process?
      pa
      Le 23 oct. 06 ? 13:21, olivier pasquet a ?crit :
      > cepstrum "method" :
      >
      > #P window setfont "Sans Serif" 9.;
      > #P window linecount 1;
      > #P newex 164 52 97 196617 fftin~ 1;
      > #P newex 164 210 81 196617 ifft~ 256 256 0;
      > #P newex 164 128 78 196617 fft~ 256 256 0;
      > #P newex 164 233 81 196617 pow~ 2.718282;
      > #P newex 164 102 29 196617 log~;
      > #P newex 164 78 53 196617 cartopol~;
      > #P connect 3 1 4 1;
      > #P connect 3 0 4 0;
      > #P connect 5 1 0 1;
      > #P connect 5 0 0 0;
      > #P connect 0 0 1 0;
      > #P connect 1 0 3 0;
      > #P connect 4 0 2 0;
      > _______________________________________________
      > maxmsp mailing list
      > maxmsp@cycling74.com
    • Oct 23 2006 | 1:09 pm
      Hello Olivier,
      I am not sure to understand which part of the problem your patch is
      solving.
      Also, the iifft~ following the fft~ without any other object in between
      is weird...
      Could you please comment a little bit?
      Thanks.
      Roald Baudoux
      Le 23-oct.-06, ? 14:21, olivier pasquet a ?crit :
      > cepstrum "method" :
      >
      > #P window setfont "Sans Serif" 9.;
      > #P window linecount 1;
      > #P newex 164 52 97 196617 fftin~ 1;
      > #P newex 164 210 81 196617 ifft~ 256 256 0;
      > #P newex 164 128 78 196617 fft~ 256 256 0;
      > #P newex 164 233 81 196617 pow~ 2.718282;
      > #P newex 164 102 29 196617 log~;
      > #P newex 164 78 53 196617 cartopol~;
      > #P connect 3 1 4 1;
      > #P connect 3 0 4 0;
      > #P connect 5 1 0 1;
      > #P connect 5 0 0 0;
      > #P connect 0 0 1 0;
      > #P connect 1 0 3 0;
      > #P connect 4 0 2 0;
      > _______________________________________________
      > maxmsp mailing list
      > maxmsp@cycling74.com
      > http://www.cycling74.com/mailman/listinfo/maxmsp
      >
      >
      Roald Baudoux
      --------------------------------
      Prochain ?v?nement : installation Graph?mes cr??e en collaboration avec
      le plasticien Michel Cleempoel dans le cadre du festival AVXL - ? la
      librairie Gn?thi Seauton, 347 Ch?e d'Ixelles 1050 Ixelles/Bruxelles -
      du 16 novembre au 3 d?cembre 2006
      --------------------------------
      Compositeur de musique ?lectroacoustique acousmatique et cr?ateur
      d'installations sonores.
      (http://robaublog.canalblog.com/)
      -
      Charg? de cours et assistant aupr?s de la section des musiques
      ?lectroacoustiques du Conservatoire Royal de Mons.
      (http://homeusers.brutele.be/rdbx/
      Depliant_section_EA_Mons_juin_2005.pdf)
      -
      Journaliste et r?dacteur pour le magazine "Les Cahiers de l'ACME-Audio
      Pro".
      (http://www.cahiersacme.com)
      --------------------------------
      T?l/fax: +32.(0)2.503.23.46
      Mobile: +32.(0)497.32.38.13
      VoIP : Skype - nesdnuma
    • Oct 23 2006 | 1:17 pm
      [gizmo~] might give you what you want.
      The enormous amount of undocumented functions (means, they could change in
      next version of MSP) should enable that. Find the functions with
      option-shift-right click on the object, as usual.
      See this patch that someone posted once on the list (I can't access the
      archives right now):
      By the way, did you know gizmo~ does also freqshift? And this is documented
      (see MSP Reference).
      Jean-Fran?ois.
    • Oct 23 2006 | 1:54 pm
      Yeah, the famous fft of the fft.
      That gives the cepstrum coefficients.
      And among them, you will have to retain only the first coefficients of each
      fft frame. Because the first coefficients are those describing the spectral
      envelope.
      Right?
      Please don't rely on me, I'm just guessing!
      Yes, a comment with the patch would be more than welcome. Even more helpful
      would be to have the "end" of the patch, after pow~, that will take only the
      meaningful coefficients and draw the real-time spectrum envelope.
      Jean-Fran?ois.
      At 10/23/06 8:21 AM, you wrote?:
      > cepstrum "method" :
    • Jan 03 2007 | 5:36 pm
      This fragment appears to be incomplete. Max produces nothing when making a
      patch from the clipboard.
      On 10/23/06 8:21 AM, "olivier pasquet" wrote:
      > cepstrum "method" :
      >
      >
      Cheers
      Gary Lee Nelson
      Oberlin College
      www.timara.oberlin.edu/GaryLeeNelson
    • Jan 06 2007 | 8:36 pm
      I've looked online for the 2002 ICMC Proceedings mentioned in the gizmo~ help but can't really spare the $111 to purchase it. Does anyone have a description of these undocumented functions (or know of documentation)? Playing with them in the patch helps a little but some don't seem to do anything I can actually hear, and my knowledge of ye olde fft is not sophisticated enough to extrapolate meaning from the messages themselves. Any help or link to a copy of those 4 pages would be greatly appreciated!
      Quote: jeanfrancois.charles wrote on Mon, 23 October 2006 06:17
      ----------------------------------------------------
      > [gizmo~] might give you what you want.
      >
      > The enormous amount of undocumented functions (means, they could change in
      > next version of MSP) should enable that. Find the functions with
      > option-shift-right click on the object, as usual.
      > See this patch that someone posted once on the list (I can't access the
      > archives right now):
      >
      *patch omitted from quote*
      > Jean-Fran?ois.
      >
      >
      ----------------------------------------------------
    • Jan 08 2007 | 7:09 am
    • Jan 08 2007 | 4:09 pm
      mindwarp~ in the FFTease collection does formant adjustment. You could transpose up with gizmo~ and then push the formants back down with mindwarp~.
      Eric
    • Apr 09 2015 | 9:32 am
      Hello,
      The object mindwarp~ is not available anymore at that website that Eric posted.
      Is there a new version of it? Or do you know any alternative?
      Cheers,
      Sabina
    • Apr 09 2015 | 4:56 pm
    • Apr 10 2015 | 9:17 am
      Thank you!
    • Apr 10 2015 | 10:26 am
      I installed the collection of FFTease objects in both Max 6.1.9 and Max 7.
      Even when Max recognizes that the objects are installed, they show up grey on the patch. Like if they were not installed. So, I am wondering if these objects should be installed in a previous Max version.
      Any specifications are given on their web site.
      Anyone knows if these objects can run on Max 6 or 7? or Which Max version would be the best for them?
      Cheers,
      Sabina
    • Apr 10 2015 | 10:48 am
      Hi !
      those are 32bits only :/ u will have to install 32bit version of max .
    • Apr 10 2015 | 10:57 am
      Oh yes! That was it. Now it works