Jamoma API  0.6.0.a19
Lissajous3D.cpp
Go to the documentation of this file.
1 /** @file
2  *
3  * @ingroup dspTrajectoryLib
4  *
5  * @brief Lissajous Knot Function Unit in 3D for Jamoma DSP
6  *
7  * @details see http://en.wikipedia.org/wiki/Lissajous_knot for details @n
8  *
9  * @authors Nils Peters
10  *
11  * @copyright Copyright © 2011 by Nils Peters @n
12  * This code is licensed under the terms of the "New BSD License" @n
13  * http://creativecommons.org/licenses/BSD/
14  */
15 
16 #include "Lissajous3D.h"
17 
18 #define thisTTClass Lissajous3D
19 #define thisTTClassName "lissajous.knot.3D"
20 #define thisTTClassTags "audio, trajectory, knot, 3D"
21 
22 
23 TT_AUDIO_CONSTRUCTOR
27  addAttribute(DeltaX, kTypeFloat64);
28  addAttribute(DeltaY, kTypeFloat64);
29 
30  setAttributeValue(TT("a"), 3.0);
31  setAttributeValue(TT("b"), 2.0);
32  setAttributeValue(TT("c"), 7.0);
33  setAttributeValue(TT("deltaX"), 0.7);
34  setAttributeValue(TT("deltaY"), 0.2);
35 
36  setProcessMethod(processAudio);
37 // setCalculateMethod(calculateValue);
38 }
39 
40 
41 Lissajous3D::~Lissajous3D()
42 {
43  ;
44 }
45 
46 //TTErr Lissajous3D::calculateValue(const TTFloat64& x, TTFloat64& y, TTPtrSizedInt data)
47 //{
48 // y = x;
49 // return kTTErrNone;
50 //}
51 
52 
53 TTErr Lissajous3D::processAudio(TTAudioSignalArrayPtr inputs, TTAudioSignalArrayPtr outputs)
54 {
55 
56  TTAudioSignal& out = outputs->getSignal(0);
57  TTChannelCount numOutputChannels = out.getNumChannelsAsInt();
58 
59  if (numOutputChannels != 3) {
60  TTValue v = 3;
61  out.setMaxNumChannels(v);
62  out.setNumChannels(v);
63  }
64 
65  TTAudioSignal& in0 = inputs->getSignal(0);
66  TTUInt16 vs = in0.getVectorSizeAsInt();
67  TTSampleValuePtr inSampleX = in0.mSampleVectors[0];
68  TTSampleValuePtr outSampleX = out.mSampleVectors[0];
69  TTSampleValuePtr outSampleY = out.mSampleVectors[1];
70  TTSampleValuePtr outSampleZ = out.mSampleVectors[2];
71  //TTFloat64 phi;
72 
73  for (int i=0; i<vs; i++) {
74  //phi = inSampleX[i] * kTTPi;
75  outSampleX[i] = cos((inSampleX[i]* mA *kTTTwoPi) + mDeltaX);
76  outSampleY[i] = cos((inSampleX[i]* mB *kTTTwoPi) + mDeltaY);
77  outSampleZ[i] = cos((inSampleX[i]* mC *kTTTwoPi));
78  }
79  return kTTErrNone;
80 }
81 
82 
83 
std::uint16_t TTUInt16
16 bit unsigned integer
Definition: TTBase.h:176
#define addAttribute(name, type)
A convenience macro to be used by subclasses for registering attributes with a custom getter...
Definition: TTAttribute.h:29
Lissajous Knot Function Unit in 3D for Jamoma DSP.
TTFOUNDATION_EXPORT const TTFloat64 kTTTwoPi
Pre-calculated value of pi * 2.
Definition: TTBase.cpp:24
#define setProcessMethod(methodName)
A convenience macro to be used by subclasses for setting the process method.
#define TT
This macro is defined as a shortcut for doing a lookup in the symbol table.
Definition: TTSymbol.h:155
TTErr setMaxNumChannels(const TTValue &newMaxNumChannels)
Attribute accessor.
64-bit floating point
Definition: TTBase.h:272
The TTAudioSignal class represents N vectors of audio samples for M channels.
Definition: TTAudioSignal.h:57
TTSampleValue ** mSampleVectors
An array of pointers to the first sample in each vector. Declared Public for fast access...
Definition: TTAudioSignal.h:74
TTUInt16 TTChannelCount
Data type used when counting the number of channels in multi-channel audio signals and processes...
Definition: TTAudioSignal.h:31
A simple container for an array of TTAudioSignal pointers.
TTErr
Jamoma Error Codes Enumeration of error codes that might be returned by any of the TTBlue functions a...
Definition: TTBase.h:342
No Error.
Definition: TTBase.h:343
[doxygenAppendixC_copyExample]
Definition: TTValue.h:34