Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members

TSE3 Namespace Reference

TSE3 library API namespace. More...


Compounds

class  DisplayParams
 A collection of application display parameter values. More...

class  PresetColours
 A collection of application display parameter values. More...

class  Error
 TSE3 exception base class. More...

class  MidiFileImportError
 Exception thrown by MidiFileImport. More...

class  MidiFileExportError
 Exception thrown by MidiFileExport. More...

class  PhraseListError
 PhraseList exception. More...

class  SongError
class  TrackError
class  PartError
class  MidiSchedulerError
class  SerializableError
class  EventTrack
 A simple track containing Event objects. More...

class  FileBlockParser
 Internal utility for loading TSE3MDL blocks. More...

class  FileItemParser
 Internal utility for parsing TSE3MDL data lines. More...

class  FileItemParser_OnOff
 Internal utility for parsing On/Off/Yes/No data lines. More...

class  FileItemParser_ReasonOnOff
 Internal utility for parsing boolean values with reason codes Internal utility for parsing numeric data lines. More...

class  FileItemParser_Number
 Internal utility for parsing numeric data lines. More...

class  FileItemParser_Clock
 Internal utility for parsing Clock data lines. More...

class  FileItemParser_String
 Internal utility for parsing string data lines. More...

class  Filter
 Interface for a MidiEvent filter. More...

class  Flag
 A flag. More...

class  FlagTrack
 A list of Flag events. More...

class  KeySig
 A key signature change. More...

class  KeySigTrack
 A list of KeySig events. More...

class  DisplayParamsListener
class  PresetColoursListener
class  EventTrackListener
class  MetronomeListener
class  MidiCommandFilterListener
class  MidiDataListener
class  MidiEchoListener
class  MidiFileImportListener
class  MidiFilterListener
class  MidiMapperListener
class  MidiParamsListener
class  MidiSchedulerListener
class  MixerChannelListener
class  MixerPortListener
class  MixerListener
class  PanicListener
class  PartListener
class  PhraseListener
class  PhraseEditListener
class  PhraseListListener
class  PlayableListener
class  SongListener
class  TrackListener
class  TransportListener
class  TransportCallback
 MIDI activity callback for Transport. More...

class  Metronome
 Metronome tick object. More...

struct  Clock
 Time of a MidiEvent. More...

struct  Event
 A scheduled event. More...

class  Event::equal_to
struct  MidiCommand
 Data type of a single complete MIDI message. More...

struct  MidiEvent
 A MidiCommand with associated Clock scheduling time and possible ballancing MidiCommand_NoteOff. More...

class  MidiEvent::equal_to
class  MidiCommandFilter
 Filter for MidiCommands. More...

class  MidiData
 A list of MidiEvents. More...

class  MidiEcho
 Software MIDI Thru port. More...

class  MidiFileImport
 MIDI file importer. More...

class  MidiFileExport
 MIDI file exporter. More...

class  MidiFilter
 Simple MidiEvent filter. More...

class  MidiMapper
 MidiEvent port destination mapper. More...

class  MidiParams
 A collection of MIDI parameter values. More...

class  MidiSchedulerFactory
 MidiScheduler class factory. More...

class  MidiScheduler
 A MIDI interface providing scheduling facilities. More...

struct  MidiScheduler::PortInfo
class  MixerChannel
 TSE3 MIDI port Mixing desk. More...

class  MixerPort
 TSE3 MIDI port Mixing desk. More...

class  Mixer
 TSE3 Mixing desk. More...

class  Notifier
 Base class for objects that multicast events to listeners. More...

class  Listener
 Listener interface for Notifier events. More...

class  Panic
 Playable 'panic' sequencer generator. More...

class  Part
 A placement of a Phrase in a Track. More...

class  Phrase
 A list of MidiEvents with unique reference name. More...

class  PhraseEdit
 An editable Phrase data type. More...

class  PhraseList
 A list of Phrases. More...

class  Playable
 A 'playable' object interface. More...

class  PlayableIterator
 Iterator over the MidiEvents in a Playable. More...

class  Progress
 Demidify progress callback interface. More...

class  Repeat
 A repeat point. More...

class  RepeatTrack
 A list of Repeat events. More...

struct  SerializableLoadInfo
class  Serializable
 Interface for serializable data. More...

