| Mozzi version v1.1.0 sound synthesis library for Arduino |

Public Member Functions | List of all members
Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP > Class Template Reference

Sample is like Oscil, it plays a wavetable. More...

`#include <Sample.h>`

## Public Member Functions
| Sample (const int8_t *TABLE_NAME)
| Constructor. More...
| Sample ()
| Constructor. More...
void | setTable (const int8_t *TABLE_NAME)
| Change the sound table which will be played by the Sample. More...
void | setStart (unsigned int startpos)
| Sets the starting position in samples. More...
void | start ()
| Resets the phase (the playhead) to the start position, which will be 0 unless set to another value with setStart();.
void | start (unsigned int startpos)
| Sets a new start position plays the sample from that position. More...
void | setEnd (unsigned int end)
| Sets the end position in samples from the beginning of the sound. More...
void | rangeWholeSample ()
| Sets the start and end points to include the range of the whole sound table.
void | setLoopingOn ()
| Turns looping on.
void | setLoopingOff ()
| Turns looping off.
int8_t | next ()
| Returns the sample at the current phase position, or 0 if looping is off and the phase overshoots the end of the sample. More...
boolean | isPlaying ()
| Checks if the sample is playing by seeing if the phase is within the limits of its end position. More...
void | setFreq (int frequency)
| Set the oscillator frequency with an unsigned int. More...
void | setFreq (float frequency)
| Set the sample frequency with a float. More...
void | setFreq_Q24n8 (Q24n8 frequency)
| Set the frequency using Q24n8 fixed-point number format. More...
int8_t | atIndex (unsigned int index)
| Returns the sample at the given table index. More...
unsigned long | phaseIncFromFreq (unsigned int frequency)
| phaseIncFromFreq() and setPhaseInc() are for saving processor time when sliding between frequencies. More...
void | setPhaseInc (unsigned long phaseinc_fractional)
| Set a specific phase increment. More...

## Detailed Description

### template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>
class Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >

Sample is like Oscil, it plays a wavetable.

However, Sample can be set to play once through only, with variable start and end points, or can loop, also with variable start and end points. It defaults to playing once through the whole sound table, from start to finish.

Template Parameters

  NUM_TABLE_CELLS | This is defined in the table ".h" file the Sample will be using. The sound table can be arbitrary length for Sample. It's important that NUM_TABLE_CELLS is either a literal number (eg. "8192") or a defined macro, rather than a const or int, for the Sample to run fast enough.
  UPDATE_RATE | This will be AUDIO_RATE if the Sample is updated in updateAudio(), or CONTROL_RATE if it's updated each time updateControl() is called. It could also be a fraction of CONTROL_RATE if you are doing some kind of cyclic updating in updateControl(), for example, to spread out the processor load.

# int8_t2mozzi

Converting soundfiles for Mozzi. There is a python script called int8_t2mozzi.py in the Mozzi/python folder. The script converts raw sound data saved from a program like Audacity. Instructions are in the int8_t2mozzi.py file.

Definition at line 48 of file Sample.h.

## Constructor & Destructor Documentation

## ◆ Sample() [1/2]

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::Sample | ( | const int8_t * | TABLE_NAME | ) |
| inline

Constructor.

Parameters

  TABLE_NAME | the name of the array the Sample will be using. This can be found in the table ".h" file if you are using a table made for Mozzi by the int8_t2mozzi.py python script in Mozzi's python folder. Sound tables can be of arbitrary lengths for Sample().

Definition at line 59 of file Sample.h.

## ◆ Sample() [2/2]

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::Sample | ( |  | ) |
| inline

Constructor.

Declare a Sample with template TABLE_NUM_CELLS and UPDATE_RATE parameters, without specifying a particular wave table for it to play. The table can be set or changed on the fly with setTable().

Definition at line 71 of file Sample.h.

## Member Function Documentation

## ◆ atIndex()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

int8_t Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::atIndex | ( | unsigned int | index | ) |
| inline

Returns the sample at the given table index.

Parameters

  index | between 0 and the table size.

Returns
  the sample at the given table index.

Definition at line 264 of file Sample.h.

