Bill Ballard wrote: > At 7:38 PM -0400 8/28/03, Mark Davidson wrote: > >3. If you want to smooth SWs but not put them on a standard curve, you can > >enter them (as in the example SW values I gave) and then adjust your curve to > >smooth them out. > > I'm a little confused here. The "standard curve" you refer to, would > an example of that be one of Stanwood's standard curves? Yes, that's what I meant (are there others?). What I really should have said is you can overlay a smooth curve on your jagged curve while doing adjustments. You don't really "smooth" the jagged one. You just have a nice visual way of doing it. > > What do you mean by "adjust your curve to smooth them out"? The only > way to adjust the curve (ie., alter it) is to change the goal points, > right? This is a visual process where one looks at the raw, jagged > data set and decides intuitively what values #1, 30, 59 and 88 would > need to either smooth that jagged line, or further 2.) insure that > the smoothed value was never 1.0g less than the original raw value. > (Let's be reasonable about how much one can carve off a hammer.) Once > the goal points are set, the curve they yield has to be smooth. Or is > what you're talking about smoothing is the original jagged data set? I meant what you said. You don't really smooth the jagged curve. Just create a smooth curve that is close enough to the jagged one to not keep you awake at night. Try setting up a column that gives abs(jagged-smooth). Then minimize sum of this column by playing with goal points. > > >Note that for "curvier" curves, the note 30 and 59 goals > >may not match the result curve. Endpoints will always be > >exact matches. > > You're correct. However, these must be different Bezier curves than > the ones I'm familiar with from the vector-based draw programs like > Adobe Illustrator and MacroMedia Freehand. Your "goal points" appear > to be their anchor points. The definition of their Bezier curve is > that it will pass through the anchor points. Also, regardless of the > approach which the curve on either side of the anchor point makes, > when each side hits the anchor point, their inclination (slope) is > identical. I played some tricks - see below. > > What, pray tell do you have hidden in cells J2 through J5? <g> > (Gawd, I hate MS Excel. Why can't they manage to include the standard > file command "Revert to Saved"?) Select columns on both sides, right click and "unhide" to see all the gory details. OK. Here's the math: First define "t" function. This is just the note numbers mapped onto the range 0..1, so it's t(note) = (note-1)/87. Normally Bezier functions give you (x,y) as a function of t. I computed only the y value and let x just be the note number. Not strictly speaking a Bezier, but works well enough for this purpose since x values are pretty evenly spaced. If A, B, C, D are your 4 values, then A and D are anchors and B and C are controls. y values are given by this ugly thing: y = (1-t)^3*A+(1-t)^2*t*B+(1-t)^2*t^2*C+t^3*D That's really all you need to create a nice curve. I went one step further and tried to find control values that gave the correct goal values for B and C (i.e. tried to make the curve go through B and C). The way I did this is to do several iterations (setup as repeating columns). For each, I add onto B and C the error from the previous iteration. So if the goal for B is 10 but the curve is at 9.7, then I use B=10.3 for the next try. About 4 or 5 times does a pretty good job for anything that's only modestly curved. I set up the spreadsheet to only show the final column and not all the intermediate ones. -Mark "Math is hard!" -Barbie
This PTG archive page provided courtesy of Moy Piano Service, LLC