module Arts


Definition#include <arts/core.idl>
List of all Methods
Annotated List
Files
Globals
Hierarchy
Index

Interfaces

Public Types


Detailed Description

enum HeaderMagic { MCOP_MAGIC = 0x4d434f50 }

HeaderMagic

enum MessageType { mcopMessageInvalid = 0, mcopServerHello = 1, mcopClientHello = 2, mcopAuthAccept = 3, mcopInvocation = 4, mcopReturn = 5, mcopOnewayInvocation = 6 }

MessageType

Header (struct)

Header

This type is sent as header of each MCOP message.

Invocation (struct)

Invocation

This is sent as start of each normal (twoway) invocation

OnewayInvocation (struct)

OnewayInvocation

This is sent as start of each oneway invocation

ServerHello (struct)

ServerHello

Body of the mcopServerHello MCOP message

ClientHello (struct)

ClientHello

Body of the mcopClientHello MCOP message

AuthAccept (struct)

AuthAccept

The message you get when you connect a MCOP server. The MCOP server can send you some useful information here. Usually, it will send you

GlobalComm=<object reference of a global comm interface> InterfaceRepo=<object reference of an interface repository>

But as this is called "hints" it doesn't necessarily need to happen.

ObjectReference (struct)

ObjectReference

An object reference

ParamDef (struct)

ParamDef

The definition of a parameter of a method

hints is reserved for future extensions, such as default, min and maxvalues

enum MethodType { methodOneway = 1, methodTwoway = 2 }

MethodType

Twoway methods are such where the calling process does a call and is suspended until some result (maybe even a void result) gets back.

Oneway methods are one shot and forget methods: you send the invocation, and continue. Maybe it will be received, maybe executed later. You will never hear the result.

MethodDef (struct)

MethodDef

The definition of a method.

hints is reserved for future extensions, such as default, min and maxvalues

enum AttributeType { streamIn = 1, streamOut = 2, streamMulti = 4, attributeStream = 8, attributeAttribute = 16, streamAsync = 32, streamDefault = 64 }

AttributeType

an attribute

flags should contain things like

AttributeDef (struct)

AttributeDef

The definition of an attribute and/or stream

hints is reserved for future extensions, such as default, min and maxvalues

InterfaceDef (struct)

InterfaceDef

InterfaceDef - interface definition structure

defines what methods/attributes a particular interface supports: these do not contain the methods/attributes of inherited interfaces.

inheritedInterfaces only contains the names of Interfaces that this one inherits in exactly one step. So to see if interface XYZ is inherited from ABC, you need to check the "inheritedInterfaces" of XYZ, and their "inheritedInterfaces" and their "inheritedInterfaces" and so on.

- NB20000320: defaultPorts allows to connect to those port by default if connection is made in the corresponding direction. It cannot be just an attribute flag because of the syntax on a separate line.

hints is reserved for future extensions, such as default, min and maxvalues

TypeComponent (struct)

TypeComponent

One component of a struct

hints is reserved for future extensions, such as default, min and maxvalues

TypeDef (struct)

TypeDef

The definition of a struct

hints is reserved for future extensions, such as default, min and maxvalues

EnumComponent (struct)

EnumComponent

One item of an enum value

hints is reserved for future extensions, such as default, min and maxvalues

EnumDef (struct)

EnumDef

The definition of an enum

hints is reserved for future extensions, such as default, min and maxvalues

ModuleDef (struct)

ModuleDef

The contents of an idl file

hints is reserved for future extensions, such as default, min and maxvalues

InterfaceRepo (interface)

InterfaceRepo

The interface repository

enum TypeIdentification { tiUnknown = 0, tiVoid = 1, tiLong = 2, tiByte = 3, tiString = 4, tiBoolean = 5, tiFloat = 6, tiEnum = 128, tiType = 129, tiInterface = 130 }

TypeIdentification

InterfaceRepoV2 (interface)

InterfaceRepoV2

FlowSystemSender (interface)

FlowSystemSender

Internal use: implement distributed asynchronous streams.

The FlowSystemSender object transmits the packets that should be sent over the stream via _allocCustomMessage (Object_base).

FlowSystemReceiver (interface)

FlowSystemReceiver

Internal use: implement distributed asynchronous streams.

The FlowSystemReceiver object receives and extracts the packets sent by the sender object and injects them in the notification system again.

FlowSystem (interface)

FlowSystem

A flow system.

Flow systems handle the streaming between MCOP objects. As this streaming is network transparent (at least for asynchronous streams) they have this remote interface.

GlobalComm (interface)

GlobalComm

A global communication space used to obtain initial object references

MCOP needs a way to connect to initial (global) object references. This is done by these global communication spaces.

TmpGlobalComm (interface)