class  Serializable::indent
class  Song
 A piece of playable music. More...

class  Tempo
 A tempo change. More...

class  TempoTrack
 A list of Tempo events. More...

class  TimeSig
 A time signature change. More...

class  TimeSigTrack
 A list of TimeSig events. More...

class  Track
 Represents the concurrent musical sections of a Song. More...

class  Transport
 Manager of transport facilities. More...

class  TSE2MDL
 TSE version 2 file operations. More...

class  TSE3MDL
 Object used to load/save TSE3MDL song files. More...

class  TSE3MDL::Header
class  FileRecogniser
 Object used to work out a file's type. More...


Typedefs

typedef EventTrackListener<
Flag
FlagTrackListener
typedef EventTrackListener<
KeySig
KeySigTrackListener
typedef EventTrackListener<
Repeat
RepeatTrackListener
typedef EventTrackListener<
Tempo
TempoTrackListener
typedef EventTrackListener<
TimeSig
TimeSigTrackListener

Enumerations

enum  ErrorCode {
  TrackAlreadyInsertedErr, PartAlreadyInsertedErr, PartOverlapErr, NoPartInsertedErr,
  PartTimeErr, PhraseUnparentedErr, PhraseNameExistsErr, PhraseAlreadyInsertedErr,
  InvalidPhraseNameErr, MidiFileImportErr, MidiFileExportErr, CouldntOpenFileErr,
  InvalidFileTypeErr, FileFormatErr, MidiSchedulerCreateErr, OtherErr,
  NoErrorCodes
}
enum  MidiCommands {
  MidiCommand_NoteOff = 0x8, MidiCommand_NoteOn = 0x9, MidiCommand_KeyPressure = 0xa, MidiCommand_ControlChange = 0xb,
  MidiCommand_ProgramChange = 0xc, MidiCommand_ChannelPressure = 0xd, MidiCommand_PitchBend = 0xe, MidiCommand_System = 0xf,
  MidiCommand_Invalid = 0x0, MidiCommand_TSE_Meta = 0x1, MidiCommand_NoteEdit_Meta = 0x2
}
enum  TSEMetaMidiCommands { MidiCommand_TSE_Meta_Tempo = 0x00, MidiCommand_TSE_Meta_TimeSig = 0x01, MidiCommand_TSE_Meta_KeySig = 0x02, MidiCommand_TSE_Meta_MoveTo = 0x03 }
enum  MidiSystemCommands {
  MidiSystem_SysExStart = 0x0, MidiSystem_MidiTimeCode = 0x1, MidiSystem_SongPosition = 0x2, MidiSystem_SongSelect = 0x3,
  MidiSystem_TuneRequest = 0x6, MidiSystem_SysExEnd = 0x7, MidiSystem_TimingClock = 0x8, MidiSystem_Start = 0xa,
  MidiSystem_Continue = 0xb, MidiSystem_Stop = 0xc, MidiSystem_ActiveSensing = 0xe, MidiSystem_SystemReset = 0xf
}
enum  MidiControlChanges {
  MidiControl_BankSelectMSB = 0x00, MidiControl_ModulationMSB = 0x01, MidiControl_BreathControllerMSB = 0x02, MidiControl_FootController = 0x04,
  MidiControl_PortamentoTimeMSB = 0x05, MidiControl_DataEntryMSB = 0x06, MidiControl_ChannelVolumeMSB = 0x07, MidiControl_BalanceMSB = 0x08,
  MidiControl_PanMSB = 0x0a, MidiControl_ExpressionCtrlMSB = 0x0b, MidiControl_EffectCtrl1MSB = 0x0c, MidiControl_EffectCtrl2MSB = 0x0d,
  MidiControl_GeneralCtrl1MSB = 0x10, MidiControl_GeneralCtrl2MSB = 0x11, MidiControl_GeneralCtrl3MSB = 0x12, MidiControl_GeneralCtrl4MSB = 0x13,
  MidiControl_BankSelectLSB = 0x20, MidiControl_ModulationLSB = 0x21, MidiControl_BreathControllerLSB = 0x22, MidiControl_FootControlLer = 0x24,
  MidiControl_PortamentoTimeLSB = 0x25, MidiControl_DataEntryLSB = 0x26, MidiControl_ChannelVolumeLSB = 0x27, MidiControl_BalanceLSB = 0x28,
  MidiControl_PanLSB = 0x2a, MidiControl_ExpressionCtrlLSB = 0x2b, MidiControl_EffectCtrl1LSB = 0x2c, MidiControl_EffectCtrl2LSB = 0x2d,
  MidiControl_GeneralCtrl1LSB = 0x30, MidiControl_GeneralCtrl2LSB = 0x31, MidiControl_GeneralCtrl3LSB = 0x32, MidiControl_GeneralCtrl4LSB = 0x33,
  MidiControl_SustainPedal = 0x40, MidiControl_Portamento = 0x41, MidiControl_Sostenuto = 0x42, MidiControl_SoftPedal = 0x43,
  MidiControl_Legato = 0x44, MidiControl_Hold2 = 0x45, MidiControl_SoundVariationLSB = 0x46, MidiControl_Timbre = 0x47,
  MidiControl_ReleaseTime = 0x48, MidiControl_AttackTime = 0x49, MidiControl_Brightness = 0x4a, MidiControl_GeneralCtrl5 = 0x50,
  MidiControl_GeneralCtrl6 = 0x51, MidiControl_GeneralCtrl7 = 0x52, MidiControl_GeneralCtrl8 = 0x53, MidiControl_PortamentoSource = 0x54,
  MidiControl_ReverbDepth = 0x5b, MidiControl_TremoloDepth = 0x5c, MidiControl_ChorusDepth = 0x5d, MidiControl_CelesteDepth = 0x5e,
  MidiControl_PhaserDepth = 0x5f, MidiControl_DataIncrement = 0x60, MidiControl_DataDecrement = 0x61, MidiControl_NRPM_LSB = 0x62,
  MidiControl_NRPM_MSB = 0x63, MidiControl_RPM_LSB = 0x64, MidiControl_RPM_MSB = 0x65, MidiControl_AllSoundOff = 0x78,
  MidiControl_ResetAllControllers = 0x79, MidiControl_LocalControl = 0x7a, MidiControl_AllNotesOff = 0x7b, MidiControl_OmniModeOff = 0x7c,
  MidiControl_OmniModeOn = 0x7d, MidiControl_MonoModeOn = 0x7e, MidiControl_PolyModeOn = 0x7f
}

