The Synthesis ToolKit in C++ (STK)

Home Information Classes Download Usage Mail List Requirements Links FAQ Tutorial

# stk::StkFrames Class Reference

An STK class to handle vectorized audio data. More...

`#include <Stk.h>`

List of all members.

## Public Member Functions
| StkFrames (unsigned int nFrames=0, unsigned int nChannels=0)
| The default constructor initializes the frame data structure to size zero.
| StkFrames (const StkFloat &value, unsigned int nFrames, unsigned int nChannels)
| Overloaded constructor that initializes the frame data to the specified size with `value`.
| ~StkFrames ()
| The destructor.
StkFloat & | operator[] (size_t n)
| Subscript operator that returns a reference to element `n` of self.
StkFloat | operator[] (size_t n) const
| Subscript operator that returns the value at element `n` of self.
void | operator+= (StkFrames &f)
| Assignment by sum operator into self.
void | operator*= (StkFrames &f)
| Assignment by product operator into self.
StkFloat & | operator() (size_t frame, unsigned int channel)
| Channel / frame subscript operator that returns a reference.
StkFloat | operator() (size_t frame, unsigned int channel) const
| Channel / frame subscript operator that returns a value.
StkFloat | interpolate (StkFloat frame, unsigned int channel=0) const
| Return an interpolated value at the fractional frame index and channel.
size_t | size () const
| Returns the total number of audio samples represented by the object.
bool | empty () const
| Returns true if the object size is zero and false otherwise.
void | resize (size_t nFrames, unsigned int nChannels=1)
| Resize self to represent the specified number of channels and frames.
void | resize (size_t nFrames, unsigned int nChannels, StkFloat value)
| Resize self to represent the specified number of channels and frames and perform element initialization.
unsigned int | channels (void) const
| Return the number of channels represented by the data.
unsigned int | frames (void) const
| Return the number of sample frames represented by the data.
void | setDataRate (StkFloat rate)
| Set the sample rate associated with the StkFrames data.
StkFloat | dataRate (void) const
| Return the sample rate associated with the StkFrames data.

## Detailed Description

An STK class to handle vectorized audio data.

This class can hold single- or multi-channel audio data. The data type is always StkFloat and the channel format is always interleaved. In an effort to maintain efficiency, no out-of-bounds checks are performed in this class unless _STK_DEBUG_ is defined.

Internally, the data is stored in a one-dimensional C array. An indexing operator is available to set and retrieve data values. Alternately, one can use pointers to access the data, using the index operator to get an address for a particular location in the data:

StkFloat* ptr = &myStkFrames[0];

Note that this class can also be used as a table with interpolating lookup.

Possible future improvements in this class could include functions to convert to and return other data types.

by Perry R. Cook and Gary P. Scavone, 1995-2012.

## Member Function Documentation

StkFloat & stk::StkFrames::operator[] | ( | size_t | n | ) | `[inline]`

Subscript operator that returns a reference to element `n` of self.

The result can be used as an lvalue. This reference is valid until the resize function is called or the array is destroyed. The index `n` must be between 0 and size less one. No range checking is performed unless _STK_DEBUG_ is defined.

    00413 {
    00414 #if defined(_STK_DEBUG_)
    00415   if ( n >= size_ ) {
    00416     std::ostringstream error;
    00417     error << "StkFrames::operator[]: invalid index (" << n << ") value!";
    00418     Stk::handleError( error.str(), StkError::MEMORY_ACCESS );
    00419   }
    00420 #endif
    00421
    00422   return data_[n];
    00423 }

StkFloat stk::StkFrames::operator[] | ( | size_t | n | ) | const`[inline]`

Subscript operator that returns the value at element `n` of self.

The index `n` must be between 0 and size less one. No range checking is performed unless _STK_DEBUG_ is defined.

    00426 {
    00427 #if defined(_STK_DEBUG_)
    00428   if ( n >= size_ ) {
    00429     std::ostringstream error;
    00430     error << "StkFrames::operator[]: invalid index (" << n << ") value!";
    00431     Stk::handleError( error.str(), StkError::MEMORY_ACCESS );
    00432   }
    00433 #endif
    00434
    00435   return data_[n];
    00436 }

void stk::StkFrames::operator+= | ( | StkFrames & | f | ) | `[inline]`

Assignment by sum operator into self.

The dimensions of the argument are expected to be the same as self. No range checking is performed unless _STK_DEBUG_ is defined.

    00465 {
    00466 #if defined(_STK_DEBUG_)
    00467   if ( f.frames() != nFrames_ || f.channels() != nChannels_ ) {
    00468     std::ostringstream error;
    00469     error << "StkFrames::operator+=: frames argument must be of equal dimensions!";
    00470     Stk::handleError( error.str(), StkError::MEMORY_ACCESS );
    00471   }
    00472 #endif
    00473
    00474   StkFloat *fptr = &f[0];
    00475   StkFloat *dptr = data_;
    00476   for ( unsigned int i=0; i<size_; i++ )
    00477     *dptr++ += *fptr++;
    00478 }

