HARDWARE ManualSCSP User's Manual
BackForward
SCSP User's Manual / 4.2 Sound Source Register

■ When using the FM sound source method

The FM sound source method is a method that modulates the phase input of a certain waveform generator by adding the output of a different waveform generator. FM speech synthesis is realized by a waveform calculation unit called a slot.
Figure 4.12 shows a block diagram of the slot.

Figure 4.12 Slot block diagram

In order to output sound from the slot, write the waveform data for the slot to occur in the waveform RAM. Furthermore, set each of the waveform reading address, loop start address, loop end address, sounding pitch, sounding level, and EG, and start sounding with KEY_ON.
Overall, SCSP operates with 22.68 [μsec] as one big cycle.
PG (Phase Generator) manages the reading speed of waveform data, which is determined by the setting value of the sounding frequency. Unless the sounding frequency is changed, PG generates a constant value every 1Fs cycle (22.68 [μsec] = 1 / 44.1KHz), performs cumulative addition for each Fs cycle, and outputs it. As shown in Fig. 4.13, this is added to various addresses with an address pointer, the value obtained as a result is output to the address bus as a waveform address, and the waveform data corresponding to the waveform address is read from RAM.

Figure 4.13 Waveform address generation calculation unit

Figure 4.14 Waveform address generation / waveform data reading

When the oscillation frequency is constant (when the internal generation of PG is constant in all Fs cycles), the output of the address pointer becomes a straight line as shown in Fig. 4.14, and it can be read without changing the waveform on the waveform RAM. ..
Although the address pointer is apparently a straight line, it actually calculates every 1Fs cycle, so it draws a stepped trajectory as shown in Fig. 4.15. This step is the internally generated value of the PG.

Figure 4.15 Enlarged view of address pointer output

When the frequency is increased, the generated value of PG increases, so the slope of the PG output and the output value (function) of the address pointer becomes steep.
On the contrary, when the frequency is lowered, the generated value of PG decreases, so the slope of the PG output value and the output value of the address pointer becomes gentle as shown in Fig. 4.16.

Figure 4.16 Frequency address pointer output value

When performing FM speech synthesis, a short-period waveform is used in a loop. Therefore, the output value (function) of the address pointer is as shown in Figure 4.17.

Figure 4.17 Address pointer output value when FM speech synthesis is executed (1)

Figure 4.17 Address pointer output value when FM speech synthesis is executed (1)

Set the start address to the address of a, set the value of the loop start address to "0000H", and set the waveform read address and the waveform loop start address to the same address. Furthermore, if the loop end address is set so that the address of b becomes the waveform loop end address, the waveform shown in Fig. 4.17 can be obtained.

Figure 4.18 Address pointer output value when FM speech synthesis is executed (2)

Figure 4.18 Address pointer output value when FM speech synthesis is executed (2)

When the output value of the address pointer is linearized as shown in Fig. 4.18 (waveform A), it is output according to the waveform of RAM (waveform 1). However, when it becomes a non-linear function (waveform of B), the way of reading the waveform changes and the waveform of 2 is output. When the waveform is deformed in this way, the timbre changes.
The FM speech synthesis method is an application that distorts the waveform by changing this phase value over time. The FM speech synthesis method uses a method of making the address pointer output value (phase value) non-linear, and actually adds the output values of other (or own) slots. Up to now, the explanation has been given using the normal mode as an example, but in addition, the reverse loop and alternative loop can be set by changing the "LPCTL" register. The loop data that can be specified by the "LPCTL" register is shown in Fig. 4.19, Fig. 4.20, and Fig. 4.21.

Figure 4.19 Normal loop

Figure 4.20 Reverse loop

Figure 4.21 Alternative loop

Since it is assumed that the data corresponding to "LSA" and "LEA" are the same for the normal loop and the reverse loop, copy the data of "LSA" to "LEA" to create the loop data. Be sure to set the alternative loop setting value so that "LSA" <"LEA" (operation cannot be guaranteed if "LSA"> "LEA" is set in all loops). You can also place duplicate data at the loop start point and loop endpoint to match the pitch for alternative loops with the pitch for other loop modes. When the loop mode of all waveforms is limited to the alternative loop, the data corresponding to "LSA" and "LEA" do not have to be the same value.

Figure 4.22 shows the actual FM speech synthesis method in a block diagram.

Figure 4.22 FM sound source configuration diagram

Each block of the FM sound source configuration diagram is explained below.

SOUND STACK
Stores the output of each slot. The output value (data in the sound stack) of the two slots can be input to the SCSP slot.

Average calculation unit
Each slot has two modulation inputs, X and Y. Addition is required to combine these two inputs into one. To prevent the addition result from overflowing, there is a method of multiplying the two inputs by 1/2 and then adding.
By adopting this method, SCSP converts two input data into one output data.
Assuming that the input data is XD and YD and the output data is ZD, it can be expressed by the following formula.

 Equation of the averaging unit ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ YD XD ┃
┃ │ │ ┃
┃ XD + YD ┌┴──────┴┐ ┃
┃ ZD = ───────── │ Average calculation unit │ ┃
┃ 2 └────┬───┘┃
┃ │ ┃
┃ ZD ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Since this is the same as the formula for calculating the average value, this calculation block is called the averaging calculation unit.

MDL [modulation level (change amount)]
It is used to adjust the degree of FM applied by external slot input.

Phase adder
Add (decrease) the phase value generated by PG and the phase value generated by MDL operation via the averaging calculation unit. In addition, the decision to execute addition or subtraction depends on the loop mode and loop state.

Level multiplication part
Multiply the waveform read from the waveform memory by the level coefficients generated by ALFO, TL (Total Level), and EG. Furthermore, the actual waveform output level is adjusted.

Waveform RAM
RAM for sound.

Waveform address pointer
This block adds or subtracts the SA (start address) value set in each slot and the waveform phase value output from the phase adder to generate the actual waveform memory address.

Waveform data buffer
This is a memory for temporarily storing the waveform read from the waveform memory.

PG (Phase Generator)
Manages the reading speed of the waveform of the pronunciation frequency. (Actually, the waveform is skipped.)

EG (Envelope Generator)
It is a block that creates a temporal change (envelope curve) of the value according to the setting of each rate and level. The value generated here is multiplied with the waveform data after being sent to the level calculation unit, so the output level of the waveform will change over time.


BackForward
HARDWARE ManualSCSP User's Manual
Copyright SEGA ENTERPRISES, LTD., 1997