Changes

SOUNDCHIP SFG-01 MBIOS

3,633 bytes added, 13:23, 27 June 2021
5.1.4 Manual play by MK
Fig. 2.3 1DB numbers
==2-2 Major parameters by which the FM sound generator IC creates sounds==
==5-1 Program Example==
 
The following sample program will demontrate the following instruments.
 
-manual performance by MY with IDB#0
 
-auto play of IDB#1
 
-auto rhythm of IDB#PO and IDB#P1
 
Program explanations will be made in the following sections.
With the example program, it is assumed that the VDP and PPI of the MSX system have already been Initialized by MSX-BASIC
 
===5.1.1 Program structure===
 
Lines between 35 and 50 show the framework of the sample program.
Here, the IRQ mode is set to mode-1. Stack area is defined, and SFG-01 is set to slot 3. As well as initializing the system, UISV and AST vectors are defined in the MIDB.
Note the clock-B vector, defined M line 46, routes the control to interrupt processing entry lines 195 and 196); then real time rhythm handler "auto:" (lines 224 to 244) is invoked. The idea of the program is to use clock-B for the auto-rhythm clock, handle the events there, and play them in the main loop of the program.
 
===5.1.2 Definition of instruments===
 
In the sample program, IDB#P0, IDB#P1 and IDB#0 are defined in the line numbers between 59 and 129. Between lines 141 and 144, the channels tithe FM sound generator IC are assigned to the above IDB's.
Assignment details are;
 
IDB#0 channels 0,2,3,4,5
IDB#1 channel 1
IDB#P0 channel 6
IDB#P1 channel 7
 
===5.1.3 Performance of IDB#1===
 
IDB#1 is supposed to play the performance data that is defined in the lines between 246 and 262.
With the auto-thythm clock synchronized to IDB#P0/1, the event data is loaded into queue (QU#1). This is done in the lines between 225 and 244. This routine "auto:" is of course driven by the interrupt, and the event requests in the queue are then played by the main loop between line 165 and 178. The playing is carried out by the lines from 166 arid 168.
 
===5.1.4 Manual play by MK===
 
MK is initialized in the lines between 136 and 139. Here, CHORD-MK is not used. Velocity is set to a default value of 80h. MK is linked up with QU#O.
 
With this setting, the lines 169 to 170 in the main loop issue the MK scanning request. If key actuation is detected, the events are sent into QU#O, which will be played by a P-call between lines 166 and 168.
 
In this example, since the MK scan is placed in the main loop, no MK trapping is used. The method of detecting MK events via MK trap (by defining AST vector in MIDB) would also be possible.
 
===5.1.5 Auto-rhythm performance===
 
Between lines 146 and 148, the queue for auto rhythm is selected. Here only QU#P is chosen.
 
Then between lines 149 and 151, the RHB (rhythm buffer) to be used is selected. This determines the rhythm pattern. Here, preset pattern .0 is
chosen.
Clock handling for the rhythm i3 done in clock-B handler 'auto,' between
lines 225 and 244.
Here, with lines 225 and 226, an auto-rhythm clock is issued in synchronization to the clock-B interrupt.
Actual start of the auto rhythm is specified in the lines between 152 and 155. In this case, the rhythm is will begin with the first note-on from MK.
 
Note that, as explained before, the IDB#1 performance is supposed to be synchronized to the auto rhythm. Therefore in "auto:" routine, line 227 checks if the rhythm has already started or not (before it loads the event into QU#1).
 
==5-2 Supplementary explanation for recording and playback programming==
==5-3 supplementary explanation for autorhythm generator==
==5-4 Supplementary information for CMT handling==
 
-Use the S-03 call to define the UVL.
 
-Use the S-21 call to load the UVL into memory (from the CMT).
-Use S-22 call to save the UVL to the CMT
-For the UVL load/save, the file name is fixed to ..V010E..
 
-Use the S-23 call to load the EVB into memory.
-U. the S-29 call to save the EVB to the CMT.
-The file name for the EVB can be specified via <M.FEVB> of the MIDS
==5-5 M-Monitor usage==
==5-3 Problems and Solutions==