CSL 5.2

- Main Page
- Related Pages
- Modules
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | Protected Attributes
csl::LineSegment Class Reference

A linearly interpolated segment – this has start and end values, and a duration (in seconds). More...

`#include <Envelope.h>`

Inheritance diagram for csl::LineSegment:

List of all members.

## Public Member Functions
| LineSegment ()
| empty constructor
| LineSegment (float d, float s, float e, LineMode mode=kLine)
| Declare dur in sec, start, stop values.
float | start ()
| Accessors.
float | end ()
| Returns the target value of the line segment.
float | duration ()
| Returns the total time it will take to get from start to end value.
unsigned | currentFrame ()
void | setEnd (float tend)
void | setStart (float tstart)
void | setDuration (unsigned tduration)
| Overloaded to accept either float or unsigned.
void | setDuration (float tduration)
void | setMode (LineMode tmode)
| Sets the interpolation kind (linear or exponential)
void | nextBuffer (Buffer &outputBuffer, unsigned outBufNum) throw (CException)
| next buffer interpolator
virtual void | nextBuffer (Buffer &outputBuffer, unsigned outBufNum, Port *scalePort, Port *offsetPort) throw (CException)
| handy version given Scalable port pointers
void | reset ()
| reset counters
void | trigger ()
void | dump ()
| reset internal time to restart envelope
unsigned | frameRate ()
void | setFrameRate (unsigned rate)
| get/set the receiver's frame rate
virtual unsigned | numChannels ()
void | setNumChannels (unsigned ch)
| get/set the receiver's number of outputs
BufferCopyPolicy | copyPolicy ()
void | setCopyPolicy (BufferCopyPolicy ch)
| get/set the receiver's buffer copy policy
virtual void | nextBuffer (Buffer &outputBuffer) throw (CException)
| get a buffer of Frames – this is the core CSL "pull" function; the given buffer can be written into, and a changed() message is sent.
virtual bool | isFixed ()
| query whether I'm fixed (StaticVariable overrides this)
virtual bool | isActive ()
| query whether I'm currently active (Envelopes can go inactive)
void | addOutput (UnitGenerator *ugen)
| add to or return the UGen vector of outputs
void | removeOutput (UnitGenerator *ugen)
UGenVector | outputs ()
virtual unsigned | numOutputs ()
bool | checkFanOut (Buffer &outputBuffer) throw (CException)
| check for fan-out and copy previous buffer; return true if fanning out
void | handleFanOut (Buffer &outputBuffer) throw (CException)
virtual void | setValue (sample theValue)
| set/get the value (not allowed in the abstract, useful for static values)
virtual sample | value ()
void | attachObserver (Observer *)
| (possibly notify obersvers on my death)
void | detachObserver (Observer *)
void | changed (void *argument)
| this is what I send to myself to notify my observers; It's not overridden in general. It results in the observers receiving update() calls < override evaluate to filter updates to the observer map
virtual int | evaluate (void *argument)

## Protected Member Functions
void | zeroBuffer (Buffer &outputBuffer, unsigned outBufNum)
| utility method to zero out an outputBuffer

## Protected Attributes
float | mStart
| Start value.
float | mEnd
| Ending value.
float | mDuration
| Length of the line segment (IN SECONDS)
LineMode | mMode
| How am I to calculate the values from start to end values of the line.
float | mCurrentValue
| Internal book-keeping.
unsigned | mCurrentFrame
| cache
unsigned | mFrameRate
| trigger ignored here
unsigned | mNumChannels
| my "expected" number of output channels
BufferCopyPolicy | mCopyPolicy
| the policy I use if asked for more or fewer channels
UGenVector | mOutputs
| the vector of my output UGens
unsigned | mNumOutputs
| the number of outputs
Buffer * | mOutputCache
| my past output ring buffer (only used in case of fan-out)
unsigned | mSequence
| the highest-seen buffer seq number

## Detailed Description

A linearly interpolated segment – this has start and end values, and a duration (in seconds).

