28.09.2011, autor: dotaz: D.S., odpověď: Robert Krejčí, kategorie: MIDI poradna

Jak nastavit zvuk na klávesách pomocí MIDI povelů?

Jak nastavit zvuk na klávesách pomocí MIDI povelů?
Podrobně vysvětlená struktura MIDI povelu pro změnu zvuku a zvukové banky

Dotaz (D.S.):

Dobrý den,
našel jsem si Váš web, tak se pokouším Vás oslovit s problémem. Možná mi bude stačit jen napovědět či nasměrovat, pak si snad už poradím sám. Jde o to, že mám sekvencer Yamaha QY700 a klávesy Yamaha S03. Potřeboval bych v sekvenceru nastavit SysEx data pro přepnutí kláves na konkrétní zvuk. Potřeboval bych, aby se z jakéhokoliv nastavení zvuků přepnul např. do:

MODE: voice
Category: User
Zvuk: US004 (nějaké jméno zvuku)
 
Zkouším to takhle (HEX):
F0 43 10 4C (to by mělo být: F0-začátek zprávy, 43-nástroj Yamaha, 10-první nástroj, 4C-konkrétní označení nástroje, ale to nevím co tam přijde) tak jsem četl, že lze nastavit obecné nastavení, nemusí to být zrovna pro Yamaha, pak nevím, jak by měla hlavička zprávy vypadat.
Pak následuje
00 00 32 04 (00 00 je MSB, normální zvuky – 32 04 je LSB  a číslo banky). Tohle jsem vyčetl z manuálu na S03, ale jistý si vůbec nejsem. Ostatně stejně to nefunguje.
Samozřejmě zpráva končí F7.

Pokud mačkám klávesy na Yamaha QY700, S03 normálně hraje, takže MIDI přenos dat funguje.

Navíc nepotřebuji nastavit banku a zvuk z GM nebo XG, ale potřebuji nastavit zvuk, co je v Mode VOICE, zvuk se konkrétně jmenuje ST:AnaStrg2 US004. Tady se potřebuji pohybovat. Samozřejmě mě zajímá i přepnutí na standard GM/XG a volbu zvuku tady. Podotýkám, že jako první SysEx co odchází je XG On (F0 43 10 6C 00 00 7E 00 F7).

Poradíte prosím, jak to funguje principiálně, a samozřejmě potřebuji správnou SyxEx zprávu pro S03.


Odpověď (Robert Krejčí, Microdesignum):

Pokud jde jenom o přepnutí zvuku, zkusil bych nejprve zprávu Program Change - "PC" (0xC0 PRG), případně spolu s kontroléry Bank Select - "BS" (0xB0 0x00 MSB 0x20 LSB), které jí předcházejí. Změna zvuku se má nastavit v pořadí MSB, LSB, PC, tedy obecně:
0xB0 0x00 MSB 0x20 LSB  0xC0 PRG
Pro konkrétní zvuk prostě jenom dosadíte příslušné hodnoty, tj. pro zvuk 4 - AnaStrg2 dokumentace k tomuto konkrétnímu hudebnímu nástroji uvádí: MSB=63, LSB=8 (v desítkové soustavě):
0xB0 0x00 63 0x20 8  0xC0 4
nebo když se to všechno převede do hexadecimální soustavy:
0xB0 0x00 0x3F 0x20 0x08  0xC0 0x04
nebo chcete-li, bez výslovného označení hexadecimálního zápisu:
B0 00 3F 20 08 C0 04

Jednotlivé bajty zprávy znamenají:
0xB0 ... controller na kanálu 0

0x00 ... controller MSB
0x3F = 63 desítkově
 
0x20 ... controller LSB 
0x08 = 8 desítkově

0xC0 ... Program Change na kanálu 0
0x04 = 4 desítkově ... zvuk AnaStrg2

Povel 0xC0 znamená C0 hexdecimálně - tak se to často označuje. Ekvivalentní zápis je C0H - to někdy používá Yamaha. Toto číslo znamená hodnotu 192 v desítkové soustavě. Nejedná se o SysEx, ale o běžnou zprávu MIDI s významem Program Change. Tj. tento povel lze vyjádřit pomocí standardních zpráv (což je vždy jednodušší) a není nutné používat SysEx. 
Podle dokumentace k S03 si nejsem jistý, zda to vůbec lze udělat pomocí SysEx, ale vypadá to, že by bylo vhodnější použít formát podle odstavce 2.1.4 na straně 21, tedy Model ID by mělo být 0x6C. Resp. zběžným pohledem do specifikace jsem tuto možnost nenašel, ale je možné, že to tam někde je uvedeno.

 


Dotaz (D.S.):

Děkuji za vysvětlení i za snahu, nakonec jsem to rozchodil klasickým příkazem Program Change. Ono totiž číslo programu (zvuku) je ve skutečnosti o jedno menší než na displeji, takže  mě tohle potrápilo a navenek to vypadalo, jako by se nic nedělo. Teď všechno běží jak má. Čili zadám CC, v dalším se udám MSB a LSB a nakonec číslo zvuku -1.

 


Odpověď (Robert Krejčí, Microdesignum):

Ano, to je trochu problém v MIDI, že "technické" číslování je od 0 do 127 a "uživatelské" je od 1 do 128. Stejně tak čísla MIDI kanálů se v povelech označují od 0 do 15, ale na displeji se většinou zobrazují od 1 do 16.

 
{e_like}
 
 
Nahoru