VST 3 SDK  VST 3.7
SDK for developing VST plug-in
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Groups Pages
PresetFile Class Reference

Handler for a VST 3 Preset File. More...

#include <vstpresetfile.h>

Classes

struct  Entry
 Internal structure used for chunk handling. More...
 

Public Member Functions

 PresetFile (IBStream *stream)
 Constructor of Preset file based on a stream.
 
virtual ~PresetFile ()
 
IBStream * getStream () const
 Returns the associated stream.
 
const FUID & getClassID () const
 Returns the associated classID (component ID: Processor part (not the controller!)).
 
void setClassID (const FUID &uid)
 Sets the associated classID (component ID: Processor part (not the controller!)).
 
const Entry * getEntry (ChunkType which) const
 Returns an entry for a given chunk type.
 
const Entry * getLastEntry () const
 Returns the last available entry.
 
int32 getEntryCount () const
 Returns the number of total entries in the current stream.
 
const Entry & at (int32 index) const
 Returns the entry at a given position.
 
bool contains (ChunkType which) const
 Checks if a given chunk type exist in the stream.
 
bool readChunkList ()
 Reads and build the chunk list (including the header chunk).
 
bool writeHeader ()
 Writes into the stream the main header.
 
bool writeChunkList ()
 Writes into the stream the chunk list (should be at the end).
 
bool readMetaInfo (char *xmlBuffer, int32 &size)
 Reads the meta XML info and its size, the size could be retrieved by passing zero as xmlBuffer.
 
bool writeMetaInfo (const char *xmlBuffer, int32 size=-1, bool forceWriting=false)
 Writes the meta XML info, -1 means null-terminated, forceWriting to true will force to rewrite the XML Info when the chunk already exists.
 
bool prepareMetaInfoUpdate ()
 checks if meta info chunk is the last one and jump to correct position.
 
bool writeChunk (const void *data, int32 size, ChunkType which=kComponentState)
 Writes a given data of a given size as "which" chunk type.
 
bool seekToComponentState ()
 Seeks to the begin of the Component State.
 
bool storeComponentState (IComponent *component)
 Stores the component state (only one time).
 
bool storeComponentState (IBStream *componentStream)
 Stores the component state from stream (only one time).
 
bool restoreComponentState (IComponent *component)
 Restores the component state.
 
bool seekToControllerState ()
 Seeks to the begin of the Controller State.
 
bool storeControllerState (IEditController *editController)
 Stores the controller state (only one time).
 
bool storeControllerState (IBStream *editStream)
 Stores the controller state from stream (only one time).
 
bool restoreControllerState (IEditController *editController)
 Restores the controller state.
 
bool restoreComponentState (IEditController *editController)
 Restores the component state and apply it to the controller.
 
bool storeProgramData (IBStream *inStream, ProgramListID listID)
 Store program data or unit data from stream (including the header chunk).
 
bool storeProgramData (IProgramListData *programListData, ProgramListID programListID, int32 programIndex)
 Stores a IProgramListData with a given identifier and index (including the header chunk).
 
bool restoreProgramData (IProgramListData *programListData, ProgramListID *programListID=nullptr, int32 programIndex=0)
 Restores a IProgramListData with a given identifier and index.
 
bool storeProgramData (IUnitData *unitData, UnitID unitID)
 Stores a IUnitData with a given unitID (including the header chunk).
 
bool restoreProgramData (IUnitData *unitData, UnitID *unitID=nullptr)
 Restores a IUnitData with a given unitID (optional).
 
bool restoreProgramData (IUnitInfo *unitInfo, int32 unitProgramListID, int32 programIndex=-1)
 for keeping the controller part in sync concerning preset data stream, unitProgramListID could be ProgramListID or UnitID.
 
bool getUnitProgramListID (int32 &unitProgramListID)
 Gets the unitProgramListID saved in the kProgramData chunk (if available).
 

Static Public Member Functions

static bool savePreset (IBStream *stream, const FUID &classID, IComponent *component, IEditController *editController=nullptr, const char *xmlBuffer=nullptr, int32 xmlSize=-1)
 Shortcut helper to create preset from component/controller state.
 
static bool savePreset (IBStream *stream, const FUID &classID, IBStream *componentStream, IBStream *editStream=nullptr, const char *xmlBuffer=nullptr, int32 xmlSize=-1)
 
static bool loadPreset (IBStream *stream, const FUID &classID, IComponent *component, IEditController *editController=nullptr, std::vector< FUID > *otherClassIDArray=nullptr)
 Shortcut helper to load preset with component/controller state.
 

Protected Types

enum  { kMaxEntries = 128 }
 

Protected Member Functions

bool readID (ChunkID id)
 
bool writeID (const ChunkID id)
 
bool readEqualID (const ChunkID id)
 
bool readSize (TSize &size)
 
bool writeSize (TSize size)
 
bool readInt32 (int32 &value)
 
bool writeInt32 (int32 value)
 
bool seekTo (TSize offset)
 
bool beginChunk (Entry &e, ChunkType which)
 
bool endChunk (Entry &e)
 

Protected Attributes

IBStream * stream
 
FUID classID
 classID is the FUID of the component (processor) part
 
Entry entries [kMaxEntries]
 
int32 entryCount {0}
 

Detailed Description

Handler for a VST 3 Preset File.

See Also
presetformat

Member Enumeration Documentation

anonymous enum
protected
Enumerator
kMaxEntries 

