Curso de Basic
FM-PAC / MSX-Music


  O FM-PAC ou MSX-Music, é um cartucho de som lançado no final do anos 1980 que melhorou sensivelmente a capacidade sonora do MSX. Agora, podemos contar com 9 canais de sons, com a opção de dedicar três canais para bateria. A grande melhoria está na capacidade de mudar o timbre do sinal, fazendo com que possamos ter diferentes instrumentos.

  Características técnicas:   Quando a bateria estiver desabilitada, temos os 9 canais de som disponíveis para a música. Entretanto, quando a bateria está habilitada, os três últimos canais são reservados para o uso da bateria.


  Instrumentos disponíveis

  A relação completa de nomes dos instrumentos e os seus respectivos códigos são apresentados a seguir [1].
00 - Piano I		32 - Piano III
01 - Piano II		33 - Eletric Piano II
02 - Violin 		34 - Santool II
03 - Flute 		35 - Brass
04 - Clarinet		36 - Flute II
05 - Oboe		37 - Clavicod II
06 - Trumpet		38 - Clavicod III
07 - Pipe organ		39 - Koto II
08 - Xylophone		40 - Pipe Organ II
09 - Organ		41 - PohdsPLA
10 - Guitar		42 - RohdsPLA
11 - Santool		43 - Orch L
12 - Eletric Piano	44 - Orch R
13 - Clavicod		45 - Synth Violin
14 - Harp Sicked	46 - Synth Organ
15 - Harp Sicked II	47 - Synth Brass
16 - Vibraphone		48 - Tube
17 - Koto		49 - Shamisen
18 - Taiko		50 - Magical
19 - Engine		51 - Huwawa
20 - UFO		52 - Wonder flute
21 - Synth Bell		53 - Hard Rock
22 - Chime		54 - Machine
23 - Synth Bass		55 - Machine V
24 - Synthesizer	56 - Comic
25 - Synth Percurssion	57 - SE Comic
26 - Synth Rythm	58 - SE Laser
27 - Harm Drum		59 - SE Noise
28 - Cow Bell		60 - SE Star
29 - Close Hi-Hat	61 - SE Star II
30 - Snare Drum		62 - Engine II
31 - Bass Drum		63 - Silence


  Comandos principais

  Nesta seção, vamos ver os principais comandos do Basic FM.


  CALL MUSIC

  Define o uso ou não da bateria e configura os canais de som a serem utilizados.

  Sintaxe:
CALL MUSIC (BAT, 0, C1, C2, ..., C9)
  Onde:   Nota: o valor passado para C1 ... C9 pode ser de 1 a 9 (ou 1 a 6, caso a bateria esteja ligada). O valor passado indica o número de vozes utilizadas no canal (junta n canais em 1). A soma total de vozes não pode ultrapassar 9 (ou 6).

  Exemplos:
' Sem bateria e habilita 3 primeiros canais
CALL MUSIC (0,0,1,1,1)

' Com bateria e habilita 6 canais para música
CALL MUSIC (1,0,1,1,1,1,1,1)

' Sem bateria e concatena o primeiro canal em
' 3 canais e o segundo em 2
' Canais 1,2,3 = 1 canal "A"
' Canais 4,5   = 1 canal "B"
CALL MUSIC (0,0,3,2)		'
  O PSG não é configurado. Ele é chamado diretamente pelo comando PLAY como sendo os últimos canais.


  CALL VOICE

  Configura os instrumentos musicais por canal.

  Sintaxe:
CALL VOICE (@IM1, @IM2, @IM3, ..., @IM9)
  Onde IMn é o instrumento musical com valor de 0 a 63.

  Exemplo:
' Define piano elétrico para o
' canal 1 e tuba para canal o 2
CALL VOICE (@12, @48)


  PLAY #n

  Toca uma seqüência musical definida para ele.

  Sintaxes:
Sem bateria:
PLAY #n, C1, C2, ..., C9, PSG1, PSG2, PSG3

Com bateria:
PLAY #n, C1, C2, ..., C6, BAT, PSG1, PSG2, PSG3
  Onde n se for 0, toca o PSG. Se for 2 ou 3, toca o FM + PSG.

  Exemplo de relação entre CALL MUSIC e PLAY #n.
' Habilita bateria e dois canais FM
CALL MUSIC (1,0,1,1)
PLAY #2, C1, C2, BAT

  Parâmetros para o PLAY #n [1]:
  Diferente do PSG, o FM toca uma nota com decaimento de som. Assim, em duas notas iguais percebemos o intervalo entre elas.
  Veja os exemplos a seguir.
' Distinguimos as duas notas Dó.
PLAY #2,"CC"

' As duas notas Dó paracem uma só.
PLAY "CC"
PLAY #,2"C&C" ' Faz a ligação entre os Dós

  Exemplo do comando PLAY #n.
10 CALL MUSIC (0,0,1,1)
20 CALL VOICE(@3, @23)
35 FOR I=1 TO 2
30 PLAY #2,"V15O4L8","V8O3L4"
40 PLAY #2,"CR8CR8CR8CD","DDDE"
50 PLAY #2,"R8ER8EER8ER8","EEEE"
60 PLAY #2,"ER8ER8ER8EF","AAAF#"
70 PLAY #2,"R8FR8FFR8FR8","F#F#F#F#"
80 NEXT I


  Bateria

  A bateria é composta de 5 instrumentos, designados por uma letra:   Os instrumentos devem obrigatoriamente vir acompanhados da duração. A duração é a mesma das notas musicais. Exemplo:
10 CALL MUSIC (1)
20 PLAY#2,"B2H4"
  O bumbo dura 1/2 e o hit-hat 1/4.

  Podemos tocar de dois até cinco instrumentos ao mesmo tempo. Para isso, devemos colocar a letras deles juntas, com o tempo de duração deles ao final. Exemplo:
