41 #include "SynthNote.h"
42 #include "SynthElement.h"
43 #include "AUInstrumentBase.h"
45 void SynthNote::AttackNote(
46 SynthPartElement * inPart,
47 SynthGroupElement * inGroup,
48 NoteInstanceID inNoteID,
49 SInt64 inAbsoluteSampleFrame,
50 UInt32 inOffsetSampleFrame,
51 const MusicDeviceNoteParams &inParams)
54 printf(
"SynthNote::AttackNote %d %d %d\n", inPart, inGroup->GroupID(), inNoteID);
60 mAbsoluteStartFrame = inAbsoluteSampleFrame;
61 mRelativeStartFrame = inOffsetSampleFrame;
62 mRelativeReleaseFrame = -1;
63 mRelativeKillFrame = -1;
65 mPitch = inParams.mPitch;
66 mVelocity = inParams.mVelocity;
73 void SynthNote::Reset()
77 mAbsoluteStartFrame = 0;
78 mRelativeStartFrame = 0;
79 mRelativeReleaseFrame = 0;
80 mRelativeKillFrame = 0;
83 void SynthNote::Kill(UInt32 inFrame)
85 mRelativeKillFrame = inFrame;
88 void SynthNote::Release(UInt32 inFrame)
90 mRelativeReleaseFrame = inFrame;
93 void SynthNote::FastRelease(UInt32 inFrame)
95 mRelativeReleaseFrame = inFrame;
98 double SynthNote::TuningA()
const
103 double SynthNote::Frequency()
105 return TuningA() * pow(2., (mPitch - 69. + PitchBend()) / 12.);
108 double SynthNote::SampleRate()
110 return GetAudioUnit()->GetOutput(0)->GetStreamFormat().mSampleRate;