Functions

const char * errString (ErrorCode reason)
std::ostream & operator<< (std::ostream &s, const Serializable::indent &i)
const char * TSE3_Version ()
const char * TSE3_Copyright ()

Variables

unsigned int MidiCommand_NoDataBytes []


Detailed Description

TSE3 library API namespace.

The TSE3 namespace contains the API for the TSE3 library.

Related namespaces contain APIs for facilities built on top of TSE3. They are 'sub-namespaces' of the TSE3 namespace:

If you use this library you must provide a display of the TSE3_Version and TSE3_Copyright strings in your program.

You include the TSE3 header files using #include "tse3/HeaderFile.h" where "HeaderFile" is the name of the specific TSE3 file. Note the preceeding "tse3/" part. Headers for the sub-namespaces are included similarly, for example: #include "tse3/app/Application.h"

API usage
You must decide up-front whether or not you are using the undo/redo command architecture or not. This is because use of direct TSE3 APIs do not necessarily mix well with the undo/redo system. (Consider what would happen if you perform an undoable TSE3::Cmd::Command operation on a TSE3::Part, which you then remove and delete, what will the undo do?) (Answer: "undefined behaviour").

In the standard TSE3 API documentation, the related TSE3::Cmd command classes are referenced where appropriate.

Most users will not need to provide undo/redo support. You may wish to do so if you are providing a MIDI sequencing application, or suchlike.

Author:
Pete Goodliffe
Version:
3.00
See also:
TSE3::App

TSE3::Cmd

TSE3::Ins

TSE3::Plt

TSE3::Util


Typedef Documentation

typedef EventTrackListener<Flag> TSE3::FlagTrackListener
 

typedef EventTrackListener<KeySig> TSE3::KeySigTrackListener
 

typedef EventTrackListener<Repeat> TSE3::RepeatTrackListener
 

typedef EventTrackListener<Tempo> TSE3::TempoTrackListener
 