Definition at line 45 of file Envelope.h.

## Constructor & Destructor Documentation

LineSegment::LineSegment | ( |  | ) |

empty constructor

LineSegment class.

Constructors

Definition at line 19 of file Envelope.cpp.

LineSegment::LineSegment | ( | float | d,
|  | float | s,
|  | float | e,
|  | LineMode | mode = `kLine`
| ) |  |

Declare dur in sec, start, stop values.

Definition at line 22 of file Envelope.cpp.

References kExpon, mEnd, and mStart.

## Member Function Documentation

float csl::LineSegment::start | ( | void |  | ) |
| inline

Accessors.

Returns the initial value of the line segment.

Definition at line 51 of file Envelope.h.

References mStart.

Referenced by csl::Envelope::scaleValues().

float csl::LineSegment::end | ( |  | ) |
| inline

Returns the target value of the line segment.

Definition at line 52 of file Envelope.h.

References mEnd.

Referenced by csl::RandEnvelope::nextSegment(), and csl::Envelope::scaleValues().

float csl::LineSegment::duration | ( |  | ) |
| inline

Returns the total time it will take to get from start to end value.

Definition at line 53 of file Envelope.h.

References mDuration.

Referenced by csl::RandEnvelope::nextSegment(), csl::ADSR::setAttack(), and csl::ADSR::setDelay().

unsigned csl::LineSegment::currentFrame | ( |  | ) |
| inline

Definition at line 54 of file Envelope.h.

References mCurrentFrame.

void csl::LineSegment::setEnd | ( | float | tend | ) |
| inline

Definition at line 56 of file Envelope.h.

References mEnd.

Referenced by csl::RandEnvelope::initSegment(), csl::RandEnvelope::nextSegment(), csl::Envelope::scaleValues(), and csl::ADSR::setSustain().

void csl::LineSegment::setStart | ( | float | tstart | ) |
| inline

Definition at line 57 of file Envelope.h.

References mCurrentValue, and mStart.

Referenced by csl::Envelope::calculateSegments(), csl::RandEnvelope::nextSegment(), and csl::Envelope::scaleValues().

void csl::LineSegment::setDuration | ( | unsigned | tduration | ) |
| inline

Overloaded to accept either float or unsigned.

Definition at line 58 of file Envelope.h.

References mDuration.

Referenced by csl::Envelope::calculateSegments(), and csl::RandEnvelope::nextSegment().

void csl::LineSegment::setDuration | ( | float | tduration | ) |
| inline

Definition at line 59 of file Envelope.h.

References mDuration.

void csl::LineSegment::setMode | ( | LineMode | tmode | ) |
| inline

Sets the interpolation kind (linear or exponential)

Definition at line 60 of file Envelope.h.

References mMode.

void LineSegment::nextBuffer | ( | Buffer & | outputBuffer,
|  | unsigned | outBufNum
| ) |  | throw (CException)
| virtual

next buffer interpolator

Reimplemented from csl::UnitGenerator.

Definition at line 49 of file Envelope.cpp.

void LineSegment::nextBuffer | ( | Buffer & | outputBuffer,
|  | unsigned | outBufNum,
|  | Port * | scalePort,
|  | Port * | offsetPort
| ) |  | throw (CException)
| virtual

handy version given Scalable port pointers

calculate the increment for the linear interpolation, the number of frames to calculate and the number of frames that are constant (at the end of the interpolations)

This test to see if we're at the end works for now, but we should use a bool to check if we are done in case mCurrentFrame loops

< Generate the interpolated frames

< Generate the interpolated frames

< Generate the constant frames

< if we're not already at the end increment my internal counters

Definition at line 53 of file Envelope.cpp.

References CHECK_UPDATE_SCALABLE_CONTROLS, kExpon, kLine, and mFrameRate.

void LineSegment::reset | ( |  | ) |

reset counters

Reset method.

Definition at line 39 of file Envelope.cpp.

