[PD] Spectral Shifting

richard duckworth richduckworth at yahoo.com
Sat Apr 3 12:20:35 CEST 2010


Hi Alex, 
been using additive synthesis implemented in pd to create bespoke timbres to fit xenharmonic scales. It has taken a while and is not finished yet as I've had problems with creating polyphonic ad syn instruments though I'm on the right track. I constructed a proof-of-concept model in Csound a few years back, but wanted a system more suited to live performance and on-the-fly tweaking, hence the pd implementation. 
 What I've got so far is a monophonic ad syn instrument w/ control over the pitch and amplitude  of each partial. An extra feature is a separate envelope for each partial to avoid tedium. Ultimately, there will be active, changing control over all of the partials, and a polyphonic version. 
Part of the machine is a scale generating interface triggered by input events such as MIDI. I don't use conversions from MIDI as some do, the pitches are derived from an expression block - it calculates the correct scale steps for the xenharmonic scale. Right now, there are only ET scales in there - if the user wants a 7-tet scale she/he simply places 7 in a number box and the machine does the rest. The timbre for the scale is then derived in the Setharian way - decide which scale steps should be consonant and manipulate the partials to suit your system. By doing the sums, the partial frequencies are arrived at, plugged into the adsyn partial arguments with a massive message box, and a timbre suited to a non-12 tet is the result. It's hit-or-miss, and I've not been able to fully assess the new scale-timbre pairs due to a lack of polyphony. It's coming along though.......   

Rich Duckworth

Lecturer in Music Technology

School of Music

House 5 

Trinity College 

Dublin 2

Ireland





It's the most devastating moment in a young mans life, when he quite reasonably says to himself, "I shall never play The Dane!"

--- On Sat, 3/4/10, pd-list-request at iem.at <pd-list-request at iem.at> wrote:

From: pd-list-request at iem.at <pd-list-request at iem.at>
Subject: Pd-list Digest, Vol 61, Issue 14
To: pd-list at iem.at
Date: Saturday, 3 April, 2010, 10:40

Send Pd-list mailing list submissions to
    pd-list at iem.at

To subscribe or unsubscribe via the World Wide Web, visit
    http://lists.puredata.info/listinfo/pd-list
or, via email, send a message with subject or body 'help' to
    pd-list-request at iem.at

You can reach the person managing the list at
    pd-list-owner at iem.at

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Pd-list digest..."


Today's Topics:

   1. Re: Spectral Shiffting (Jaime Oliver)
   2. Re: Spectral Shiffting (Andrew Faraday)
   3. Re: strange colors with pix_record (Max)
   4. pd~ and DIO errors (tim vets)
   5. Re: pd~ and DIO errors (patrick)
   6. Re: Spectral Shiffting (hard off)
   7. Re: tabread4~ "broken" interpolation algorithm - was Re:, Max
      Smoother Audio than Pd? (Matteo Sisti Sette)


----------------------------------------------------------------------

Message: 1
Date: Fri, 2 Apr 2010 15:08:40 -0700
From: Jaime Oliver <jaime.oliver2 at gmail.com>
Subject: Re: [PD] Spectral Shiffting
To: Alexandre Porres <porres at gmail.com>
Cc: pd-list at iem.at
Message-ID:
    <i2x616283881004021508k5a2751fct46ba5c19e20cb21c at mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

frequency shifting and then pitch shifting by the same amount in hertz will
compress or expand a spectrum around a particular frequency (which could or
could not be the fundamental...)

J

On Fri, Apr 2, 2010 at 1:05 PM, Alexandre Porres <porres at gmail.com> wrote:

