Opret et midi-kort

Der er ikke noget program til at oprette midi-kort, så du skal redigere en fil i hånden (med din foretrukne teksteditor).

Et midi-kort er en tekstfil som indeholder alle nødvendige oversættelser som laves når musikken spilles.

Den består af fire dele: PATCHMAP, KEYMAP, CHANNELMAP og OPTIONS.

Hver del må kun forekomme en gang, bortset fra KEYMAP-afsnittet som kan forekomme så mange gange som behøves, under forudsætning af at hver forekomst bruger et andet TekstID (fortsæt med at læse for flere detaljer).

Den generelle struktur for en kortfil er:

DEFINE PATCHMAP
...
END

DEFINE KEYMAP "Navn på tastekort"
...
END

DEFINE KEYMAP "Et andet tastekort"
...
END

DEFINE CHANNELMAP
...
END

OPTIONS
...
END

Du kan se at nøgleordet DEFINE bruges til at angive hvilket afsnit der bliver startet (bortset fra at OPTIONS), og END skrives ved slutningen af hvert afsnit.

Du kan angive kommentarer ved at indlede linjen med et #-tegn.

Vær rar at sende mig din kortfil med e-mail, så fremtidige udgaver af KMid indeholder understøttelse for flere keyboards som ikke understøtter General Midi.

PATCHMAP-afsnittet

Dette afsnit bruges til at angive hvordan patcher skal oversættes fra GM til specifikationen for dit keyboard. Den generelle brug er:

(Navn på GM-patch)=(N) [AllKeysTo M]

Hvor N er tallet som dit keyboard behøver at tage imod for at ændre patchen til det samme som GM-standarden bruger.

Bemærk at venstresiden af lighedstegnet ignoreres, så GM-patcher antages at være i rækkefølge (fra 0 til 127), og du må ikke ændre rækkefølgen på linjerne eller udelade nogen af de 128 instrumenter.

Det valgfrie AllKeysTo M bruges til at oversætte alle toner som bruger det instrumentet til tasten M. Antag for eksempel at dit midi-keyboard ikke har en pistolskudslyd (GM patch 127), så du vil oversætte det til en tromme (dvs. tast 60), som lyder noget lignende et pistolskud. For at gøre dette kan du skrive følgende på den 127. linje i PATCHMAP-afsnittet:

Pistolskud       =100 AllKeysTo 60

Så hvis en midi-fil forsøger at spille en tone med patch 127 (pistolskud), så oversættes den til patchen 100 (dit keyboards slagværkspatch) og spiller tonen 60 (uafhængig af tonen der skulle have været skulle spillet).

Bemærk at når jeg bruger udtrykket “Slagværkspatch”, mener jeg patchen hvor hver tast spiller en særlig tromme, cymbal, tom-tom, maracas og så videre, og ikke en mulig lyd som visse keyboard har som spiller en anden tone med samme tromme for hver tast.

KEYMAP-afsnittet

KEYMAP-afsnittet bruges til at angive hvordan taster oversættes, for en given kanal eller instrument. Det bruges sådan her:

DEFINE KEYMAP "Navn på tastekortet"
C 0 =0
C#0 =1
D 0 =2
...
END

Som for PATCHMAP-afsnittet, er linjernes rækkefølge meget vigtig, og at alle er der (128 taster).

Eftersom du kan angive flere tastekort for forskellige kanaler og instrumenter, skal du angive et entydigt navn for hver enkelt på den første linje.

Tastekort bruges hovedsageligt til at oversætte taster for slagværkskanalen. Kig i de medfølgende kort for at se nogle eksempler.

CHANNELMAP-afsnittet

Dette afsnit kan bruges til at oversætte nogle kanaler til andre. Hvis du for eksempel vil bytte om på første og anden kanal, kan du gøre dette enkelt i CHANNELMAP-afsnittet.

Det er dog mere nyttigt for et keyboard som skal have slagværkskanalen som en særlig kanal (GM-standarden bruger kanal 10, andre bruger kanal 16 eller 9).

Bemærk at midi-enheder bruger 16 kanaler, så CHANNELMAP-afsnittet har 16 linjer, fra 0 til 15, som denne her:

(N) = (M) [Keymap "Navn"] [ForcePatch x]

Hvor N er kanalen som oversættes til kanalen M. Hvis tilvalget Keymap angives, kommer tastekortet med navnet Navntil at bruges for denne kanal (dette tastekort skal angives tidligere i kortfilen!). Hvis tilvalget ForcePatch angives, kommer alle begivenheder som forsøger at ændre patchen som bruges for denne kanal, til at blive ignoreret, og patchen x bruges i stedet.

Tilvalget ForcePatch kan være nyttigt til for eksempel altid at bruge slagværkspatchen på slagværkskanalen.

OPTIONS-afsnittet

OPTIONS-afsnittet har en del generelle valgmuligheder som kan være meget nyttige:

OPTIONS
PitchBenderRatio = r
MapExpressionToVolumeEvents
END

Du kan angive begge valgmuligheder, kun en, eller ingen af dem.

Værdien PitchBenderRatio r, angiver forholdet som tonehøjdeforandringer bliver multipliceret med. Dvs. når en midi-fil forsøger at sende en midi-begivenhed med en tonehøjdeforandring som har værdien n, kommer den rigtige værdi som sendes til at være n*(r/4096) (værdien 4096 er der for ikke at behøve at angive decimalkommaer i kortfilen).

Dette bruges fordi GM-standarden siger at når et midi-keyboard modtager en tonehøjdeforandring med dataværdien 4096, skal det ændre tonen til næste højere tone, men visse midi-keyboard forsøger at ændre initialtonen til to eller flere toner højere (til og med en oktav højere!) når de modtager 4096. Dette kan let ordnes ved at forsøge med forskellige værdi, så i stedet for at sende 4096, så sender KMid en passende værdi.

Når tilvalget MapExpressionToVolumeEvents angives i kortfilen, og en midi-fil forsøger at sende en udtryksbegivenhed, sender KMid en lydstyrkebegivenhed, som forstås af flere keyboard som ikke følger GM, og som har en lignende effekt. Der er mange midi-filer som bruger udtryksbegivenheder til at dæmpe lyden i slutningen af en sang, så hvis du ønsker at musikken skal lyde mere og mere stille, kan du aktivere dette og se om det er hvad du behøver, eftersom din midi-synthesizer måske ignorerer udtryksbegivenhederne fordi den ikke forstår dem.