<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Tahoma
}
--></style>
</head>
<body class='hmmessage'>
<span class="Apple-style-span" style="font-family: Tahoma, Verdana, Arial, sans-serif; color: rgb(42, 42, 42); ">What I would do is use your typical sound playback algorithm, ([phasor~] feeding [tabread~] and relevant arithmetic. But take a side chain from the [phasor~] to another [tabread~] &nbsp;via a [*~ 10000](or whatever length). and draw your pitch curve into an array (with it's length in that [*~] and with a y range of something like 0 - 2). sending the output of the second tabread back to the phasor(which should happily change it's speed sample-by-sample without losing it's position) by a multiply (from your original speed calculation.<div style="line-height: 17px; "><br style="line-height: 17px; "></div><div style="line-height: 17px; ">Something like...</div><div style="line-height: 17px; "><br style="line-height: 17px; "></div><div style="line-height: 17px; ">[O]</div><div style="line-height: 17px; ">&nbsp;|</div><div style="line-height: 17px; ">[arraysize sound]</div><div style="line-height: 17px; ">&nbsp;| &nbsp;\</div><div style="line-height: 17px; ">&nbsp;| &nbsp;[s sample_length]</div><div style="line-height: 17px; ">[expr 44100 / $f1]</div><div style="line-height: 17px; ">&nbsp;|</div><div style="line-height: 17px; ">&nbsp;| &nbsp; &nbsp;[r pitch_curve] &nbsp;</div><div style="line-height: 17px; ">&nbsp;| &nbsp; &nbsp;/</div><div style="line-height: 17px; ">[*~] &nbsp; &nbsp; &nbsp;</div><div style="line-height: 17px; ">&nbsp;|</div><div style="line-height: 17px; ">[phasor~]</div><div style="line-height: 17px; ">&nbsp;| &nbsp; \</div><div style="line-height: 17px; ">&nbsp;| &nbsp; [s phasor]</div><div style="line-height: 17px; ">&nbsp;|</div><div style="line-height: 17px; ">&nbsp;| &nbsp; [r sample_length]</div><div style="line-height: 17px; ">&nbsp;| &nbsp; /</div><div style="line-height: 17px; ">[*~]</div><div style="line-height: 17px; ">&nbsp;|</div><div style="line-height: 17px; ">[tabread~ sample]</div><div style="line-height: 17px; ">&nbsp;| &nbsp; &nbsp;\</div><div style="line-height: 17px; ">[dac~]</div><div style="line-height: 17px; "><br style="line-height: 17px; "></div><div style="line-height: 17px; ">[r phasor]</div><div style="line-height: 17px; ">&nbsp;|&nbsp;</div><div style="line-height: 17px; ">&nbsp;| &nbsp; [O]</div><div style="line-height: 17px; ">&nbsp;| &nbsp; &nbsp;|</div><div style="line-height: 17px; ">&nbsp;| &nbsp; [arraysize pitch]</div><div style="line-height: 17px; ">&nbsp;| &nbsp; /</div><div style="line-height: 17px; ">[*~]</div><div style="line-height: 17px; ">&nbsp;|</div><div style="line-height: 17px; ">[tabread pitch]</div><div style="line-height: 17px; ">&nbsp;|</div><div style="line-height: 17px; ">[s pitch_curve]</div><div style="line-height: 17px; "><br style="line-height: 17px; "></div><div style="line-height: 17px; ">(I've put that together quickly and in the middle of the night, might well have made a mistake or two)</div><div style="line-height: 17px; "><br style="line-height: 17px; "></div><div style="line-height: 17px; ">Of course, while this will change the speed of playback based on the position of playback, it is very difficult to express it as musical pitch differences. setting the scope of your pitch curve to 0 - 2 means that by multiplying it by the 'correct' playback speed you can go down to no movement at all (which will probably stall this sytem) and all the slow speeds related to this and up to twice the original playback speed (one octave above). Which will be good for creative sound, as I say, hard to scale as semiquavers.</div><div style="line-height: 17px; "><br style="line-height: 17px; "></div><div style="line-height: 17px; ">Andrew</div></span><br>&gt; Date: Sat, 12 Feb 2011 00:00:57 +0000<br>&gt; From: morph_2016@yahoo.co.uk<br>&gt; To: pd-list@iem.at<br>&gt; Subject: [PD] Pitch envelope<br>&gt; <br>&gt; So...<br>&gt; <br>&gt; A sample has duration (x)<br>&gt; <br>&gt; A breakpoint envelope has pitch transposition from -60 to +60 semitones.<br>&gt; <br>&gt; How do I work out what that would mean for the duration - i.e. how do I make it <br>&gt; so the whole pitch envelope happen within the duration of the sample?<br>&gt; <br>&gt; I'm not a mathematician, and have been looking at integration, but I can't work <br>&gt; it out. Can anybody help me?<br>&gt; <br>&gt; X<br>&gt; Ed<br>&gt; <br>&gt;  Metastudio 4 for Pure Data - coming soon!<br>&gt; Metastudio 3 still available at http://sharktracks.co.uk/puredata<br>&gt; <br>&gt; <br>&gt; <br>&gt;       <br>&gt; <br>&gt; _______________________________________________<br>&gt; Pd-list@iem.at mailing list<br>&gt; UNSUBSCRIBE and account-management -&gt; http://lists.puredata.info/listinfo/pd-list<br>                                               </body>
</html>