> >I know I read the spectral mapping technique he uses,
> >but I didn't really understand how it works.
>
> me neither, guess he didn't really explained it wel...
>
> cheers
>
>
> 2010/4/2 Charles Henry <czhenry at gmail.com>
>
> There's a method of tuning partials that William Sethares uses in his
>> compositionss and he talks about it in his book Tuning Timbre Spectrum
>> Scale.
>>
>> Specifically, he was also using inharmonic instruments which would be
>> arranged into consonant scales, and the similar problem of using
>> arbitrary scales with inharmonic spectra to fit with least dissonance.
>>  I know I read the spectral mapping technique he uses, but I didn't
>> really understand how it works.
>>
>> On Fri, Apr 2, 2010 at 2:38 PM, Alexandre Porres <porres at gmail.com>
>> wrote:
>> > Hi folks,
>> > I'd lke to distort a sound spectrum by transposing partials the way I
>> want.
>> > Like making the spectrum more inharmonic or harmonic.
>> > Anyone done something similar?
>> > What kind of processing should I use?
>> > I was thinking that maybe a Phase Vocoder, where you could control the
>> > frequency separately, huh!?!? Anyone did this by the way?
>> > thanks a lot
>> > Alex
>> > _______________________________________________
>> > Pd-list at iem.at mailing list
>> > UNSUBSCRIBE and account-management ->
>> > http://lists.puredata.info/listinfo/pd-list
>> >
>> >
>>
>
>
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management ->
> http://lists.puredata.info/listinfo/pd-list
>
>


-- 
Jaime E Oliver LR

www.jaimeoliver.pe

858 750 0924 (cel)
858 202 1522 (home)
9168 Regents Rd. Apt. G
La Jolla, CA 92037
USA
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20100402/76c3d366/attachment-0001.htm>

------------------------------

Message: 2
Date: Fri, 2 Apr 2010 23:32:04 +0100
From: Andrew Faraday <jbturgid at hotmail.com>
Subject: Re: [PD] Spectral Shiffting
To: <porres at gmail.com>, <pd-list at iem.at>
Message-ID: <COL120-W480473297F2055A1871B0CDE1C0 at phx.gbl>
Content-Type: text/plain; charset="iso-8859-1"


Hey Alex
I'm not sure if this is what you're after, but have a look in the help browser for:
3.audio.examples/D08.table.spectrum
This is basically a bank of oscillators reading their own specific pitches from a single table. Perhaps use:
FFT to feed the table and [sigmund~] to set the pitch. Orchange the arguments in [spectrum_partial] in [pd oscbank] so you can manipulate the partials more precisely (you could add an inlet or a recieve to control these from somewhere else in your patch). 
Hope this helps.
Andrew
Date: Fri, 2 Apr 2010 15:38:15 -0400
From: porres at gmail.com
To: pd-list at iem.at
Subject: [PD] Spectral Shiffting

Hi folks, 
I'd lke to distort a sound spectrum by transposing partials the way I want. Like making the spectrum more inharmonic or harmonic.
Anyone done something similar?

What kind of processing should I use? 
I was thinking that maybe a Phase Vocoder, where you could control the frequency separately, huh!?!? Anyone did this by the way?

thanks a lotAlex                           
_________________________________________________________________
http://clk.atdmt.com/UKM/go/195013117/direct/01/
We want to hear all your funny, exciting and crazy Hotmail stories. Tell us now
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20100402/c4a1584e/attachment-0001.htm>

------------------------------

Message: 3
Date: Sat, 3 Apr 2010 00:52:58 +0200
From: Max <abonnements at revolwear.com>
Subject: Re: [PD] strange colors with pix_record
To: chris clepper <cgclepper at gmail.com>
Cc: PD list <pd-list at iem.kug.ac.at>
Message-ID: <FDE5A954-E064-459B-BF8B-FCB2B2EA6FA1 at revolwear.com>
Content-Type: text/plain; charset=us-ascii

that version of GEM
GEM: ver: 0.92.2 
GEM: compiled: Jan 20 2010
unfortunately doesn't have a pix_recordQT
 pix_recordQT
... couldn't create

m.

Am 01.04.2010 um 21:25 schrieb chris clepper:

