![]() |
|
If you can't view the Datasheet, Please click here to try to view without PDF Reader . |
|
Datasheet File OCR Text: |
MSP53C391 and MSP53C392 Speech Synthesizers User's Guide May 2000 SPSU016A Printed on Recycled Paper IMPORTANT NOTICE Texas Instruments and its subsidiaries (TI) reserve the right to make changes to their products or to discontinue any product or service without notice, and advise customers to obtain the latest version of relevant information to verify, before placing orders, that information being relied on is current and complete. All products are sold subject to the terms and conditions of sale supplied at the time of order acknowledgment, including those pertaining to warranty, patent infringement, and limitation of liability. TI warrants performance of its semiconductor products to the specifications applicable at the time of sale in accordance with TI's standard warranty. Testing and other quality control techniques are utilized to the extent TI deems necessary to support this warranty. Specific testing of all parameters of each device is not necessarily performed, except those mandated by government requirements. Customers are responsible for their applications using TI components. In order to minimize risks associated with the customer's applications, adequate design and operating safeguards must be provided by the customer to minimize inherent or procedural hazards. TI assumes no liability for applications assistance or customer product design. TI does not warrant or represent that any license, either express or implied, is granted under any patent right, copyright, mask work right, or other intellectual property right of TI covering or relating to any combination, machine, or process in which such semiconductor products or services might be or are used. TI's publication of information regarding any third party's products or services does not constitute TI's approval, warranty or endorsement thereof. Copyright (c) 2000, Texas Instruments Incorporated Preface Read This First How to Use This Manual This document contains the following chapters: - Chapter 1 -Introduction to the MSP53C391 and MSP53C392 Speech Synthesizers - Chapter 2 -MSP53C391 Hardware Description - Chapter 3 -MSP53C392 Hardware Description - Chapter 4 -MSP53C391 and MSP53C392 Software Description - Appendix A -Editing Tools and Data Preparation - Appendix B -FM Synthesis - Appendix C -Listing of FMequM2.inc - Appendix D -MSP53C391/392 Timing Considerations - Appendix E -Listing of FM2INTR1.inc - Appendix F -MSP53C391 and MSP53C392 Data Sheet Related Documentation From Texas Instruments MSP50x3x Mixed-Signal Processor User's Guide (Literature Number SLOU006B) Read This First iii iv Contents Contents 1 Introduction to the MSP53C391 and MSP53C392 Speech Synthesizers . . . . . . . . . . . . . . 1.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 MSP53C391 and MSP53C392 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4 Pin Assignments and Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5 D/A Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.6 Algorithms Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-1 1-2 1-2 1-3 1-4 1-6 1-6 2 MSP53C391 Hardware Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-1 2.1 MSP53C391 Interface Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2 2.2 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 2.3 Master Microprocessor Interface Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 2.3.1 Method 1: Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 2.3.2 Method 2: Interrupt 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6 2.3.3 Method 3: Interrupt 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-8 2.4 Master Microprocessor Interface Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10 2.4.1 Timing Method 1: Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10 2.4.2 Timing Method 2: Interrupt 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-11 2.4.3 Timing Method 3: Interrupt 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12 2.5 MSP53C391 Device Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-13 MSP53C392 Hardware Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.1 Interface Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Master Microprocessor Interface Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1 Method 1: Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Master Microprocessor Interface Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Timing Method 1: Polling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5 MSP53C392 Device Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . MSP53C391 AND MSP53C392 Software Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1 Software Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 Command Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.3 Command Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Data Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4.1 Synthesis Selection Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-1 3-2 3-3 3-4 3-4 3-7 3-7 3-8 4-1 4-2 4-2 4-2 4-3 4-3 v 3 4 Contents 4.5 Command Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.1 Command Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.2 Pin Expansion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.3 Volume Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.4 Low-Power Sleep State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.5 Request Software Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.5.6 Generate Test Signal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 4-5 4-5 4-6 4-6 4-6 4-7 A-1 A-2 A-2 A-2 A-3 A-3 A-3 A-4 A-5 A Editing Tools and Data Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1 Editing Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1.1 WINSDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.1.2 SDS3000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2 Data Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.1 LPC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.2 MELP and CELP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.3 PCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A.2.4 FM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B FM Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-1 B.1 FM Synthesis Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2 B.2 FM Synthesis Format and Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2 B.2.1 Musical Notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3 B.2.2 Tempo Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-3 B.2.3 Tempo Synchronization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-4 B.2.4 LOADTIMBRE Command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-4 B.2.5 Transposition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-5 B.2.6 DETUNE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-5 B.2.7 Adjust Output Volume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-5 B.2.8 Modulation Index Adjustment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-6 B.2.9 End of Song . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-6 B.2.10 Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-7 B.3 FM Synthesis Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-9 B.4 Data Preparation of FM Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-12 B.4.1 MD2FM Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-13 B.4.2 FM2MERGE Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-14 B.4.3 Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-15 Listing of FMequM2.inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-1 C.1 Listing of FMequM2.inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2 MSP53C391/392 Timing Considerations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.1 General Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.2 MSP53C391 Timing Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D.3 MSP53C392 Timing Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-1 D-2 D-3 D-5 C D vi Figures E Listing of FMequM2.inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-1 E.1 Listing of FM2INTR1.inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-2 MSP53C391 and MSP53C392 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-1 F.1 MSP53C31 and MSP53C32 Data Sheet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-2 F Figures 1-1 1-2 2-1 2-2 2-3 B-1 MSP53C391 Pin Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4 MSP53C392 Pin Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5 MSP53C391 Interfacing Diagram (Method 1: Polling) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-4 MSP53C391 Interfacing Diagram (Method 2: Interrupt 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6 MSP53C391 Interfacing Diagram (Method 3: Interrupt 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-8 FM Conversion Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-12 Tables 1-1 1-2 1-3 2-1 3-1 4-1 4-2 4-3 4-4 4-5 4-6 4-7 B-1 MSP53C391 and MSP53C392 Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3 MSP53C391 Terminal Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4 MSP53C392 Terminal Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5 MSP53C391 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 MSP53C392 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Speech Initiation Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Synthesis Selection Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Command Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Command Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Pin Expansion Command Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Volume Control Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Volume Control Code Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 4-3 4-4 4-5 4-5 4-6 4-6 Command Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-7 Contents vii Chapter 1 Introduction to the MSP53C391 and MSP53C392 Speech Synthesizers Topic 1.1 1.2 1.3 1.4 1.5 1.5 Page Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2 MSP53C391 and MSP53C392 Comparison . . . . . . . . . . . . . . . . . . . . . . 1-3 Pin Assignments and Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4 D/A Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-6 Algorithms Supported . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-6 1-1 Description 1.1 Description MSP53C391 and MSP53C392 are standard slave synthesizers from Texas Instruments that accept compressed speech data from another microprocessor and produce speech with that data. This allows the MSP53C391 and MSP53C392 to be used with a master microprocessor in the various speech products including electronic learning aids, games, and toys. The TI MSP53C391 and MSP53C392 support several different speech synthesis algorithms to permit tradeoffs to meet the different price performance requirements of different markets. They also incorporate a two-channel FM synthesis routine for music generation. Both the MSP53C391 and MSP53C392 are special programs that run on the MSP50C3x device. For more information about the MSP50C3x, please refer to the MSP50x3x User's Guide (literature number: SLOU006B) 1.2 Features - Wide ranges of algorithms are incorporated in one chip. This allows the user to choose from a low bit rate to high-quality synthesizing routines for their application. Algorithms included are: LPC 5220, LPC D6 MELP v4.1 CELP v3.4, 4.2 kbps, 4.8 kbps, 6.2 kbps, 8.6 kbps, 10.7 kbps 8-bit PCM FM II - Software selectable 8-kHz or 10-kHz speech sample rate - Three different interface options to support different pin count require- ments - 32- speaker direct drive capability - Internally generated clock requires no external components - Maximum 10-A standby current in sleep mode - Digital volume control - Built-in, two general-purpose output pins for MSP53C391 pin expansion 1-2 MSP53C391 and MSP53C392 Comparison 1.3 MSP53C391 and MSP53C392 Comparison The MSP53C391 is optimized to support a 4-bit wide data transfer protocol. The MSP53C392 is optimized to support an 8-bit wide data transfer protocol. The use of the 4-bit wide protocol in the MSP53C391 frees up some I/O pins that can be used for other purposes. These pins (EOS and BUSY) can be used to simplify the interface by minimizing the need to periodically poll the MSP53C391 for its current status. The use of the 8-bit wide protocol in the MSP53C392 provides a more efficient data transfer. A detailed comparison of the two devices is listed in Table 1-1. Table 1-1. MSP53C391 and MSP53C392 Comparison MSP53C391 Number of Data Lines Number of Control Lines Data Request Separate EOS Line for Detecting End-of-Speech Pin Expansion 4 bit 2 (Strobe & R/W) Supported Supported Two expansion pins MSP53C392 8 bit 2 (Strobe & R/W) N/A N/A N/A Introduction to the MSP53C391 and MSP53C392 Speech Synthesizers 1-3 Pin Assignments and Description 1.4 Pin Assignments and Description Figure 1-1 shows the pin assignments for the MSP53C391. Table 1-2 provides pin functional descriptions. Figure 1-2 shows the pin assignments for the MSP53C392. Table 1-3 shows the pin functional descriptions. Figure 1-1. MSP53C391 Pin Assignments MSP53C391 N PACKAGE (TOP VIEW) DATA2/EOS DATA1 DATA0 OUT2 OUT1 EOS R/W OSC IN 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 DATA3/BUSY STROB IRQ DAC+ DAC- VDD VSS INIT Table 1-2. MSP53C391 Terminal Functions PIN NAME DAC+ DAC- DATA 0-3 EOS INIT NO. 13 12 3,2,1,16 6 9 I/O O O I/O O I DESCRIPTION D/A output. This output pulses high for positive output values. It remains low when negative values are output. D/A output. This output pulses high for negative output values. It remains low when positive values are output. Data lines End of speech signal. Output high when end of speech is reached. Initialize input. When INIT goes low, the clock stops, the MSP53C391 goes into low-power mode, the program counter is set to zero, and the contents of the RAM are retained. An INIT pulse of 1 s is sufficient to reset the processor. Negative-edge trigger interrupt request line. Connect to the external interrupt of the master MCU for interrupt mode operation. General-purpose output ports used for pin expansion This signal should be connected to VSS. Read/write select signal. Set high for read operations or cleared low for write operations by the master processor. Strobe signal for read and write operations. Pulsed low for read or write operations 5-V nominal supply voltage Ground pin IRQ OUT 1-2 OSC IN R/W STROB VDD VSS 1-4 14 5,4 8 7 15 11 10 O O I I I - - Pin Assignments and Description Figure 1-2. MSP53C392 Pin Assignments MSP53C392 N PACKAGE (TOP VIEW) DATA6/EOS DATA5 DATA4 DATA3 DATA2 DATA1 R/W OSC IN 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 DATA7/BUSY STROB DATA0 DAC+ DAC- VDD VSS INIT Table 1-3. MSP53C392 Terminal Functions PIN NAME DAC+ DAC- DATA 0-7 INIT NO. 13 12 14,6,5,4, 3,2,1,16 9 I/O O O I/O I DESCRIPTION D/A output. This output pulses high for positive output values. It remains low when negative values are output. D/A output. This output pulses high for negative output values. It remains low when positive values are output. Data lines Initialize input. When INIT goes low, the clock stops, the MSP53C392 goes into low-power mode, the program counter is set to zero, and the contents of the RAM are retained. An INIT pulse of 1 s is sufficient to reset the processor. This signal should be connected to Vss. Read/write signal Strobe signal for read/write 5-V nominal supply voltage Ground pin OSC IN R/W STROB VDD VSS 8 7 15 11 10 I I I - - Introduction to the MSP53C391 and MSP53C392 Speech Synthesizers 1-5 D/A Information 1.5 D/A Information Two-Pin Push Pull (Option 1) is selected in MSP53C391 and MSP53C392 that can directly drive a 32- speaker. Please refer to the MSP50x3x Mixed Signal Processor Users Guide (literature number: SPSU006B) for more information on the D/A and amplifier circuit. 1.6 Algorithms Supported - LPC: D6 and 5220 format. Data rates 1.5 to 3 kbps at an 8-kHz sample rate - MELP: Data rates range form 2kbps ~ 3.5 kbps at an 8-kHz sample rate - CELP: Data rates can be selected form 4.2 kbps ~ 10.7kbps at an 8-kHz sample rate - PCM: - FM: 8 bit. Data rates is 64 kbps for 8 kHz sampling Frequency modulation for two-channel musical instrument synthesis. 1-6 Chapter 2 MSP53C391 Hardware Description Topic 2.1 2.2 2.3 2.4 2.5 Page MSP53C391 Interface Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-2 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-3 Master Microprocessor Interface Description . . . . . . . . . . . . . . . . . . . . 2-4 Master Microprocessor Interface Timing . . . . . . . . . . . . . . . . . . . . . . . 2-10 MSP53C391 Device Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-13 2-1 MSP53C391 Interface Overview 2.1 MSP53C391 Interface Overview The MSP53C391 accepts data from the master microprocessor across four data lines. The transfer of data is controlled by two control lines (R/W and STROB). The data is loaded to an internal buffer and the synthesis process reads the data from the internal buffer as needed. The MSP53C391 signals that it is not ready to accept data when the buffer is full, or there is some other condition that would prevent the MSP53C391 from accepting new data. This signal is communicated to the master microprocessor using either the IRQ or BUSY signals. Depending on the number of available pins on the master microprocessor, three different connection options are provided to connect the master microprocessor to the MSP53C391. Whichever method is used, two operations must be accomplished: 1) Determining if the MSP53C391 is ready to accept new data, and if it is ready, 2) writing new data to the MSP53C391. Two control lines are provided to enable the master microprocessor to accomplish these two tasks, STROB and R/W. The R/W line determines whether a read or a write operation is done to the MSP53C391 when the STROB is pulsed low. If the R/W is high, then a read from the MSP53C391 is done when the STROB is pulsed low. If the R/W is low, then data is written to the MSP53C391 when the STROB is pulsed low. Two signals are provided to determine if the MSP53C391 is ready or not ready to accept new data. The BUSY signal shares the same pin as the DATA3 signal. During a read operation, this signal goes high to signal that the MSP53C391 is ready for a write operation. If this signal is low during a read operation, then the MSP53C391 is not ready for a write operation. An alternative to polling the BUSY signal is provided by the IRQ signal. This signal goes from high to low when the MSP53C391 is ready for a write operation. The EOS signal indicates whether or not the end-of-speech has been reached by the synthesis process. It is set high by the MSP53C391 when the stop code in the data stream is reached. This signal is provided on two pins. It can be read directly on pin 6 (EOS), or during a read operation on pin 1 (DATA2/EOS). Three methods are provided for interfacing the MSP53C391 to various microprocessors. This allows the designer to make trade-offs between the number of device pins being used and the algorithm complexity for the interface to the master microprocessor. 2-2 Signal Description 2.2 Signal Description Table 2-1. MSP53C391 Signal Description Pin Name DAC+ DAC- DATA3/BUSY No. 12 13 16 PDM-style DAC used for speech output. BUSY signal can be obtained on DATA 3 during read operation. A high signal indicates that the MSP53C391 is not busy and ready to accept data. A low signal indicates that the MSP53C391 is busy and the master should not write any command or data to MSP53C391. The EOS signal can be obtained on the DATA2 pin during a read operation. This signal is normally low, but goes high when the end-of-speech code is reached in the data stream. This is an active low strobe signal for the reading and writing operation from the master microprocessor. The data to be read is available when the strobe is active (low) for the read operation. The data on the data line is latched into the MSP53C391 on the raising edge of the strobe signal for the write operation. Read/write signal from master microprocessor. A high signal for a read operation and a low signal for a write operation. When the data latched into the MSP53C391 is read and the MSP53C391 device is ready to accept more data, a negative edge interrupt signal is generated to interrupt the master. For proper operation of the interrupt function, a negative edge triggered external interrupt input pin is required on the master microprocessor. This is an active high output signal that is asserted when end-of-speech is reached. It indicates that the speech synthesis process is finished. When a high is detected on the EOS line by the master microprocessor, dummy bytes are written to the MSP53C391 to reset the EOS. The next transfer can then be initiated after the EOS was de-asserted. EOS also appears on the DATA2 pin during a read operation for adopting different interfacing methods. General-purpose output port that can be controlled by the master microprocessor. Reset signal. A low pulse to reset the chip. It can also be used to stop the MSP53C391 operation during speech synthesis. Following the rising edge of the INIT pulse, a delay of up to 5 ms will be required to permit the MSP53C391 to completely initialize its internal condition. Description DATA2/EOS 1 STROB 15 R/W IRQ 7 14 EOS 6 OUT1-2 DATA 0-3 INIT 5,4 9 3,2,1,16 4-bit bidirectional data line MSP53C391 Hardware Description 2-3 Master Microprocessor Interface Description 2.3 Master Microprocessor Interface Description 2.3.1 Method 1: Polling This method is used when it is important to minimize the total number of interface pins between the master microprocessor and the MSP53C391. A total of three control lines and 4 data lines are required for this method. The two status bits can be read from the MSP53C391 by manipulating the R/W and STROB lines and reading the data lines. The interfacing diagram is shown in Figure 2-1: Figure 2-1. MSP53C391 Interfacing Diagram (Method 1: Polling) MASTER MICROPROCESSOR 15 Output Port 7 Output Port 9 Output Port INIT R/W 13 12 16 I/O Port 1 I/O Port 2 I/O Port 3 I/O Port 6 14 DATA0 EOS IRQ DATA1 DATA2/EOS DATA3/BUSY DAC+ DAC- TO SPEAKER OR AMPLIFIER/FILTER STROB MSP53C391 NOTES: A. STROB: R/W: DATA 0-3: BUSY: Active low strobe signal Read/write signal 4-bit data line Active low busy signal form MSP53C391. A high signal indicates that the MSP53C391 is not busy and is ready to accept data. EOS: End-of-speech data. A high signal indicates end-of-speech. Two bytes of dummy data writen resets the EOS to low. INIT: Active low reset signal. The master microprocessor should issue a reset signal to MSP53C391 after power up to properly initialize the MSP53C391 device. B. When not being used, the EOS and IRQ pins should be left unconnected. 2-4 Master Microprocessor Interface Description Read Operation 1) The master microprocessor sets R/W high to indicate a read operation. 2) The master microprocessor sets STROB to low and reads the state of BUSY and EOS. 3) The master microprocessor sets STROB high. If the BUSY signal was high in step 2, the MSP53C391 is not busy and is ready to accept a write operation. If the BUSY signal was low in step 2, the MSP53C391 is not ready to accept a write operation and the read operation should be repeated until BUSY is asserted high. If EOS was high in step 2, the synthesis process has reached the end of the speech data stream. In this case, the master microprocessor should stop trying to send data and reset the MSP53C391 to allow it to accept additional commands or synthesis data. The frequency of the polling operation should be optimized to the data rate of the algorithm being used to synthesize speech. If the polling operation is too frequent, the MSP53C391 spends too much time servicing the polling operation and the quality of the synthetic speech may be affected. If the polling operation is too infrequent, the internal buffer may run out of data and the synthesis process can become corrupted. Normally, a polling frequency of four times the bit rates of the speech data provides optimal transfer characteristics. Example: For 6.2 kbps CELP the frequency of polling would be 6.2 n 4 n = the number of bits transfered at a time Write Operation 1) The master processor should determine that the MSP53C391 is ready to accept data by reading the BUSY signal as described previously. 2) The master microprocessor clears R/W low to indicate a write operation 3) The master microprocessor presents valid data to the four data pins (DATA0 - DATA3). 4) The master microprocessor pulses the STROB signal low and then high to latch the data to the MSP53C391 input data latch. 5) The master microprocessor should do a read operation to determine that the MSP53C391 is ready to accept additional data before attempting to write more data. MSP53C391 Hardware Description 2-5 Master Microprocessor Interface Description If the EOS signal is asserted high during the read operation, the end-of-speech has been reached and a reset operation should be performed prior to sending new commands or speech data. The reset can be done in one of two ways: Pulsing the INIT pin low and then waiting for the MSP53C391 to re-initialize itself or by writing two dummy bytes as described in the following. RESET Operation 1) Perform a read operation to determine that both the EOS and BUSY signals are high. 2) If both the EOS and BUSY signals are high, write 2 bytes of dummy data to the MSP53C391 by repeating the write operation four times as described previously. 2.3.2 Method 2: Interrupt 1 In this method, the IRQ pin of the MSP53C391 is connected to an external interrupt input pin of the master microprocessor. When the MSP53C391 is not busy and is ready to accept data, the IRQ signal goes low and provides a negative edge to trigger an interrupt in the master processor. This minimizes the need to constantly poll the MSP53C391 while waiting for it to become ready to accept new data. Figure 2-2. MSP53C391 Interfacing Diagram (Method 2: Interrupt 1) MASTER MICROPROCESSOR 15 Output Port 7 Output Port 9 Output Port 16 I/O Port 1 I/O Port 2 I/O Port 3 I/O Port INT 14 6 DATA0 IRQ EOS DATA1 DATA2/EOS DATA3 INIT R/W 13 12 DAC+ DAC- TO SPEAKER OR AMPLIFIER/FILTER STROB MSP53C391 NOTE A: IRQ: Negative edge interrupt to master microprocessor when MSP53C391 is not busy and ready to accept data. 2-6 Master Microprocessor Interface Description Read Operation 1) The master microprocessor sets R/W high to indicate a read operation. 2) The master microprocessor sets STROB to low and reads the state of BUSY and EOS. 3) The master microprocessor sets STROB high. The EOS is used to signal that the end-of-speech has been reached. In this case, the master microprocessor should stop trying to send data and act to reset the MSP53C391 so as to prepare it to accept additional commands or synthesis data. In this method, the BUSY signal is not normally used. Instead, the IRQ signal is used to signal the need for new speech data. It pulses low then high to produce a negative edge signal to the master microprocessor when the MSP53C391 becomes ready to accept a new write operation. It will remain low until a new nibble is written. The master microprocessor should immediately initiate a write operation when the IRQ signal goes low. If the master microprocessor delays for too long a time before writing new data, it is possible that the buffer will empty and the synthesis process will be interrupted or the quality of speech will be degraded. Write Operation 1) The master microprocessor should clear all pending interrupts and enable the external interrupt. 2) The master microprocessor writes the first nibble of data by presenting valid data on DATA0 - DATA3, setting R/W low to indicate a write operation and pulsing STROB low and high to latch the data into the MSP53C391 input latch. Subsequent data is written following the falling edge of the IRQ signal. 3) The master microprocessor waits for a falling edge on the IRQ signal. 4) Master microprocessor sets R/W high and pulses the STROB to read the EOS signal. 5) The master microprocessor clears R/W low to indicate a write operation 6) The master microprocessor presents valid data (first nibble of the dummy data if EOS is high or nibble of speech data if EOS is low) to the four data pins (DATA0 - DATA3). MSP53C391 Hardware Description 2-7 Master Microprocessor Interface Description 7) The master microprocessor pulses the STROB signal low and then high to latch the data to the MSP53C391 input data latch. 8) A read operation should be performed just before each write operation to ensure that the end-of-speech has not been reached. If the EOS signal is asserted high during the read operation, the end-of-speech has been reached and a reset operation should be performed prior to sending new commands or speech data. The reset can be done in one of two ways: Pulsing the INIT pin low and then waiting for the MSP53C391 to re-initialize itself or by writing two dummy bytes as described the following. RESET Operation 1) Perform a read operation to determine that the EOS signal is high. 2) If the EOS signal is high, write 2 bytes of dummy data to the MSP53C391 by repeating the write operation four times as described previously. 2.3.3 Method 3: Interrupt 2 This method is similar to method 2. The only difference is performing the read operation is not necessary because the EOS and IRQ are available for direct reads. Figure 2-3. MSP53C391 Interfacing Diagram (Method 3: Interrupt 2) MASTER MICROPROCESSOR 15 Output Port 7 R/W 9 Output Port 16 Out Port 1 Out Port 2 Out Port 3 Out Port Input Port INT 6 14 DATA0 EOS IRQ DATA1 DATA2 DATA3 INIT 13 12 DAC+ DAC- TO SPEAKER OR AMPLIFIER/FILTER STROB MSP53C391 2-8 Master Microprocessor Interface Description Write Operation 1) The master microprocessor should clear all pending interrupts and enable the external interrupt. 2) The master microprocessor writes the first nibble of data by presenting valid data on DATA0 - DATA3, tying R/W to ground indicates a write operation and pulsing STROB low and high to latch the data into the MSP53C391 input latch. Subsequent data is written following the falling edge of the IRQ signal. 3) The master microprocessor waits for a falling edge on the IRQ signal. 4) The master microprocessor checks the EOS signal to verify that the endof-speech has not been reached. If the EOS is high, the end-of-speech has been reached and the master microprocessor should stop trying to send data and should reset the MSP53C391 as described in the following. If the EOS is low, the end-of-speech has not been reached and the write operation should continue with step 5. 5) Tie R/W to ground indicates a write operation 6) The master microprocessor presents valid data to the four data pins (DATA0 - DATA3). 7) The master microprocessor pulses the STROB signal low and then high to latch the data to the MSP53C391 input data latch. If the EOS signal is asserted high in step 4 (shown previously), the end-ofspeech has been reached and a reset operation should be performed prior to sending new commands or speech data. The reset can be done in one of two ways: Pulsing the INIT pin low and then waiting for the MSP53C391 to re-initialize itself or by writing two dummy bytes to the MSP53C391. MSP53C391 Hardware Description 2-9 Master Microprocessor Interface Timing 2.4 Master Microprocessor Interface Timing 2.4.1 Timing Method 1: Polling Data Transfer STROB R/W DATA0 - 3 DATA3/BUSY DATA2/EOS NOTE A: State A: Polling the status by reading the BUSY and EOS State B: Write operation A A A B A A A A End-of-Speech STROB R/W DATA0 - 3 DATA3/BUSY DATA2/EOS NOTE A: State A: EOS detected by reading DATA 2/EOS State B: Dummy write. A 4-nibble dummy write resets the EOS for the next transfer. State C: Wait until the part is ready to accept dummy data (BUSY high). State D: Check to see if the device is busy or not. A C B D B D B D B 2-10 Master Microprocessor Interface Timing 2.4.2 Timing Method 2: Interrupt 1 Data Transfer STROB R/W DATA0 - 3 DATA2/EOS IRQ NOTE A: State A: Read the EOS state State B: Write operation A B A B End-of-Speech STROB R/W DATA0 - 3 DATA2/EOS IRQ NOTE A: State A: EOS detected by read DATA2/EOS State B: Dummy write. A 4-byte dummy write resets the EOS for the next transfer. A B B B B MSP53C391 Hardware Description 2-11 Master Microprocessor Interface Timing 2.4.3 Timing Method 3: Interrupt 2 Data Transfer STROB R/W DATA0 - 3 EOS IRQ NOTE A: State A: Write operation A A End-of-Speech A STROB R/W DATA0 - 3 EOS IRQ NOTE A: State A: EOS detected by read on pin 6 State B: Dummy write. A 4-nibble dummy write resets the EOS for the next transfer. B B B B 2-12 MSP53C391 Device Initialization 2.5 MSP53C391 Device Initialization For proper operation, the MSP53C391 device should be initialized by sending the following command sequence of bytes: F,F,F,F,0,A,0,1,0,0,F,F,F,F,F,F Following this command sequence, the normal command sequence options are available as described in Section 4.2 and onwards. The function of this sequence is to properly initialize the synthesis engine by speaking a short selection of LPC prior to speaking selections using other synthesis algorithms. This initialization needs to be performed: 1) After you apply power to the device, or 2) When you reset the part by toggling the INIT pin. MSP53C391 Hardware Description 2-13 Chapter 3 MSP53C392 Hardware Description Topic 3.1 3.2 3.3 3.4 3.5 Page MSP53C391 Interface Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-2 Signal Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3 Master Microprocessor Interface Description . . . . . . . . . . . . . . . . . . . . 3-4 Master Microprocessor Interface Timing . . . . . . . . . . . . . . . . . . . . . . . . 3-7 MSP53C392 Device Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8 3-1 Interface Overview 3.1 Interface Overview The MSP53C392 accepts data from the master microprocessor across the eight data lines. The transfer of data is controlled by two control lines (R/W and STROB). The data is loaded to an internal buffer and the synthesis process reads the data from the internal buffer as needed. The MSP53C392 signals that it is not ready to accept data when the buffer is full, or there is some other condition that would prevent the MSP53C392 from accepting new data. This signal is communicated to the master microprocessor using BUSY signal. The MSP53C392 accepts data across an 8-bit wide data connection that is controlled using two control lines (R/W and STROB). Two operations must be accomplished: 1) Determining if the MSP53C392 is ready to accept new data, and if it is ready, 2) writing new data to the MSP53C392. Two control lines are provided to enable the master microprocessor to accomplish these two tasks, STROB and R/W. The R/W line determines whether a read or a write operation is done to the MSP53C392 when the STROB is pulsed low. If the R/W is high, than a read from the MSP53C392 is done when the STROB is pulsed low. If the R/W is low, then data is written to the MSP53C392 when the STROB is pulsed low. The BUSY signal shares the same pin as the DATA7 signal. During a read operation, this signal goes high to signal that the MSP53C392 is ready for a write operation. If this signal is low during a read operation, then the MSP53C392 is not ready for a write operation. The EOS signal shares the same pin as the DATA6 signal. During a read operation, this signal normally goes low, but goes high to signal that the MSP53C392 has encountered an end-of-speech code in the data stream. A negative going pulse on the INIT line can be used to reset the device. An INIT pulse of 1 s is enough to reset the device. Following the rising edge of the INIT pulse, a delay of up to 5 ms will be required to permit the MSP53C391 and MSP53C392 to completely initialize its internal condition. 3-2 Signal Description 3.2 Signal Description Table 3-1. MSP53C392 Signal Description Pin Name DAC+ DAC- DATA7/BUSY 16 No. 12 13 PDM-style DAC used for speech output. The BUSY signal can be obtained on DATA 7 during a read operation. A high signal indicates that the MSP53C392 is not BUSY and ready to accept data. A low signal indicates that the MSP53C392 is BUSY and master should not write any command or data to MSP53C392. The EOS signal can be obtained on DATA 6 during a read operation. This is an active high signal that is asserted when end-of-speech is reached. It indicates that the speech synthesis is finished. When a high is detected on EOS by the master microprocessor, the MSP53C392 should be reset. Read/write signal from master microprocessor. A high signal for a read operation and a low signal for a write operation. This is an active low strobe signal for the reading and writing operation form master microprocessor. The data to be read is available when the strobe is active (low) for the read operation. The data on the data line is latched into the MSP53C392 on the rising edge of the strobe signal for the write operation. 8-bit bidirectional data line Reset signal. A low pulse to reset the chip. It can also be used to stop the MSP53C392 operation during speech synthesis. Following the rising edge of the INIT pulse, a delay of up to 5 ms will be required to permit the MSP53C392 to completely initialize its internal condition. Description DATA6 / EOS 1 R/W 7 STROB 15 DATA 0-7 INIT 14,6,5,4 3,2,1,16 9 MSP53C392 Hardware Description 3-3 Master Microprocessor Interface Description 3.3 Master Microprocessor Interface Description 3.3.1 Method 1: Polling Three control lines and eight I/O data lines are used in this interface. Data is written to the MSP53C392 device and the status can be read back. Two status bits (BUSY and EOS) can be read back by the master microprocessor to signal that the MSP53C392 is busy and signal the end-of-speech has been reached. The interfacing diagram is shown in Figure 3-1: MASTER MICROPROCESSOR 15 Output Port 7 Output Port 9 Output Port INIT R/W 13 12 16 I/O Port 1 I/O Port 2 I/O Port 3 I/O Port 4 I/O Port 5 I/O Port 6 I/O Port 14 I/O Port DATA0 DATA1 DATA2 DATA3 DATA4 DATA5 DATA6/EOS DATA7/BUSY DAC+ DAC- TO SPEAKER OR AMPLIFIER/FILTER STROB MSP53C392 NOTE A: STROB: R/W: DATA 0-7: BUSY: EOS: INIT: Active low strobe signal Read/write signal 8-bit data line Active low busy signal form MSP53C392. A high signal indicates that the MSP53C392 is not busy and is ready to accept data. End-of-speech data. A high signal indicates end-of-speech. Two bytes of dummy data written resets the EOS to low. Active low reset signal. The master microprocessor should issue a reset signal to MSP53C392 after power up to properly initialize the MSP53C392 device. 3-4 Master Microprocessor Interface Description Read Operation 1) The master microprocessor sets R/W high to indicate a read operation. 2) The master microprocessor sets STROB to low and reads the state of BUSY and EOS signals. 3) The master microprocessor sets STROB high. If the BUSY signal was high in step 2, the MSP53C392 is not busy and is ready to accept a write operation. If the BUSY signal was low in step 2, the MSP53C392 is not ready to accept a write operation and the read operation should be repeated until BUSY is asserted high. If EOS was high in step 2, the synthesis process has reached the end of the speech data stream. In this case, the master microprocessor should stop trying to send data and reset the MSP53C392 to allow it to accept additional commands or synthesis data. The frequency of the polling operation should be optimized to the data rate of the algorithm being used to synthesize speech. If the polling operation is too frequent, the MSP53C392 spends too much time servicing the polling operation and the quality of the synthetic speech may be affected. If the polling operation is too infrequency, the internal buffer may run out of data and the synthesis process can become corrupted. Normally, a polling frequency of four times the bit rates of the speech data provides optimal transfer characteristics. Example: For 6.2 kbps CELP the frequency of polling would be 6.2 n 4 n = the number of bits transfered at a time Write Operation 1) The master processor should determine that the MSP53C392 is ready to accept data by reading the BUSY signal as described previously. 2) The master microprocessor clears R/W low to indicate a write operation. 3) The master microprocessor presents valid data to the eight data pins (DATA0 - DATA7). 4) The master microprocessor pulses the STROB signal low and then high to latch the data to the MSP53C392 input data latch. 5) The master microprocessor should do a read operation to determine that the MSP53C392 is ready to accept additional data before attempting to write more data. MSP53C392 Hardware Description 3-5 Master Microprocessor Interface Description If the EOS signal is asserted high during the read operation, the end-of-speech has been reached and a reset operation should be performed prior to sending new commands or speech data. The reset can be done in one of two ways: Pulsing the INIT pin low and then waiting for the MSP53C392 to re-initialize itself or by writing four dummy bytes as described in the following. RESET Operation 1) Perform a read operation to determine that both the EOS and BUSY signals are high. 2) If both the EOS and BUSY signals are high, write four bytes of dummy data to the MSP53C392 by repeating the write operation four times as described previously. 3-6 Master Microprocessor Interface Timing 3.4 Master Microprocessor Interface Timing 3.4.1 Timing Method 1: Polling Data Transfer STROB R/W DATA0 - 5 DATA7/BUSY DATA6/EOS NOTE A: State A: Polling the status by reading the BUSY and EOS State B: Write operation A A A B A A A A End-of-Speech STROB R/W DATA0 - 5 DATA7/BUSY DATA6/EOS NOTE A: State A: EOS detected by reading DATA 6/EOS State B: Dummy write. A 4-byte dummy write resets the EOS for the next transfer. State C: Wait until the part is ready to accept dummy data (BUSY high). A C B C B C B C B MSP53C392 Hardware Description 3-7 MSP53C392 Device Initialization 3.5 MSP53C392 Device Initialization For proper operation, the MSP53C392 device should be initialized by sending the following command sequence of bytes: FF,FF,FF,FF,0A,01,00,FF,FF,FF,FF,FF Following this command sequence, the normal command sequence options are available as described in Section 4.2 and onwards. The function of this sequence is to properly initialize the synthesis engine by speaking a short selection of LPC prior to speaking selections using other synthesis algorithms. This initialization needs to be performed: 1) After you apply power to the device, or 2) When you reset the part by toggling the INIT pin. 3-8 Chapter 4 MSP53C391 AND MSP53C392 Software Description Topic 4.1 4.2 4.3 4.4 4.5 Page Software Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 Command Sequence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 Command Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2 Data Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-3 Command Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-4 4-1 Software Overview 4.1 Software Overview The MSP53C391 and the MSP53C392 are controlled using a formatted communication sequence that passes commands and data from the master microprocessor to the slave. 4.2 Command Sequence There are two types of streams that can be sent to the slave. - Data streams transmit speech synthesis data. - Command streams control various features of the slave device such as volume, the state of the two expansion pins, and other special features. Each stream consists of: 1) A command header whose purpose is to synchronize the data stream. 2) A command code that indicates which command should be executed or which synthesis algorithm is to be used to process the data stream. 3) The data stream or optional command parameters. 4) After the termination code in the data stream, four nibbles (MSP53C391) or four bytes (MSP53C392) of dummy data that resets the processor. 4.3 Command Header The command header is used to synchronize the data stream between the master microprocessor and the MSP53C391 or MSP53C392. The command header is the same for both data streams and command streams, but the command header used for the MSP53C391 is different from the command header used for the MSP53C392 because of the different data bus widths. The command header used for the MSP53C391 is a series of at least 5 nibbles with all bits set high followed by a 0x0, 0xA sequence. The complete command header sequence used for the MSP53C391 is therefore: 0xF, 0xF, 0xF, 0xF, 0xF, 0x0, 0xA. The command header used for the MSP53C392 is a series of at least 5 bytes with all bits set high followed by a 0x0A sequence. The complete command header sequence used for the MSP53C392 is therefore: 0xFF, 0xFF, 0xFF, 0xFF, 0FF, 0x0A. 4-2 Data Streams 4.4 Data Streams To initiate speech, the master microprocessor transmits: - The command header. - The synthesis selection code. See Section 4.4.1, Synthesis Selection Codes, for valid selection codes. - The synthesis data. This data must be matched to the command code that was sent. The synthesis data contains an imbedded code that identifies the end of the synthesis data. The synthesis process detects this imbedded code and responds by shutting down the synthesis process and toggling the EOS signal. See Appendix A for more information regarding the data preparation. Table 4-1. Speech Initiation Data Device MSP53C391 MSP53C392 Command Header F,F,F,F,F,0,A FF,FF,FF,FF,FF,0A Synthesis Selection Code XX XX Speech Data X,x,x,x... X,x,x,x... 4.4.1 Synthesis Selection Codes The synthesis selection code is a one-byte value that indicates the format and sampling rate of the synthetic speech data that follows it. The valid codes are shown in Table 4-2. The format of the data that follows must match the specified algorithm or the speech will not synthesize properly. Table 4-2. Synthesis Selection Codes Freq. Freq 8 kHz 10 kHz LPC 5220 01 11 D6 02 12 MELP Ver. 4.1 03 13 4.2 04 14 CELP (Ver. 3.4) (kbps) 4.8 05 15 5.8 06 16 6.2 07 17 8.6 08 18 10.7 09 19 8-Bit PCM 0D 1D FM II (Ver. 2.08) 0E 1E CELP 5.8 kbps is not a standard CELP rate. It can only be encoded and edited by selecting the CELP parameter manually in SDS3000. The parameters for CELP 5.8 kbps are: Since the pitch table is based on a 10-kHz sampling rate, it is recommended the 10-kHz sampling rate option be used. H H H Subframe Size = 60 Subframes per Frame = 4 Pulses per Subframe = 4 Because the CELP 5.8 kbps is not a standard CELP rate, it is not recommended for less experienced users. The standard CELP rates (4.2 kbps, 4.8 kbps, 6.2 kbps, 8.6 kbps, and 10.7 kbps) should be used instead. MSP53C391 AND MSP53C392 Software Description 4-3 Command Sequences 4.5 Command Sequences A command sequence transmits controlling commands that instruct the MSP53C391 or MSP53C392 to modify its function in some way. Available commands are: - Set the two general-purpose output pins either high or low (MSP53C391 only) - Place the MSP53C391 or MSP53C392 into a low-power sleep state - Adjust the output volume - Initiate a test mode in which a 4-kHz or 5-kHz square wave is generated at the two general-purpose output pins (MSP53C391) or selected data pins (MSP53C392) - Read the software version programmed into the MSP53C391 or MSP53C392. To send a command sequence, the master microprocessor transmits: - The command header - A valid command code. See Section 4.5.1, Command Codes, for valid command codes. - Optional parameters Table 4-3. Command Sequence Device MSP53C391 MSP53C392 Command Header F,F,F,F,F,0,A FF,FF,FF,FF,FF,0A Command Code Optional Parameters X,x,x,x... X,x,x,x... 4-4 Command Sequences 4.5.1 Command Codes The valid command codes are shown in Table 4-4. Due to the absence of the OUT1 and OUT2 pins on the MSP53C392, not all of the functions are available on the MSP53C392. Table 4-4. Command Codes Command Codes 0x20 0x21 0x22 0x23 0x2E 0x2F 0xD1 0xE65D 0xE65C 0xE96D MSP53C391 Program OUT1 and OUT2 both low Program OUT1 high and OUT2 low Program OUT1 low and OUT2 high Program OUT1 and OUT2 both high Scale output volume Place MSP53C391 into a low-power sleep state Request version information Produce 5-kHz signal on the OUT2 pin Produce 4-kHz signal on the OUT1 pin Echo mode N/A N/A N/A N/A Scale output volume Place MSP53C392 into a low-power sleep state Request version information Produce 5-kHz signal on the DATA3 pin Produce 4-kHz signal on the DATA2 pin N/A MSP53C392 4.5.2 Pin Expansion The OUT1 and OUT2 pins are available on the MSP53C391 for pin expansion. To program these pins to the desired state, transmit one of the command codes as shown in Table 4-5: Table 4-5. Pin Expansion Command Codes Command Code 0x20 0x21 0x22 0x23 State of OUT1 Low High Low High State of OUT2 Low Low High High MSP53C391 AND MSP53C392 Software Description 4-5 Command Sequences 4.5.3 Volume Control Transmit a command of 0x2E to scale the output volume of the synthesized data. At power up the default volume is set to the maximum value (0x80). This command can be transmitted to reduce the volume from this maximum. The minimum permitted volume is 0x20. Table 4-6. Volume Control Commands Device MSP53C391 MSP53C392 Command Header F,F,F,F,F,0,A FF,FF,FF,FF,FF,0A Command Code 0x2E 0x2E Volume Control Code xx xx Valid volume control codes range from a minimum of 0x20 to a maximum of 0x80 as shown in Table 4-7: Table 4-7. Volume Control Code Ranges Volume Control Code 0x20 0x30 0x40 0x60 0x80 Result Minimum volume setting Intermediate volume setting Intermediate volume setting Intermediate volume setting Maximum volume (power up default) 4.5.4 Low-Power Sleep State Sending a command code of 0x2F places the MSP53C391 or MSP53C392 into a low-power sleep state. The MSP53C391 or MSP53C392 can be restarted by resetting the device (pulsing the INIT pin low) and waiting 5 ms for the device to complete initialization. 4.5.5 Request Software Version The master processor can request the version number of the software programmed into the MSP53C391 or MSP53C392 by sending the command code 0xD1. Following transmission of this command, the master processor should poll the BUSY bit to verify that it is high (indicating that the data is available to be read). The version information is then available on DATA0, DATA1, and DATA2 on the MSP53C391. It can be read from these pins using the READ protocol described in Chapter 2. The version number read from the MSP53C391 is 1. On the MSP53C392, the version information is then available on DATA4, DATA5, and DATA6. It can be read from these pins using the READ protocol described in Chapter 3. The version number read from the MSP53C392 is 2. 4-6 Command Sequences 4.5.6 Generate Test Signal The MSP53C391 has three test modes. - Generate 4-kHz signal on OUT1 - Generate 5-kHz signal on OUT2 - Echo input data The MSP53C392 has two test modes. Echo input data is not available on the MSP53C392. - Generate 4-kHz signal on DATA2 - Generate 5-kHz signal on DATA3 Sending a command code of 0xE65D to the MSP53C391 generates a 5-kHz signal on the OUT2 pin. This can be used to test the accuracy of the internal oscillator when it is programmed to 19.2 MHz. The only way to exit this test mode is to pulse the INIT pin low. Sending a command code of 0xE65C to the MSP53C391 generates a 4-kHz signal on the OUT1 pin. This can be used to test the accuracy of the internal oscillator when it is programmed to 15.36 MHz. The only way to exit this test mode is to pulse the INIT pin low. Sending a command code of 0xE65D to the MSP53C392 generates a 5-kHz signal on the DATA3 pin. Once the command code has been transmitted to the MSP53C392, the STROB must be set low and the R/W must be set high to enable the generation of the 5-kHz signal. This can be used to test the accuracy of the internal oscillator when it is programmed to 19.2 MHz. The only way to exit this test mode is to pulse the INIT pin low. Sending a command code of 0xE65C to the MSP53C392 generates a 4-kHz signal on the DATA2 pin. Once the command code has been transmitted to the MSP53C392, the STROB must be set low and the R/W must be set high to enable the generation of the 4-kHz signal. This can be used to test the accuracy of the internal oscillator when it is programmed to 15.36 MHz. The only way to exit this test mode is to pulse the INIT pin low. Sending a command code of 0xE96D to the MSP53C391 causes it to enter a special test mode in which the input data latched into the device is echoed out to the OUT2, OUT1, EOS, and IRQ pins. This mode is for debugging the communications interface between the master microprocessor and the MSP53C391. While in this mode, the MSP53C391 will not speak the voice data. The only way to exit this mode is to pulse the INIT pin low. This mode is not available on the MSP53C392. MSP53C391 AND MSP53C392 Software Description 4-7 Appendix A Appendix A Editing Tools and Data Preparation Topic A.1 A.2 Page Editing Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-2 Data Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A-3 A-1 Editing Tools A.1 Editing Tools TI provides several tools to support speech editing. The WINSDS is a tool for LPC editing and the SDS3000 is a tool for MELP editing and CELP and MELP encoding. A.1.1 WINSDS WINSDS (WindowsTM interface speech development station) is a powerful tool to produce high-quality LPC (linear predictive coding) speech and sound. The Windows-based WINSDS is a successor to the SDS5000 speech development station designed to produce synthesized vocabulary. The WINSDS system requires a personal computer running Windows 95/98TM and requires at least one available ISA slot. A.1.2 SDS3000 SDS3000 is an integrated tool that accepts input sound files (sampled at either 8-kHz or 10-kHz) in either a .WAV format or a 16-bit raw binary format and converts the files into the CELP or MELP data format. It requires a personal computer running Windows 95/98 with at least one available ISA slot. SDS300 does MELP and CELP encoding as well as MELP editing. Windows, Windows 95, and Windows 98 are a trademarks Microsoft Corporation. A-2 Data Preparation A.2 Data Preparation The MSP53C391 and MSP53C392 slave synthesizers support several algorithms for speech synthesizing. The speech data sent to the slave device must match the format defined by TI or generated from a TI tool (SDS3000 for MELP or CELP and WINSDS for LPC). The data preparation for different algorithms for MSP53C391 and MSP53C392 is discussed in the following paragraphs. A.2.1 LPC LPC is processed and editing using the WINSDS station. Please refer to the WINSDS User's Guide (literature number: SPSU010) for details. A.2.2 MELP and CELP The SDS3000 is used to convert an input audio data file into the MELP or CELP data formats. The input data file can be either signed binary or .WAV format file. The audio data should be sampled at either 8 kHz or 10 kHz and should have a precision of 16 bits. The sound files should start and stop at a level close to zero, otherwise errors may result. The volume of the sound files should also be adjusted to a level with a peak-to-peak around +0.5 to -0.5 (assume full scale is +1 to -1). When the sound file is too loud after the encoding, clipping will result. Additionally, if the wave file is sampled at a higher rate (CD quality sound file 44.1-kHz sampling or DAT in 48-kHz), resampling to 8 kHz or 10 kHz is necessary for the conversion. Filtering and renormalizing may be necessary during down-sampling to reduce aliasing and noise. There are a number of software programs available to do this resampling function. Two commonly available examples are GoldWave and Cool Edit. GoldWave is a shareware program that provides editing function on sound files in a Windows environment. This software can be downloaded from the web: http://www.goldwave.com By using the GoldWave sound editor, the sound file can be cut to eliminate the leading and the following silence. The volume can also be adjusted. To resample the original wave/sound file, we need to cut all the high-frequency portion first to eliminate the error in resampling. All frequencies above one half of the final sampling rate should be removed from the sound file. For example, before converting the sampling rate to 8 kHz, the data should be filtered to remove all frequency components above 4 kHz. GoldWave is a product of Goldwave Corporation Cool Edit is a product of Syntrillium Software Corporation Editing Tools and Data Preparation A-3 Data Preparation The procedures for a low pass filter and resampling with GoldWave are listed in the following: 1) Open the data file (44.1-kHz 16-bit mono signed). 2) In EFFECT MENU choose FILTER then LOW/HIGH PASS. Use the low pass filer to cut the signal above 4 kHz for 8-kHz sampling and 5 kHz for 10-kHz sampling. 3) In EFFECT MENU Choose RESAMPLE and then choose 8k/10k to resample the file. 4) Save the file in 16-bit monaural signed data format. This file can then be used for the MELP/CLEP encoding program SDS3000. For the operation of SDS3000, please refer to the related documents. A.2.3 PCM The MSP53C391 and MSP53C392 can accept PCM data. The PCM data should be sampled at either 8 kHz or 10 kHz and should be signed 8-bit data. The data should be scaled so that the peak signal is close to the 8-bit maximum. As an example, to obtain a suitable PCM file from GOLDWAVE: 1) Open a .WAV file. The data in the .WAV file should be sampled at either 8 kHz or 10 kHz. The file should contain monaural data. 2) If the data in the file is not sampled at one of these two frequencies, it should be resampled to one of these two frequencies. First low pass filter the data to 4 kHz or 5 kHz to avoid sound degradation due to aliasing with the command EFFECTS - FILTER - LOW/HIGH PASS, then resample the data to the new sampling rate using the command EFFECTS -RESAMPLE. 3) Maximize the volume with the command EFFECTS - VOLUME - MAXIMIZE 4) Save the resulting file using the command FILE - SAVE AS, In the Save as type: field, select RAW. In the File Attributes field, select 8-bit, mono, signed. 5) Since the process of converting a sound file to 8 bit can introduce a quantization error, it is recommended that resulting file be processed to reduce the noise. In EFFECT MENU choose NOISE REDUCTION. In PRESET SHAPES use the Hiss shape to reduce the noise. 6) It is necessary to append a termination code to the end of the PCM data to signal the end of the file to the MSP53C391 or MSP53C392. The proper end code is the two byte sequence: 0x7F, 0x80. A-4 Data Preparation A.2.4 FM Music can be coded manually or can be converted from MIDI (musical instrument digital interface) files. For manual coding, please refer to Appendix B for the data format of FM synthesis. If the song is composed in MIDI format (.mid), it can be converted to FM by a DOS executable routine MD2FM.EXE. There are several limitations on the MIDI files, which the MD2FM program processes. 1) The MSP53C391 and MSP53C392 support a maximum of two channels of FM synthesis music. The MD2FM can convert only one track or channel at a time. Two passes through the program are required to convert the two channels into two separate output file. The two files are combined later into a single file using the FM2MERGE program. 2) The timebase of the file should be 48. 3) The MD2FM program does not understand the instrument definition of the MIDI file. The instruments will need to be added to the output file in a separate step. As an example, assume that a MIDI file named midi_t1.mid contains two tracks and each track contains a single channel. Execute the MD2FM program twice: >MD2FM midi_t1 midi_t11 -c1 -t1 >MD2FM midi_t1 midi_t12 -c1 -t2 The first pass extracts channel 1 of track 1 from the file and stores it into the file midi_t11.inc. The second pass extracts channel 1 of track 2 from the file and stores it into the file midi_t12.inc. The two files are combined into a single file using the program FM2MERGE as follows: >FM2MERGE midi_t11.inc midi_t12.inc midi_t1.inc The FM2MERGE program combines the midi_t11.inc and the midi_t12.inc files into a single output file called midi_t1.inc. Editing Tools and Data Preparation A-5 Appendix B Appendix A FM Synthesis Topic B.1 B.2 B.3 B.4 Page FM Synthesis Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-2 FM Synthesis Format and Commands . . . . . . . . . . . . . . . . . . . . . . . . . . B-2 FM Synthesis Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-9 Data Preparation of FM Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . B-12 B-1 FM Synthesis Overview B.1 FM Synthesis Overview FM synthesis is a technique for creating harmonically rich musical tones in a relatively simple manner. Generally speaking, the tones generated do not closely correspond to the tonal texture of conventional instruments; but can be used to generate interesting and pleasant music. The MSP53C391 and MSP53C392 can generate two channels of FM synthesis. This means that a maximum of two notes can be played simultaneously. This appendix describes the command formats used to describe the music. B.2 FM Synthesis Format and Commands The song to be played is coded into a file in a specified format. This file is then assembled and the binary result is transmitted by the master microprocessor to the MSP53C391 and MSP53C392 to play the music. The file contains a series of BYTE or DATA statements as described in the following to specify the notes, instruments and other details of the music. Each command is of the general form: BYTE command, parameters,... Where command indicates the action to be taken, followed by one or more modifying parameters. For example, to transpose a section of a song up by a semitone, the following command would be written: BYTE RTRNS,1 In this example, RTRNS is the command and 1 is the modifying parameter. As another example, to play a note, the following command might be written: BYTE C1,n4,n4,127 This example commands the synthesizer to play a `C' note for a quarter note duration at the maximum volume. The formats and parameters for the different commands are described in the following sections. The various commands are defined in the file FMEQUM2.INC. The contents of this file should either be copied into the start of the FM file or a copy command should be inserted at the start of the FM file to insert the values; for example: COPY B-2 `FMEQUM2.INC' FM Synthesis Format and Commands B.2.1 Musical Notes Musical notes are defined as: BYTE Where: Notevalue defines the pitch of the musical note. The valid values for Notevalue are defined in Appendix C. In general, they range from a minimum of C1 to a maximum of C6. Within each octave, the sequence is: C, Cs or Db, D, Ds or Eb, E, F, Fs or Gb, G, Gs or Ab, A, As or Bb, B. For example, the C sharp in the first octave would be written Cs1. This is the same tone as Db1. TimeValue defines the duration of the note that is played. The valid values for TimeValue are defined in Appendix C. The more common values are: N8 defines an eighth note. N4 defines a quarter note. N2 defines a half note. N1 defines a whole note. Duration defines the sum of the TimeValue and any following rest. For example, if a quarter note is followed by a quarter note rest, then it would be coded with a TimeValue=n4 and a Duration=n2. Velocity is the relative volume of the note. Values range from 0 to 127. Notevalue, TimeValue,Duration,Velocity B.2.2 Tempo Control The tempo of the music is defined as: BYTE Where: TEMPO is the command that indicates a tempo change is being defined. BPM is the new tempo. The valid values for BPM are defined in Appendix C. An example is bpm62, which indicates 62 beats per minute. TimeSig defines the time signature of the songs. TS44 sets the time signature to 4/4 time. EnvelopeLen defines the length of the note envelope. ENVOK sets the envelope length to normal (i.e., lasting for a whole note). Note: The tempo should be set in the channel one stream only. The TEMPOSYNC command should be placed in the same position in the channel two stream. TEMPO,BPM,TimeSig,EnvelopeLen FM Synthesis B-3 FM Synthesis Format and Commands B.2.3 Tempo Synchronization The tempo of the two channels needs to be the same. If it changes, it needs to change at the same point in the music for both channels. This is accomplished by placing the tempo change information in the channel one data stream (using the TEMPO command) and by placing a synchronizing placeholder in the channel 2 data stream to ensure that the tempo change happens at the same point in the music for both channels. This placeholder is the TEMPOSYNC command. The TEMPOSYNC channel should be placed in the channel two data stream only. BYTE TEMPOSYNC B.2.4 LOADTIMBRE Command The LOADTIMBRE is used to change the tonal quality of one of the two channels. It is followed by a 21 byte stream of data that defines the new instrument. BYTE LOADTIMBRE,XX,XX.........,XX Where xx denotes a series of 21 bytes of data that defines the new instrument sound. The data definitions are as follows: The first three bytes define the frequencies of the modulator and carrier sinusoids. The first byte defines the carrier frequency. The next two bytes define the initial amplitude of the carrier and the modulator sinusoids. The valid values range from 0 to 127. The remaining 16 bytes represent the change in values that define the envelope of the carrier and multiplier during 8 uniform time slices. Each pair of values increments or decrements the carrier and modulator amplitude during the next time slice. The cumulative value of both the carrier and modulator amplitude is limited to a range of 0 to 127. The carrier amplitude should taper to zero at the end of the envelope. For example: BYTE BYTE BYTE BYTE BYTE BYTE BYTE B-4 LOADTIMBRE X2 X2 16*4 2,1 124,46 -10,80 ;Load new instrument patch ;Carrier Fc = 2Fo ;Modulator Fm = 2Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;CarAmp=126, FmAmp=47 ;CarAmp=116, FmAmp=127 FM Synthesis Format and Commands BYTE BYTE BYTE BYTE BYTE BYTE -9,-8 -8,-7 -7,-6 -6,-5 -5,-4 -81,-3 ;CarAmp=107, FmAmp=119 ;CarAmp=99, ;CarAmp=92, ;CarAmp=86, ;CarAmp=81, ;CarAmp=0, FmAmp=112 FmAmp=106 FmAmp=101 FmAmp=97 FmAmp=94 B.2.5 Transposition Two commands are available for transposing the music (i.e., uniformly shifting the notes to higher or lower frequencies). The ATRNS command adds a specific amount to the note value. The RTRNS command adds a relative amount to the note value. BYTE ATRNS, NUM Shifts the music NUM semitones from the value as written, for example: BYTE ATRNS,12 Shifts the music one octave above the music as written. The RTRNS command is used to shift the music by a cumulative amount, for example in the following sequence: BYTE BYTE RTRNS,12 RTRNS,12 ;This will shift the music up by one octave ;This will shift the music up a second octave B.2.6 DETUNE The DETUNE command shifts the frequency of notes on channel two with respect to the frequency of the notes on channel 1. BYTE DETUNE,5 ;Add 5 to the frequency of channel 5 B.2.7 Adjust Output Volume The FADER command is used to scale the volume of the notes played. BYTE Where: FADER is the signal that the command is to adjust the output volume InitialFaderValue is the new sound volume FM Synthesis B-5 FADER, InitialFaderValue,FaderInc FM Synthesis Format and Commands FaderInc allows a gradual transition to the new volume. It is a signed twobyte value that specifies the incremental amount to change the volume during each interval. For example: BYTE DATA FADER,f100p NOFADER ;Set volume to 100 ;Change is abrupt B.2.8 Modulation Index Adjustment It is frequently desirable to incrementally change the texture of the sound quality in the song. This can be done by changing the modulation index to get a more or less brighter tonal quality. This can be done by using the following commands: BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE BYTE MIX1 MIX2 MIX3 MIX4 MIX5 MIX6 MIX7 MIX8 MIXUP MIXDN ;Set the modulation index scale to 1 ; Set the modulation index scale to 2 ; Set the modulation index scale to 3 ; Set the modulation index scale to 4 ; Set the modulation index scale to 5 ; Set the modulation index scale to 6 ; Set the modulation index scale to 7 ; Set the modulation index scale to 8 ; Increment the modulation index scale ;Decrement the modulation index scale B.2.9 End of Song The STOPSONG is used to signal the end of the song. BYTE STOPSONG ;Signal the end of song B-6 FM Synthesis Format and Commands B.2.10 Command Summary Table B-1 summarizes the several valid commands. Table B-1. Command Summary Command and Format Music Notes: Format: Note,TimeValue,Duration,Velocity Example: C1, n4, n4, 127 Description Note: Is the music note that can range form C0 to C6 TimeValue: Total length of the note. n4 is 1/4 note. Duration: Length of tone generate Velocity: Note volume from 0 to 127 Tempo control the speed of music: Format: TEMPO,BPM,TimeSig,EnvelopeLen Example: TEMPO,BPM116,TS44,ENVOK TEMPO: Tempo command. Set the song tempo in channel 1 ONLY. BPM: Beats per minutes. TimeSig: Beats per measure. TS44 sets the time signature to 4/4 time. EnvelopLen: Envelop time. ENVOK sets the envelope length to normal. Tempo control for channel 2: Format: TEMPOSYNC Example: TEMPOSYNC TEMPOSYNC: Use in channel 2 only. It must be placed at the same bar # as the channel 1 TEMPO command. This is to ensure that the Tempo change is synchronous, with both channels changing at the same time. LOADTIMBRE: Load new timbre (instrument) parameters. Parameters: Contains 21 bytes that define a musical instrument. ATRANS: Transpose command. NUM: Set the channel's transpose to a signed offset. Load Timbre into each channel: Format: LOADTIMBRE,XX,XX.........,XX Example: LOADTIMBRE, 21 bytes Parameters Transpose: Format: ATRNS, NUM Example: ATRNS,-12 (-12 = Transpose Down an Octave) Transpose: Format: RTRNS,NUM Example: RTRNS,7 (Add 7 Semitones to the channel's transpose offset) RTRNS: Transpose command. NUM: Add a signed offset to the channel's transpose value. FM Synthesis B-7 FM Synthesis Format and Commands Table B-1. Command Summary (Continued) Command and Format Detune: Format: DETUNE,NUM Example: DETUNE,4 (add 4 to channel 2's Sine table index) Fade control: Format: FADER,InitialFaderValue,FaderInc Description DETUNE: Allows detuning channel 2 NUM: A signed offset to the channel 2's frequency value. FADER: Fader command InitalFaderValue: Set initial fader value from 0 to 63. F100p is defined in FmequM2.inc FadInc: Fader increment, which is a 16-bit value. Calculate as follows: (End Fader Value * Start Fader Value) # of Events 16 Example: FADER,f100p, -32 (word) Mix control: Format: MixLevel Example: Mix control: Format: MIXUP Example: Mix control Format: MIXDN Example: End of the song: Format: StopSong Example: StopSong MIXDN MIXUP MIX8 MixLevel: Set the modulation index value by table lookup form MIX0 to MIX15 MIXUP: Increment the current modulation index as set by MIXn. MIXDN: Decrement the current modulation index as set by MIXn. StopSong: Stop playing the song. B-8 FM Synthesis Data Structure B.3 FM Synthesis Data Structure As there are two channels data that are passed to the MSP53C391 or MSP53C392 through a single data path; the note information needs to be interleaved to provide the correct sequencing. 1) The channel one setup information and the first note of channel one are loaded first. 2) The channel 2 setup information and the first note of channel two will be loaded following the first note of channel 1. 3) Then the note duration of channel 1 and channel 2 are compared. If the total duration of the notes of channel 1 is less than or equal to channel 2, channel 1 data is loaded. If the total duration of the notes of channel 1 is larger than channel 2, channel 2 data is loaded. In this way, the channel data are interleaved according to the accumulative duration of the notes. The following example is in MSP50C3x syntax: * * Example of FM synthesis * * define the Channel 1 and load first note * Channel 1 ; BYTE means define a byte data in C3x syntax ; ";" and "*" is comments BYTE BYTE BYTE TEMPO,BPM122,-48,ENVOK ; set the Tempo of channel 1 ATRNS,0 MIX3 ; define the Transpose ; set Mix Level ; DATA means define a word data BYTE DATA FADER,f100p NOFADER ; load Piano tone 1 in channel 1 BYTE byte byte byte byte byte byte byte LOADTIMBRE X1 X1 38*4 126,108 -13,006 -25,013 -13,-19 ; Parameters of 21 bytes follows ; set No Fader FM Synthesis B-9 FM Synthesis Data Structure byte byte byte byte byte BYTE -25,-19 000,-06 000,-25 -38,-32 -10,-23 C4,12,12,127 ; load first note of channel 1 * define Channel 2 and loading the first note * Channel 2 BYTE BYTE BYTE BYTE DATA TEMPOSYNC ATRNS,0 MIX3 FADER,f100p NOFADER ; load timbre Flute tone 1 in channel 2 byte byte byte byte byte byte byte byte byte byte byte byte byte BYTE LOADTIMBRE X2 X2 16*4 2,1 124,46 -10,80 -9,-8 -8,-7 -7,-6 -6,-5 -5,-4 -81,-3 A4,12,12,64 ; first note of channel 2 ; Parameters of 21 bytes follows ; sync the Tempo of channel 2 with 1 ; set Transpose of channel 2 ; set Mix Level of channel 2 ; set No Fader of channel 2 * Continue to play the rest data of channel 1&2 ; interleaved the channel 1 and channel 2 data ; according to the accumulative duration in each channel * Channel 1 BYTE E4,12,12,127 * Channel 2 BYTE A4,12,12,64 * Channel 1 B-10 FM Synthesis Data Structure BYTE G4,12,12,127 * Channel 2 BYTE A4,12,12,64 * Channel 1 BYTE E4,12,12,127 * Channel 2 BYTE A4,12,12,64 * Channel 1 BYTE C5,12,12,127 * Channel 2 BYTE REST,48,2,OFF * Channel 1 BYTE BYTE BYTE BYTE E5,12,12,127 C5,12,12,127 G4,12,12,127 REST,12,2,OFF ; the duration of channel 2 is still larger than 1 ; by loading one note only ; thus, continue to load 1 until ; the duration of 1 is larger than 2 * Channel 2 BYTE REST,48,2,OFF * Channel 1 BYTE BYTE BYTE G4,12,12,127 E4,24,12,127 E4,48,48,127 * Channel 2 BYTE REST,48,2,OFF * Channel 1 BYTE REST,48,2,OFF * Channel 2 BYTE REST,48,2,OFF * Channel 1 BYTE StopSong * Channel 2 BYTE StopSong FM Synthesis B-11 Data Preparation of FM Synthesis B.4 Data Preparation of FM Synthesis According to the discussion on FM data format and structure, a song can be coded following the predefined command and formats. Alternatively, software utilities are available for converting a song from MIDI (musical instrument digital interface) formatted files to a format accepted by MSP53C391 AND MSP53C392. There are two utilities, MD2FM.exe and FM2MERGE.exe, for the conversion. The process for the conversion is shown in Figure B-1: Figure B-1. FM Conversion Process MIDI Song (songt1.mid) md2fm songt1 songt1_1 -c1 -t2 md2fm songt1 songt1_2 -c1 -t1 Channel 1 FM Data (songt1_1.inc) Channel 2 FM Data (songt1_2.inc) fm2merge songt1_1.inc songt1_2.inc songt1.inc Combined FM Data (songt1.inc) asmx songd1.inc Binary File By using the MD2FM, the channel 1 and channel 2 data of a MIDI file (.mid) can be extracted and converted to FM format (.inc). Then, the two FM files need to be combined according to the duration of each note in channel 1 and 2 by the utility FM2MERGE. The combined file can then be sent to the master device and passed on to the slave for FM synthesis. Once MD2FM has been used to merge the files, the merged file can be converted to a binary file using the ASMX or ASM10 assembly program. B-12 Data Preparation of FM Synthesis B.4.1 MD2FM Software MD2FM converts a MIDI format file to a FM data accepted by MSP50C391/2. With this routine, users can compose or translate music base on the MIDI format. This routine runs under the DOS environment and the syntax is as follows: md2fm songt1 songt1_1 -c1 -t1 input : songt1.mid (MIDI format) output : songt1_1.inc (FM format) -c1: channel #1 to be decoded -t1: track #1 to be decoded Specify the number of tracks and channels to be extracted and converted. Only one channel within one track can be converted on the MIDI file at any one time. Assuming that the songt1.mid contains two tracks and each has one channel music data, the FM data can be extracted as follows: md2fm songt1 songt1_1 -c1 -t1 and md2fm songt1 songt1_2 -c1 -t2 The output file songt1_1.inc is the track 1 data and the songt1_2.inc is the track 2 data in FM format. Since MD2FM does not support all the features of MIDI, the following must be noted: 1) Due to the limitation of conversion program, the TIMEBASE of the .mid file must be 48 and there must not be any TEMPO/METER changes after the initial settings. Also, it does not recognize channel pressure, control. 2) This routine creates a .inc file for a single channel of a single track only from a simple .mid file. To use this polyphonically, separate the MIDI file's chords into separate channels/tracks and run the md2fm program once per each channel/track to generate individual .inc files. Thus, it will need to separate the two overlapping notes into different channels/tracks and generate two .inc files by the converter. Then, a maximum of two tones can be generated simultaneously. 3) Since two files are generated for a song with two channels/tracks. The TEMPO command exists on each file, which is not valid for channel 2. The TEMPO command, which defines the tempo of the song, only applies to channel 1 and the TEMPOSYNC command should be used on channel 2. Thus, the TEMPO command must be modified to TEMPOSYNC for the file intended for channel 2. FM Synthesis B-13 Data Preparation of FM Synthesis Modify from: BYTE TEMPO,BPM150,TS44,ENVOK to: BYTE TEMPOSYNC on the channel 2 file. 4) For music with only one channel, a data stream with the following statement, BYTE StopSong can be used for the channel 2 and the single channel music can be placed on channel 1 for the synthesizing. B.4.2 FM2MERGE Software FM2MERGE is a routine run on the DOS environment. The function of the program is to merge two FM data stream into one data file for the MSP53C391 and MSP53C392 slave synthesis. The two data streams are combined according to the accumulative duration of the notes on channel 1 and 2. Please refer to the section B.2 for more information on the data structure of FM slave synthesis. The following is the syntax of the fm2merge: fm2merge [input file1] [input file2] [output file] input1 : channel 1 data file (songt1_1.inc) input2 : channel 2 data file (songt1_2.inc) output : output file (songt1.inc) Assuming that there are two files, songt1_1.inc and songt1_2.inc, which is the song data for channel 1 and channel 2 in FM format. The combined file can be generated with the following command line: fm2merge songt1_1.inc songt1_2.inc songt1.inc The file songt1.inc can then be used for the slave FM synthesis. The following points should be noted when using the FM2MERGE: 1) The instruments of FM II may not be compatible with the instruments selected in the MIDI file. It is also due to capability of downloading instruments in the slave device, it is necessary to replace the instrument define statement after the merge process from: B-14 Data Preparation of FM Synthesis byte PatchMT6i ;Use instrument Metallic tone 6i to, *PatchMT6i: Metallic tone 6i, hard metallic sound 1 byte byte byte byte byte byte byte byte byte byte byte byte byte LOADTIMBRE X1 X3 28*4 127,120 -24,7 -12,-20 -6,-10 -3,-5 -2,-3 -1,-1 -12,-6 -67,-12 which is the actual parameter for this instrument. All the PatchXXXX statements must be replaced with these parameters for the slave program to run properly. All the instruments available are listed in the file fm2intr1.inc. The instruments that match the applications can be selected. 2) For music with only one channel, a file with the following statement, BYTE StopSong can be created for the channel 2 file. Then, go through the same process to create the FM II data for slave. B.4.3 Assembler Once the FM2MERGE program has been used to merge the two channels into one file, the file can be converted to a binary file by either the ASMX program or the ASM10 program. ASMX [input files] [output file] [output file] ASM10 [input files] FM Synthesis B-15 Appendix C Appendix A Listing of FMequM2.inc Topic C.1 Page Listing of FMequM2.inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C-2 C-1 Listing of FMequM2.inc C.1 Listing of FMequM2.inc FMequM2.inc contains all the FM command and note definitions that are used for preparation of FM data. The listings are shown in the following: * * * * * * BIT0 BIT1 BIT2 BIT3 BIT4 BIT5 BIT6 BIT7 BIT8 BIT9 BIT10 BIT11 BIT12 BIT13 NUMSONGS FMEQU.INC Version RAM Definitions Constant Definitions DC,BA98:7654,3210 --,----:----,---- ;00,0000:0000,0001 ;00,0000:0000,0010 ;00,0000:0000,0100 ;00,0000:0000,1000 ;00,0000:0001,0000 ;00,0000:0010,0000 ;00,0000:0100,0000 ;00,0000:1000,0000 ;00,0001:0000,0000 ;00,0010:0000,0000 ;00,0100:0000,0000 ;00,1000:0000,0000 ;01,0000:0000,0000 ;10,0000:0000,0000 ;# of songs in list. 2.08 equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ #0001 #0002 #0004 #0008 #0010 #0020 #0040 #0080 #0100 #0200 #0400 #0800 #1000 #2000 2 * Initialization defaults * default gain value MAXGAIN equ 24 ;default value, also MAX. do not exceed! * default Master Modulation Index Scale values DEFSCLMIX equ 96 ;like a tone control... * Song interval delay values ONESEC equ 1*10 TWOSECS equ 2*10 THREESECS equ 3*10 FOURSECS equ 4*10 FIVESECS equ 5*10 TENSECS equ 10*10 * * * * * C-2 FM channel Automated Fader calculations Coded as: BYTE FADER, CurrFader, ((DestFader-CurrFader) * 16) / #Events Init Fader with Start Gain * 16 = 384 So, when each new event comes along, Add FaderInc to Fader Listing of FMequM2.inc * * (EXTSG ON) and Update Fader. When calculating Loudness, use Fader / 16 * Current Signal. * My standard fader values f100p equ 63 f94p equ 60 f87p equ 56 f75p equ 48 f62p equ 40 f50p equ 32 f37p equ 24 f25p equ 16 f18p equ 12 f12p equ 8 f9p equ 6 f6p equ 4 f4p equ 3 f3p equ 2 f2p equ 1 f0p equ 0 OFF equ 0 ;use for REST event, set velocity = 0 NOFADER * C0 Cs0 Db0 D0 Ds0 Eb0 E0 F0 Fs0 Gb0 G0 Gs0 Ab0 A0 As0 Bb0 B0 C1 Cs1 Db1 D1 Ds1 Eb1 E1 equ 0 ;Fader Increment = 0. Musical note index definitions equ 0 equ 1 equ 1 equ 2 equ 3 equ 3 equ 4 equ 5 equ 6 equ 6 equ 7 equ 8 equ 8 equ 9 equ 10 equ 10 equ 11 equ 12 equ 13 equ 13 equ 14 equ 15 equ 15 equ 16 Listing of FMequM2.inc C-3 Listing of FMequM2.inc F1 Fs1 Gb1 G1 Gs1 Ab1 A1 As1 Bb1 B1 C2 Cs2 Db2 D2 Ds2 Eb2 E2 F2 Fs2 Gb2 G2 Gs2 Ab2 A2 As2 Bb2 B2 C3 Cs3 Db3 D3 Ds3 Eb3 E3 F3 Fs3 Gb3 G3 Gs3 Ab3 A3 As3 Bb3 B3 C4 Cs4 Db4 D4 C-4 equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ 17 18 18 19 20 20 21 22 22 23 24 25 25 26 27 27 28 29 30 30 31 32 32 33 34 34 35 36 37 37 38 39 39 40 41 42 42 43 44 44 45 46 46 47 48 49 49 50 Listing of FMequM2.inc Ds4 Eb4 E4 F4 Fs4 Gb4 G4 Gs4 Ab4 A4 As4 Bb4 B4 C5 Cs5 Db5 D5 Ds5 Eb5 E5 F5 Fs5 Gb5 G5 Gs5 Ab5 A5 As5 Bb5 B5 C6 RST REST equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ 51 51 52 53 54 54 55 56 56 57 58 58 59 60 61 61 62 63 63 64 65 66 66 67 68 68 69 70 70 71 72 73 120 * Lookup values for Instrument Sound tables PatchFLT1 equ 128+0 ;FM Flute tone 1 PatchBRS1 equ 128+1 ;FM Brass tone 1, Medium slow attack PatchBRS2 equ 128+2 ;FM Brass tone 2, Fast attack PatchBRS3 equ 128+3 ;FM Brass tone 3, Slow attack PatchTRM1 equ 128+4 ;FM Brass tone Trombone 1, Slow attack PatchTRM2 equ 128+5 ;FM Brass tone Trombone 2, Med slow attack PatchCLR1 equ 128+6 ;FM Clarinet Tone 1 PatchCLR2 equ 128+7 ;FM Clarinet Tone 2, brighter than CLR1 PatchMT1a equ 128+8 ;FM Metallic tone 1a PatchMT1b equ 128+9 ;FM Metallic tone 1b PatchMT1c equ 128+10 ;FM Metallic tone 1c PatchMT2a equ 128+11 ;FM Metallic tone 2a PatchMT2b equ 128+12 ;FM Metallic tone 2b Listing of FMequM2.inc C-5 Listing of FMequM2.inc PatchMT2c PatchMT3a PatchMT3b PatchMT3c PatchMT4a PatchMT4b PatchMT4c PatchMT5a PatchMT5b PatchMT5c PatchMT6a PatchMT6b PatchMT6c PatchMT6d PatchMT6e PatchMT6f PatchMT6g PatchMT6h PatchMT6i PatchMT6j PatchMT6k PatchMT6l PatchMT6m PatchMT6n PatchMT6o PatchMT6p PatchCHM1 PatchCHM2 PatchCHM3 * Max # CONTROL equ 128+13 equ 128+14 equ 128+15 equ 128+16 equ 128+17 equ 128+18 equ 128+19 equ 128+20 equ 128+21 equ 128+22 equ 128+23 equ 128+24 equ 128+25 equ 128+26 equ 128+27 equ 128+28 equ 128+29 equ 128+30 equ 128+31 equ 128+32 equ 128+33 equ 128+34 equ 128+35 equ 128+36 equ 128+37 equ 128+38 equ 128+39 equ 128+40 equ 128+41 of patch codes is equ #80 ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM ;FM 64 Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Metallic tone Chimes tone 1 Chimes tone 2 Chimes tone 3 2c 3a 3b 3c 4a 4b 4c 5a 5b 5c 6a, 6b, 6c, 6d 6e 6f 6g 6h 6i, 6j, 6k, 6l, 6m, 6n 6o, 6p, good BASS sound 1 good BASS sound 2 good BASS sound 3 hard metallic sound 1 hard metallic sound 2 hard metallic sound 3 plucked string 1 plucked string 2 plucked string 3 plucked string 4 ;< is NOTE data, >= are commands and controls * Codes #80 to #BF are reserved for Patch Codes (packed BYTE) PATCH equ #80 ;usage: BYTE PATCH+patchcode, ie 80+MT6o = B7 * CMDS Codes #C0 to #FF are reserved for Commands equ #C0 ;192 to 255 are Commands equ equ equ equ equ equ equ equ equ equ #d3 #D4 #D5 #D6 #D7 #D8 #D9 #DA #DB #DC ;End of Song ;Control code ;Control code ;Control code ;Control code ;Control code ;Control code ;Control code ;Control code LOADTIMBRE StopSong GOTO RETURN GOSUB DETUNE TEMPOSYNC MIXDN MIXUP RTRNS C-6 for for for for for for for for GOTO a Label Return from a Subroutine Play a Subroutine Ch2 Detune, Signed offset Sync Ch2/Ch1 Tempo change Shift MIX value DOWN Shift MIX value UP RELATIVE Transpose Listing of FMequM2.inc ATRNS TEMPO FADER MIX0 MIX1 MIX2 MIX3 MIX4 MIX5 MIX6 MIX7 MIX8 MIX9 MIX10 MIX11 MIX12 MIX13 MIX14 MIX15 ENDREP BEGREP2 BEGREP3 BEGREP4 BEGREP5 BEGREP6 BEGREP7 BEGREP8 ENDMULTI BEGMULTI2 BEGMULTI3 BEGMULTI4 BEGMULTI5 BEGMULTI6 BEGMULTI7 BEGMULTI8 * Tempo * BPM61 BPM67 BPM73 BPM79 BPM85 BPM92 BPM98 BPM104 BPM110 BPM116 equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ #DD #DE #DF #E0 #E1 #E2 #E3 #E4 #E5 #E6 #E7 #E8 #E9 #EA #EB #EC #ED #EE #EF #F0 #F1 #F2 #F3 #F4 #F5 #F6 #F7 #F8 #F9 #FA #FB #FC #FD #FE #FF ;Control ;Control ;Control ;Control ;isolate ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control ;Control code code code code bits for for for for 0-3 ABSOLUTE Transpose Tempo Set Fader Modix (Modulation Index) for table lookup code code code code code code code code code code code code code code code code for for for for for for for for for for for for for for for for End Repeat Start Repeat, Play 2X Start Repeat, Play 3X Start Repeat, Play 4X Start Repeat, Play 5X Start Repeat, Play 6X Start Repeat, Play 7X Start Repeat, Play 8X End MULTI Repeat Start MULTI, Play 2X Start MULTI, Play 3X Start MULTI, Play 4X Start MULTI, Play 5X Start MULTI, Play 6X Start MULTI, Play 7X Start MULTI, Play 8X values as 1/4 notes (Beats) Per Minute, 12 Clocks per Beat Index MyPsc Exact_BPM Beat_Prd Exact_Tmr Timer equ 0 ;20 61.035156 0.983040 196.608000 197 equ 1 ;22 67.138672 0.893673 178.734545 179 equ 2 ;24 73.242188 0.819200 163.840000 164 equ 3 ;26 79.345703 0.756185 151.236923 151 equ 4 ;28 85.449219 0.702171 140.434286 140 equ 5 ;30 91.552734 0.655360 131.072000 131 equ 6 ;32 97.656250 0.614400 122.880000 123 equ 7 ;34 103.759766 0.578259 115.651765 116 equ 8 ;36 109.863281 0.546133 109.226667 109 equ 9 ;38 115.966797 0.517389 103.477895 103 Listing of FMequM2.inc C-7 Listing of FMequM2.inc BPM122 BPM128 BPM134 BPM140 BPM146 BPM153 BPM159 BPM165 BPM171 BPM177 BPM183 BPM189 BPM195 BPM201 BPM208 BPM214 BPM220 BPM226 BPM232 BPM238 BPM244 BPM250 BPM256 BPM262 BPM269 BPM275 BPM281 BPM287 BPM293 BPM299 BPM305 equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ;40 ;42 ;44 ;46 ;48 ;50 ;52 ;54 ;56 ;58 ;60 ;62 ;64 ;66 ;68 ;70 ;72 ;74 ;76 ;78 ;80 ;82 ;84 ;86 ;88 ;90 ;92 ;94 ;96 ;98 ;100 122.070313 128.173828 134.277344 140.380859 146.484375 152.587891 158.691406 164.794922 170.898438 177.001953 183.105469 189.208984 195.312500 201.416016 207.519531 213.623047 219.726563 225.830078 231.933594 238.037109 244.140625 250.244141 256.347656 262.451172 268.554688 274.658203 280.761719 286.865234 292.968750 299.072266 305.175781 0.491520 0.468114 0.446836 0.427409 0.409600 0.393216 0.378092 0.364089 0.351086 0.338979 0.327680 0.317110 0.307200 0.297891 0.289129 0.280869 0.273067 0.265686 0.258695 0.252062 0.245760 0.239766 0.234057 0.228614 0.223418 0.218453 0.213704 0.209157 0.204800 0.200620 0.196608 98.304000 93.622857 89.367273 85.481739 81.920000 78.643200 75.618462 72.817778 70.217143 67.795862 65.536000 63.421935 61.440000 59.578182 57.825882 56.173714 54.613333 53.137297 51.738947 50.412308 49.152000 47.953171 46.811429 45.722791 44.683636 43.690667 42.740870 41.831489 40.960000 40.124082 39.321600 98 94 89 85 82 79 76 73 70 68 66 63 61 60 58 56 55 53 52 50 49 48 47 46 45 44 43 42 41 40 39 * Time Signature constants as Negative UP Counter values. Qnote equ -12 ;-12 clocks per 1/4 note, 1/4 = 1 Beat TS24 equ 2*Qnote ;2 beats per Measure TS34 equ 3*Qnote ;3 beats per Measure TS44 equ 4*Qnote ;4 beats per Measure TS54 equ 5*Qnote ;5 beats per Measure TS64 equ 6*Qnote ;6 beats per Measure TS74 equ 7*Qnote ;7 beats per Measure * SIGNED Offsets added to MyPsc to Shorten/Lengthen Envelope times ENVOK equ 0 ;No Envelope Length adjust ENVS1 equ 1 ;make Envelope length Shorter by 1 ENVS2 equ 2 ;make Envelope length Shorter by 2 ENVS3 equ 3 ;make Envelope length Shorter by 3 ENVS4 equ 4 ;make Envelope length Shorter by 4 ENVS5 equ 5 ;make Envelope length Shorter by 5 ENVS6 equ 6 ;make Envelope length Shorter by 6 C-8 Listing of FMequM2.inc ENVS7 ENVS8 ENVS10 ENVS12 ENVS14 ENVS16 ENVS18 ENVS20 ENVL1 ENVL2 ENVL3 ENVL4 ENVL5 ENVL6 ENVL7 ENVL8 ENVL10 ENVL12 ENVL14 ENVL16 ENVL18 ENVL20 * ngrc n163 n16 n83 n8m n8 n8p n43 nd8 n4 n23 nd4 n2 nd2 n1 nd1 n21 n31 n41 n51 * X05 equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ 7 8 10 12 14 16 18 20 -1 -2 -3 -4 -5 -6 -7 -8 -10 -12 -14 -16 -18 -20 ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make ;make Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope Envelope length length length length length length length length length length length length length length length length length length length length length length Shorter Shorter Shorter Shorter Shorter Shorter Shorter Shorter Longer Longer Longer Longer Longer Longer Longer Longer Longer Longer Longer Longer Longer Longer by by by by by by by by by by by by by by by by by by by by by by 7 8 10 12 14 16 18 20 1 2 3 4 5 6 7 8 10 12 14 16 18 20 Musical Note Time value definitions (FM) equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ equ 1 2 3 4 5 6 7 8 9 12 16 18 24 36 48 72 96 144 192 240 ;Grace Note, use with n8m etc ;1/16 note triplet ;1/16 note ;1/8 note triplet ;1/8 note off beat (use for Shuffle feel) ;1/8 note ;1/8 note on beat (use for Shuffle feel) ;1/4 note triplet ;.1/8 note ;1/4 note ;1/2 note triplet ;.1/4 note ;1/2 note ;.1/2 note ;1/1 note ;.1/1 note ;2/1 note ;3/1 note ;4/1 note ;5/1 note Carrier & Modulator frequency multipliers. equ 16 ;Multiply * 0.5 Listing of FMequM2.inc C-9 Listing of FMequM2.inc X0707 Xd4th X1 X1414 Xu5th X2 X3 equ equ equ equ equ equ equ 22 24 32 45 48 64 96 ;Multiply ;Multiply ;Multiply ;Multiply ;Multiply ;Multiply ;Multiply * * * * * * * 0.707 0.750 (down a Fourth) 1 1.414 1.500 (up a Fifth) 2 3 * Carrier & Modulator frequency multipliers. X0_33 equ 12 ;Multiply * 0.3333 X0_5 equ 16 ;Multiply * 0.5 X0_70 equ 22 ;Multiply * 0.707 X0_75 equ 24 ;Multiply * 0.750 (down a Fourth) ;X1 equ 32 ;Multiply * 1 X1_41 equ 45 ;Multiply * 1.414 X1_5 equ 48 ;Multiply * 1.500 (up a Fifth) ;X2 equ 64 ;Multiply * 2 ;X3 equ 96 ;Multiply * 3 X4 equ 128 ;Multiply * 4 X5 equ 160 ;Multiply * 5 X6 equ 192 ;Multiply * 6 X7 equ 224 ;Multiply * 7 X7_8 equ 250 ;Multiply * 7.8125 X7_9 equ 255 ;Multiply * 7.96875 (8 bit number max) X8 equ 256 ;Multiply*8 (NOTE: is this limited to 8 bit number?) X9 equ 288 ;Multiply*9 (NOTE: is this limited to 8 bit number?) X10 equ 320 ;Multiply*10 (NOTE:is this limited to 8 bit number?) * End of FmequM2.INC C-10 Appendix D Appendix A MSP53C391/392 Timing Considerations Topic D.1 D.2 D.3 Page General Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-2 MSP53C391 Timing Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-3 MSP53C392 Timing Waveforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . D-5 D-1 General Constraints D.1 General Constraints The sound quality of the speech produced by the MSP53C391 and MSP53C392 is sensitive to the timing of the waveforms which transfer speech data to the device from the master microprocessor. Depending upon the algorithm being used to synthesize the speech, the speech data is stored in a circular buffer either 16 or 32 bytes wide. If the data is written to the slave too infrequently, the buffer will empty and the synthesis process will stop or be corrupted. If the MSP53C391 or MSP53C392 is polled too frequently to determine whether or not it is ready to accept new data, then too many of the internal instruction cycles may be used servicing the polling process and the sound quality can be degraded. Each of the synthesis algorithms tends to use the data in the buffer in bursts followed by a period of time in which the data is being utilized before more data is read from the buffer. Once the MSP53C391 or MSP53C392 has been polled and determined to be ready to accept new data, the data should be loaded quickly until the buffer is again full. The read pulses should subsequently be spaced more widely until it is again determined that the buffer is not full and the device is ready to accept new data. The spacing of the read pulses while the buffer is an important determinant of the synthesized speech quality, but is difficult to specify precisely due to the different data throughput requirements of the different algorithms. In general, the optimal polling frequency will increase with the bit rate of the synthesis algorithm being used. In the sections below are some timing waveforms which we have found to work with the datasets that we have tested. In many cases it will be difficult for the system designer to exactly replicate the timing shown in these sections. The timing should be adjusted to optimize the sound quality for the specific system being designed. The following general considerations should be observed: - Keep the STROBE pulses as short as possible, but they should not be shorter than that shown in the waveforms below. - Once it is determined that the buffer is not full, load new data quickly. - Once it is determined that the buffer is full, read the status of the BUSY signal periodically, but not as frequently as when refreshing the buffer with new data. D-2 MSP53C391 Timing Waveforms D.2 MSP53C391 Timing Waveforms The following waveforms have been found to provide good synthesis results with a variety of data. The master microprocessor transfers data to the MSP53C391 slave code through 4 bit interface. The master microprocessor also samples two of the data lines to determine the status of the slave. The detailed description about how to transfer data and read back the status of the slave is described in chapter 2. The typical range of the read strobe pulse is 1 s - 3 s and the same for write strobe pulse is 1 s - 2 s. It is advisable to restrict the strobe pulse widths within the recommended range. The typical range of timing between the rising edge of a read pulse and the falling edge of a write pulse if the slave is not busy is 19 s - 22 s. Since the slave expects data from the master in bursts to fill up the buffer, the lower limit of this part of the specification could be less than 19 s but it is advisable not to stretch the higher limit. The typical range of timing between the rising edge of the write strobe pulse and the falling edge of the read strobe pulse if the slave is not busy is 30 s - 34 s. The typical range of timing between the rising edge of the read strobe pulse and the falling edge of the write strobe pulse if the slave is busy is 38 s - 58 s. This timing could be stretched depending upon the synthesis algorithm, but polling the slave too frequently if the slave is busy would unnecessarily waste timecritical instruction cycles in the MSP53C391 which might affect the quality of the speech. At the same time, polling the slave less frequently would lengthen the response time of the master when the slave needs speech data, which might eventually lead into the exhaustion of the buffer for the new and refreshed speech data. If the slave is not busy Read Strobe 1 - 3 s Write Strobe 1 - 2 s Read Strobe 1 - 3 s 19 or less - 22 s 30 - 34 s If the slave is busy Read Strobe 1 - 3 s Read Strobe 1 - 3 s Read Strobe 1 - 3 s 38 - 58 s 38 - 58 s MSP53C391/392 Timing Considerations D-3 MSP53C391 Timing Waveforms In both cases, it is advisable to follow the timing window for the width of the strobe pulse and also to provide speech data to the slave in response to the interrupt as soon as possible. It is also advisable to keep any interrupt service routine small so that a new Interrupt service request does not occur while the master is processing the previous request. It is advisable to follow the typical timing window as much as possible for any synthesis algorithm; but if difficulties are found, you can try changing any of those timing windows (except the width of the read and write strobe pulses) to correct the problem for your particular system. D-4 MSP53C392 Timing Waveforms D.3 MSP53C392 Timing Waveforms The master microprocessor transfers data to the MSP53C392 slave code through 8-bit interface. The master microprocessor also samples two of the data lines to determine the status of the slave. The detailed description about how to transfer data and read back the status of the slave is described in chapter 3. The typical range of the read strobe pulse is 3 s - 10 s and the same for write strobe pulse is 1 s - 10 s. It is advisable to restrict the strobe pulse widths within the recommended range. The typical range of timing between the rising edge of a read pulse and the falling edge of a write pulse if the slave is NOT BUSY is 20 s - 32 s. The typical range of timing between the rising edge of the write strobe pulse and the falling edge of the read strobe pulse if the slave is not busy is 77 s - 156 s. The typical range of timing between the rising edge of the read strobe pulse and the falling edge of the write strobe pulse if the slave is BUSY is 19 s - 606 s. This timing could be stretched depending upon the synthesis algorithm, but polling the slave too frequently if the slave is BUSY would unnecessarily waste time-critical MSP53C392 instruction cycles which might affect the quality of the speech. At the same time, polling the slave less frequently would lengthen the response time of the master when the slave needs speech data which might eventually lead into the exhaustion of the buffer for the new and refreshed speech data. The length of the timing between two read strobe pulses when the slave is busy is dependent on the length of the timing between the write and read strobe pulse to some extent. Lowering the lower limit of the timing between the strobe pulse between the write and read would lower the higher limit of the length of the timing window between the the two READ strobe pulses when the slave is busy. If the slave is not busy Read Strobe 1 - 10 s Write Strobe 1 - 10 s Read Strobe 3 - 10 s 20 - 32 s 77 - 156 s If the slave is busy Read Strobe 3 - 10 s Read Strobe 3 - 10 s Read Strobe 3 - 10 s 19 - 606 s 19 - 606 s MSP53C391/392 Timing Considerations D-5 MSP53C392 Timing Waveforms In both cases, it is advisable to follow the timing window for the width of the strobe pulse and also to provide speech data to the slave in response to the interrupt as soon as possible. It is advisable to follow the typical timing window as much as possible for any synthesis algorithm; but if difficulties are found, you can try changing any of those timing window (except the width of the read and write strobe pulses) to correct the problem for your particular system. D-6 Appendix E Appendix A Listing of FM2INTR1.inc Topic E.1 Page Listing of FM2INTR1.inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . E-2 E-1 Listing of FM2INTR1.inc E.1 Listing of FM2INTR1.inc FM2INTR1.inc contains ?????? The listings are shown in the following: * Patch tables define each instrument sound. * PatchFLT1: Flute tone 1 byte LOADTIMBRE byte X2 ;Carrier Fc = 2Fo byte X2 ;Modulator Fm = 2Fo byte 16*4 ;Modulation Index Scaler byte 2,1 ;CarAmp, FmAmp Initial Values byte 124,46 ;0 CarInc, FmInc 0-7 byte -10,80 ;1 CarInc, FmInc 8 - 15 byte -9,-8 ;2 CarInc, FmInc 16 - 23 byte -8,-7 ;3 CarInc, FmInc 24 - 31 byte -7,-6 ;4 CarInc, FmInc 32 - 39 byte -6,-5 ;5 CarInc, FmInc 40 - 47 byte -5,-4 ;6 CarInc, FmInc 48 - 55 byte -81,-3 ;7 CarInc, FmInc 56 - 63 * PatchBRS1: Brass tone 1, Medium slow attack byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X1 ;Modulator Fm = Fo byte 36*4 ;Modulation Index Scaler byte 96,1 ;CarAmp, FmAmp Initial Values byte 31,24 ;0 CarInc, FmInc 0-7 byte -18,24 ;1 CarInc, FmInc 8 - 15 byte -17,24 ;2 CarInc, FmInc 16 - 23 byte -16,24 ;3 CarInc, FmInc 24 - 31 byte -14,8 ;4 CarInc, FmInc 32 - 39 byte -13,8 ;5 CarInc, FmInc 40 - 47 byte -12,8 ;6 CarInc, FmInc 48 - 55 byte -37,6 ;7 CarInc, FmInc 56 - 63 * PatchBRS2: Brass tone 2, Fast attack byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X1 ;Modulator Fm = Fo byte 32*4 ;Modulation Index Scaler byte 127,64 ;CarAmp, FmAmp Initial Values byte -22,63 ;0 CarInc, FmInc 0-7 byte -14,-110 ;1 CarInc, FmInc 8 - 15 byte -13,13 ;2 CarInc, FmInc 16 - 23 byte -11,16 ;3 CarInc, FmInc 24 - 31 byte -11,16 ;4 CarInc, FmInc 32 - 39 byte -10,15 ;5 CarInc, FmInc 40 - 47 byte -7,16 ;6 CarInc, FmInc 48 - 55 byte -39,17 ;7 CarInc, FmInc 56 - 63 E-2 Listing of FM2INTR1.inc * PatchBRS3: Brass tone 3, Slow attack byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X1 ;Modulator Fm = Fo byte 32*4 ;Modulation Index Scaler byte 127,69 ;CarAmp, FmAmp Initial Values byte -22,58 ;0 CarInc, FmInc 0-7 byte -18,-50 ;1 CarInc, FmInc 8 - 15 byte -17,-44 ;2 CarInc, FmInc 16 - 23 byte -16,7 ;3 CarInc, FmInc 24 - 31 byte -14,8 ;4 CarInc, FmInc 32 - 39 byte -12,9 ;5 CarInc, FmInc 40 - 47 byte -10,10 ;6 CarInc, FmInc 48 - 55 byte -18,11 ;7 CarInc, FmInc 56 - 63 * PatchTRM1: Brass tone Trombone 1, Slow attack byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X05 ;Modulator Fm = 0.5Fo byte 24*4 ;Modulation Index Scaler byte 127,69 ;CarAmp, FmAmp Initial Values byte -22,58 ;0 CarInc, FmInc 0-7 byte -18,-50 ;1 CarInc, FmInc 8 - 15 byte -17,-44 ;2 CarInc, FmInc 16 - 23 byte -16,7 ;3 CarInc, FmInc 24 - 31 byte -14,8 ;4 CarInc, FmInc 32 - 39 byte -12,9 ;5 CarInc, FmInc 40 - 47 byte -10,10 ;6 CarInc, FmInc 48 - 55 byte -18,11 ;7 CarInc, FmInc 56 - 63 * PatchTRM2: Brass tone Trombone 2, Med slow attack byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X05 ;Modulator Fm = 0.5Fo byte 26*4 ;Modulation Index Scaler byte 127,68 ;CarAmp, FmAmp Initial Values byte -12,32 ;0 CarInc, FmInc 0-7 byte -10,27 ;1 CarInc, FmInc 8 - 15 byte -8,-64 ;2 CarInc, FmInc 16 - 23 byte -6,-48 ;3 CarInc, FmInc 24 - 31 byte -4,8 ;4 CarInc, FmInc 32 - 39 byte -2,10 ;5 CarInc, FmInc 40 - 47 byte -1,12 ;6 CarInc, FmInc 48 - 55 byte -84,14 ;7 CarInc, FmInc 56 - 63 * PatchCLR1: Clarinet Tone 1 byte LOADTIMBRE byte X3 ;Carrier Fc = 3Fo byte X2 ;Modulator Fm = 2Fo byte 18*4 ;Modulation Index Scaler byte 2,1 ;CarAmp, FmAmp Initial Values Listing of FM2INTR1.inc E-3 Listing of FM2INTR1.inc byte 124,46 ;0 CarInc, FmInc 0-7 byte -10,80 ;1 CarInc, FmInc 8 - 15 byte -9,-8 ;2 CarInc, FmInc 16 - 23 byte -8,-7 ;3 CarInc, FmInc 24 - 31 byte -7,-6 ;4 CarInc, FmInc 32 - 39 byte -6,-5 ;5 CarInc, FmInc 40 - 47 byte -5,-4 ;6 CarInc, FmInc 48 - 55 byte -81,-3 ;7 CarInc, FmInc 56 - 63 * PatchCLR2: Clarinet Tone 2, brighter than CLR1 byte LOADTIMBRE byte X3 ;Carrier Fc = 3Fo byte X2 ;Modulator Fm = 2Fo byte 24*4 ;Modulation Index Scaler byte 3,1 ;CarAmp, FmAmp Initial Values byte 124,63 ;0 CarInc, FmInc 0-7 byte -11,63 ;1 CarInc, FmInc 8 - 15 byte -7,-4 ;2 CarInc, FmInc 16 - 23 byte -6,-3 ;3 CarInc, FmInc 24 - 31 byte -8,-4 ;4 CarInc, FmInc 32 - 39 byte -6,-4 ;5 CarInc, FmInc 40 - 47 byte -5,-4 ;6 CarInc, FmInc 48 - 55 byte -81,-108 ;7 CarInc, FmInc 56 - 63 * PatchMT1a: Metallic tone 1a byte LOADTIMBRE byte X2 ;Carrier Fc = 2Fo byte X0707 ;Modulator Fm = 0.707Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -40,-20 ;0 CarInc, FmInc 0-7 byte -27,-8 ;1 CarInc, FmInc 8 - 15 byte -19,-8 ;2 CarInc, FmInc 16 - 23 byte -7,-8 ;3 CarInc, FmInc 24 - 31 byte -6,-8 ;4 CarInc, FmInc 32 - 39 byte -5,-19 ;5 CarInc, FmInc 40 - 47 byte -4,-19 ;6 CarInc, FmInc 48 - 55 byte -19,0 ;7 CarInc, FmInc 56 - 63 * PatchMT1b: Metallic tone 1b byte LOADTIMBRE byte X2 ;Carrier Fc = 2Fo byte X0707 ;Modulator Fm = 0.707Fo byte 36*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -16,-15 ;0 CarInc, FmInc 0-7 byte -16,-8 ;1 CarInc, FmInc 8 - 15 byte -16,-8 ;2 CarInc, FmInc 16 - 23 byte -16,-8 ;3 CarInc, FmInc 24 - 31 byte -16,-4 ;4 CarInc, FmInc 32 - 39 byte -16,-2 ;5 CarInc, FmInc 40 - 47 E-4 Listing of FM2INTR1.inc * * * * byte -16,-1 byte -15,0 PatchMT1c: Metallic tone byte LOADTIMBRE byte X1 byte X0707 byte 32*4 byte 127,127 byte -40,-20 byte -27,-8 byte -19,-8 byte -7,-8 byte -6,-8 byte -5,-19 byte -4,-19 byte -19,0 PatchMT2a: Metallic tone byte LOADTIMBRE byte X1 byte X1414 byte 32*4 byte 127,127 byte -40,-20 byte -27,-8 byte -19,-8 byte -7,-8 byte -6,-8 byte -5,-19 byte -4,-19 byte -19,0 PatchMT2b: Metallic tone byte LOADTIMBRE byte X1 byte X1414 byte 36*4 byte 127,127 byte -16,-15 byte -16,-8 byte -16,-8 byte -16,-8 byte -16,-4 byte -16,-2 byte -16,-1 byte -15,0 PatchMT2c: Metallic tone byte LOADTIMBRE byte X2 byte X1414 ;6 ;7 1c CarInc, FmInc CarInc, FmInc 48 - 56 - 55 63 ;Carrier Fc = 2Fo ;Modulator Fm = 0.707Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 2a ;Carrier Fc = Fo ;Modulator Fm = 1.414Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 2b ;Carrier Fc = Fo ;Modulator Fm = 1.414Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 2c ;Carrier Fc = 2Fo ;Modulator Fm = 1.414Fo Listing of FM2INTR1.inc E-5 Listing of FM2INTR1.inc byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -40,-20 ;0 CarInc, FmInc 0-7 byte -27,-8 ;1 CarInc, FmInc 8 - 15 byte -19,-8 ;2 CarInc, FmInc 16 - 23 byte -7,-8 ;3 CarInc, FmInc 24 - 31 byte -6,-8 ;4 CarInc, FmInc 32 - 39 byte -5,-19 ;5 CarInc, FmInc 40 - 47 byte -4,-19 ;6 CarInc, FmInc 48 - 55 byte -19,0 ;7 CarInc, FmInc 56 - 63 * PatchMT3a: Metallic tone 3a byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte Xd4th ;Modulator Fm = 0.750Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -40,-20 ;0 CarInc, FmInc 0-7 byte -27,-8 ;1 CarInc, FmInc 8 - 15 byte -19,-8 ;2 CarInc, FmInc 16 - 23 byte -7,-8 ;3 CarInc, FmInc 24 - 31 byte -6,-8 ;4 CarInc, FmInc 32 - 39 byte -5,-19 ;5 CarInc, FmInc 40 - 47 byte -4,-19 ;6 CarInc, FmInc 48 - 55 byte -19,0 ;7 CarInc, FmInc 56 - 63 * PatchMT3b: Metallic tone 3b byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte Xd4th ;Modulator Fm = 0.750Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -16,-15 ;0 CarInc, FmInc 0-7 byte -16,-8 ;1 CarInc, FmInc 8 - 15 byte -16,-8 ;2 CarInc, FmInc 16 - 23 byte -16,-8 ;3 CarInc, FmInc 24 - 31 byte -16,-4 ;4 CarInc, FmInc 32 - 39 byte -16,-2 ;5 CarInc, FmInc 40 - 47 byte -16,-1 ;6 CarInc, FmInc 48 - 55 byte -15,0 ;7 CarInc, FmInc 56 - 63 * PatchMT3c: Metallic tone 3c byte LOADTIMBRE byte X2 ;Carrier Fc = 2Fo byte Xd4th ;Modulator Fm = 0.750Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -40,-20 ;0 CarInc, FmInc 0-7 byte -27,-8 ;1 CarInc, FmInc 8 - 15 byte -19,-8 ;2 CarInc, FmInc 16 - 23 byte -7,-8 ;3 CarInc, FmInc 24 - 31 E-6 Listing of FM2INTR1.inc * * * * byte -6,-8 byte -5,-19 byte -4,-19 byte -19,0 PatchMT4a: Metallic tone byte LOADTIMBRE byte X2 byte Xu5th byte 32*4 byte 127,127 byte -40,-20 byte -27,-8 byte -19,-8 byte -7,-8 byte -6,-8 byte -5,-19 byte -4,-19 byte -19,0 PatchMT4b: Metallic tone byte LOADTIMBRE byte X2 byte Xu5th byte 36*4 byte 127,127 byte -16,-15 byte -16,-8 byte -16,-8 byte -16,-8 byte -16,-4 byte -16,-2 byte -16,-1 byte -15,0 PatchMT4c: Metallic tone byte LOADTIMBRE byte X2 byte Xu5th byte 28*4 byte 127,1 byte -22,32 byte -14,32 byte -13,31 byte -11,31 byte -9,-32 byte -10,-32 byte -7,-32 byte -41,-31 PatchMT5a: Metallic tone byte LOADTIMBRE ;4 ;5 ;6 ;7 4a CarInc, CarInc, CarInc, CarInc, FmInc FmInc FmInc FmInc 32 40 48 56 - - - - 39 47 55 63 ;Carrier Fc = 2Fo ;Modulator Fm = 1.500Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 4b ;Carrier Fc = 2Fo ;Modulator Fm = 1.500Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 4c ;Carrier Fc = 2Fo ;Modulator Fm = 1.500Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 5a Listing of FM2INTR1.inc E-7 Listing of FM2INTR1.inc byte Xd4th ;Carrier Fc = 0.75Fo byte X2 ;Modulator Fm = 2Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -40,-20 ;0 CarInc, FmInc 0-7 byte -27,-8 ;1 CarInc, FmInc 8 - 15 byte -19,-8 ;2 CarInc, FmInc 16 - 23 byte -7,-8 ;3 CarInc, FmInc 24 - 31 byte -6,-8 ;4 CarInc, FmInc 32 - 39 byte -5,-19 ;5 CarInc, FmInc 40 - 47 byte -4,-19 ;6 CarInc, FmInc 48 - 55 byte -19,0 ;7 CarInc, FmInc 56 - 63 * PatchMT5b: Metallic tone 5b byte LOADTIMBRE byte Xd4th ;Carrier Fc = 0.75Fo byte X2 ;Modulator Fm = 2Fo byte 36*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -16,-15 ;0 CarInc, FmInc 0-7 byte -16,-8 ;1 CarInc, FmInc 8 - 15 byte -16,-8 ;2 CarInc, FmInc 16 - 23 byte -16,-8 ;3 CarInc, FmInc 24 - 31 byte -16,-4 ;4 CarInc, FmInc 32 - 39 byte -16,-2 ;5 CarInc, FmInc 40 - 47 byte -16,-1 ;6 CarInc, FmInc 48 - 55 byte -15,0 ;7 CarInc, FmInc 56 - 63 * PatchMT5c: Metallic tone 5c byte LOADTIMBRE byte Xd4th ;Carrier Fc = 0.75Fo byte X2 ;Modulator Fm = 2Fo byte 24*4 ;Modulation Index Scaler byte 96,1 ;CarAmp, FmAmp Initial Values byte 31,24 ;0 CarInc, FmInc 0-7 byte -18,24 ;1 CarInc, FmInc 8 - 15 byte -17,24 ;2 CarInc, FmInc 16 - 23 byte -16,24 ;3 CarInc, FmInc 24 - 31 byte -14,8 ;4 CarInc, FmInc 32 - 39 byte -13,8 ;5 CarInc, FmInc 40 - 47 byte -12,8 ;6 CarInc, FmInc 48 - 55 byte -37,6 ;7 CarInc, FmInc 56 - 63 * PatchMT6a: Metallic tone 6a, good BASS sound 1 byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X05 ;Modulator Fm = 0.5Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -16,-16 ;0 CarInc, FmInc 0-7 byte -10,-16 ;1 CarInc, FmInc 8 - 15 E-8 Listing of FM2INTR1.inc byte -6,-6 ;2 CarInc, FmInc 16 - 23 byte -4,-4 ;3 CarInc, FmInc 24 - 31 byte -2,-2 ;4 CarInc, FmInc 32 - 39 byte -1,-1 ;5 CarInc, FmInc 40 - 47 byte -10,-5 ;6 CarInc, FmInc 48 - 55 byte -78,-16 ;7 CarInc, FmInc 56 - 63 * PatchMT6b: Metallic tone 6b, good BASS sound 2 byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X05 ;Modulator Fm = 0.5Fo byte 32*4 ;Modulation Index Scaler byte 127,120 ;CarAmp, FmAmp Initial Values byte -24,7 ;0 CarInc, FmInc 0-7 byte -12,-20 ;1 CarInc, FmInc 8 - 15 byte -6,-10 ;2 CarInc, FmInc 16 - 23 byte -3,-5 ;3 CarInc, FmInc 24 - 31 byte -2,-3 ;4 CarInc, FmInc 32 - 39 byte -1,-1 ;5 CarInc, FmInc 40 - 47 byte -12,-6 ;6 CarInc, FmInc 48 - 55 byte -67,-12 ;7 CarInc, FmInc 56 - 63 * PatchMT6c: Metallic tone 6c, good BASS sound 3 byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X05 ;Modulator Fm = 0.5Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -24,-20 ;0 CarInc, FmInc 0-7 byte -18,-15 ;1 CarInc, FmInc 8 - 15 byte -6,-12 ;2 CarInc, FmInc 16 - 23 byte -3,-10 ;3 CarInc, FmInc 24 - 31 byte -2,-8 ;4 CarInc, FmInc 32 - 39 byte -1,-5 ;5 CarInc, FmInc 40 - 47 byte -18,-3 ;6 CarInc, FmInc 48 - 55 byte -55,-1 ;7 CarInc, FmInc 56 - 63 * PatchMT6d: Metallic tone 6d byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X2 ;Modulator Fm = 2Fo byte 32*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -16,-16 ;0 CarInc, FmInc 0-7 byte -10,-16 ;1 CarInc, FmInc 8 - 15 byte -6,-6 ;2 CarInc, FmInc 16 - 23 byte -4,-4 ;3 CarInc, FmInc 24 - 31 byte -2,-2 ;4 CarInc, FmInc 32 - 39 byte -1,-1 ;5 CarInc, FmInc 40 - 47 byte -10,-5 ;6 CarInc, FmInc 48 - 55 byte -78,-16 ;7 CarInc, FmInc 56 - 63 Listing of FM2INTR1.inc E-9 Listing of FM2INTR1.inc * PatchMT6e: Metallic tone byte LOADTIMBRE byte X1 byte X2 byte 32*4 byte 127,120 byte -24,7 byte -12,-20 byte -6,-10 byte -3,-5 byte -2,-3 byte -1,-1 byte -12,-6 byte -67,-12 * PatchMT6f: Metallic tone byte LOADTIMBRE byte X1 byte X2 byte 32*4 byte 127,127 byte -24,-20 byte -18,-15 byte -6,-12 byte -3,-10 byte -2,-8 byte -1,-5 byte -18,-3 byte -55,-1 * PatchMT6g: Metallic tone byte LOADTIMBRE byte X1 byte X0707 byte 36*4 byte 127,1 byte -22,32 byte -14,32 byte -13,31 byte -11,31 byte -9,-32 byte -10,-32 byte -7,-32 byte -41,-31 * PatchMT6h: Metallic tone byte LOADTIMBRE byte X2 byte X1 byte 32*4 byte 127,127 E-10 6e ;Carrier Fc = Fo ;Modulator Fm = 2Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 6f ;Carrier Fc = Fo ;Modulator Fm = 2Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 6g ;Carrier Fc = Fo ;Modulator Fm = 0.707Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 6h ;Carrier Fc = 2Fo ;Modulator Fm = Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values Listing of FM2INTR1.inc byte -24,-20 ;0 CarInc, FmInc 0-7 byte -18,-15 ;1 CarInc, FmInc 8 - 15 byte -6,-12 ;2 CarInc, FmInc 16 - 23 byte -3,-10 ;3 CarInc, FmInc 24 - 31 byte -2,-8 ;4 CarInc, FmInc 32 - 39 byte -1,-5 ;5 CarInc, FmInc 40 - 47 byte -18,-3 ;6 CarInc, FmInc 48 - 55 byte -55,-1 ;7 CarInc, FmInc 56 - 63 * PatchMT6i: Metallic tone 6i, hard metallic sound 1 byte LOADTIMBRE byte X1 ;Carrier Fc = 2Fo byte X3 ;Modulator Fm = Fo byte 28*4 ;Modulation Index Scaler byte 127,120 ;CarAmp, FmAmp Initial Values byte -24,7 ;0 CarInc, FmInc 0-7 byte -12,-20 ;1 CarInc, FmInc 8 - 15 byte -6,-10 ;2 CarInc, FmInc 16 - 23 byte -3,-5 ;3 CarInc, FmInc 24 - 31 byte -2,-3 ;4 CarInc, FmInc 32 - 39 byte -1,-1 ;5 CarInc, FmInc 40 - 47 byte -12,-6 ;6 CarInc, FmInc 48 - 55 byte -67,-12 ;7 CarInc, FmInc 56 - 63 * PatchMT6j: Metallic tone 6j, hard metallic sound 2 byte LOADTIMBRE byte X3 ;Carrier Fc = 2Fo byte X1 ;Modulator Fm = Fo byte 20*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -24,-20 ;0 CarInc, FmInc 0-7 byte -18,-15 ;1 CarInc, FmInc 8 - 15 byte -6,-12 ;2 CarInc, FmInc 16 - 23 byte -3,-10 ;3 CarInc, FmInc 24 - 31 byte -2,-8 ;4 CarInc, FmInc 32 - 39 byte -1,-5 ;5 CarInc, FmInc 40 - 47 byte -18,-3 ;6 CarInc, FmInc 48 - 55 byte -55,-1 ;7 CarInc, FmInc 56 - 63 * PatchMT6k: Metallic tone 6k, hard metallic sound 3 byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X3 ;Modulator Fm = 3Fo byte 28*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -16,-16 ;0 CarInc, FmInc 0-7 byte -10,-16 ;1 CarInc, FmInc 8 - 15 byte -6,-6 ;2 CarInc, FmInc 16 - 23 byte -4,-4 ;3 CarInc, FmInc 24 - 31 byte -2,-2 ;4 CarInc, FmInc 32 - 39 byte -1,-1 ;5 CarInc, FmInc 40 - 47 Listing of FM2INTR1.inc E-11 Listing of FM2INTR1.inc * * * * byte -10,-5 byte -78,-16 PatchMT6l: Metallic tone byte LOADTIMBRE byte X1 byte X2 byte 28*4 byte 127,127 byte -16,-16 byte -10,-16 byte -6,-6 byte -4,-4 byte -2,-2 byte -1,-1 byte -10,-5 byte -78,-16 PatchMT6m: Metallic tone byte LOADTIMBRE byte X1 byte X2 byte 32*4 byte 127,120 byte -24,7 byte -12,-20 byte -6,-10 byte -3,-5 byte -2,-3 byte -1,-1 byte -12,-6 byte -67,-12 PatchMT6n: Metallic tone byte LOADTIMBRE byte X1 byte X05 byte 36*4 byte 127,1 byte -22,32 byte -14,32 byte -13,31 byte -11,31 byte -9,-32 byte -10,-32 byte -7,-32 byte -41,-31 PatchMT6o: Metallic tone byte LOADTIMBRE byte X1 byte X2 ;6 CarInc, FmInc ;7 CarInc, FmInc 6l, plucked string 1 48 - 56 - 55 63 ;Carrier Fc = 2Fo ;Modulator Fm = Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 6m, plucked string 2 ;Carrier Fc = 2Fo ;Modulator Fm = Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 6n ;Carrier Fc = Fo ;Modulator Fm = 0.5Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 6o, plucked string 3 ;Carrier Fc = 2Fo ;Modulator Fm = Fo E-12 Listing of FM2INTR1.inc byte 28*4 ;Modulation Index Scaler byte 127,127 ;CarAmp, FmAmp Initial Values byte -24,-20 ;0 CarInc, FmInc 0-7 byte -18,-15 ;1 CarInc, FmInc 8 - 15 byte -6,-12 ;2 CarInc, FmInc 16 - 23 byte -3,-10 ;3 CarInc, FmInc 24 - 31 byte -2,-8 ;4 CarInc, FmInc 32 - 39 byte -1,-5 ;5 CarInc, FmInc 40 - 47 byte -18,-3 ;6 CarInc, FmInc 48 - 55 byte -55,-1 ;7 CarInc, FmInc 56 - 63 * PatchMT6p: Metallic tone 6p, plucked string 4 byte LOADTIMBRE byte X1 ;Carrier Fc = 2Fo byte X2 ;Modulator Fm = Fo byte 28*4 ;Modulation Index Scaler byte 127,64 ;CarAmp, FmAmp Initial Values byte -20,63 ;0 CarInc, FmInc 0-7 byte -12,-15 ;1 CarInc, FmInc 8 - 15 byte -6,-12 ;2 CarInc, FmInc 16 - 23 byte -3,-10 ;3 CarInc, FmInc 24 - 31 byte -2,-8 ;4 CarInc, FmInc 32 - 39 byte -1,-5 ;5 CarInc, FmInc 40 - 47 byte -18,-3 ;6 CarInc, FmInc 48 - 55 byte -65,-1 ;7 CarInc, FmInc 56 - 63 * PatchCHM1: Chimes tone 1 byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X1414 ;Modulator Fm = 1.414Fo byte 24*4 ;Modulation Index Scaler byte 127,120 ;CarAmp, FmAmp Initial Values byte -28,-13 ;0 CarInc, FmInc 0-7 byte -20,-11 ;1 CarInc, FmInc 8 - 15 byte -11,-10 ;2 CarInc, FmInc 16 - 23 byte -8,-9 ;3 CarInc, FmInc 24 - 31 byte -6,-8 ;4 CarInc, FmInc 32 - 39 byte -7,-5 ;5 CarInc, FmInc 40 - 47 byte -6,-3 ;6 CarInc, FmInc 48 - 55 byte -41,-1 ;7 CarInc, FmInc 56 - 63 * PatchCHM2: Chimes tone 2 byte LOADTIMBRE byte X1 ;Carrier Fc = Fo byte X1414 ;Modulator Fm = 1.414Fo byte 24*4 ;Modulation Index Scaler byte 127,120 ;CarAmp, FmAmp Initial Values byte -22,-20 ;0 CarInc, FmInc 0-7 byte -20,-22 ;1 CarInc, FmInc 8 - 15 byte -18,-15 ;2 CarInc, FmInc 16 - 23 byte -14,-11 ;3 CarInc, FmInc 24 - 31 Listing of FM2INTR1.inc E-13 Listing of FM2INTR1.inc byte -9,-8 byte -7,-6 byte -8,-5 byte -28,-3 * PatchCHM3: Chimes tone 3 byte LOADTIMBRE byte X1 byte X1414 byte 24*4 byte 127,0 byte -20,42 byte -12,42 byte -6,42 byte -3,-25 byte -2,-23 byte -1,-21 byte -18,-19 byte -65,-17 * PatchPNO1: Piano tone 1 byte LOADTIMBRE byte X1 byte X1 byte 38*4 byte 126,108 byte -13,006 byte -25,013 byte -13,-19 byte -25,-19 byte 000,-06 byte 000,-25 byte -38,-32 byte -10,-23 * PatchPNO2: Piano tone 2 byte LOADTIMBRE byte X1 byte X1 byte 32*4 byte byte byte byte byte byte byte byte byte E-14 ;4 ;5 ;6 ;7 CarInc, CarInc, CarInc, CarInc, FmInc FmInc FmInc FmInc 32 40 48 56 - - - - 39 47 55 63 ;Carrier Fc = Fo ;Modulator Fm = 1.414Fo ;Modulation Index Scaler ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 ;Carrier Fc = 1*Fo ;Modulator Fm = 1*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 127,127 -13,-20 -25,-41 -25,-28 000,000 000,000 -19,000 -19,000 -23,-36 ;Carrier Fc = 1*Fo ;Modulator Fm = 1*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 Listing of FM2INTR1.inc * PatchEP_1: Electric Piano tone 1 byte LOADTIMBRE byte X2 ;Carrier Fc = 1*Fo byte X10 ;Modulator Fm = 10*Fo byte 30*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 127,127 ;CarAmp, FmAmp Initial Values byte -13,-20 ;0 CarInc, FmInc 0-7 byte -25,-41 ;1 CarInc, FmInc 8 - 15 byte -25,-28 ;2 CarInc, FmInc 16 - 23 byte 000,000 ;3 CarInc, FmInc 24 - 31 byte 000,000 ;4 CarInc, FmInc 32 - 39 byte -19,000 ;5 CarInc, FmInc 40 - 47 byte -19,000 ;6 CarInc, FmInc 48 - 55 byte -23,-36 ;7 CarInc, FmInc 56 - 63 * PatchEP_2: Electric Piano tone 2 (more aggressive) byte LOADTIMBRE byte X2 ;Carrier Fc = 1*Fo byte X10 ;Modulator Fm = 10*Fo byte 42*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 127,127 ;CarAmp, FmAmp Initial Values byte -13,-13 ;0 CarInc, FmInc 0-7 byte -25,-06 ;1 CarInc, FmInc 8 - 15 byte -25,-06 ;2 CarInc, FmInc 16 - 23 byte 000,-13 ;3 CarInc, FmInc 24 - 31 byte 000,-25 ;4 CarInc, FmInc 32 - 39 byte -19,-38 ;5 CarInc, FmInc 40 - 47 byte -19,-19 ;6 CarInc, FmInc 48 - 55 byte -23,-04 ;7 CarInc, FmInc 56 - 63 * PatchBNJ1: Banjo 1 byte LOADTIMBRE byte X3 ;Carrier Fc = 3*Fo byte X1 ;Modulator Fm = 1*Fo byte 62*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 127,127 ;CarAmp, FmAmp Initial Values byte -25,-01 ;0 CarInc, FmInc 0-7 byte -25,-01 ;1 CarInc, FmInc 8 - 15 byte -25,-01 ;2 CarInc, FmInc 16 - 23 byte -25,-01 ;3 CarInc, FmInc 24 - 31 byte -25,-01 ;4 CarInc, FmInc 32 - 39 byte 000,-01 ;5 CarInc, FmInc 40 - 47 byte 000,-01 ;6 CarInc, FmInc 48 - 55 byte 000,-04 ;7 CarInc, FmInc 56 - 63 * PatchGTR1: Guitar 1 byte LOADTIMBRE byte X1 ;Carrier Fc = 1*Fo Listing of FM2INTR1.inc E-15 Listing of FM2INTR1.inc byte X5 byte 30*4 byte 126,108 byte -13,006 byte -25,013 byte -13,-19 byte -25,-19 byte 000,-06 byte 000,-25 byte -38,-32 byte -10,-23 * PatchHRP1: Harp 1 byte LOADTIMBRE byte X1 byte X2 byte 20*4 ;Modulator Fm = 5*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) ;CarAmp, FmAmp Initial Values ;0 CarInc, FmInc 0 - 7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 ;Carrier Fc = 1*Fo ;Modulator Fm = 2*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 127,089 CarAmp, FmAmp Initial Values byte -38,038 ;0 CarInc, FmInc 0-7 byte -13,-25 ;1 CarInc, FmInc 8 - 15 byte 000,-25 ;2 CarInc, FmInc 16 - 23 byte 000,-25 ;3 CarInc, FmInc 24 - 31 byte 000,-25 ;4 CarInc, FmInc 32 - 39 byte 000,-25 ;5 CarInc, FmInc 40 - 47 byte -13,000 ;6 CarInc, FmInc 48 - 55 byte -57,000 ;7 CarInc, FmInc 56 - 63 * PatchEGT1: Electric Guitar 1 byte LOADTIMBRE byte X1 ;Carrier Fc = 1*Fo byte X0_5 ;Modulator Fm = 0.5*Fo byte 50*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 102,127 CarAmp, FmInc Initial Values byte 013,-06 ;0 CarInc, FmInc 0-7 byte 000,-06 ;1 CarInc, FmInc 8 - 15 byte 000,-06 ;2 CarInc, FmInc 16 - 23 byte -13,-06 ;3 CarInc, FmInc 24 - 31 byte -13,000 ;4 CarInc, FmInc 32 - 39 byte 000,000 ;5 CarInc, FmInc 40 - 47 byte 000,000 ;6 CarInc, FmInc 48 - 55 byte -89,000 ;7 CarInc, FmInc 56 - 63 * PatchXYL1: Xylophone byte LOADTIMBRE byte X4 ;Carrier Fc = 4*Fo byte X8 ;Modulator Fm = 8*Fo byte 30*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) E-16 Listing of FM2INTR1.inc byte 127,127 byte -25,-25 byte -25,-25 byte -25,-13 byte -25,-13 byte -13,-25 byte -06,-25 byte -06,000 byte 000,000 * PatchVIB1: Vibraphone byte LOADTIMBRE byte X1 byte X5 byte 20*4 ;0 ;1 ;2 ;3 ;4 ;5 ;6 ;7 CarAmp, CarInc, CarInc, CarInc, CarInc, CarInc, CarInc, CarInc, CarInc, FmInc FmInc FmInc FmInc FmInc FmInc FmInc FmInc FmInc Initial Values 0-7 8 - 15 16 - 23 24 - 31 32 - 39 40 - 47 48 - 55 56 - 63 ;Carrier Fc = 1*Fo ;Modulator Fm = 5*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 127,069 CarAmp, FmInc Initial Values byte 000,-13 ;0 CarInc, FmInc 0-7 byte 000,-13 ;1 CarInc, FmInc 8 - 15 byte -13,-13 ;2 CarInc, FmInc 16 - 23 byte -25,-13 ;3 CarInc, FmInc 24 - 31 byte -25,-01 ;4 CarInc, FmInc 32 - 39 byte -25,-03 ;5 CarInc, FmInc 40 - 47 byte -13,-01 ;6 CarInc, FmInc 48 - 55 byte -25,-10 ;7 CarInc, FmInc 56 - 63 * PatchFLT1: Flute Tone 1 byte LOADTIMBRE byte X2 ;Carrier Fc = 2*Fo byte X2 ;Modulator Fm = 2*Fo byte 32*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 013,013 CarAmp, FmInc Initial Values byte 089,047 ;0 CarInc, FmInc 0-7 byte 025,038 ;1 CarInc, FmInc 8 - 15 byte 000,000 ;2 CarInc, FmInc 16 - 23 byte 000,000 ;3 CarInc, FmInc 24 - 31 byte 000,000 ;4 CarInc, FmInc 32 - 39 byte -25,-38 ;5 CarInc, FmInc 40 - 47 byte -76,-38 ;6 CarInc, FmInc 48 - 55 byte -25,-22 ;7 CarInc, FmInc 56 - 63 * PatchCLR1: Clarinet Tone 1 byte LOADTIMBRE byte X1 ;Carrier Fc = 1*Fo byte X2 ;Modulator Fm = 2*Fo byte 42*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 013,013 CarAmp, FmInc Initial Values byte 089,083 ;0 CarInc, FmInc 0-7 byte 025,-04 ;1 CarInc, FmInc 8 - 15 Listing of FM2INTR1.inc E-17 Listing of FM2INTR1.inc byte -13,-04 byte -13,-04 byte -13,-04 byte 000,-25 byte 000,-25 byte -89,-29 * PatchOBO1: Oboe 1 byte LOADTIMBRE byte X3 byte X1 byte 20*4 ;2 ;3 ;4 ;5 ;6 ;7 CarInc, CarInc, CarInc, CarInc, CarInc, CarInc, FmInc FmInc FmInc FmInc FmInc FmInc 16 24 32 40 48 56 - - - - - - 23 31 39 47 55 63 ;Carrier Fc = 1*Fo ;Modulator Fm = 1*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 013,099 CarAmp, FmInc Initial Values byte 038,-14 ;0 CarInc, FmInc 0-7 byte 051,-14 ;1 CarInc, FmInc 8 - 15 byte 025,-14 ;2 CarInc, FmInc 16 - 23 byte -13,-14 ;3 CarInc, FmInc 24 - 31 byte -25,000 ;4 CarInc, FmInc 32 - 39 byte 000,000 ;5 CarInc, FmInc 40 - 47 byte 000,000 ;6 CarInc, FmInc 48 - 55 byte -89,-43 ;7 CarInc, FmInc 56 - 63 * PatchHRN1: French Horn 1 byte LOADTIMBRE byte X0_5 ;Carrier Fc = 0.5*Fo byte X0_5 ;Modulator Fm = 0.5*Fo byte 20*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 038,048 CarAmp, FmInc Initial Values byte 064,050 ;0 CarInc, FmInc 0-7 byte 025,-06 ;1 CarInc, FmInc 8 - 15 byte 000,-06 ;2 CarInc, FmInc 16 - 23 byte -25,-06 ;3 CarInc, FmInc 24 - 31 byte -25,-06 ;4 CarInc, FmInc 32 - 39 byte -25,-25 ;5 CarInc, FmInc 40 - 47 byte -25,-25 ;6 CarInc, FmInc 48 - 55 byte -25,-22 ;7 CarInc, FmInc 56 - 63 * PatchBSN1: Bassoon 1 byte LOADTIMBRE byte X2 ;Carrier Fc = 2*Fo byte X0_5 ;Modulator Fm = 0.5*Fo byte 10*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 038,076 CarAmp, FmInc Initial Values byte 064,051 ;0 CarInc, FmInc 0-7 byte 025,-06 ;1 CarInc, FmInc 8 - 15 byte 000,-06 ;2 CarInc, FmInc 16 - 23 byte 000,-06 ;3 CarInc, FmInc 24 - 31 byte 000,000 ;4 CarInc, FmInc 32 - 39 E-18 Listing of FM2INTR1.inc byte 000,000 byte -64,000 byte -64,-108 * PatchTBA1: Tuba 1 byte LOADTIMBRE byte X0_5 byte X0_5 byte 18*4 ;5 ;6 ;7 CarInc, FmInc CarInc, FmInc CarInc, FmInc 40 - 48 - 56 - 47 55 63 byte 089,064 byte 038,064 byte -03,-25 byte -03,-25 byte -03,-25 byte -03,-25 byte -03,-25 byte -57,000 byte -57,000 * PatchTRB1: Trombone 1 byte LOADTIMBRE byte X0_5 ;Carrier Fc = 0.5*Fo byte X0_5 ;Modulator Fm = 0.5*Fo byte 28*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 064,051 CarAmp, FmInc Initial Values byte 064,051 ;0 CarInc, FmInc 0-7 byte 000,-03 ;1 CarInc, FmInc 8 - 15 byte -13,-03 ;2 CarInc, FmInc 16 - 23 byte -13,-03 ;3 CarInc, FmInc 24 - 31 byte -13,-05 ;4 CarInc, FmInc 32 - 39 byte 000,-29 ;5 CarInc, FmInc 40 - 47 byte 000,-29 ;6 CarInc, FmInc 48 - 55 byte -89,-30 ;7 CarInc, FmInc 56 - 63 * PatchTPT1: Trumpet 1 byte LOADTIMBRE byte X1 ;Carrier Fc = 1*Fo byte X1 ;Modulator Fm = 1*Fo byte 28*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 064,051 CarAmp, FmInc Initial Values byte 064,051 ;0 CarInc, FmInc 0-7 byte 000,-06 ;1 CarInc, FmInc 8 - 15 byte -13,-06 ;2 CarInc, FmInc 16 - 23 byte -13,-06 ;3 CarInc, FmInc 24 - 31 byte -13,-06 ;4 CarInc, FmInc 32 - 39 byte 000,000 ;5 CarInc, FmInc 40 - 47 byte 000,000 ;6 CarInc, FmInc 48 - 55 byte -89,-76 ;7 CarInc, FmInc 56 - 63 Listing of FM2INTR1.inc E-19 ;Carrier Fc = 0.5*Fo ;Modulator Fm = 0.5*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) CarAmp, FmInc Initial Values ;0 CarInc, FmInc 0-7 ;1 CarInc, FmInc 8 - 15 ;2 CarInc, FmInc 16 - 23 ;3 CarInc, FmInc 24 - 31 ;4 CarInc, FmInc 32 - 39 ;5 CarInc, FmInc 40 - 47 ;6 CarInc, FmInc 48 - 55 ;7 CarInc, FmInc 56 - 63 Listing of FM2INTR1.inc * PatchVLN1: Violin 1 byte LOADTIMBRE byte X2 byte X1 byte 40*4 ;Carrier Fc = 2*Fo ;Modulator Fm = 1*Fo ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 013,114 CarAmp, FmInc Initial Values byte 038,000 ;0 CarInc, FmInc 0-7 byte 038,000 ;1 CarInc, FmInc 8 - 15 byte 038,000 ;2 CarInc, FmInc 16 - 23 byte 000,000 ;3 CarInc, FmInc 24 - 31 byte 000,000 ;4 CarInc, FmInc 32 - 39 byte 000,000 ;5 CarInc, FmInc 40 - 47 byte 000,000 ;6 CarInc, FmInc 48 - 55 byte -127,-114 ;7 CarInc, FmInc 56 - 63 * PatchEBS1: Electric Bass 1 byte LOADTIMBRE byte X0_5 ;Carrier Fc = 0.5*Fo byte X0_5 ;Modulator Fm = 0.5*Fo byte 28*4 ;MIX Scaler (higher#=more timbre chg. per progressive Velocity & MIXn ) byte 127,114 CarAmp, FmInc Initial Values byte -13,013 ;0 CarInc, FmInc 0-7 byte -13,-13 ;1 CarInc, FmInc 8 - 15 byte -13,-13 ;2 CarInc, FmInc 16 - 23 byte -13,-13 ;3 CarInc, FmInc 24 - 31 byte -13,000 ;4 CarInc, FmInc 32 - 39 byte 000,000 ;5 CarInc, FmInc 40 - 47 byte 000,000 ;6 CarInc, FmInc 48 - 55 byte -64,-89 ;7 CarInc, FmInc 56 - 63 E-20 Appendix F Appendix A MSP53C391 and MSP53C392 Data Sheet Topic F.1 Page MSP53C391, MSP53C392 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . F-2 F-1 MSP53C31 and MSP53C32 Data Sheet F.1 MSP53C31 and MSP53C32 Data Sheet F-2 MSP53C391, MSP53C392 SLAVE SPEECH SYNTHESIZERS SPSS024 - NOVEMBER 1999 D Slave Speech Synthesizers, LPC, MELP, D D D D D D D CELP Two Channel FM Synthesis, PCM 8-Bit Microprocessor With 61 instructions 3.3V to 6.5V CMOS Technology for Low Power Dissipation Direct Speaker Drive Capability Internal Clock Generator That Requires No External Components Two Software-Selectable Clock Speeds 10-kHz or 8-kHz Speech Sample Rate MSP53C391 N PACKAGE (TOP VIEW) DATA2/EOS DATA1 DATA0 OUT2 OUT1 EOS R/W OSC IN 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 DATA3/BUSY STROB IRQ DAC+ DAC- VDD VSS INIT description The MSP53C391 and MSP53C392 are catalog MSP50C3x codes which implements the functionality of a slave speech synthesizer. They communicate with a master microprocessor using two control lines (R/W and STROBE) and either a 4-bit data bus (MSP53C391) or an 8-bit data bus (MSP53C392). Either the MSP53C391 or the MSP53C392 can synthesize speech using several different compression algorithms; LPC, MELP, or CELP. They also can synthesize two-channel music using FM synthesis. See the MSP50C3x User's Guide (literature number: SLOU006B) for more information about the MSP50C3x family. Table 1. MSP53C39x Family DEVICE MSP53C391 MSP53C392 4-bit data bus 8-bit data bus FEATURES MSP53C392 N PACKAGE (TOP VIEW) DATA6/EOS DATA5 DATA4 DATA3 DATA2 DATA1 R/W OSC IN 1 2 3 4 5 6 7 8 16 15 14 13 12 11 10 9 DATA7/BUSY STROB DATA0 DAC+ DAC- VDD VSS INIT Please be aware that an important notice concerning availability, standard warranty, and use in critical applications of Texas Instruments semiconductor products and disclaimers thereto appears at the end of this data sheet. PRODUCTION DATA information is current as of publication date. Products conform to specifications per the terms of Texas Instruments standard warranty. Production processing does not necessarily include testing of all parameters. Copyright (c) 1999, Texas Instruments Incorporated POST OFFICE BOX 655303 * DALLAS, TEXAS 75265 F-3 MSP53C391, MSP53C392 SLAVE SPEECH SYNTHESIZERS SPSS024 - NOVEMBER 1999 absolute maximum ratings over operating free-air temperature range Supply voltage range, VDD (see Note 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . -0.3 V to 8 V Supply current, IDD or ISS (see Note 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 mA Input voltage range, VI (see Note 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 0.3 V to VDD + 0.3 V Output voltage range, VO (see Note 1) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 0.3 V to VDD + 0.3 V Storage temperature range . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - 30C to 125C Stresses beyond those listed under "absolute maximum ratings" may cause permanent damage to the device. These are stress ratings only, and functional operation of the device at these or any other conditions beyond those indicated under "recommended operating conditions" is not implied. Exposure to absolute-maximum-rated conditions for extended periods may affect device reliability. NOTES: 1. All voltages are with respect to ground. 2. The total supply current includes the current out of all the I/O terminals and DAC terminals as well as the operating current of the device. recommended operating conditions MAX VDD VIH Supply voltage High-level input voltage VDD = 3.3 V VDD = 5 V VDD = 6 V VDD = 3.3 V VIL TA Rspeaker Low-level input voltage Operating free-air temperature Minimum speaker impedance VDD = 5 V VDD = 6 V Device functionality Direct speaker drive using 2 pin push-pull DAC option 3.3 2.5 3.8 4.5 0 0 0 0 32 MAX 6.5 3.3 5 6 0.65 1 1.3 70 C V V UNIT V Unless otherwise noted, all voltages are with respect to VSS. F-4 POST OFFICE BOX 655303 * DALLAS, TEXAS 75265 MSP53C391, MSP53C392 SLAVE SPEECH SYNTHESIZERS SPSS024 - NOVEMBER 1999 electrical characteristics over recommended ranges of supply voltage and operating free-air temperature (unless otherwise noted) PARAMETER VT T+ VT T- Vh hys IIkg Istandby IDD Positive going threshold voltage (INIT) Positive-going Negative-going Negative going threshold voltage (INIT) Hysteresis ( VT - VT- ) (INIT) T+ T Input leakage current (except for OSC IN) Standby current (INIT low, SETOFF) Supply current VDD = 3.3 V, VDD = 5 V, VDD = 6 V, VDD = 3.3 V, High-level output current g (DATA0 - DATA7, OUT1, OUT2) VDD = 5 V, VDD = 6 V, VDD = 3.3 V, VDD = 5 V, VDD = 6 V, VDD = 3.3 V, Low-level output current (DATA0 - DATA7, OUT1, OUT2) VDD = 5 V, VDD = 6 V, VDD = 3.3 V, VDD = 5 V, VDD = 6 V, VDD = 3.3 V, VDD = 5 V, VDD = 6 V, VDD = 3.3 V, VDD = 5 V, VDD = 6 V, VDD = 3.3 V, VDD = 5 V, VDD = 6 V, VDD = 3.3 V, VDD = 5 V, VDD = 6 V, VDD = 5 V, VOH = 2.75 V VOH = 4.5 V VOH = 5.5 V VOH = 2.75 V VOH = 4.5 V VOH = 5.5 V VOH = 2.2 V VOH = 3.33 V VOH = 4 V VOL = 0.5 V VOL = 0.5 V VOL = 0.5 V VOL = 1.1 V VOL = 1.67 V VOL = 2 V VOH = 2.75 V VOH = 4.5 V VOH = 5.5 V VOH = 2.3 V VOH = 4 V VOH = 5 V VOL = 0.5 V VOL = 0.5 V VOL = 0.5 V VOL = 1 V VOL = 1 V VOL = 1 V TA = 25C, -4 -5 -6 -8 -14 - 20 5 5 5 10 20 25 - 30 -35 -40 - 50 -90 - 100 50 70 80 100 140 150 14.89 14 89 18.62 18 62 15.36 15 36 19.2 19 2 15.86 15 86 19.7 19 7 MHz MHz 2.1 3.1 4.5 -12 -14 - 15 -20 - 40 - 51 9 9 9 19 29 35 -50 -60 - 65 -90 - 140 - 150 80 90 110 140 mA mA mA mA mA mA mA mA mA TEST CONDITIONS VDD = 3.5 V VDD = 6 V VDD = 3.5 V VDD = 6 V VDD = 3.5 V VDD = 6 V MIN TYP 2 3.4 1.6 2.3 0.4 1.1 2 10 MAX UNIT V V V A A IOH IOL IOH High-level High level output current (DAC) IOL Low level output current (DAC) Low-level fosc(low) (l ) fosc(high) (hi h) Oscillator frequency freq enc Oscillator frequency freq enc Target frequency = 15.36 MHz VDD = 5 V, TA = 25C, Target frequency = 19.2 MHz Operating current assumes all inputs are tied to either VSS or VDD with no input currents due to programmed pullup resistors. The DAC output and other outputs are open circuited. The frequency of the internal clock has a temperature coefficient of approximately - 0.2 % / C and a VDD coefficient of approximately 1%/V. POST OFFICE BOX 655303 * DALLAS, TEXAS 75265 F-5 MSP53C391, MSP53C392 SLAVE SPEECH SYNTHESIZERS SPSS024 - NOVEMBER 1999 switching characteristics PARAMETER tr tf Rise time, DATA0 - DATA7, DAC Fall time, DATA0- DATA7, DAC VDD = 3.3 V, VDD = 3.3 V, TEST CONDITIONS CL = 100 pF, CL = 100 pF, 10% to 90% 10% to 90% MIN NOM 50 50 MAX UNIT ns ns timing requirements MIN Initialization tINIT INIT pulsed low while the MSP53C39x has power applied (see Figure 1) 1 5 20 100 20 30 100 50 50 s ms ns ns ns ns ns ns ns MAX UNIT tSETUP Delay between rising edge of INIT and device initialization complete Writing (Slave Mode) tsu1(R/W) tsu(d) th1(R/W) th(d) tw tr tf tsu2(R/W) th2(R/W) tdis tw tr tf td Setup time, R/W low before STROB goes low (see Figure 2) Setup time, data valid before STROB goes high (see Figure 2) Hold time, R/W low after STROB goes high (see Figure 2) Hold time, data valid after STROB goes high (see Figure 2) Pulse duration, STROB low (see Figure 2) Rise time, STROB (see Figure 2) Fall time, STROB (see Figure 2) Reading (Slave Mode) Setup time, R/W before STROB goes low (see Figure 3) Hold time, R/W after STROB goes high (see Figure 3) Output disable time, data valid after STROB goes high (see Figure 3) Pulse duration, STROB low (see Figure 3) Rise time, STROB (see Figure 3) Fall time, STROB (see Figure 3) Delay time for STROB low to data valid (see Figure 3) 20 20 0 100 50 50 50 30 ns ns ns ns ns ns ns PARAMETER MEASUREMENT INFORMATION INIT tINIT Figure 1. Initialization Timing Diagram F-6 POST OFFICE BOX 655303 * DALLAS, TEXAS 75265 MSP53C391, MSP53C392 SLAVE SPEECH SYNTHESIZERS SPSS024 - NOVEMBER 1999 PARAMETER MEASUREMENT INFORMATION R/W tsu1(R/W) tw STROB tf tr tsu(d) th(d) DATA Data Valid th1(R/W) Figure 2. Write Timing Diagram (Slave Mode) R/W tsu2(R/W) tw STROB tf td DATA Data Valid tr tdis th2(R/W) Figure 3. Read Timing Diagram (Slave Mode) POST OFFICE BOX 655303 * DALLAS, TEXAS 75265 F-7 MSP53C391, MSP53C392 SLAVE SPEECH SYNTHESIZERS SPSS024 - NOVEMBER 1999 MECHANICAL DATA N (R-PDIP-T**) 16 PIN SHOWN PINS ** DIM A 16 9 A MAX PLASTIC DUAL-IN-LINE PACKAGE 14 0.775 (19,69) 0.745 (18,92) 16 0.775 (19,69) 0.745 (18,92) 18 0.920 (23.37) 0.850 (21.59) 20 0.975 (24,77) 0.940 (23,88) A MIN 0.260 (6,60) 0.240 (6,10) 1 8 0.070 (1,78) MAX 0.035 (0,89) MAX 0.020 (0,51) MIN 0.310 (7,87) 0.290 (7,37) 0.200 (5,08) MAX Seating Plane 0.125 (3,18) MIN 0.100 (2,54) 0.021 (0,53) 0.015 (0,38) 0- 15 0.010 (0,25) NOM 0.010 (0,25) M 14/18 PIN ONLY 4040049/C 08/95 NOTES: A. All linear dimensions are in inches (millimeters). B. This drawing is subject to change without notice. C. Falls within JEDEC MS-001 (20 pin package is shorter then MS-001.) F-8 POST OFFICE BOX 655303 * DALLAS, TEXAS 75265 Index Index A adjust output volume, FM synthesis, B-5 algorithms CELP, 1-6 FM, 1-6 LPC, 1-6 MELP, 1-6 PCM, 1-6 assembler, FM synthesis, B-15 Cool Edit, A-3 D D/A information, 1-6 data preparation, A-3 FM synthesis, B-12 data sheet, F-2-F-8 data streams, 4-3 MSP53C391, 4-3 MSP53C392, 4-3 synthesis selection codes, 4-3 data structure, FM synthesis, B-9 detune, FM synthesis, B-5 C CELP data preparation, A-3 algorithm, 1-6 command codes, 4-5 MSP53C391, 4-5 MSP53C392, 4-5 command header, 4-2 MSP53C391, 4-2 MSP53C392, 4-2 command sequence, 4-2 MSP53C391, 4-2 MSP53C392, 4-2 command sequences, 4-4 command codes, 4-5 generate test signal, 4-7 MSP53C391, 4-4 MSP53C392, 4-4 pin expansion, 4-5 request software version, 4-6 sleep state, 4-6 volume control, 4-6 command summary, FM synthesis, B-7 commands, FM synthesis, B-2 comparison, MSP53C391 with MSP53C392, 1-3 E echo input data, 4-7 editing tools, A-2 end of song, FM synthesis, B-6 F features MSP53C391, 1-2 MSP53C392, 1-2 FM, data preparation, A-5 FM algorithm, 1-6 FM synthesis, B-2-B-18 adjust output volume, B-5 assembler, B-15 command summary, B-7 data preparation, B-12 data structure, B-9 detune, B-5 end of song, B-6 FM2MERGE software, B-14 format and commands, B-2 Index-1 Index FM synthesis load timbre command, B-4 MD2FM software, B-13 modulation index adjustment, B-6 musical notes, B-3 tempo control, B-3 tempo synchronization, B-4 transposition, B-5 FM2MERGE software, FM synthesis, B-14 FMequM2 program code, C-2-C-12 FM2INTR1 program code, E-2-E-20 format, FM synthesis, B-2 interrupt 2 MSP53C391, 2-8 L load timbre command, FM synthesis, B-4 low power sleep state, 4-6 LPC, data preparation, A-3 LPC algorithm, 1-6 M master microprocessor interface interrupt 1, 2-6-2-8 interrupt 1 timing, 2-11 interrupt 2, 2-8-2-10 interrupt 2 timing, 2-12 method 1 timing, 2-10, 3-7 method 2 timing, 2-11 method 3 timing, 2-12 methods, 2-4-2-11, 3-4-3-11 polling, 2-4, 3-4 polling timing, 2-10, 3-7 timing, 2-10-2-13, 3-7-3-10 MD2FM software, FM synthesis, B-13 MELP, data preparation, A-3 MELP algorithm, 1-6 method 1 master microprocessor timing, 2-10, 3-7 timing, 2-10, 3-7 method 2 master microprocessor timing, 2-11 timing, 2-11 method 3 master microprocessor timing, 2-12 timing, 2-12 microprocessor, timing, 2-10-2-13, 3-7-3-10 microprocessor interface interrupt 1, 2-6-2-8 interrupt 1 timing, 2-11 interrupt 2, 2-8-2-10 interrupt 2 timing, 2-12 method 1 timing, 2-10, 3-7 method 2 timing, 2-11 method 3 timing, 2-12 methods, 2-4-2-11, 3-4-3-11 polling, 2-4, 3-4 polling timing, 2-10, 3-7 G GoldWave, A-3 I initialization MSP53C391, 2-13 MSP53C392, 3-8 interface MSP53C391, 2-2 MSP53C392, 3-2 interface method 1 MSP53C391, 2-4 MSP53C392, 3-4 polling, 2-4, 3-4 interface method 2 interrupt 1, 2-6 MSP53C391, 2-6 interface method 3 interrupt 2, 2-8 MSP53C391, 2-8 interrupt 1 data transfer timing, 2-11 end-of-speech timing, 2-11 master microprocessor interface, 2-6-2-8 master microprocessor timing, 2-11 microprocessor interface, 2-6-2-8 MSP53C391, 2-6 interrupt 2 data transfer timing, 2-12 end-of-speech timing, 2-12 master microprocessor interface, 2-8-2-10 master microprocessor timing, 2-12 microprocessor interface, 2-8-2-10 Index-2 Index modulation index adjustment, FM synthesis, B-6 MSP50x3x mixed-signal processor, 1-2 MSP53C391 CELP data preparation, A-3 command codes, 4-5 command header, 4-2 command sequence, 4-2 command sequences, 4-4 comparison with MSP53C392, 1-3 D/A information, 1-6 data preparation, A-3 data sheet, F-2-F-8 data streams, 4-3 device initialization, 2-13 echo input data, 4-7 editing tools, A-2 features, 1-2 FM data preparation, A-5 FM synthesis, B-2-B-18 generate test signal, 4-7 interface, 2-2 interrupt 1, 2-6 interrupt 1 timing, 2-11 interrupt 2, 2-8 interrupt 2 timing, 2-12 LPC data preparation, A-3 MELP data preparation, A-3 method 1 timing, 2-10 method 2 timing, 2-11 method 3 timing, 2-12 PCM data preparation, A-4 pin assignments, 1-4 pin descriptions, 1-4 pin expansion, 4-5 polling, 2-4 polling timing, 2-10 request software version, 4-6 SDS3000, A-2 signal description, 2-3 sleep state, 4-6 software description, 4-2 synthesis selection codes, 4-3 timing, D-2-D-8 timing waveforms, D-3 volume control, 4-6 WINSDS, A-2 MSP53C392 CELP data preparation, A-3 command codes, 4-5 command header, 4-2 command sequence, 4-2 command sequences, 4-4 comparison with MSP53C391, 1-3 D/A information, 1-6 data preparation, A-3 data sheet, F-2-F-8 data streams, 4-3 device initialization, 3-8 editing tools, A-2 features, 1-2 FM data preparation, A-5 FM synthesis, B-2-B-18 generate test signal, 4-7 interface, 3-2 LPC data preparation, A-3 MELP data preparation, A-3 method 1 timing, 3-7 PCM data preparation, A-4 pin assignments, 1-5 pin descriptions, 1-5 polling, 3-4 polling timing, 3-7 request software version, 4-6 SDS3000, A-2 signal description, 3-3 sleep state, 4-6 software description, 4-2 synthesis selection codes, 4-3 timing, D-2-D-8 timing waveforms, D-5 volume control, 4-6 WINSDS, A-2 musical notes, FM synthesis, B-3 O option 1, two-pin push-pull, 1-6 P PCM, data preparation, A-4 PCM algorithm, 1-6 pin assignments MSP53C391, 1-4 MSP53C392, 1-5 pin descriptions MSP53C391, 1-4 MSP53C392, 1-5 Index-3 Index pin expansion, 4-5 MSP53C391, 4-5 polling data transfer timing, 2-10, 3-7 end-of-speech timing, 2-10, 3-7 master microprocessor interface, 2-4, 3-4 master microprocessor timing, 2-10, 3-7 microprocessor interface, 2-4, 3-4 MSP53C391, 2-4 MSP53C392, 3-4 program code, FMequM2, C-2-C-12 program code, FM2INTR1, E-2-E-20 pin expansion, 4-5 request version, 4-6 sleep state, 4-6 volume control, 4-6 software description MSP53C391, 4-2 MSP53C392, 4-2 synthesis selection codes, 4-3 T tempo control, FM synthesis, B-3 tempo synchronization, FM synthesis, B-4 test signal, 4-7 MSP53C391, 4-7 MSP53C392, 4-7 timing master microprocessor timing, 2-10-2-13, 3-7-3-10 method 1: polling, 2-10, 3-7 method 2: interrupt 1, 2-11 method 3: interrupt 2, 2-12 MSP53C391, D-2, D-3 MSP53C392, D-2, D-5 transposition, FM synthesis, B-5 two-pin push-pull option, 1-6 R request software version, 4-6 MSP53C391, 4-6 MSP53C392, 4-6 resampling, A-3 S SDS3000, A-2 signal description MSP53C391, 2-3 MSP53C392, 3-3 sleep state, 4-6 MSP53C391, 4-6 MSP53C392, 4-6 software command codes, 4-5 command header, 4-2 command sequence, 4-2 command sequences, 4-4 data streams, 4-3 generate test signal, 4-7 V volume control, 4-6 MSP53C391, 4-6 MSP53C392, 4-6 W WINSDS, A-2 Index-4 |
Price & Availability of SPSU016A
![]() |
|
|
All Rights Reserved © IC-ON-LINE 2003 - 2022 |
[Add Bookmark] [Contact Us] [Link exchange] [Privacy policy] |
Mirror Sites : [www.datasheet.hk]
[www.maxim4u.com] [www.ic-on-line.cn]
[www.ic-on-line.com] [www.ic-on-line.net]
[www.alldatasheet.com.cn]
[www.gdcy.com]
[www.gdcy.net] |