TmpGlobalComm

global communication based on the /tmp/mcop-<username> directory

TraderOffer (interface)

TraderOffer

TraderOffer - this contains an offer of an object (which is usually returned as result of a query.

TraderQuery (interface)

TraderQuery

TraderQuery - this is a query against the trader. The idea is simple: you say what you need, and the trader offers you components that do what you want.

Object (interface)

Object

Arts::Object is the base object that every interface implicitely inherits

it is also the source for generation of the Object_stub stuff (use mcopidl -e Arts::Object to avoid code generation for this interface)

Any (struct)

Any

a simple struct which can hold any other type

TraderEntry (struct)

TraderEntry

TraderEntries as produced by the loader

Loader (interface)

Loader

loader to load plugins (implemented in some language/binary format)

enum AutoSuspendState { asNoSuspend, asSuspend, asSuspendStop }

AutoSuspendState

SynthModule (interface)

SynthModule

The SynthModule interface is the base for all modules containing streams.

There are two goals achieved by this interface. On one side, there is functionality which users of stream carrying modules want to use (which is: start streaming, stop streaming).

On the other hand, there is functionality which the flow system will use to achieve these goals.

Synth_PLAY (interface)

Synth_PLAY

Plays a stream of audio data to the soundcard

Synth_RECORD (interface)

Synth_RECORD

Records a stream of audio data from the soundcard

Synth_FREQUENCY (interface)

Synth_FREQUENCY

A frequency generator

This kind of object is used to create frequencies. Oscillators are connected at the output of this object

Synth_WAVE_SIN (interface)

Synth_WAVE_SIN

A sine wave

Synth_MULTI_ADD (interface)

Synth_MULTI_ADD

A module which mixes an arbitary number of audio streams

Synth_ADD (interface)

Synth_ADD

A module which adds two audio streams

Synth_MUL (interface)

Synth_MUL

Multiplies two audio streams

Synth_PLAY_WAV (interface)

Synth_PLAY_WAV

This plays a wave file

Synth_BUS_UPLINK (interface)

Synth_BUS_UPLINK

sends data to a bus - busses are dynamic N:M connections - all signals from all uplinks are mixed together, and sent to all downlinks

Synth_BUS_DOWNLINK (interface)

Synth_BUS_DOWNLINK

receives data from a bus - busses are dynamic N:M connections - all signals from all uplinks are mixed together, and sent to all downlinks

ByteStreamToAudio (interface)

ByteStreamToAudio

Byte stream to audio conversion object

Converts an asynchronous byte stream to a synchronous audio stream

StereoEffect (interface)

StereoEffect

Base interface for all stereo effects

StereoVolumeControl (interface)

StereoVolumeControl

this is a simple clipping stereo volume control

StereoFFTScope (interface)

StereoFFTScope

A funny FFT scope

StereoEffectStack (interface)

StereoEffectStack

A stack of stereo effects

enum AudioManagerDirection { amPlay, amRecord }

AudioManagerDirection

AudioManagerInfo (struct)

AudioManagerInfo

Information structure for audio manager clients

AudioManagerClient (interface)

AudioManagerClient

an audio manager client

AudioManager (interface)

AudioManager

The audio manager interface

Synth_AMAN_PLAY (interface)

Synth_AMAN_PLAY

This is a virtual output port, which you use to play data. Where exactly this data gets played is managed by the audiomanager.

Creation: there are two ways to initialize a Synth_AMAN_PLAY - one is to set title and autoRestoreID to sensible (non empty) values. The other is to pass an already initialized AudioManagerClient on the constructor.

Synth_AMAN_RECORD (interface)

Synth_AMAN_RECORD

This is a virtual input port, which you use to record data. Where this data comes from is in turn managed by the audiomanager.

Creation: there are two ways to initialize a Synth_AMAN_RECORD - one is to set title and autoRestoreID to sensible (non empty) values. The other is to pass an already initialized AudioManagerClient on the constructor.

SampleStorageEntry (interface)

SampleStorageEntry

One entry of the sample storage - initially, you'll need to fill the entry.

To do so, call write repeatedly to fill it with data, and finish() when you are done. After that you can use the filename attribute to get the name of the file on the server that has stored the data. You can use this filename for other things (i.e. SimpleSoundServer::play).

SampleStorage (interface)

SampleStorage

Interface for storing files on the sound server

ByteSoundProducer (interface)

ByteSoundProducer

Producer of byte sound

This is used inside the sound server interface

SimpleSoundServer (interface)

SimpleSoundServer

This is a very simple sound server interface

WARNING: This currently inherits a KMedia2 PlayObjectFactory for test purposes, but don't rely on that

enum RealtimeStatus { rtRealtime, rtNoSupport, rtNoWrapper, rtNoRealtime }

RealtimeStatus

SoundServer (interface)

SoundServer

This is an enhanced sound server interface which can be used to query status information or suspend the soundserver right away

SoundServerV2 (interface)

SoundServerV2

This is an even more enhanced sound server interface that supports changing the autosuspend time, and returning more information about the server settings.

WavPlayObject (interface)

WavPlayObject

A KMedia2 Wave PlayObject

enum poState { posIdle, posPlaying, posPaused }

poState

enum poCapabilities { capSeek = 1, capPause = 2 }

poCapabilities

poTime (struct)

poTime

KMedia2 time information

This is a time value which contains either milliseconds & seconds, or a custom unit or both. It is a flexible time base.

If a value isn't there, it is set to -1.

PlayObject_private (interface)

PlayObject_private

private part of the PlayObject API (don't use)

PlayObject (interface)

PlayObject

KMedia2 PlayObject - these can be used by Kaiman for instance

PlayObjectFactory (interface)

PlayObjectFactory

use this to create new PlayObjects for media

InputStream (interface)

InputStream

UNSTABLE/EXPERIMENTAL!

FileInputStream (interface)

FileInputStream

UNSTABLE/EXPERIMENTAL! Example stream for files.

StdoutWriter (interface)

StdoutWriter

StreamPlayObject (interface)

StreamPlayObject

PlayObjectFactoryV2 (interface)

PlayObjectFactoryV2

Extended Version of PlayObjectFactory

enum PortDirection {input, output}

PortDirection

enum PortConnType { conn_stream, conn_event, conn_property}

PortConnType

ConnType (maybe obsolete)

ConnType: (connection type) this is wether this value is used

- once (such as a filename of a waveplugin) -> property this implies that the allowed connection is only value

- event based (such as midi events) -> event when events arrive, they are processed, when no events arrive, don't care

- stream based (such as audio streams) -> stream every calculation of the module consumes/creates a sample that means: no data = no calculation possible

WARNING: This is part of the artsbuilder dynamic programming interface as the MCOP port isn't there yet, this stuff may change

PortType (struct)

PortType

PortType (maybe obsolete)

isMultiPort specifies if the port can take multiple incoming connections or not. This is only relevant/allowed for input ports, the output of all output ports may be connected to any amount of receivers.

Ports which can take multiple connections are handled differently internally. (Also, artsbuilder needs to know whether to allow multi- connections or not).

WARNING: This is part of the artsbuilder dynamic programming interface as the MCOP port isn't there yet, this stuff may change

ModuleInfo (struct)

ModuleInfo

PortDesc (interface)

PortDesc

ModuleDesc (interface)

ModuleDesc

StructureDesc (interface)

StructureDesc

StructurePortDesc (interface)

StructurePortDesc

ObjectFactory (interface)

ObjectFactory

LocalFactory (interface)

LocalFactory

StructureBuilder (interface)

StructureBuilder

ArtsBuilderLoader (interface)

ArtsBuilderLoader

Structure (interface)

Structure

TimeStamp (struct)

TimeStamp

an absolute timestamp

enum MidiCommandStatus { mcsCommandMask = 0xf0, mcsChannelMask = 0x0f, mcsNoteOff = 0x80, mcsNoteOn = 0x90, mcsKeyPressure = 0xa0, mcsParameter = 0xb0, mcsProgram = 0xc0, mcsChannelPressure = 0xd0, mcsPitchWheel = 0xe0 }

MidiCommandStatus

different status of a midi command

enum MidiCommandParameter { mcpSustain = 0x40, mcpAllNotesOff = 0x7b }

MidiCommandParameter

the following are to be used once status is (mcsParameter|channel):

MidiCommand (struct)

MidiCommand

a midi command

MidiEvent (struct)

MidiEvent

a midi event

MidiPort (interface)

MidiPort

a midi port

enum MidiClientDirection { mcdPlay, mcdRecord }

MidiClientDirection

enum MidiClientType { mctDestination, mctApplication }

MidiClientType

MidiClientInfo (struct)

MidiClientInfo

information about a midi client

MidiClient (interface)

MidiClient

a midi manager client

MidiManager (interface)

MidiManager

Some general notes to the understanding of the midi manager. The midi manager has the task to intelligently assign applications to destinations.

It is important to understand what it actually does to understand the distinction first, which is expressed through the "MidiClientType" of each client.

APPLICATIONS: An application is a user visible application, that produces or records midi data. It is important for the understanding of an application, that an application actually *wants* to be supplied with data, or wants to get its data played. Thus, adding an application to the midi manager is an implicit request: "go and find a place where to put the events to (or get the events from)".

Examples for applications would be games or midi players.

DESTINATIONS: A destination is a system service that plays or supplies midi data. The characteristic here is that a destination is something that is there if you need it.

Examples for destinations might be might be a hardware device or an emulation of a hardware device (such as a virtual sampler).

So the process is as follows: - destinations register themselves at the midi manager, and provide system services in that way

- when the user starts an application (such as a midi player), the midi manager's task is to assign it to a suitable destination

- the user can interact with the process by changing the way applications are assigned to destinations - the midi manager will try to learn what the user wants, and next time do a better job while assigning

To actually record or play some data, you need to register a client first, and after that, you can add Input or Output "MidiPort"s to your client, so that you can actually send or receive events with them.

MidiTest (interface)

MidiTest

RawMidiPort (interface)

RawMidiPort

MidiTimer (interface)

MidiTimer

Midi Timer - can be used to provide timing for midi ports that have no "native" timing.

SystemMidiTimer (interface)

SystemMidiTimer

Uses the system time (i.e. gettimeofday() and similar) to provide midi timing

AudioMidiTimer (interface)

AudioMidiTimer

Uses the audio time (i.e. samples rendered to /dev/dsp) to provide midi timing

Widget (interface)

Widget

Button (interface)

Button

Poti (interface)

Poti

LineEdit (interface)

LineEdit

GuiFactory (interface)

GuiFactory

A gui factory is an object that can create a Widget which provides a user interface for a running object (for instance, you might have an effect running somewhere, and a gui factory

TODO: do we need another argument (or other arguments) to specify style or other parameters?

GenericGuiFactory (interface)

GenericGuiFactory

Convenience gui factory, which knows how and whether to

- build a gui out of hints? - create an artsbuilder built gui? - create a gui composed of other widgets? - create a completely custom gui?

ObjectCache (interface)

ObjectCache

MidiReleaseHelper (interface)

MidiReleaseHelper

Synth_CAPTURE_WAV (interface)

Synth_CAPTURE_WAV

this interface currently has probably a problem - usually, if you are using such a module, you would expect that you can specify the filename with it - BUT, if you allow this, then any instrument definition file (.arts) and similar might overwrite every file the user can access, which might not be what you want, so I currently save it to a file in /tmp/mcop-<username>/capture.wav (which might be unlucky since the user might not have too much space there)

Synth_NIL (interface)

Synth_NIL

Synth_DEBUG (interface)

Synth_DEBUG

Synth_DATA (interface)

Synth_DATA

Synth_ATAN_SATURATE (interface)

Synth_ATAN_SATURATE

Synth_BRICKWALL_LIMITER (interface)

Synth_BRICKWALL_LIMITER

Synth_AUTOPANNER (interface)

Synth_AUTOPANNER

Synth_DELAY (interface)

Synth_DELAY

Synth_CDELAY (interface)

Synth_CDELAY

Synth_FM_SOURCE (interface)

Synth_FM_SOURCE

Synth_TREMOLO (interface)

Synth_TREMOLO

Synth_FX_CFLANGER (interface)

Synth_FX_CFLANGER

Synth_NOISE (interface)

Synth_NOISE

Synth_WAVE_TRI (interface)

Synth_WAVE_TRI

Synth_WAVE_SQUARE (interface)

Synth_WAVE_SQUARE

Synth_WAVE_PULSE (interface)

Synth_WAVE_PULSE

Synth_WAVE_SOFTSAW (interface)

Synth_WAVE_SOFTSAW

Synth_OSC_SAW (interface)

Synth_OSC_SAW

Synth_ENVELOPE_ADSR (interface)

Synth_ENVELOPE_ADSR

Synth_SHELVE_CUTOFF (interface)

Synth_SHELVE_CUTOFF

Synth_XFADE (interface)

Synth_XFADE

Synth_MIDI_TEST (interface)

Synth_MIDI_TEST

Synth_MIDI_DEBUG (interface)

Synth_MIDI_DEBUG

Synth_FREEVERB (interface)

Synth_FREEVERB

FreeverbGuiFactory (interface)

FreeverbGuiFactory

Synth_CPU_LOAD (interface)

Synth_CPU_LOAD

Synth_STD_EQUALIZER (interface)

Synth_STD_EQUALIZER

Synth_RC (interface)

Synth_RC

Synth_MOOG_VCF (interface)

Synth_MOOG_VCF

Synth_PSCALE (interface)

Synth_PSCALE

Synth_SEQUENCE (interface)

Synth_SEQUENCE

Synth_PITCH_SHIFT (interface)

Synth_PITCH_SHIFT

Interface_MIDI_NOTE (interface)

Interface_MIDI_NOTE

Synth_STRUCT_KILL (interface)

Synth_STRUCT_KILL


Generated by: stefan on stefan on Sat Jun 2 23:13:43 2001, using kdoc 2.0a53.