> The Quicktime code being used in recent GEM builds is not the code I wrote, and does not work that well.  Can you try pix_recordQT and see if that loads?  
> 
> 
> On Wed, Mar 31, 2010 at 10:03 AM, Max <abonnements at revolwear.com> wrote:
> Hi List,
> 
> i wonder why i get these strange colors when using pix_record with GEM ver: 0.92.2 compiled: Jan 20 2010 on OS X 10.6.3
> Any Ideas?
> 
> 
> 
> 
> 
> 
> 
> this is grayscale in GEM but instead it is quite blue in the recorded quicktime.
> 
> 
> 
> 
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
> 
> 




------------------------------

Message: 4
Date: Sat, 3 Apr 2010 02:39:54 +0200
From: tim vets <timvets at gmail.com>
Subject: [PD] pd~ and DIO errors
To: pd-list <pd-list at iem.at>
Message-ID:
    <q2ia29740771004021739od28874eepc52d5ac280313d3a at mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

Hi all,
I have a rather heavy patch which causes DIO errors when I switch~ on
several subpatches.
I'm running pd + Jack on a rt kernel (ubuntu-studio Hardy),... Jack shows
little or no Xruns.
Now I wanted to try and optimize the patch by using [pd~].
The way I understood it is that [pd~] will start a subprocess and it will
(automatically ?) divide the audio computation load over multiple
processors.
However, I get the impression that by using [pd~] I get the same (or even
worse) results as with my regular "abstraction / [switch~]" approach; DIO
error crackles.
Any advice very welcome!
Thanks,
Tim
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20100403/90b585d1/attachment-0001.htm>

------------------------------

Message: 5
Date: Fri, 02 Apr 2010 21:13:15 -0400
From: patrick <puredata at 11h11.com>
Subject: Re: [PD] pd~ and DIO errors
To: tim vets <timvets at gmail.com>
Cc: pd-list <pd-list at iem.at>
Message-ID: <4BB6962B.6080008 at 11h11.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

hi tim,

just to be sure, do you use the -rt flag when starting pd? also, try to 
run everything (jack, pd) in root (just to see if the glitches is the 
cause of a limitation).

pat



------------------------------

Message: 6
Date: Sat, 3 Apr 2010 12:15:04 +0900
From: hard off <hard.off at gmail.com>
Subject: Re: [PD] Spectral Shiffting
To: Andrew Faraday <jbturgid at hotmail.com>
Cc: pd-list at iem.at, porres at gmail.com
Message-ID:
    <t2p161320dd1004022015peb988d62xea8192713999829c at mail.gmail.com>
Content-Type: text/plain; charset="iso-8859-1"

here's a frequency shifter that slur posted on the pd forum a little while
ago:

http://puredata.hurleur.com/viewtopic.php?pid=16842#p16842
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20100403/83f29514/attachment-0001.htm>

------------------------------

Message: 7
Date: Sat, 03 Apr 2010 11:40:07 +0200
From: Matteo Sisti Sette <matteosistisette at gmail.com>
Subject: Re: [PD] tabread4~ "broken" interpolation algorithm - was
    Re:, Max     Smoother Audio than Pd?
To: Charles Henry <czhenry at gmail.com>
Cc: pd-list at iem.at
Message-ID: <4BB70CF7.5090309 at gmail.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

Charles Henry escribi?:

> The hardest class I ever had was stochastic analysis (as recent as 4
> years ago), where we solved problems like this.  Fundamentally, it's
> not too hard, but the details of the calculus are tricky.  I'd prefer
> to stay away unless there's a real good reason to do so :)
> 

Well if you want to stay away from stochastic processes and consider the 
signal as a deterministic function, then you'll have to make assumptions 
that make sense for functions.

And a flat spectrum isn't. As you said at the very beginning (almost), 
assuming it has a flat spectrum implies it is a dirac delta.