References mCurrentFrame, mCurrentValue, and mStart.

Referenced by csl::RandEnvelope::nextSegment(), csl::Envelope::scaleTimes(), and trigger().

void csl::LineSegment::trigger | ( | void |  | ) |
| inline virtual

Reimplemented from csl::UnitGenerator.

Definition at line 68 of file Envelope.h.

References reset().

Referenced by test_SHARC2().

void LineSegment::dump | ( | void |  | ) |
| virtual

reset internal time to restart envelope

Prints to screen the start and end values and the duration of the line.

Reimplemented from csl::UnitGenerator.

Definition at line 44 of file Envelope.cpp.

References kLine, csl::logMsg(), mDuration, mEnd, mMode, and mStart.

Referenced by csl::Envelope::dump(), and testGliss().

unsigned csl::UnitGenerator::frameRate | ( |  | ) |
| inline inherited

Definition at line 225 of file CSL_Core.h.

References csl::UnitGenerator::mFrameRate.

Referenced by csl::CASoundFile::dump(), csl::Abst_SoundFile::dump(), csl::SoundCue::dump(), csl::Filter::init(), csl::SndFileInstrument::playNote(), and csl::SndFileInstrument::playOSC().

void csl::UnitGenerator::setFrameRate | ( | unsigned | rate | ) |
| inline inherited

get/set the receiver's frame rate

Definition at line 226 of file CSL_Core.h.

References csl::UnitGenerator::mFrameRate.

Referenced by m3_header().

virtual unsigned csl::UnitGenerator::numChannels | ( |  | ) |
| inline virtual inherited

Reimplemented in csl::Splitter, and csl::Stereoverb.

Definition at line 228 of file CSL_Core.h.

References csl::UnitGenerator::mNumChannels.

Referenced by csl::AmbisonicMixer::addInput(), csl::BlockResizer::BlockResizer(), csl::Port::checkBuffer(), csl::Effect::Effect(), csl::AmbisonicRotator::initialize(), csl::AmbisonicDecoder::initialize(), m3_output(), csl::Mixer::nextBuffer(), and csl::SpatialSource::SpatialSource().

void csl::UnitGenerator::setNumChannels | ( | unsigned | ch | ) |
| inline inherited

get/set the receiver's number of outputs

Definition at line 229 of file CSL_Core.h.

References csl::UnitGenerator::mNumChannels.

Referenced by csl::BinauralPanner::BinauralPanner(), m3_output(), csl::Spatializer::Spatializer(), csl::VBAP::speakerLayoutChanged(), and csl::VBAP::VBAP().

BufferCopyPolicy csl::UnitGenerator::copyPolicy | ( |  | ) |
| inline inherited

Definition at line 231 of file CSL_Core.h.

References csl::UnitGenerator::mCopyPolicy.

void csl::UnitGenerator::setCopyPolicy | ( | BufferCopyPolicy | ch | ) |
| inline inherited

get/set the receiver's buffer copy policy

Definition at line 232 of file CSL_Core.h.

References csl::UnitGenerator::mCopyPolicy.

Referenced by csl::AmbisonicPanner::AmbisonicPanner(), csl::BinauralPanner::BinauralPanner(), csl::AmbisonicUnitGenerator::initOrder(), csl::Noise::Noise(), csl::PinkNoise::PinkNoise(), csl::Spatializer::Spatializer(), and csl::VBAP::VBAP().

void UnitGenerator::nextBuffer | ( | Buffer & | outputBuffer | ) | throw (CException)
| virtual inherited

get a buffer of Frames – this is the core CSL "pull" function; the given buffer can be written into, and a changed() message is sent.