typedef EventTrackListener<TimeSig> TSE3::TimeSigTrackListener
 


Enumeration Type Documentation

enum TSE3::ErrorCode
 

This enum type represents each of the different types of error that may be raised by the TSE3 API. They are used by the exception class Error and it's subclasses.

You can use the errString() function to convert the ErrorCode into an English description string.

See also:
Error

errString

Enumeration values:
TrackAlreadyInsertedErr 
PartAlreadyInsertedErr 
PartOverlapErr 
NoPartInsertedErr 
PartTimeErr 
PhraseUnparentedErr 
PhraseNameExistsErr 
PhraseAlreadyInsertedErr 
InvalidPhraseNameErr 
MidiFileImportErr 
MidiFileExportErr 
CouldntOpenFileErr 
InvalidFileTypeErr 
FileFormatErr 
MidiSchedulerCreateErr 
OtherErr  An error not specified by the core TSE3 library.
NoErrorCodes  A convenience value representing the number of TSE3 error reason codes.

enum TSE3::MidiCommands
 

This enum type describes the top four bits of a MIDI command status byte as defined by the MIDI standard.

The values should be passed as 'status' to a MidiCommand object.

Values in the range 0x8 - 0xf are defined by the MIDI standard and will be transmitted to MIDI devices. Values in the range 0x0 - 0x7 are internal TSE3 'meta' status bytes which are used to encode extra information within MidiData objects.

The 'channel messages' which are addressed to one of 16 specific MIDI channels are:

  • MidiCommand_NoteOff - Switch a note off
  • MidiCommand_NoteOn - Switch a note on
  • MidiCommand_KeyPressure - Change velocity of a note
  • MidiCommand_ControlChange - Send a controller value
  • MidiCommand_ProgramChange - Change voice
  • MidiCommand_ChannelPressure - Chnage pressure of entire channel
  • MidiCommand_PitchBend - Change note pitch of entire channel
  • MidiCommand_System - Special system command (see MidiSystemCommands)
Current meta events are:
  • MidiCommand_Invalid - A 'nothing' command. These progate around the system quite a lot and so you must be prepared to see (and ignore) these commands.
  • MidiCommand_TSE_Meta - A TSE3 library defined meta event. See the TSEMetaMidiCommands. These include tempo and timesig.
  • MidiCommand_NoteEdit_Meta - A range of metas reserved for the NoteEdit program.
Enumeration values:
MidiCommand_NoteOff 
MidiCommand_NoteOn 
MidiCommand_KeyPressure 
MidiCommand_ControlChange 
MidiCommand_ProgramChange 
MidiCommand_ChannelPressure 
MidiCommand_PitchBend 
MidiCommand_System 
MidiCommand_Invalid 
MidiCommand_TSE_Meta 
MidiCommand_NoteEdit_Meta 

enum TSE3::TSEMetaMidiCommands
 

This enum type defines the data 1 bytes for meta MidiCommands with the status byte MidiCommand_TSE_Meta. The data 2 byte will contain some data related to this command.

The defined bytes are:

  • MidiCommand_TSE_Meta_Tempo - Data 2 holds a new tempo value See Tempo.
  • MidiCommand_TSE_Meta_TimeSig - Data 2 is 0xAB. 'A' has the time sig top value, 'B' has the time sig bottom value. See TimeSig.
  • MidiCommand_TSE_Meta_KeySig - Data 2 is 0xAB. 'A' has the incidentals values, 'B' has the minor/major value. See KeySig.
  • MidiCommand_TSE_Meta_MoveTo - Data 2 is ignored, and the second event in the MidiEvent holds the time to move to. This is generated by the .
Enumeration values:
MidiCommand_TSE_Meta_Tempo 
MidiCommand_TSE_Meta_TimeSig 
MidiCommand_TSE_Meta_KeySig 
MidiCommand_TSE_Meta_MoveTo 

enum TSE3::MidiSystemCommands
 

This enum type describes the MidiCommand_System messages as defined by the MIDI standard. If the MidiCommand status byte is MidiCommand_System, then these values will be found in the 'channel' data bits.

