On Mon, Jan 12, 2004 at 09:53:26AM -0700, Mike Berry wrote: > GMPI hosts shall provide translation facilities for connections between > plugin controls which share a primary type but differ on secondary > characteristics (such as ramping support). I'm no longer conveinced we even need this requirment at all. If we mandate that hosts allow ramped outputs to send to a non-ramped input, we force every host to insert ramp->point converters. Better, I think (I know I flip-flopped on this a bit), is to assume all real-number inputs are capable of some semblance of ramps. If your input LEGITIMATELY is not capable of ramps, you may want to consider a non-float type, or just handling ramps as points. If you *should* be ramping but aren't, your plugin will just sound worse than it could. What think? As for the case of very long ramps, I've had a read of the AU docs. It works like this: you must send a ramp event each buffer, but they all refer to the same ramp. They use a start-time and a duration. To quote a bit from the CoreAudio docs: For instance, you have a parameter that you wish to ramp from a value of 0.5 to 0.8. You want this ramp to last for 2000 samples, and at the time you want this to start, it should start 400 samples within the current buffer. We'll also assume that we have a render buffer size of 512 samples. This situation would be scheduled like this: startOffset durInFrames startValue endValue First Schedule: 400 2000 0.5 0.8 - 1st buffer Second Schedule: -112 2000 0.5 0.8 - 2nd buffer Third Schedule: -624 2000 0.5 0.8 - 3rd buffer Fourth Schedule: -1136 2000 0.5 0.8 - 4th buffer Fifth Schedule: -1648 2000 0.5 0.8 - 5th (last) The scheduling first indicates where the ramp event should start. The second and consequent schedule events (done before each consequent buffer), indicate with the negative number how far into the ramp we are for the next render cycle. The curve that is applied to a ramped parameter is determined by the Audio Unit itself. This allows the host to just specify the progression of the curve in a linear manner (as described above). If a host wishes to apply a non-linear curve, that can currently be approximated through smaller line segments. This may change in the future with the additions of standard properties to allow an Audio Unit to have particular curves applied to ramped parameter values. It may not be perfect, but it's interesting. ---------------------------------------------------------------------- Generalized Music Plugin Interface (GMPI) public discussion list Participation in this list is contingent upon your abiding by the following rules: Please stay on topic. You are responsible for your own words. Please respect your fellow subscribers. Please do not redistribute anyone else's words without their permission. Archive: //www.freelists.org/archives/gmpi Email gmpi-request@xxxxxxxxxxxxx w/ subject "unsubscribe" to unsubscribe