home *** CD-ROM | disk | FTP | other *** search
- TABLE OF CONTENTS
-
- (V35) maestix.library/AllocMaestro
- (V36) maestix.library/FlushReceive
- (V36) maestix.library/FlushTransmit
- (V35) maestix.library/FreeMaestro
- (V35) maestix.library/GetStatus
- (V35) maestix.library/ReceiveData
- (V35) maestix.library/SetMaestro
- (V38) maestix.library/StartRealtime
- (V38) maestix.library/StopRealtime
- (V35) maestix.library/TransmitData
-
- maestix.library/AllocMaestro maestix.library/AllocMaestro
-
- NAME
- AllocMaestro -- Allokiert die Maestro-Soundkarte (V35)
-
- SYNOPSIS
- MaestroBase = AllocMaestro (Tags)
- D0.l A0.l
-
- (struct MaestroBase *) AllocMaestro (struct TagItem *)
-
- FUNCTION
- Diese Funktion belegt die Maestro-Soundkarte und gewährt dem
- Klient den alleinigen Zugriff.
-
- Die Karte muß als erstes allokiert werden, bevor sie angesprochen
- werden darf.
-
- Der Grundzustand nach AllocMaestro() ist:
-
- Input ist INPUT_STD,
- Output ist OUTPUT_BYPASS,
- Studio-Modus ist abgeschaltet,
- Copy-Protection ist aus,
- Emphasis ist aus,
- Quell-Kategorie ist DAT,
- Rate ist 48kHz,
- Validity ist gesetzt,
- die UDBs sind zurückgesetzt.
-
- INPUTS
- Tags -- Reserviert für zukünftige Optionen.
- Momentan soll immer NULL oder ein Zeiger auf TAG_DONE
- übergeben.
-
- RESULTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur (privat)
- oder NULL, wenn die Karte bereits belegt wurde, nicht
- vorhanden ist oder der Speicher nicht ausreichte.
-
- NOTES
- Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen werden.
-
- SEE ALSO
- FreeMaestro()
-
- BUGS
- Leider kann nicht verhindert werden, daß eines der MacroSystem-
- Programme (also MaestroBR und Samplitude) die Karte nach einem
- AllocMaestro() immer noch belegen können.
-
- Diese Funktion versucht zwar auch herauszubekommen, ob ein solches
- Programm die Karte bereits belegt hat, und verhindert dann
- seinerseits die Belegung. Der Versuch ist allerdings nicht immer
- erfolgreich! Seit V37 wurde dieser Test wieder entfernt, da er
- bei älteren Maestros manchmal ungerechtfertigt fehlschlug. Die
- Programme AllocMstx und FreeMstx lösen das Problem.
-
- maestix.library/FlushReceive maestix.library/FlushReceive
-
- NAME
- FlushReceive -- Stoppt Empfang und gibt Msg zurück (V36)
-
- SYNOPSIS
- FlushReceive (MaestroBase)
- A0.l
-
- VOID FlushReceive (struct MaestroBase *)
-
- FUNCTION
- Der Empfangsvorgang wird gestoppt.
-
- Alle durch ReceiveData() an die Maestix gesendeten Nachrichten
- werden zurückgesendet.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
-
- RESULTS
-
- NOTES
-
- SEE ALSO
- FlushTransmit(), ReceiveData()
-
- BUGS
-
- maestix.library/FlushTransmit maestix.library/FlushTransmit
-
- NAME
- FlushTransmit -- Stoppt Sendung und gibt Msg zurück (V36)
-
- SYNOPSIS
- FlushTransmit (MaestroBase)
- A0.l
-
- VOID FlushTransmit (struct MaestroBase *)
-
- FUNCTION
- Der Sendevorgang wird gestoppt.
-
- Alle durch TransmitData() an die Maestix gesendeten Nachrichten
- werden zurückgesendet.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
-
- RESULTS
-
- NOTES
-
- SEE ALSO
- FlushReceive(), TransmitData()
-
- BUGS
-
- maestix.library/FreeMaestro maestix.library/FreeMaestro
-
- NAME
- FreeMaestro -- Gibt die Maestro-Soundkarte frei (V35)
-
- SYNOPSIS
- FreeMaestro (MaestroBase)
- A0.l
-
- VOID FreeMaestro (struct MaestroBase *)
-
- FUNCTION
- Nach dem Gebrauch muß der Klient die belegte Karte wieder
- freigeben. Das geschieht durch diese Funktion.
-
- Alle an Maestix gesendete Nachrichten werden zurückgesendet.
- Die FIFOs werden gelöscht, die Karte wird zurückgesetzt und
- geht in den Bypass-Modus über.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
-
- RESULTS
-
- NOTES
- Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen werden.
-
- SEE ALSO
- AllocMaestro()
-
- BUGS
-
- maestix.library/GetStatus maestix.library/GetStatus
-
- NAME
- GetStatus -- Gibt den Kartenstatus zurück (V35)
-
- SYNOPSIS
- Status = GetStatus (MaestroBase,Info-Typ)
- D0.l A0.l D0.l
-
- ULONG GetStatus (struct MaestroBase *,ULONG)
-
- FUNCTION
- Der Zustand vom gewünschten Info-Typ wird zurückgegeben.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
- Info-Typ -- Typ-Code (MSTAT_...), dessen Wert
- zurückgegeben werden soll.
-
- RESULTS
- Status -- Status des entsprechenden Typs.
-
- NOTES
- Es existieren folgende Info-Typen:
-
- MSTAT_TFIFO -- (ULONG) Zustand der Transmitter-FIFO
- - FIFO_Off -> Transmitter ist aus
- - FIFO_Running -> Übertragung läuft
- - FIFO_Error -> seit der letzten Abfrage
- trat ein Fehler auf
-
- MSTAT_RFIFO -- (ULONG) Zustand der Receiver-FIFO
- - FIFO_Off -> Receiver ist aus
- - FIFO_Running -> Übertragung läuft
- - FIFO_Error -> seit der letzten Abfrage
- trat ein Fehler auf
-
- MSTAT_Signal -- (BOOL) prüft, ob ein Signal am gewünschten INPUT
- anliegt.
-
- MSTAT_Emphasis -- (BOOL) gibt an, ob das Eingangssignal mit Emphasis
- aufgenommen wurde.
-
- MSTAT_DATsrc -- (BOOL) gibt an, ob die Datenquelle ein DAT- bzw.
- DCC-Recorder ist.
-
- MSTAT_CopyProh -- (BOOL) zeigt, ob ein Urheberrechtschutz vom
- Quellsignal gewünscht wird. Ob es sich aber
- bereits um eine Kopie handelt, läßt sich nicht
- feststellen.
-
- MSTAT_Rate -- (ULONG) gibt die Rate am Eingang an.
-
- MSTAT_UDB -- (UBYTE) [V37] gibt die aktuellen UDBs zurück.
-
- SEE ALSO
-
- BUGS
-
- maestix.library/ReceiveData maestix.library/ReceiveData
-
- NAME
- ReceiveData -- Empfängt Daten in eine Message (V35)
-
- SYNOPSIS
- ReceiveData (MaestroBase, DataMessage)
- A0.l A1.l
-
- VOID ReceiveData (struct MaestroBase, struct DataMessageNode *)
-
- FUNCTION
- Dies ist die Funktion zur Übertragung von Daten durch die Maestro.
-
- Der Platz für die eingehenden Daten wird in einer normalen
- System-Message zur Verfügung gestellt. Diese Message muß einen
- Zeiger auf den Reply-Port vom Klienten haben. Außerdem wird in
- der Message ein Zeiger auf den zu füllenden Puffer sowie dessen
- Länge übergeben.
-
- Diese Message wird nun in die Eingangs-Queue eingehängt. Sollte
- der Empfangsvorgang noch nicht gestartet worden sein, geschieht
- dies danach.
-
- Wenn der Datenpuffer durch die eingehenden Daten gefüllt wurde,
- wird die Message an den Klienten replyed. Er kann nun die Daten
- bearbeiten und anschließend die Message erneut absenden.
-
- Sollten die Messages ausbleiben, wird der Einlesevorgang
- abgebrochen, wenn die Receive-FIFO überläuft.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
- DataMessage -- Zeiger auf eine DataMessageNode mit einem Zeiger
- auf den Datenpuffer für die eingehenden Daten.
-
- RESULTS
-
- NOTES
- Der Datenpuffer muß Public Memory sein und an einer durch 4
- teilbaren Adresse beginnen. Die Datenpuffer-Länge muß mindestens
- 10KByte betragen und durch 1024 teilbar sein.
-
- Vorher sollte ein evtl. laufender Realtime-Effekt gestoppt
- werden.
-
- SEE ALSO
- TransmitData(), FlushReceive(), StopRealtime()
-
- BUGS
- maestix.library/SetMaestro maestix.library/SetMaestro
-
- NAME
- SetMaestro -- Stellt die Maestro-Parameter ein (V35)
-
- SYNOPSIS
- SetMaestro (MaestroBase, Tags)
- A0.l A1.l
-
- VOID SetMaestro (struct MaestroBase *, struct TagItem *)
-
- FUNCTION
- Die Kartenparameter werden verändert. Hierzu werden der
- Funktion Tags übergeben.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
- Tags -- Tags, die die Einstellungen angeben.
-
- RESULTS
-
- TAGS
- MTAG_Input -- (ULONG) gibt den Eingang an, den die Maestro
- verwenden soll. Default ist INPUT_STD, was
- den vom User gewählten Standard-Eingang verwendet.
- Mit INPUT_OPTICAL und INPUT_COAXIAL kann auch
- gezielt ein Eingang ausgewählt werden.
- INPUT_SRC48K wählt eine interne Quelle, welche
- konstant einen 48kHz-Referenztakt liefert,
- unabhängig vom Eingangssignal.
-
- MTAG_Output -- (ULONG) gibt an, welches Signal am Ausgang vorliegt.
- Default ist OUTPUT_BYPASS, womit das am
- gewählten Eingang anliegende Signal direkt zum
- Ausgang weitergeleitet wird. OUTPUT_INPUT gibt
- das vom Encoder codierte Eingangssignal am
- Ausgang aus. So können gezielt UDBs und CSBs
- geändert werden. Mit OUTPUT_FIFO wird das Signal
- von der Transmit-FIFO an den Ausgang gelegt.
-
- MTAG_SetCSB -- (ULONG) Die angegebenen 32 Bit werden als
- Channel Status Bits durch den Encoder ausgegeben.
- Dieses Tag sollte nur in Ausnahmefällen verwendet
- werden!
-
- MTAG_SetUDB -- (ULONG) Die angegebenen 32 Bit werden als
- User Data Bits durch den Encoder ausgegeben.
-
- MTAG_Studio -- (BOOL) Ist dieses Tag TRUE, wird in den
- Studio-Modus geschaltet und die CSBs entsprechend
- dieser Norm kodiert. Im Heimbereich sollte dieser
- Modus immer FALSE sein (default).
-
- MTAG_CopyProh -- (ULONG) gibt an, ob ein Kopieschutz verwendet
- werden soll. Default ist CPROH_OFF, was einen
- Kopierschutz abschaltet. CPROH_ON aktiviert
- den Kopierschutz und erlaubt noch eine digitale
- Kopie der Ausgangssignals. CPROH_PROHIBIT
- sperrt eine digitale Aufnahmemöglichkeit.
- CPROH_INPUT schaltet den Kopierschutz entsprechend
- dem Eingangssignal aus oder ein.
-
- MTAG_Emphasis -- (ULONG) gibt die Emphasis des Ausgangssignals
- an. Default ist EMPH_OFF, was keine Emphasis
- angibt. Standard ist EMPH_50us ( = EMPH_ON);
- im Studio-Modus steht außerdem noch EMPH_CCITT
- und EMPH_MANUAL zur Verfügung. EMPH_INPUT
- wählt die Emphasis entsprechend dem Eingangssignal.
-
- MTAG_Source -- (ULONG) gibt den Quellen-Kategoriecode an.
- Default ist SRC_DAT, außerdem sind SRC_CD,
- SRC_DSR, SRC_ADCONV und SRC_INSTR angegeben.
- Mit SRC_INPUT wird gemäß dem Eingangssignal
- zwischen SRC_DAT und SRC_CD umgeschaltet.
-
- MTAG_Rate -- (ULONG) gibt die Datenrate an. Default ist
- RATE_48000, ansonsten existieren RATE_44100,
- RATE_32000 und RATE_48000MANU. RATE_INPUT
- wählt die Rate gemäß dem Eingangssignal.
-
- MTAG_Validity -- (BOOL) gibt die Gültigkeit des ausgehenden
- Signals an. Ist dieses Tag FALSE, sind die
- Daten ungültig, was von vielen Endgeräten
- erkannt wird.
-
- MTAG_ResetUDB -- Wenn dieses Tag angegeben wird, wird die UDB-
- Information gelöscht und eine Ausgabe der
- UDBs unterbunden.
-
- MTAG_ResetLSA -- [V37] Wenn dieses Tag angegeben wird, wird die
- Local-Sample-Address gelöscht. Diese findet in
- der Übertragung im Studio-Format verwendung.
-
- NOTES
- Beachten Sie, daß MTAG_Rate lediglich in das Ausgabesignal
- verwoben wird, jedoch keine Rate auf der Maestro einstellt.
-
- Die Maestro ist lediglich in der Lage, eine 48kHz-Rate zu erzeugen
- (INPUT_SRC48K). Davon abweichende Raten müssen am ausgewählten
- Eingang angelegt werden.
-
- Stimmt die MTAG_Rate nicht mit dem tatsächlichen Takt überein,
- kann das Signal in der Regel vom Empfänger nicht bearbeitet
- werden.
-
- Ein DAT-Delay wird eingelegt, wenn durch MSTAG_Input und/oder
- MSTAG_Output ein Ein- bzw. Ausgang gewechselt wird. Beachten Sie
- hier, daß die Wartezeit bis zu 30 Sekunden dauern kann!
-
- Achtung: Diese Funktion darf nur aus einem DOS-Prozeß aufgerufen
- werden!
-
- SEE ALSO
-
- BUGS
-
- maestix.library/StartRealtime maestix.library/StartRealtime
-
- NAME
- StartRealtime -- Startet einen Realtime-Effekt (V38)
-
- SYNOPSIS
- StartRealtime (MaestroBase, Tags)
- A0.l A1.l
-
- VOID StartRealtime (struct MaestroBase *, struct TagItem *)
-
- FUNCTION
- Ein Realtime-Effekt wird gestartet. Vorher sollte durch SetMaestro()
- der entsprechende Eingang ausgewählt und OUTPUT_FIFO eingestellt
- werden.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
- Tags -- Tags, die die Effektparameter angeben.
-
- RESULTS
-
- TAGS
- MTAG_Effect -- (ULONG) Wählt einen eingebauten Effekt aus (default:
- RFX_Bypass). Effekte siehe Includedatei.
- MTAG_A0 -- (APTR) Parameter für die Effekte
- MTAG_A1 -- (APTR) Parameter für die Effekte
- MTAG_D2 -- (ULONG) Parameter für die Effekte
- MTAG_D3 -- (ULONG) Parameter für die Effekte
- MTAG_CustomCall -- (APTR) Dieses Tag signalisiert, daß eine eigene
- Effekt-Routine verwendet werden soll. Übergeben wird durch
- dieses Tag ein Zeiger auf diese Routine.
-
- NOTES
- Die eigene Effekt-Routine bekommt folgende Parameter übergeben:
-
- -> D0 -- (WORD) linkes Datenwort
- -> D1 -- (WORD) rechtes Datenwort
- -> D2 -- (ULONG) siehe MTAG_D2
- -> D3 -- (ULONG) siehe MTAG_D3
- -> D6 -- (ULONG) Scratch-Register
- -> D7 -- (ULONG) Scratch-Register
- -> A0 -- (ULONG) siehe MTAG_A0
- -> A1 -- (ULONG) siehe MTAG_A1
- -> A2 -- (APTR) Rücksprungadresse
-
- Die Routine liefert:
-
- <- D0 -- (WORD) neues linkes Datenwort
- <- D1 -- (WORD) neues rechtes Datenwort
-
- Die Register D2 bis D5 und A0 bis A7 dürfen nicht verändert werden.
-
- Der Rücksprung aus der Effekt-Routine erfolgt mit "JMP (A2)", und
- nicht etwa mit RTS!
-
- Die Effekt-Routine muß im MEMF_PUBLIC-Bereich stehen! Zu beachten
- ist hier, daß ein Task nicht unbedingt im MEMF_PUBLIC-Bereich
- gestartet wird! Die Routine sollte außerdem in hochoptimiertem
- Assemblercode geschrieben sein.
-
- Wenn die Effektroutine zu viel Rechenzeit beansprucht, stoppt die
- Realtime-Funktion automatisch, und MSTAT_TFIFO sowie MSTAT_RFIFO
- melden FIFO_Error.
-
- SEE ALSO
- StopRealtime()
-
- BUGS
- maestix.library/StopRealtime maestix.library/StopRealtime
-
- NAME
- StopRealtime -- Stoppt den Realtime-Effekt (V38)
-
- SYNOPSIS
- StopRealtime (MaestroBase)
- A0.l
-
- VOID StopRealtime (struct MaestroBase *)
-
- FUNCTION
- Ein zuvor gestarteter Realtime-Effekt wird durch diese Funktion
- wieder gestoppt.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
-
- RESULTS
-
- NOTES
- Vor einem TransmitData() oder ReceiveData() muß ein eventuell
- laufender Realtime-Effekt durch diese Funktion gestoppt werden.
-
- SEE ALSO
- StartRealtime()
-
- BUGS
- maestix.library/TransmitData maestix.library/TransmitData
-
- NAME
- TransmitData -- Überträgt Daten in einer Message (V35)
-
- SYNOPSIS
- TransmitData (MaestroBase, DataMessage)
- A0.l A1.l
-
- VOID TransmitData (struct MaestroBase *, struct DataMessageNode *)
-
- FUNCTION
- Dies ist die Funktion zur Übertragung von Daten durch die Maestro.
-
- Die abgehenden Daten werden durch eine normale System-Message
- zur Verfügung gestellt. Diese Message muß einen Zeiger auf den
- Reply-Port vom Klienten haben. Außerdem wird in der Message ein
- Zeiger auf den auszugebenden Puffer sowie dessen Länge übergeben.
-
- Diese Message wird nun in die Ausgabe-Queue eingehängt. Sollte
- die Ausgabe noch nicht gestartet worden sein, geschieht dies
- danach.
-
- Wenn die Daten ausgegeben wurden, wird die Message an den Klienten
- replyed. Er kann den Pufferbereich nun mit neuen Daten füllen und
- erneut absenden.
-
- Sollten die Messages ausbleiben, wird die Ausgabe abgebrochen,
- sobald die Transmit FIFO vollständig geleert wurde.
-
- INPUTS
- MaestroBase -- Zeiger auf die MaestroBase-Struktur von
- AllocMaestro().
- Message -- Zeiger auf eine DataMessageNode mit den auszugebenden
- Daten.
-
- RESULTS
-
- NOTES
- Der Datenpuffer muß Public Memory sein und an einer durch 4
- teilbaren Adresse beginnen. Die Datenpuffer-Länge muß mindestens
- 10KByte betragen und durch 1024 teilbar sein.
-
- Vorher sollte ein evtl. laufender Realtime-Effekt gestoppt werden.
-
- SEE ALSO
- ReceiveData(), FlushTransmit(), StopRealtime()
-
- BUGS
-
-