void stk::StkFrames::operator*= | ( | StkFrames & | f | ) | `[inline]`

Assignment by product operator into self.

The dimensions of the argument are expected to be the same as self. No range checking is performed unless _STK_DEBUG_ is defined.

    00481 {
    00482 #if defined(_STK_DEBUG_)
    00483   if ( f.frames() != nFrames_ || f.channels() != nChannels_ ) {
    00484     std::ostringstream error;
    00485     error << "StkFrames::operator*=: frames argument must be of equal dimensions!";
    00486     Stk::handleError( error.str(), StkError::MEMORY_ACCESS );
    00487   }
    00488 #endif
    00489
    00490   StkFloat *fptr = &f[0];
    00491   StkFloat *dptr = data_;
    00492   for ( unsigned int i=0; i<size_; i++ )
    00493     *dptr++ *= *fptr++;
    00494 }

StkFloat & stk::StkFrames::operator() | ( | size_t | frame,
|  | unsigned int | channel |
| ) |  |  | `[inline]`

Channel / frame subscript operator that returns a reference.

The result can be used as an lvalue. This reference is valid until the resize function is called or the array is destroyed. The `frame` index must be between 0 and frames() - 1. The `channel` index must be between 0 and channels() - 1. No range checking is performed unless _STK_DEBUG_ is defined.

    00439 {
    00440 #if defined(_STK_DEBUG_)
    00441   if ( frame >= nFrames_ || channel >= nChannels_ ) {
    00442     std::ostringstream error;
    00443     error << "StkFrames::operator(): invalid frame (" << frame << ") or channel (" << channel << ") value!";
    00444     Stk::handleError( error.str(), StkError::MEMORY_ACCESS );
    00445   }
    00446 #endif
    00447
    00448   return data_[ frame * nChannels_ + channel ];
    00449 }

StkFloat stk::StkFrames::operator() | ( | size_t | frame,
|  | unsigned int | channel |
| ) |  |  | const`[inline]`

Channel / frame subscript operator that returns a value.

The `frame` index must be between 0 and frames() - 1. The `channel` index must be between 0 and channels() - 1. No range checking is performed unless _STK_DEBUG_ is defined.

    00452 {
    00453 #if defined(_STK_DEBUG_)
    00454   if ( frame >= nFrames_ || channel >= nChannels_ ) {
    00455     std::ostringstream error;
    00456     error << "StkFrames::operator(): invalid frame (" << frame << ") or channel (" << channel << ") value!";
    00457     Stk::handleError( error.str(), StkError::MEMORY_ACCESS );
    00458   }
    00459 #endif
    00460
    00461   return data_[ frame * nChannels_ + channel ];
    00462 }

StkFloat stk::StkFrames::interpolate | ( | StkFloat | frame,
|  | unsigned int | channel = `0` |
| ) |  |  | const

Return an interpolated value at the fractional frame index and channel.

This function performs linear interpolation. The `frame` index must be between 0.0 and frames() - 1. The `channel` index must be between 0 and channels() - 1. No range checking is performed unless _STK_DEBUG_ is defined.

void stk::StkFrames::resize | ( | size_t | nFrames,
|  | unsigned int | nChannels = `1` |
| ) |  |  |

Resize self to represent the specified number of channels and frames.

Changes the size of self based on the number of frames and channels. No element assignment is performed. No memory deallocation occurs if the new size is smaller than the previous size. Further, no new memory is allocated when the new size is smaller or equal to a previously allocated size.

void stk::StkFrames::resize | ( | size_t | nFrames,
|  | unsigned int | nChannels,
|  | StkFloat | value |
| ) |  |  |

Resize self to represent the specified number of channels and frames and perform element initialization.

Changes the size of self based on the number of frames and channels, and assigns `value` to every element. No memory deallocation occurs if the new size is smaller than the previous size. Further, no new memory is allocated when the new size is smaller or equal to a previously allocated size.

void stk::StkFrames::setDataRate | ( | StkFloat | rate | ) | `[inline]`

Set the sample rate associated with the StkFrames data.

By default, this value is set equal to the current STK sample rate at the time of instantiation.

    00386 { dataRate_ = rate; };

StkFloat stk::StkFrames::dataRate | ( | void |  | ) | const`[inline]`

Return the sample rate associated with the StkFrames data.

By default, this value is set equal to the current STK sample rate at the time of instantiation.

    00393 { return dataRate_; };

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

- Stk.h

The Synthesis ToolKit in C++ (STK)
©1995-2012 Perry R. Cook and Gary P. Scavone. All Rights Reserved.