Reimplemented in csl::Joiner, csl::Splitter, csl::FanOut, csl::SoundCue, csl::Stereoverb, csl::StereoWidth, csl::Abst_SoundFile, csl::NtoMPanner, csl::RemoteStream, csl::LSoundFile, csl::BufferStream, csl::GrainPlayer, csl::Panner, csl::RingBuffer, csl::Instrument, csl::VBAP, csl::IFFT, csl::SpatialSource, csl::BinauralPanner, csl::InOut, csl::Spatializer, csl::Mixer, csl::SpatialPanner, csl::DecodedFile, csl::RingBufferTap, csl::AmbisonicPanner, csl::BlockResizer, csl::FFT, csl::DelayLine, csl::SimplePanner, csl::SimplePanner, and csl::Microphone.

Definition at line 576 of file CSL_Core.cpp.

References csl::kCopy, csl::kExpand, csl::kIgnore, csl::logMsg(), and memcpy().

Referenced by csl::DistanceSimulator::nextBuffer(), csl::RingBufferTap::nextBuffer(), csl::Mixer::nextBuffer(), csl::AmbisonicMixer::nextBuffer(), csl::SpatialSource::nextBuffer(), csl::BufferStream::nextBuffer(), csl::Controllable::pullInput(), csl::PAIO::test(), and csl::FileIO::writeNextBuffer().

virtual bool csl::UnitGenerator::isFixed | ( |  | ) |
| inline virtual inherited

query whether I'm fixed (StaticVariable overrides this)

Reimplemented in csl::StaticVariable, and csl::BinaryOp.

Definition at line 247 of file CSL_Core.h.

virtual bool csl::UnitGenerator::isActive | ( |  | ) |
| inline virtual inherited

query whether I'm currently active (Envelopes can go inactive)

Reimplemented in csl::Joiner, csl::Effect, csl::RandEnvelope, csl::SoundCue, csl::Stereoverb, csl::Abst_SoundFile, csl::Envelope, csl::Instrument, csl::Mixer, and csl::KarplusString.

Definition at line 249 of file CSL_Core.h.

Referenced by csl::Instrument::isActive(), csl::Port::isActive(), csl::Mixer::nextBuffer(), csl::BinauralPanner::nextBuffer(), csl::AmbisonicMixer::nextBuffer(), and csl::VBAP::nextBuffer().

void UnitGenerator::addOutput | ( | UnitGenerator * | ugen | ) |
| inherited

add to or return the UGen vector of outputs

Definition at line 520 of file CSL_Core.cpp.

References csl::Buffer::allocateBuffers(), csl::CGestalt::maxBufferFrames(), csl::UnitGenerator::mNumOutputs, csl::UnitGenerator::mOutputCache, and csl::UnitGenerator::mOutputs.

Referenced by csl::Mixer::addInput(), csl::Controllable::addInput(), csl::AmbisonicRotator::initialize(), csl::AmbisonicDecoder::initialize(), csl::AmbisonicEncoder::setInput(), and csl::IO::setRoot().

void UnitGenerator::removeOutput | ( | UnitGenerator * | ugen | ) |
| inherited

Definition at line 530 of file CSL_Core.cpp.

References csl::UnitGenerator::mNumOutputs, and csl::UnitGenerator::mOutputs.

Referenced by csl::IO::clearRoot(), csl::AmbisonicEncoder::setInput(), csl::AmbisonicDecoder::~AmbisonicDecoder(), and csl::AmbisonicRotator::~AmbisonicRotator().

UGenVector csl::UnitGenerator::outputs | ( |  | ) |
| inline inherited

Definition at line 253 of file CSL_Core.h.

References csl::UnitGenerator::mOutputs.

virtual unsigned csl::UnitGenerator::numOutputs | ( |  | ) |
| inline virtual inherited

Definition at line 254 of file CSL_Core.h.

References csl::UnitGenerator::mNumOutputs.

bool UnitGenerator::checkFanOut | ( | Buffer & | outputBuffer | ) | throw (CException)
| inherited

check for fan-out and copy previous buffer; return true if fanning out

Definition at line 549 of file CSL_Core.cpp.

void UnitGenerator::handleFanOut | ( | Buffer & | outputBuffer | ) | throw (CException)
| inherited