## ◆ isPlaying()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

boolean Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::isPlaying | ( |  | ) |
| inline

Checks if the sample is playing by seeing if the phase is within the limits of its end position.

Returns
  true if the sample is playing

Definition at line 194 of file Sample.h.

## ◆ next()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

int8_t Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::next | ( |  | ) |
| inline

Returns the sample at the current phase position, or 0 if looping is off and the phase overshoots the end of the sample.

Updates the phase according to the current frequency.

Returns
  the next sample value from the table, or 0 if it's finished playing.

Definition at line 165 of file Sample.h.

## ◆ phaseIncFromFreq()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

unsigned long Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::phaseIncFromFreq | ( | unsigned int | frequency | ) |
| inline

phaseIncFromFreq() and setPhaseInc() are for saving processor time when sliding between frequencies.

Instead of recalculating the phase increment for each frequency in between, you can just calculate the phase increment for each end frequency with phaseIncFromFreq(), then use a Line to interpolate on the fly and use setPhaseInc() to set the phase increment at each step. (Note: I should really profile this with the oscilloscope to see if it's worth the extra confusion!)

Parameters

  frequency | for which you want to calculate a phase increment value.

Returns
  the phase increment value which will produce a given frequency.

Definition at line 281 of file Sample.h.

## ◆ setEnd()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::setEnd | ( | unsigned int | end | ) |
| inline

Sets the end position in samples from the beginning of the sound.

Parameters

  end | position in samples.

Definition at line 122 of file Sample.h.

## ◆ setFreq() [1/2]

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::setFreq | ( | int | frequency | ) |
| inline

Set the oscillator frequency with an unsigned int.

This is faster than using a float, so it's useful when processor time is tight, but it can be tricky with low and high frequencies, depending on the size of the wavetable being used. If you're not getting the results you expect, try explicitly using a float, or try setFreq_Q24n8.

Parameters

  frequency | to play the wave table.

Definition at line 225 of file Sample.h.

## ◆ setFreq() [2/2]

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::setFreq | ( | float | frequency | ) |
| inline

Set the sample frequency with a float.

Using a float is the most reliable way to set frequencies, -Might- be slower than using an int but you need either this or setFreq_Q24n8 for fractional frequencies.

Parameters

  frequency | to play the wave table.

Definition at line 236 of file Sample.h.

## ◆ setFreq_Q24n8()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::setFreq_Q24n8 | ( | Q24n8 | frequency | ) |
| inline

Set the frequency using Q24n8 fixed-point number format.

This might be faster than the float version for setting low frequencies such as 1.5 Hz, or other values which may not work well with your table size. Note: use with caution because it's prone to overflow with higher frequencies and larger table sizes. An Q24n8 representation of 1.5 is 384 (ie. 1.5 * 256).

Parameters

  frequency | in Q24n8 fixed-point number format.

Definition at line 251 of file Sample.h.

## ◆ setPhaseInc()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::setPhaseInc | ( | unsigned long | phaseinc_fractional | ) |
| inline

Set a specific phase increment.

See phaseIncFromFreq().

Parameters

  phaseinc_fractional | a phase increment value as calculated by phaseIncFromFreq().

Definition at line 291 of file Sample.h.

## ◆ setStart()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::setStart | ( | unsigned int | startpos | ) |
| inline

Sets the starting position in samples.

Parameters

  startpos | offset position in samples.

Definition at line 92 of file Sample.h.

## ◆ setTable()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::setTable | ( | const int8_t * | TABLE_NAME | ) |
| inline

Change the sound table which will be played by the Sample.

Parameters

  TABLE_NAME | is the name of the array in the table ".h" file you're using.

Definition at line 82 of file Sample.h.

## ◆ start()

template<unsigned int NUM_TABLE_CELLS, unsigned int UPDATE_RATE, uint8_t INTERP = INTERP_NONE>

void Sample< NUM_TABLE_CELLS, UPDATE_RATE, INTERP >::start | ( | unsigned int | startpos | ) |
| inline

Sets a new start position plays the sample from that position.

Parameters

  startpos | position in samples from the beginning of the sound.

Definition at line 111 of file Sample.h.