Constructor & Destructor Documentation

PresetFile ( IBStream *  stream)

Constructor of Preset file based on a stream.

~PresetFile ( )
virtual

Member Function Documentation

IBStream* getStream ( ) const
inline

Returns the associated stream.

const FUID& getClassID ( ) const
inline

Returns the associated classID (component ID: Processor part (not the controller!)).

void setClassID ( const FUID &  uid)
inline

Sets the associated classID (component ID: Processor part (not the controller!)).

const PresetFile::Entry * getEntry ( ChunkType  which) const

Returns an entry for a given chunk type.

const PresetFile::Entry * getLastEntry ( ) const

Returns the last available entry.

int32 getEntryCount ( ) const
inline

Returns the number of total entries in the current stream.

const Entry& at ( int32  index) const
inline

Returns the entry at a given position.

bool contains ( ChunkType  which) const
inline

Checks if a given chunk type exist in the stream.

bool readChunkList ( )

Reads and build the chunk list (including the header chunk).

bool writeHeader ( )

Writes into the stream the main header.

bool writeChunkList ( )

Writes into the stream the chunk list (should be at the end).

bool readMetaInfo ( char *  xmlBuffer,
int32 &  size 
)

Reads the meta XML info and its size, the size could be retrieved by passing zero as xmlBuffer.

bool writeMetaInfo ( const char *  xmlBuffer,
int32  size = -1,
bool  forceWriting = false 
)

Writes the meta XML info, -1 means null-terminated, forceWriting to true will force to rewrite the XML Info when the chunk already exists.

bool prepareMetaInfoUpdate ( )

checks if meta info chunk is the last one and jump to correct position.

bool writeChunk ( const void *  data,
int32  size,
ChunkType  which = kComponentState 
)

Writes a given data of a given size as "which" chunk type.

bool seekToComponentState ( )

Seeks to the begin of the Component State.

bool storeComponentState ( IComponent *  component)

Stores the component state (only one time).

bool storeComponentState ( IBStream *  componentStream)

Stores the component state from stream (only one time).

bool restoreComponentState ( IComponent *  component)

Restores the component state.

bool seekToControllerState ( )

Seeks to the begin of the Controller State.

bool storeControllerState ( IEditController *  editController)

Stores the controller state (only one time).

bool storeControllerState ( IBStream *  editStream)

Stores the controller state from stream (only one time).

bool restoreControllerState ( IEditController *  editController)

Restores the controller state.

bool restoreComponentState ( IEditController *  editController)

Restores the component state and apply it to the controller.

bool storeProgramData ( IBStream *  inStream,
ProgramListID  listID 
)

Store program data or unit data from stream (including the header chunk).

Parameters
inStream
listIDcould be ProgramListID or UnitID.
bool storeProgramData ( IProgramListData *  programListData,
ProgramListID  programListID,
int32  programIndex 
)

Stores a IProgramListData with a given identifier and index (including the header chunk).

bool restoreProgramData ( IProgramListData *  programListData,
ProgramListID *  programListID = nullptr,
int32  programIndex = 0 
)

Restores a IProgramListData with a given identifier and index.

bool storeProgramData ( IUnitData *  unitData,
UnitID  unitID 
)

Stores a IUnitData with a given unitID (including the header chunk).

bool restoreProgramData ( IUnitData *  unitData,
UnitID *  unitID = nullptr 
)

Restores a IUnitData with a given unitID (optional).

bool restoreProgramData ( IUnitInfo *  unitInfo,
int32  unitProgramListID,
int32  programIndex = -1 
)

for keeping the controller part in sync concerning preset data stream, unitProgramListID could be ProgramListID or UnitID.

bool getUnitProgramListID ( int32 &  unitProgramListID)

Gets the unitProgramListID saved in the kProgramData chunk (if available).

bool savePreset ( IBStream *  stream,
const FUID &  classID,
IComponent *  component,
IEditController *  editController = nullptr,
const char *  xmlBuffer = nullptr,
int32  xmlSize = -1 
)
static

Shortcut helper to create preset from component/controller state.

classID is the FUID of the component (processor) part.

bool savePreset ( IBStream *  stream,
const FUID &  classID,
IBStream *  componentStream,
IBStream *  editStream = nullptr,
const char *  xmlBuffer = nullptr,
int32  xmlSize = -1 
)
static
bool loadPreset ( IBStream *  stream,
const FUID &  classID,
IComponent *  component,
IEditController *  editController = nullptr,
std::vector< FUID > *  otherClassIDArray = nullptr 
)
static

Shortcut helper to load preset with component/controller state.

classID is the FUID of the component (processor) part.

bool readID ( ChunkID  id)
protected
bool writeID ( const ChunkID  id)
protected
bool readEqualID ( const ChunkID  id)
protected
bool readSize ( TSize &  size)
protected
bool writeSize ( TSize  size)
protected
bool readInt32 ( int32 &  value)
protected
bool writeInt32 ( int32  value)
protected
bool seekTo ( TSize  offset)
protected
bool beginChunk ( Entry &  e,
ChunkType  which 
)
protected
bool endChunk ( Entry &  e)
protected

Member Data Documentation

IBStream* stream
protected
FUID classID
protected

classID is the FUID of the component (processor) part

Entry entries[kMaxEntries]
protected
int32 entryCount {0}
protected
Empty

Copyright ©2024 Steinberg Media Technologies GmbH. All Rights Reserved. This documentation is under this license.