10 CALL MUSIC (1)
20 PLAY#2,"CSM4"

  Parâmetros para a bateria [1]:
  Exemplo de ênfase no bumbo.
10 CALL MUSIC (1)
20 PLAY#2,"B!SM4"
  Obs: a ênfase faz com que o instrumento seja tocado em primeiro plano. Assim, o volume do primeiro plano deve ser mais alto do que o segundo, senão não haverá ênfase.

  Exemplos de sons do manual do MSX [1]:
10 CALL MUSIC(0,0,1,1,1)
20 PLAY#2,"V15O4@00C1G1F1","V15O4@00E1B1A1","V15O4@00G1>D1C1"
10 CALL MUSIC(1,0)
20 PLAY#2,"@A15V0B!H8H8S!H8B!H8B!H8H8S!H8C!H8"


  Comandos de ajustes

  Nesta seção veremos os comandos de ajustes do FM.


  CALL PITCH

  Ajuste fino da freqüência das notas em relação ao Lá central. Varia de 410 a 459. O valor default é 440.

  Exemplo:
CALL PITCH (435)


  CALL TRANSPOSE

  Faz a transposição da freqüência das notas. A cada múltiplo de 100, aumenta ou diminui 1/2 tom na música. Varia de -12799 a 12799. O valor default é 0.

  Exemplo:
10 CALL MUSIC
20 CALL VOICE(@10, @23)
30 PLAY #2,"V15O4L8","V8O3L8"
40 PLAY #2,"B>EF#E","B&B"
50 PLAY #2,"<A>DF#D",">D&D"
60 PLAY #2,"<G>DED","<G&G"
70 PLAY #2,"<G>DED","G&G"
  Este exemplo é o arpejo inicial da música "Sunday Bloody Sunday" do U2. O arpejo foi feito aqui em um "violão" com afinação padrão. Entretanto, essa música é tocada com o violão afinado 1/2 tom abaixo. Dessa forma, acrescente a seguinte linha para transpor a música 1/2 tom abaixo:
15 CALL TRANSPOSE(-100)


  CALL TEMPER

  Modifica a fração de divisão de freqüências da oitava. Varia de 0 a 21. O valor default é 0.

    Exemplo:
CALL TEMPER(20)


  Outros comandos


  CALL PLAY

  Verifica se os canais estão ativos.

  Sintaxe:
CALL PLAY (canal, variavel)
  Onde:   Exemplo:
CALL PLAY(1,FLAG) : PRINT FLAG


  CALL STOPM

  Pára a música imediatamente (stop music).

  Exemplo:
CALL STOPM


  CALL BGM

  Sincroniza o Z80 com os processadores de áudio.

  Exemplos:
CALL BGM(0) ' Comandos após PLAY devem esperar acabar a música
CALL BGM(1) ' Como o PSG, Z80 funciona sem esperar a música


  Efeitos


  Reverberação

  Podemos alterar a afinação dos instrumentos (pitch e transpose) por canal, em vez de todos ao mesmo tempo [1]. Veja a tabela a seguir [1].
Canal   Pitch  Transpose
  1     &HFA2C  &HFA2D
  2     &HFA3C  &HFA3D
  3     &HFA4C  &HFA4D
  4     &HFA5C  &HFA5D
  5     &HFA6C  &HFA6D
  6     &HFA7C  &HFA7D
  7     &HFA8C  &HFA8D
  8     &HFA9C  &HFA9D
  9     &HFAAC  &HFAAD
  Onde os valores são os endereços de memória do MSX a serem alterados pelo comando POKE.

  A reverberação consiste em adicionar um canal e alterar o timbre desse canal [1].

  Exemplo de guitarra sem reverberação [1]:
10 CALL MUSIC(0,0,1)
20 PLAY#2,"@12V15L4CDEFGAB"

  Exemplo de guitarra com reverberação [1]:
10 CALL MUSIC(0,0,2)
15 POKE &HFA3C,40 ' Modifica pitch canal 2
20 PLAY#2,"@12V15L4CDEFGAB"
  Nesse exemplo, há duas guitarras no mesmo canal, onde uma delas tem o pitch variado.


  Eco

  O efeito de eco pode ser conseguido através da repetição da mesma seqüência de notas em outro canal, com um pequeno atraso do segundo canal em relação ao primeiro [1].

  Veja o exemplo a seguir.
10 CALL MUSIC (0,0,1,1)
20 PLAY#2,"@01V15L4CDEFGAB","@01V15R4CDEFGAB"


  Extra

  O programa a seguir permite que sejam tocados os cinco instrumentos de bateria.
10 SCREEN 0,,0:COLOR 15,1,1:WIDTH 40:KEY OFF
20 CALL MUSIC (1)
30 PRINT"MSX como instrumento de percursao"
40 PRINT:PRINT"Pressione:"
50 PRINT"Z - Bumbo"
60 PRINT"X - Hit-hat"
70 PRINT"C - Chimbau"
80 PRINT"V - Caixa"
90 PRINT"B - Tom tom"
100 TC$="ZzXxCcVvBb"
110 A$=INPUT$(1)
120 A = INSTR(TC$,A$)
130 IF A=0 THEN 110
140 A=int((A-1)/2)
150 IF A=0 THEN PLAY#2,"V15B4"
160 IF A=1 THEN PLAY#2,"V15H4"
170 IF A=2 THEN PLAY#2,"V15C4"
180 IF A=3 THEN PLAY#2,"V15S4"
190 IF A=4 THEN PLAY#2,"V15M4"
200 GOTO 110


<< Anterior Basic Próxima >>


/MARMSX/CURSOS/Basic