Finding the interpolator that best interpolates a dirac delta is finding 
the interpolator that best matches the ideal interpolator (the sync), 
hence your result.

Ok, we cannot find an interpolator that is optimum for all classes of 
functions, so we have to choose some class of functions.
Even provided your reasoning about phase was right (so allowing to 
extend the result not only to the delta function but to all function 
with a flat spectrum with whatever phase), I don't think the resulting 
class of function is much more general and much more interesting.

I think people often use a sinusoid to measure the quality of an 
interpolator (e.g. in Miller's book you find tables with the 
signal-to-noise ratio of the interpolator measured on a sinusoid, if i 
remember correctly).
Maybe you could solve the problem of finding the best interpolator for a 
sinusoid.
That would make a lot more sense than the best interpolator for a dirac 
delta. (note that I don't know if the result turns out to be the same)

If you try to solve the problem for a whole "class" of functions of some 
interest, I'm afraid you'll find out it is much (much much much) more 
complicated than dealing with stochastic processes.


Note that I'm not saying that
 >> E=|f(x)-sinc(x)|^2 is minimized when
 >>
 >> f(x)={sinc(x) -2<x<2  ,    0 elsewhere
is a bad choice.
I'm just arguing that your reasoning doesn't prove it is the best choice.

Indeed I think some software use

 >> E=|f(x)-sinc(x)|^2 is minimized when
 >>
 >> f(x)={sinc(x) -N<x<N  ,    0 elsewhere

for some value of N. For infinite N, this would be the perfect 
interpolator, so obviously for large N it is good enough.

The problem is that for N as little as 2, the truncation has 
non-negligible effects on the stop band, so the problem arises, whether 
another signal can reduce the effects of the truncation on the stop 
band, at the cost of some added ripple within the passband.

Now that I think about it, your truncated sync should have perfect-flat 
passband response, and big stopband "ripples" (how do you call the 
stopband ripples? cannot remember the word), so any improvement at 
stopband will have to be traded off with some increased passband ripple.

So here's what the truncated sync is best at: it's the one with the best 
(meaning flattest) bandpass response. Is this correct???



Note however that the highest part of the high frequency noise (due to 
the non-zero stopband part of the interpolator) will cause aliasing when 
resampling. The analysis of passband ripple and stopband "ripple" and 
whatever measure of their trade off doesn't take this into account: it 
just considers the passband ripple as passband distortion, and the 
stopband "ripple" as high-frequency noise. But after resampling part of 
that high frequency noise will be brought back to low frequency in form 
of aliasing. Note that the new Nyquist frequency depends on the 
resampling frequency and is not the same as the original Nyquist 
frequency, so how relevant aliasing is depends on the resampling rate. 
If yoy resample at 1:1 then _all_ high freq noise will become aliasing.
Aliasing is often considered somewhat worse than anything else (correct 
me if I am wrong), I guess because it is specially audible, being 
perceived as something completely unconnected to the original signal.

This last digression is nothing specific to the truncated sync, it is 
just to say that while trading off between passband distortion and 
stopband noise, we have to consider that stopband noise may alias back 
to low frequency and hence it is especially important to avoid it.
Hence an interpolator with strong stopband ripple is likely to need to 
be used in conjunction with oversampling and filtering before 
resampling. By the way when we resample at an unpredictable and varying 
rate (such as using a tabreadWhatever~ with an input signal that is not 
a ramp), oversampling and filtering is not feasible (or is it???)


-- 
Matteo Sisti Sette
matteosistisette at gmail.com
http://www.matteosistisette.com



------------------------------

_______________________________________________
Pd-list mailing list
Pd-list at iem.at
to manage your subscription (including un-subscription) see
http://lists.puredata.info/listinfo/pd-list


End of Pd-list Digest, Vol 61, Issue 14
***************************************
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20100403/8bc86e18/attachment.htm>


More information about the Pd-list mailing list