Magic Voice

Aus C64-Wiki
Zur Navigation springenZur Suche springen
Magic Voice
Das Magic Voice Speech Modul
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:

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]

Die Commodore-Steckmodule: SFX Sound Sampler, Magic Voice (Speech Module) und Sound Expander (FM Sound Module).
  • 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]

Magic Voice, Verpackung
Magic Voice, Inhalt

Das Modul liegt zusammen mit dem Audio-Anschlusskabel und der Bedienungsanleitung in der Pappverpackung.

Quellen[Bearbeiten | Quelltext bearbeiten]

  1. Auszug aus: Magic Voice User's Guide Errata Sheet Sprache:englisch
  2. Auszug aus: Magic Voice User's Guide Sprache:englisch

Weblinks[Bearbeiten | Quelltext bearbeiten]


Video