BDataSet - Project Management
- File: BDataSet.STX, linked to library STX.LIB
- Class hierarchy: BDataSet &larr BXMLDoc &larr CObj
- See also: BXMLDoc, BSTXIni, DataSetCmd
This class implements the project document. The project document is the global database available to all STx applications and scripts and contains all data and links of the current project. The content of the project document is stored in a XML file item The programmer must not create or destroy the project object because these functions are performed by the application startup and cleanup macros.
- Never ever call the member functions
CONSTRUCT
,DESTRUCT
orCLOSE
!
At application startup a BDataSet
instance is created and linked to the global project document which is created and managed by the STx master shell. The name of this instance is stored in the shell variable BDATASET. This object must be used to access the project document.
The class BDataSet
is derived from the class BXMLDoc
. Beware of using the base class functions, since they do not update the BDataSet
member variables! No static commands are implemented by this class; a call to the macro BDataSet
(e.g. bdataset save
) will do nothing, returning an empty string.
Before a shell or a script uses or changes the content of the project document, it should be attached (locked) using the function call $bdataset attach
(see: Attach & Detach).
Contents
Attach & Detach
- Usage
-
$bdataset attach [ iref ]
$bdataset detach
- iref
- reference or position of an element of the project document, if specified the element is selected after attaching
- Result
- the name of the xml-file item containing the project document data
- Description
- The function
attach
locks the project document and returns the internal xml-file item containing the project data. Only the calling shell can now access the project content, all other shells are blocked. The project document remains locked until the next call todetach
. Multiple calls ofattach
(by the same shell) are possible, but for each call also the functiondetach
must be called. - Example
// first attach call - lock project document and save current xml-position (pos1) $bdataset attach ... // second attach call - save xml-position (pos2) $bdataset attach ... // first detach call - restore xml-position pos2, project document remains locked! $bdataset detach ... // second detach call - restore xml-position pos1 and unlock project document, // if the project document was changed by the code between first attach and second detach, // the message "DATASETCHANGED" is sent to all running shells $bdataset detach
Project Properties
IsNewFile
- Usage
$bdataset isnewfile
- Result
- 1 if the project file is new (not named and not saved) and 0 otherwise.
GetPath
- Usage
$bdataset getpath
- Result
- the full path of the project file or an empty string
SetLink
- Usage
$bdataset setlink mode
- mode
- 0 (or no) to set project to not linked and 1 (or yes) to set it to linked
- Result
- 0 if the selected mode was enabled and 1 if the function fails.
- Description
- This function change the project attribute
AFile
(attribute of the root-elementSTXDataSet
).
AFile=Link
: The project is in mode linked. The segment metadata are stored in STx metadata files, which are xml-files with the same pathname as the sound file and the filetype stxsm. The segment metadata files of sound file linked to the project are loaded/saved automatically, when the project is loaded/saved. The project file contains only links to the sound files of the project.AFile
is not assigned: The project is in mode not linked. All data of the project, including segment metadata, are stored in the project file. A project in this mode may contain multiple links to one sound file (e.g. to manage different segmentations of the same signal).
IsLinked
- Usage
$bdataset islinked
- Result
- 1 if the project is set to linked and 0 otherwise
SetRelativity
- Usage
$bdataset setrelativity mode
- mode
- 0 (or no) to disable the relative path feature and 1 (or yes) to enable it
- Result
- 0 if the selected mode was enabled and 1 if the function has failed.
- Description
- This function can be used to enable/disable the relative path option. If the relative path option is enabled, for sound file which are in the same directory as the project file or in subdirectories the relative path is saved in the project. This feature is useful if the project should be copied to other places. The relativity state is saved in the attribute
ARelative
of the root element of the project. If this attribute has the valueyes
, relative sound file pathes are used, otherwise (ARelative
) equalsno
or is not set) absolute pathes are used.
IsRelative
- Usage
$bdataset isrelative
- Result
- 1 if the project is set to relative sound file pathes and 0 otherwise
Audio Set Functions
AddASet
- Usage
-
$bdataset addaset tag ; targetset ; id ; srate ; channels ; update
- tag
- the type off the new audio set; this can be ...
- the name of an existing sound file to be added to the project
- the keyword AFile or * to create (via dialog) a new soundfile and add it to the project
- the keyword ASequence or Sequence to add a new sequence to the project
- targetset
- the set (folder) where the new audio set should be located; if set to *, the target is selected via a dialog
- id
- the unique id of the new audio set; if set to * an unique id is choosen automatically
- srate
- the sampling rate in Hz for a new soundfile or a sequence
- channels
- the number of channels for a new soundfile or a sequence
- update
- if set to 1 (or yes) the function
DataSetCmd RefreshAll
is called to refresh the project GUI
- Result
- if successfulthe the reference (iref) of the added audio set if returned, otherwise an empty string
- Description: This function add an audio set (sound file or sequence) to the project.
AFileIsLinked
- Usage
$bdataset afileislinked path
- path
- the path of the sound file to be tested
- Result
- 1 if the sound file path is already linked to the project and 0 otherwise.
- Description
- This function tests if a sound file is already linked to the project or not. The check is performed only if the project is set to linked. For not linked projects the functions returns always 0.
SelectASet
- Usage
$bdataset selectaset aset ; type
- aset
- the reference (iref or position) of an audio set or of an element inside an audio set (e.g. a segment)
- type
- assumed type of the audio set: AFile, Soundfile, ASequence, Sequence or * (default) if type is unknown
- Result
- 0 if the audio set is selected and a non-zero error code otherwise
- Description
- This function selects the specified audio set. If the function was sussessful, the following member variables of the object
$bdataset
are assigned:&asetPos
: xml position of the audio set element&asetTag
: xml tag of the audio set element (AFile or ASequence)&asetID
: xml element id (value of attribute ID)&asetSR
: sampling rate in Hz (value of attribute SR)&asetCH
: number of channels (value of attribute CH)&asetFile
: sound file path (only if tag equals AFile)
GetASetInfo
- Usage
$bdataset getasetinfo [ aset ; type ]
- aset
- the reference (iref or position) of an audio set or of an element inside an audio set (e.g. a segment)
- type
- assumed type of the audio set: AFile, Soundfile, ASequence, Sequence or * (default) if type is unknown
- Result
- an empty string for error or the available attributes of the selected audio set:
- for sound files:
Soundfile
;id;id;sr;ch;filepath - for sequences:
Sequence
;id;id;sr;ch
- for sound files:
- Description
- This function retrieves information about the selected audio set. If arguments are specified, they are passed to the function
SelectASet
to select the audio set, before the audio set information is returned.
=Management of Temporary Audio Sets
OpenAutoAFile
RemoveTmpSet
RestoreTmpSet
Audio Segment Functions
Project File Management
Validate
- Usage
$bdataset validate showmsg
- showmsg
- if set to
1
a message is displayed also if no invalid elements were detected; default: no message if no invalid elements were found
- Result
- number of invalid elements (
0
for none) - Description
- This function checks all elements (sound files, segments, ...) of the project for validity. If invalid elements are detected, they can be displayed and the user is asked if they should be deleted or not.
Save
Load
Uncommon Functions and Functions for internal use only
The following functions are not often used and not so important for user script programming. If you want to know more about these functions look at the comments in the source file BDataSet.stx
GetBaseDirecory(read: #filepath)
: used by memberSave
to verify the project file pathImportXML(read: #filepath; #set=*; #id=*)
: import the content of a xml file into the project (e.g. merge projects)
BackupSave
: create a backup copy of the current project if backups are enabled; this function is called by the membersSave/Load
BackupEmpty
: empty backup directory - delete all backupsBackupLoad
: display a list of available backups including options to restore selected backups
ImportSD0(read: afileref=*)
: import segment metadata of the specified (selected) audio set; try all versions (stxsm/sd0/st5); this function is used to load segment metadata of linked projectsExportSD0(read: afileref=* [xmlfile])
: export segment metadata of the specified (selected) audio set; this function is used to save segment metadata of linked projects
SetSetting(read: #id; version; value)
: set the value of project setting '#id' in the STXDataSet/Settings elementGetSetting(read: #id; version)
: get the valud of project setting '#id' from STXDataSet/Settings element
FormatTimeValue(read: value;unit)
Returns the time value in the selected unit (samples, milliseconds, ms, seconds, hms)
GetAttributes(read: type table autoexclude excludelist)
: returns a list of all attributes assigned to elements of the specified; the whole project is scannedDialogGetAttributes(read: type vlist)
: implements a dialog to select visible attributes of the selected element type (e.g. sets, segments, ...); returns a blank separated list of visible attributes; used by classBDataSetBrowser
and applicationDataSet
AttrListView
: a special handler for attribute editors (controls a dialog via msg. handling and callback); used by classBDataSet
andBDataSetBrowser
(part of applicationDataSet
)