Enumeration values:
MidiSystem_SysExStart 
MidiSystem_MidiTimeCode 
MidiSystem_SongPosition 
MidiSystem_SongSelect 
MidiSystem_TuneRequest 
MidiSystem_SysExEnd 
MidiSystem_TimingClock 
MidiSystem_Start 
MidiSystem_Continue 
MidiSystem_Stop 
MidiSystem_ActiveSensing 
MidiSystem_SystemReset 

enum TSE3::MidiControlChanges
 

This enum type defines data 1 values for the MidiCommand MidiCommand_ControlChange. The data 2 value will be a number related to this control change type.

Some controllers are continuous values in the range 0-127. Some act as on off switches, where a value of 63 or below is 'off' and 64-127 is 'on'.

Enumeration values:
MidiControl_BankSelectMSB 
MidiControl_ModulationMSB 
MidiControl_BreathControllerMSB 
MidiControl_FootController 
MidiControl_PortamentoTimeMSB 
MidiControl_DataEntryMSB 
MidiControl_ChannelVolumeMSB 
MidiControl_BalanceMSB 
MidiControl_PanMSB 
MidiControl_ExpressionCtrlMSB 
MidiControl_EffectCtrl1MSB 
MidiControl_EffectCtrl2MSB 
MidiControl_GeneralCtrl1MSB 
MidiControl_GeneralCtrl2MSB 
MidiControl_GeneralCtrl3MSB 
MidiControl_GeneralCtrl4MSB 
MidiControl_BankSelectLSB 
MidiControl_ModulationLSB 
MidiControl_BreathControllerLSB 
MidiControl_FootControlLer 
MidiControl_PortamentoTimeLSB 
MidiControl_DataEntryLSB 
MidiControl_ChannelVolumeLSB 
MidiControl_BalanceLSB 
MidiControl_PanLSB 
MidiControl_ExpressionCtrlLSB 
MidiControl_EffectCtrl1LSB 
MidiControl_EffectCtrl2LSB 
MidiControl_GeneralCtrl1LSB 
MidiControl_GeneralCtrl2LSB 
MidiControl_GeneralCtrl3LSB 
MidiControl_GeneralCtrl4LSB 
MidiControl_SustainPedal 
MidiControl_Portamento 
MidiControl_Sostenuto 
MidiControl_SoftPedal 
MidiControl_Legato 
MidiControl_Hold2 
MidiControl_SoundVariationLSB 
MidiControl_Timbre 
MidiControl_ReleaseTime 
MidiControl_AttackTime 
MidiControl_Brightness 
MidiControl_GeneralCtrl5 
MidiControl_GeneralCtrl6 
MidiControl_GeneralCtrl7 
MidiControl_GeneralCtrl8 
MidiControl_PortamentoSource 
MidiControl_ReverbDepth 
MidiControl_TremoloDepth 
MidiControl_ChorusDepth 
MidiControl_CelesteDepth 
MidiControl_PhaserDepth 
MidiControl_DataIncrement 
MidiControl_DataDecrement 
MidiControl_NRPM_LSB 
MidiControl_NRPM_MSB 
MidiControl_RPM_LSB 
MidiControl_RPM_MSB 
MidiControl_AllSoundOff 
MidiControl_ResetAllControllers 
MidiControl_LocalControl 
MidiControl_AllNotesOff 
MidiControl_OmniModeOff 
MidiControl_OmniModeOn 
MidiControl_MonoModeOn 
MidiControl_PolyModeOn 


Function Documentation

const char* errString ErrorCode  reason  ) 
 

Returns a string containing an English representation of the specified TSE3 ErrorCode.

See also:
ErrorCode

Error

std::ostream& operator<< std::ostream &  s,
const Serializable::indent &  i
[inline]
 

Used by implementations of Serializable::save.

An implementation can call this to indent the line to the given level.

e.g. o << indent(5) << "DATA_TAG:" << data << "\n";

const char* TSE3_Version  ) 
 

Returns a string containing the TSE3 version number.

Returns:
TSE3 version string

const char* TSE3_Copyright  ) 
 

Returns a string containing the TSE3 copyright message.

Returns:
TSE3 copyright string


Variable Documentation

unsigned int TSE3::MidiCommand_NoDataBytes[]
 

Look up table for the number of data bytes following a MidiCommand.

Note: You should prefer to use the MidiCommand member function noDataBytes() where possible.


Generated on Wed May 25 14:46:04 2005 for TSE3 by doxygen 1.3.2