mirror of
https://github.com/Ardour/ardour.git
synced 2026-01-03 20:29:35 +01:00
Import VST3 interface
This commit is contained in:
parent
08b6d74078
commit
9c5f13f3fa
45 changed files with 8765 additions and 0 deletions
142
libs/vst3/pluginterfaces/vst/ivstprocesscontext.h
Normal file
142
libs/vst3/pluginterfaces/vst/ivstprocesscontext.h
Normal file
|
|
@ -0,0 +1,142 @@
|
|||
//------------------------------------------------------------------------
|
||||
// Project : VST SDK
|
||||
//
|
||||
// Category : Interfaces
|
||||
// Filename : pluginterfaces/vst/ivstprocesscontext.h
|
||||
// Created by : Steinberg, 10/2005
|
||||
// Description : VST Processing Context Interfaces
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
// This file is part of a Steinberg SDK. It is subject to the license terms
|
||||
// in the LICENSE file found in the top-level directory of this distribution
|
||||
// and at www.steinberg.net/sdklicenses.
|
||||
// No part of the SDK, including this file, may be copied, modified, propagated,
|
||||
// or distributed except according to the terms contained in the LICENSE file.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "pluginterfaces/base/funknown.h"
|
||||
#include "vsttypes.h"
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
#include "pluginterfaces/base/falignpush.h"
|
||||
//------------------------------------------------------------------------
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
namespace Steinberg {
|
||||
namespace Vst {
|
||||
//------------------------------------------------------------------------
|
||||
/** Frame Rate */
|
||||
//------------------------------------------------------------------------
|
||||
struct FrameRate
|
||||
{
|
||||
//------------------------------------------------------------------------
|
||||
enum FrameRateFlags
|
||||
{
|
||||
kPullDownRate = 1 << 0, ///< for ex. HDTV: 23.976 fps with 24 as frame rate
|
||||
kDropRate = 1 << 1 ///< for ex. 29.97 fps drop with 30 as frame rate
|
||||
};
|
||||
//------------------------------------------------------------------------
|
||||
uint32 framesPerSecond; ///< frame rate
|
||||
uint32 flags; ///< flags #FrameRateFlags
|
||||
//------------------------------------------------------------------------
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Description of a chord.
|
||||
A chord is described with a key note, a root note and the
|
||||
\copydoc chordMask
|
||||
\see ProcessContext*/
|
||||
//------------------------------------------------------------------------
|
||||
struct Chord
|
||||
{
|
||||
//------------------------------------------------------------------------
|
||||
uint8 keyNote; ///< key note in chord
|
||||
uint8 rootNote; ///< lowest note in chord
|
||||
|
||||
/** Bitmask of a chord.
|
||||
1st bit set: minor second; 2nd bit set: major second, and so on. \n
|
||||
There is \b no bit for the keynote (root of the chord) because it is inherently always present. \n
|
||||
Examples:
|
||||
- XXXX 0000 0100 1000 (= 0x0048) -> major chord\n
|
||||
- XXXX 0000 0100 0100 (= 0x0044) -> minor chord\n
|
||||
- XXXX 0010 0100 0100 (= 0x0244) -> minor chord with minor seventh */
|
||||
int16 chordMask;
|
||||
|
||||
enum Masks {
|
||||
kChordMask = 0x0FFF, ///< mask for chordMask
|
||||
kReservedMask = 0xF000 ///< reserved for future use
|
||||
};
|
||||
//------------------------------------------------------------------------
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
/** Audio processing context.
|
||||
For each processing block the host provides timing information and
|
||||
musical parameters that can change over time. For a host that supports jumps
|
||||
(like cycle) it is possible to split up a processing block into multiple parts in
|
||||
order to provide a correct project time inside of every block, but this behaviour
|
||||
is not mandatory. Since the timing will be correct at the beginning of the next block
|
||||
again, a host that is dependent on a fixed processing block size can choose to neglect
|
||||
this problem.
|
||||
\see IAudioProcessor, ProcessData*/
|
||||
//------------------------------------------------------------------------
|
||||
struct ProcessContext
|
||||
{
|
||||
//------------------------------------------------------------------------
|
||||
/** Transport state & other flags */
|
||||
enum StatesAndFlags
|
||||
{
|
||||
kPlaying = 1 << 1, ///< currently playing
|
||||
kCycleActive = 1 << 2, ///< cycle is active
|
||||
kRecording = 1 << 3, ///< currently recording
|
||||
|
||||
kSystemTimeValid = 1 << 8, ///< systemTime contains valid information
|
||||
kContTimeValid = 1 << 17, ///< continousTimeSamples contains valid information
|
||||
|
||||
kProjectTimeMusicValid = 1 << 9,///< projectTimeMusic contains valid information
|
||||
kBarPositionValid = 1 << 11, ///< barPositionMusic contains valid information
|
||||
kCycleValid = 1 << 12, ///< cycleStartMusic and barPositionMusic contain valid information
|
||||
|
||||
kTempoValid = 1 << 10, ///< tempo contains valid information
|
||||
kTimeSigValid = 1 << 13, ///< timeSigNumerator and timeSigDenominator contain valid information
|
||||
kChordValid = 1 << 18, ///< chord contains valid information
|
||||
|
||||
kSmpteValid = 1 << 14, ///< smpteOffset and frameRate contain valid information
|
||||
kClockValid = 1 << 15 ///< samplesToNextClock valid
|
||||
};
|
||||
|
||||
uint32 state; ///< a combination of the values from \ref StatesAndFlags
|
||||
|
||||
double sampleRate; ///< current sample rate (always valid)
|
||||
TSamples projectTimeSamples; ///< project time in samples (always valid)
|
||||
|
||||
int64 systemTime; ///< system time in nanoseconds (optional)
|
||||
TSamples continousTimeSamples; ///< project time, without loop (optional)
|
||||
|
||||
TQuarterNotes projectTimeMusic; ///< musical position in quarter notes (1.0 equals 1 quarter note)
|
||||
TQuarterNotes barPositionMusic; ///< last bar start position, in quarter notes
|
||||
TQuarterNotes cycleStartMusic; ///< cycle start in quarter notes
|
||||
TQuarterNotes cycleEndMusic; ///< cycle end in quarter notes
|
||||
|
||||
double tempo; ///< tempo in BPM (Beats Per Minute)
|
||||
int32 timeSigNumerator; ///< time signature numerator (e.g. 3 for 3/4)
|
||||
int32 timeSigDenominator; ///< time signature denominator (e.g. 4 for 3/4)
|
||||
|
||||
Chord chord; ///< musical info
|
||||
|
||||
int32 smpteOffsetSubframes; ///< SMPTE (sync) offset in subframes (1/80 of frame)
|
||||
FrameRate frameRate; ///< frame rate
|
||||
|
||||
int32 samplesToNextClock; ///< MIDI Clock Resolution (24 Per Quarter Note), can be negative (nearest)
|
||||
//------------------------------------------------------------------------
|
||||
};
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
} // namespace Vst
|
||||
} // namespace Steinberg
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
#include "pluginterfaces/base/falignpop.h"
|
||||
//------------------------------------------------------------------------
|
||||
Loading…
Add table
Add a link
Reference in a new issue