Definition at line 563 of file CSL_Core.cpp.

References csl_max.

virtual void csl::UnitGenerator::setValue | ( | sample | theValue | ) |
| inline virtual inherited

set/get the value (not allowed in the abstract, useful for static values)

Reimplemented in csl::DynamicVariable, and csl::StaticVariable.

Definition at line 260 of file CSL_Core.h.

virtual sample csl::UnitGenerator::value | ( |  | ) |
| inline virtual inherited

Reimplemented in csl::StaticVariable.

Definition at line 261 of file CSL_Core.h.

void UnitGenerator::zeroBuffer | ( | Buffer & | outputBuffer,
|  | unsigned | outBufNum
| ) |  |
| protected inherited

utility method to zero out an outputBuffer

Definition at line 513 of file CSL_Core.cpp.

References csl::Buffer::mMonoBufferByteSize, and csl::Buffer::monoBuffer().

void Model::attachObserver | ( | Observer * | o | ) |
| inherited

(possibly notify obersvers on my death)

register/remove observers

Definition at line 491 of file CGestalt.cpp.

References csl::logMsg(), csl::Observer::mKey, and csl::Observer::mPeriod.

Referenced by csl::SpatialPanner::setSpeakerLayout().

void Model::detachObserver | ( | Observer * | o | ) |
| inherited

Definition at line 507 of file CGestalt.cpp.

References csl::logMsg().

Referenced by csl::SpatialPanner::setSpeakerLayout(), and csl::SpatialPanner::~SpatialPanner().

void Model::changed | ( | void * | argument | ) |
| inherited

this is what I send to myself to notify my observers; It's not overridden in general. It results in the observers receiving update() calls < override evaluate to filter updates to the observer map

Definition at line 529 of file CGestalt.cpp.

References csl::logMsg().

Referenced by csl::SpeakerLayout::addSpeaker(), csl::MIDIIn::handleIncomingMidiMessage(), and csl::SpeakerLayout::setDefaultSpeakerLayout().

virtual int csl::Model::evaluate | ( | void * | argument | ) |
| inline virtual inherited

Reimplemented in csl::MIDIIn.

Definition at line 259 of file CGestalt.h.

## Member Data Documentation

float csl::LineSegment::mStart
| protected

Start value.

Definition at line 72 of file Envelope.h.

Referenced by dump(), LineSegment(), reset(), setStart(), and start().

float csl::LineSegment::mEnd
| protected

Ending value.

Definition at line 73 of file Envelope.h.

Referenced by dump(), end(), LineSegment(), and setEnd().

float csl::LineSegment::mDuration
| protected

Length of the line segment (IN SECONDS)

Definition at line 74 of file Envelope.h.

Referenced by dump(), duration(), and setDuration().

LineMode csl::LineSegment::mMode
| protected

How am I to calculate the values from start to end values of the line.

Definition at line 75 of file Envelope.h.

Referenced by dump(), and setMode().

float csl::LineSegment::mCurrentValue
| protected

Internal book-keeping.

Definition at line 76 of file Envelope.h.

Referenced by reset(), and setStart().

unsigned csl::LineSegment::mCurrentFrame
| protected

cache

Definition at line 77 of file Envelope.h.

Referenced by currentFrame(), and reset().

unsigned csl::UnitGenerator::mFrameRate
| protected inherited

trigger ignored here

the frame rate – initialized to be the default by the constructor

Definition at line 264 of file CSL_Core.h.

