Magic Voice
Magic Voice | |
---|---|
Typ | Steckmodul |
Hersteller | Commodore |
Neupreis | 59.95 US$ |
Erscheinungsjahr | 1984 |
Produktionsende | 1984 |
Prozessor | Voice Synthesizer T6721AP @ 640 kHz |
Speicher | 128 KByte ROM |
OS | Firmware im ROM |
Das Magic Voice Speech Module ist ein Steckmodul zur Sprachausgabe für den Commodore 64, das über die eingebaute BASIC-Erweiterung oder mittels Assembler gesprochene Wörter über den Lautsprecher ausgeben kann.
Der BASIC-Wortschatz des C64 wird um die Befehle SAY
, RATE
, VOC
und RDY
erweitert. Mit SAY wird das Modul veranlasst, ein "Wort" (das kann auch ein ganzer Satz sein) auszusprechen. Bereits im Modul eingebaut sind 235 vordefinierte Wörter, die mit einer angenehmen weiblichen Stimme gesprochen werden. Durch den eingebauten Sprachsynthesizer ist das Modul in der Lage, praktisch beliebige Wörter mit jeder erdenklichen Stimme wiederzugeben. Diese müssen jedoch vorher mittels Sprachanalyse erstellt werden und im passenden digitalen Format im Speicher des C64 vorliegen.
Das Magic Voice wurde seinerzeit von Commodore als realistischstes Sprachausgabemodul auf dem Markt beworben, allerdings nur von sehr wenig Software unterstützt. Praktisch sind dies nur die Steckmodule:
- Wizard of Wor (Spiel)
- Gorf (Spiel)
- A Bee C's (Lernspiel für Kinder)
Bei Wizard of Wor und Gorf wird dann während des Spielablaufs so wie in der Automatenversion gesprochen und der Spieler verhöhnt.
Ursprünglich wollte Commodore auch das Steckmodul Magic Desk II (eine erweiterte Version der Büroanwendung Magic Desk I) mit Sprache ausstatten. Dieses Modul ist aber nie erschienen.
VICE emuliert das Magic Voice seit Juni 2010.
Technische Daten[Bearbeiten | Quelltext bearbeiten]
- Benutzte Chips:
- T6721A Sprachsynthesizer, Toshiba
- 6525 Tri-Port-Interface, MOS
- LA05-124 Gate Array, General Instrument
- ROM : 128 KBytes, MOS 251476 oder Standard Eprom
- RAM : ohne
- Abmessungen: 53 × 140 × 135 mm
- Gewicht: 315 g
- Stromversorgung: 5 V Gleichspannung aus dem C64-Expansionsport
- Leistungsaufnahme: ca. ?? W
- Anschlüsse: Audio-In und Audio-Out jeweils auf Cinch-Buchse
Vokabular[Bearbeiten | Quelltext bearbeiten]
Das eingabaute englischsprachige Vokabular aus 235 Wörtern (Wort 0 bis 234) besteht aus den gesprochenen Zahlen 0 bis 12 (Wörter 0 bis 12), einigen Zahlensilben und -vielfache, dem Alphabet von A bis Z und einem Ruhewort (SILENCE - Wörter 21 bis 47), sowie Wörter bestehend aus der Mathematik (Wörter 48 bis 57), dem Satzbau, wichtige Wörter der englischen Sprache, Farben, der frühen Computertechnik, sowie Commodore relevante Wörter.
Programmierung[Bearbeiten | Quelltext bearbeiten]
Allgemein[Bearbeiten | Quelltext bearbeiten]
Damit Programme nicht eine Fehlermeldung produzieren, wenn das Magic Voice Steckmodul nicht eingesteckt oder aktiviert ist, kann mit den folgenden BASIC-Programmzeilen dies abgefragt und verhindert werden: [1]
10 IF PEEK(49176) <> 234 AND PEEK(49177) <> 234 AND PEEK(49178) <> 96 THEN GOTO 1000: REM PRUEFT OB MODUL AKTIV IST 20 SAY1:SAY"HI" 30 REM AB HIER DARF #"MAGIC VOICE" BASIC-BEFEHLE# EINGESETZT WERDEN... ... 999 END : REM !!! ENDE DER "MAGIC VOICE" BASIC-BEFEHLE ! 1000 REM AB HIER DARF NUR #NORMALER BASIC-CODE# GESCHRIEBEN WERDEN !!!
Die wichtigsten Zeilen der Abfrage-Routine sind die Speicheradressen 49176-49178 mit dem PEEK-Befehl, der überprüft, ob die Speicheradressen mit Werten des Magic Voices Moduls vorhanden sind.
BASIC[Bearbeiten | Quelltext bearbeiten]
Folgende zusätzliche BASIC-Befehle bringt die BASIC-Erweiterung des Magic Voice Steckmodul mit:[2]
- SAY<Argument>
Das Argument bei SAY
kann eine Zeichenkette, ein Zahlenwert, d. h. eine Zahl oder eine berechnetes Zahl-Ergebnis, oder anstelle eine Variable sein. Allerdings kann nur jeweils eine Phrase bzw. Wort ausgegeben werden. Beispiele:
SAY "HI" SAY 2017 A$ = "YELLOW": SAY A$ Z = 128 : SAY Z SAY (1900+84)
Falls ein Wort, das mit SAY ausgegeben wird, nicht in dem aktuellen im Speicher befindlichen Vokabular des Magic Voice enthalten ist, wird die Fehlermeldung "ILLEGAL QUANTITY ERROR" ausgegeben.
- RATE(<Zahlenargument>)
Die Sprachgeschwindigkeit wird mit RATE
bestimmt und kann eine ganze Zahl zwischen 1 (schnell; 1,4x schneller) bis 10 (langsam; 0,65x langsamer) sein. Die normale Sprachgeschwindigkeit des Moduls ist 4. Falls die falschen Zahlenwerte verwendet werden oder kein Zahlenwert benutzt wird, so erscheint die Fehlermeldung ? TYPE MISMATCH ERROR. Beispiel: "Countdown"
FOR X=10 TO 1 RATE(X) SAY (X-1) NEXT X
- VOC(<Speicheradresse>)
Falls die vorhandene Vokabel-Liste der gesprochene Wörter nicht ausreicht, können weitere Vokabeln von einem Datenträger aus wie Diskette oder Datasette in den Speicher des C64 hinein geladen werden und anschließend mit VOC(Speicheradresse)
zugewiesen werden. Falls hier die falschen Zahlenwerte (0 bis 65535) verwendet werden oder kein Zahlenwert benutzt wird, so erscheint ebenfalls die Fehlermeldung ? TYPE MISMATCH ERROR. Beispiel:
LOAD "NWORD.VOCAB",8,1 :REM NEUES VOKABULAR LADEN NWORD = 32768 :REM STARTADRESSE DER VOCAB DATEN VOC(NWORD) :REM ZUWEISUNG DES NEUEN VOKABULARS SAY "SHARK" :REM MAGIC VOICE SAGT "SHARK"
- RDY
RDY
ist eine logische Funktion zur Überprüfung, ob das Magic Voice wieder einsatzbereit ist, damit alle Wörter ausgesprochen werden. Beispiel:
10 IF NOT RDY THEN 10 20 SAY "COMMODORE" 30 IF NOT RDY THEN 30 40 SAY 64
Da RDY in BASIC, falls es nicht vorhanden ist, als Variable interpretiert wird, könnte es auch zur Überprüfung eingesetzt werden, ob das Magic Voice Steckmodul vorhanden und aktiv ist (anstelle der Routine im Abschnitt "Programmierung - Allgemein")! Wenn das Magic Voice vorhanden ist, ist der Wert von RDY stets -1.
10 IF RDY<>-1 THEN PRINT "KEIN MAGIC VOICE VORHANDEN!" : END 20 REM BASIC-BEFEHLE DES "MAGIC VOICE"... 30 SAY "HI": SAY "COMMODORE" : SAY 64
Assembler[Bearbeiten | Quelltext bearbeiten]
Folgende Routinen können mittel Assembler genutzt werden:
Routine | Speicheradresse | Beschreibung ==================================================================== SRESET | $C003 (49155) | Reset Magic Voice SPSTAT | $C006 (49158) | Status des Magic Voice (ACC = 1 bereit / -1 spricht) SAYIT | $C009 (49161) | Sagt ein Wort des X-Registers (0 - 255 Wörter des Modulspeichers; 256 - 4095 Wörter im Programmspeicher) SAYRAM | $C00C (49164) | Sagt ein Wort des X-Registers SPEED | $C00F (49167) | Geschwindigkeit über das A-Register setzen (schnell 1 bis langsam 10; normal: 4) SETTAB | $C012 (49170) | A-Register: Low-Byte ; X-Register: High-Byte Weist den Speicherbereich zu für die Wörter höher als 256 bis max. 4095 SIGNAL | $C015 (49173) | Nutzbarer bzw. veränderbarer Speicherbereich $C018-$C01A mit den optionalen Werte $EA (234), $EA (234), $60 (96), | wenn Magic Voice aktiv ist.
Verpackung und Inhalt[Bearbeiten | Quelltext bearbeiten]
Das Modul liegt zusammen mit dem Audio-Anschlusskabel und der Bedienungsanleitung in der Pappverpackung.
Quellen[Bearbeiten | Quelltext bearbeiten]
Weblinks[Bearbeiten | Quelltext bearbeiten]
- Userguide bei Project64.org
- ROM und Schaltplan bei www.zimmers.net
- Weitere Informationen über das Magic Voice Speech Modul (Sicherung vom 3. September 2012 bei archive.org)
- Bilder bei retrogames.co.uk
- Magic Voice Classics: CSDb- Release Nr. 139481 . Wizard of Wor, Gorf und "A Bee C's" für EasyFlash. Sprachsynthese durch C64, kein Magic Voice notwendig!
Video
- youtube.com Infos
- youtube.com Sprachdemo