Referenced by csl::Abst_SoundFile::convertRate(), csl::RtpSender::createRtpSession(), csl::RtpReceiver::createRtpSession(), csl::Lorenz::dump(), csl::Abst_SoundFile::durationInSecs(), csl::UnitGenerator::frameRate(), csl::Filter::init(), csl::CASoundFile::initFromSndfile(), csl::JSoundFile::initFromSndfile(), csl::LSoundFile::initFromSndfile(), csl::RandEnvelope::nextSegment(), csl::SquareBL::nextWaveInto(), csl::SumOfSines::nextWaveInto(), csl::CASoundFile::openForRead(), csl::MP3File::openForRead(), csl::DelayLine::setDelayTime(), csl::UnitGenerator::setFrameRate(), csl::Abst_SoundFile::setStartSec(), csl::Abst_SoundFile::setStopSec(), csl::Butter::setupCoeffs(), csl::Formant::setupCoeffs(), csl::Notch::setupCoeffs(), csl::Moog::setupCoeffs(), and csl::DecodedFile::writeBuffer().

unsigned csl::UnitGenerator::mNumChannels
| protected inherited

my "expected" number of output channels

Definition at line 268 of file CSL_Core.h.

Referenced by csl::AmbisonicMixer::addInput(), csl::Mixer::allocateOpBuffer(), csl::AmbisonicDecoder::asProjection(), csl::AmbisonicDecoder::asPseudoInverse(), csl::BlockResizer::BlockResizer(), csl::Abst_SoundFile::channels(), csl::Abst_SoundFile::checkBuffer(), csl::DecodedFile::checkBufferStack(), csl::FMInstrument::FMInstrument(), csl::GrainPlayer::GrainPlayer(), csl::AdditiveInstrument::init(), csl::JSoundFile::initFromSndfile(), csl::LSoundFile::initFromSndfile(), csl::AmbisonicMixer::initialize(), csl::SndFileInstrument::initialize(), csl::AmbisonicRotator::initialize(), csl::AmbisonicEncoder::initialize(), csl::AmbisonicDecoder::initialize(), csl::AmbisonicUnitGenerator::initOrder(), csl::RemoteStream::initPacket(), csl::Joiner::isActive(), csl::AmbisonicDecoder::makeInPhase(), csl::AmbisonicDecoder::makeMaxRE(), csl::DecodedFile::mergeBuffers(), csl::Abst_SoundFile::mergeToMono(), csl::Mixer::Mixer(), csl::UnitGenerator::numChannels(), csl::CASoundFile::openForRead(), csl::MP3File::openForRead(), csl::Panner::Panner(), csl::CASoundFile::readBufferFromFile(), csl::JSoundFile::readBufferFromFile(), csl::LSoundFile::readBufferFromFile(), csl::RemoteStream::RemoteStream(), csl::UnitGenerator::setNumChannels(), csl::WavetableOscillator::setWaveform(), csl::Joiner::trigger(), csl::DecodedFile::writeBuffer(), and csl::AmbisonicRotator::~AmbisonicRotator().

BufferCopyPolicy csl::UnitGenerator::mCopyPolicy
| protected inherited

the policy I use if asked for more or fewer channels

Definition at line 269 of file CSL_Core.h.

Referenced by csl::UnitGenerator::copyPolicy(), and csl::UnitGenerator::setCopyPolicy().

UGenVector csl::UnitGenerator::mOutputs
| protected inherited

the vector of my output UGens

Definition at line 270 of file CSL_Core.h.

Referenced by csl::UnitGenerator::addOutput(), csl::UnitGenerator::dump(), csl::UnitGenerator::outputs(), and csl::UnitGenerator::removeOutput().

unsigned csl::UnitGenerator::mNumOutputs
| protected inherited

the number of outputs

Definition at line 271 of file CSL_Core.h.

Referenced by csl::UnitGenerator::addOutput(), csl::UnitGenerator::numOutputs(), and csl::UnitGenerator::removeOutput().

Buffer* csl::UnitGenerator::mOutputCache
| protected inherited

my past output ring buffer (only used in case of fan-out)

Definition at line 272 of file CSL_Core.h.

Referenced by csl::UnitGenerator::addOutput().

unsigned csl::UnitGenerator::mSequence
| protected inherited

the highest-seen buffer seq number

Definition at line 273 of file CSL_Core.h.

The documentation for this class was generated from the following files:

- CSL/Sources/Envelope.h
- CSL/Sources/Envelope.cpp