Difference between revisions of "SID-del bővített MIDI"

From Enterprise Wiki
Jump to: navigation, search
(Created page with "A Midiplay az Enterprise Dave chipjének eredeti négyszögjel generálásával kapcsolatos képességeit használja ki igen jó hatásfokkal. Ennek továb...")
 
(A MIDI vezérlők használata)
 
(11 intermediate revisions by one other user not shown)
Line 1: Line 1:
A [[Enterprise_MIDI|Midiplay]] az Enterprise Dave chipjének eredeti négyszögjel generálásával kapcsolatos képességeit használja ki igen jó hatásfokkal. Ennek továbbfejlesztett változata még több hangzást tesz lehetővé, melynek alapja a SIDBASIC nevű, 2016-2017-ben írt Enterprise program, amely a Commodore 64 hangcsip emulációja által C64-es zenéket tud lejátszani, többnyire eredeti, C64-es hangzásban. Ez többek között azt jelenti, hogy a négyszögjel mellett más hullámformájú hangokat is meg tud szólaltatni. Képes továbbá a PWM effektus megvalósítására, azaz a négyszögjel kitöltési tényezőjét is lehet vele állítani.
+
A [[Enterprise_MIDI|Midiplay]] az Enterprise Dave chipjének eredeti négyszögjel generálásával kapcsolatos képességeit használja ki, igen jó hatásfokkal. Ennek továbbfejlesztett változata még több hangzást tesz lehetővé, melynek alapja a SIDBASIC nevű, 2016-2017-ben írt Enterprise program, amely a Commodore 64 hangchip emulációja által C64-es zenéket tud lejátszani, többnyire eredeti, C64-es hangzásban. Ez többek között azt jelenti, hogy a négyszögjel mellett más hullámformájú hangokat is meg tud szólaltatni. Képes továbbá a PWM effektus megvalósítására, azaz a négyszögjel kitöltési tényezőjét is lehet vele állítani.
  
 
=== Az alapok ===
 
=== Az alapok ===
Line 6: Line 6:
 
Használatához ugyanarra van szükség, mint a Dave négyszögjelet használó Midiplay-hez, tehát az említett emulátoron kívül egy MIDI portra (pl. loopMidi, ill. Linuxon pl. a Midi Through port), valamint magára a Midiplay program SID emulációval bővített változatára.
 
Használatához ugyanarra van szükség, mint a Dave négyszögjelet használó Midiplay-hez, tehát az említett emulátoron kívül egy MIDI portra (pl. loopMidi, ill. Linuxon pl. a Midi Through port), valamint magára a Midiplay program SID emulációval bővített változatára.
  
=== Az ENVELOPE.TXT használata ===
+
=== A SID_MIDI.ENV (korábbi ENVELOPE.TXT) használata ===
Az envelope.txt felépítése némiképp eltér a korábbi, négyszögjeles midiplay-étől. Ugyanúgy használhatók az L, R, S paraméterek, melyek el is maradhatnak a hangszerdefiníció elejéről. Az időtartam után nem kettő, csak egy csatornát kell megadni hangerőnek (mivel a SID nem sztereó). A hajlítás is a megszokott módon adható meg, majd a PWM érték (négyszögjel kitöltési tényező), végül a hullámforma, mely lehet négyszögjel, háromszögjel és fűrészfog rezgés:
+
Az sid_midi.env felépítése némiképp eltér a korábbi, négyszögjeles envelope.txt-jétől. Ugyanúgy használhatók a D, L, R, S paraméterek, melyek el is maradhatnak a hangszerdefiníció elejéről. A P paraméter viszont nem használható. Az időtartam után nem kettő, csak egy csatornát kell megadni hangerőnek (mivel a SID nem sztereó). A hajlítás is a megszokott módon adható meg, majd a PWM érték (négyszögjel kitöltési tényező), végül a hullámforma, mely lehet négyszögjel, háromszögjel és fűrészfog rezgés:
  
 
  [L|R|S] IDŐTARTAM, HANGERŐ (0..31), HAJLÍTÁS (-4096..4095), PWM (0..255*), HULLÁMFORMA;
 
  [L|R|S] IDŐTARTAM, HANGERŐ (0..31), HAJLÍTÁS (-4096..4095), PWM (0..255*), HULLÁMFORMA;
 +
 +
A PWM valójában lehet a 0-255 tartományon kívül is, de csak az alsó 8 bit számít.
 +
 +
A hullámforma:
 +
 +
* 0: háromszögjel
 +
* 32: fűrészjel
 +
* 64: négyszögjel
 +
* 96: zaj
 +
* 128: hozzáadása engedélyezi a gyűrűmodulációt.
 +
 +
Példa:
 +
 +
<nowiki>0 {</nowiki>
 +
<nowiki>  0, 30, 0, 64, 64;</nowiki>
 +
<nowiki>  50,  0,  0, 0, 64;</nowiki>
 +
<nowiki>}</nowiki>
 +
 +
A sor végi 64-ek azt jelentik, négyszögjel fog szólni. Bár az első fázis hanghossza 0, így ez még nem fog hallatszani, csak a hangerőt állítja be 30-ra, ami a következő fázisban 50 időtartamig le is fog csengeni, mivel a hangerő itt 0, amit a hang a fázis végére elér a 30-ról kiindulva. Az első fázis utolsó előtti száma, a 64 a négyszögjel kitöltési tényezőjét állítja be, ami a hang lecsengése végére fokozatosan átmegy "kitöltetlen" négyszögjelbe. Mindkét fázisban a hangmagasságnak (harmadik szám) 0 van megadva, így a hangmagasság változatlan marad végig.
 +
 +
=== A MIDI vezérlők használata ===
 +
'''7-es vezérlő (Volume)''': hangerő
 +
 +
10-es vezérlő (Pan): nem támogatott
 +
 +
'''74-es vezérlő:''' négyszögjel kitöltési tényezője (pwm), ez a burkológörbével együtt határozza meg a tényleges értéket. Alapértelmezett értéke 64, emellett a burkológörbe érték változatlan marad. Ha 0, akkor -50%, ha 127, akkor pedig valamivel kevesebb mint +50%. Azaz egészen pontosan a ténylegesen használt érték (ENV_PWM + CTL74*2 + 128) & 255.
 +
 +
'''71, 76-os vezérlő:''' hasonló célú a DAVE-es lejátszóhoz, de itt a 3-5. bitek a hullámformát és a gyűrűmodulációt állítják a SIDBASIC formátumával azonos módon (csak két bittel jobbra léptetve):
 +
* 0 = háromszög
 +
* 8 = fűrész
 +
* 16 = négyszög
 +
* 24 = zaj
 +
* +32 = gyűrűmoduláció.
 +
 +
A gyűrűmoduláció az eggyel kisebb számú csatornával történik.
 +
A vezérlő és a burkológörbe között XOR művelet történik.
 +
 +
'''70, 77-es vezérlő:''' csatornafoglalás vezérlése, mint a Dave-es lejátszóban, de továbbfejlesztve, a harmadik csatorna is osztható (csak két hangra), és több lehetőség van a csatorna foglalás vezérlésére. Ez többet tud, de bonyolultabb is mint a DAVE-es lejátszóban. Mind a 7 bit használt:
 +
* b5, b6: az elsőnek próbált (legmagasabb prioritású) csatorna, 0..3
 +
* b2..b4: a másodiknak próbált csatorna (csak akkor foglalja ezt, ha jobb az elsőnél), 0..7
 +
* b0, b1: a harmadiknak próbált csatorna & 3, 0..3 ha a második < 4, 4..7 ha a második >= 4
 +
 +
Az alábbi példák mind 0..127 közötti tartományt tételeznek fel:
 +
 +
* 0: csak a 0. csatorna
 +
* 37: csak az 1. csatorna
 +
* 74: csak a 2. csatorna
 +
* 6: dinamikus foglalás 0, 1, 2 sorrendben
 +
* 40: dinamikus foglalás 1, 2, 0 sorrendben
 +
* 65: dinamikus foglalás 2, 0, 1 sorrendben
 +
* 5: csak a 0. és 1. csatorna
 +
* 10: csak a 0. és 2. csatorna
 +
* 42: csak az 1. és 2. csatorna
 +
* 18: 0. csatorna 50 Hz-en osztva (0, 4, 6)
 +
* 55: 1. csatorna osztva (1, 5, 7)
 +
* 79: 2. csatorna osztva (2, 3)
 +
 +
Az alapértelmezés csatornánként változik:
 +
* MIDI csatorna 1: 06h = 00 001 10b = 0, 1, 2
 +
* MIDI csatorna 2: 28h = 01 010 00b = 1, 2, 0
 +
* MIDI csatorna 3: 41h = 10 000 01b = 2, 0, 1
 +
 +
és ez a minta ismétlődik, kivéve a 10-esnél, ami alapértelmezés szerint mindig a 2-es csatornát használja (4Ah). A 3..7. "SID csatornák" a tényleges fizikai csatornákkal (0-2.) osztva használhatók:
 +
* 0, 4, 6
 +
* 1, 5, 7
 +
* 2, 3
 +
Tehát például az 1-es csatorna osztásához 01 101 11b = 37h = 55 értékre kell állítani a vezérlőt.

Latest revision as of 12:01, 28 October 2017

A Midiplay az Enterprise Dave chipjének eredeti négyszögjel generálásával kapcsolatos képességeit használja ki, igen jó hatásfokkal. Ennek továbbfejlesztett változata még több hangzást tesz lehetővé, melynek alapja a SIDBASIC nevű, 2016-2017-ben írt Enterprise program, amely a Commodore 64 hangchip emulációja által C64-es zenéket tud lejátszani, többnyire eredeti, C64-es hangzásban. Ez többek között azt jelenti, hogy a négyszögjel mellett más hullámformájú hangokat is meg tud szólaltatni. Képes továbbá a PWM effektus megvalósítására, azaz a négyszögjel kitöltési tényezőjét is lehet vele állítani.

Az alapok

A SID emulációval bővített MIDIPLAY használatához szükség van az EP128Emu legfrissebb változatára, mely kezeli a MIDI bemenetet. A helyes működéséhez 10 MHz-es konfigurációra van szükség (CPU frequency = 10000000, Sound clock frequency = 1250000), normál sebességnél kilép az EP logóhoz. A burkológörbe frekvencia elvileg 100 Hz-es, a lejátszás pedig 12626 Hz ha az órajelek jól vannak beállítva.

Használatához ugyanarra van szükség, mint a Dave négyszögjelet használó Midiplay-hez, tehát az említett emulátoron kívül egy MIDI portra (pl. loopMidi, ill. Linuxon pl. a Midi Through port), valamint magára a Midiplay program SID emulációval bővített változatára.

A SID_MIDI.ENV (korábbi ENVELOPE.TXT) használata

Az sid_midi.env felépítése némiképp eltér a korábbi, négyszögjeles envelope.txt-jétől. Ugyanúgy használhatók a D, L, R, S paraméterek, melyek el is maradhatnak a hangszerdefiníció elejéről. A P paraméter viszont nem használható. Az időtartam után nem kettő, csak egy csatornát kell megadni hangerőnek (mivel a SID nem sztereó). A hajlítás is a megszokott módon adható meg, majd a PWM érték (négyszögjel kitöltési tényező), végül a hullámforma, mely lehet négyszögjel, háromszögjel és fűrészfog rezgés:

[L|R|S] IDŐTARTAM, HANGERŐ (0..31), HAJLÍTÁS (-4096..4095), PWM (0..255*), HULLÁMFORMA;

A PWM valójában lehet a 0-255 tartományon kívül is, de csak az alsó 8 bit számít.

A hullámforma:

  • 0: háromszögjel
  • 32: fűrészjel
  • 64: négyszögjel
  • 96: zaj
  • 128: hozzáadása engedélyezi a gyűrűmodulációt.

Példa:

0 {
   0, 30, 0, 64, 64;
   50,  0,  0, 0, 64;
}

A sor végi 64-ek azt jelentik, négyszögjel fog szólni. Bár az első fázis hanghossza 0, így ez még nem fog hallatszani, csak a hangerőt állítja be 30-ra, ami a következő fázisban 50 időtartamig le is fog csengeni, mivel a hangerő itt 0, amit a hang a fázis végére elér a 30-ról kiindulva. Az első fázis utolsó előtti száma, a 64 a négyszögjel kitöltési tényezőjét állítja be, ami a hang lecsengése végére fokozatosan átmegy "kitöltetlen" négyszögjelbe. Mindkét fázisban a hangmagasságnak (harmadik szám) 0 van megadva, így a hangmagasság változatlan marad végig.

A MIDI vezérlők használata

7-es vezérlő (Volume): hangerő

10-es vezérlő (Pan): nem támogatott

74-es vezérlő: négyszögjel kitöltési tényezője (pwm), ez a burkológörbével együtt határozza meg a tényleges értéket. Alapértelmezett értéke 64, emellett a burkológörbe érték változatlan marad. Ha 0, akkor -50%, ha 127, akkor pedig valamivel kevesebb mint +50%. Azaz egészen pontosan a ténylegesen használt érték (ENV_PWM + CTL74*2 + 128) & 255.

71, 76-os vezérlő: hasonló célú a DAVE-es lejátszóhoz, de itt a 3-5. bitek a hullámformát és a gyűrűmodulációt állítják a SIDBASIC formátumával azonos módon (csak két bittel jobbra léptetve):

  • 0 = háromszög
  • 8 = fűrész
  • 16 = négyszög
  • 24 = zaj
  • +32 = gyűrűmoduláció.

A gyűrűmoduláció az eggyel kisebb számú csatornával történik. A vezérlő és a burkológörbe között XOR művelet történik.

70, 77-es vezérlő: csatornafoglalás vezérlése, mint a Dave-es lejátszóban, de továbbfejlesztve, a harmadik csatorna is osztható (csak két hangra), és több lehetőség van a csatorna foglalás vezérlésére. Ez többet tud, de bonyolultabb is mint a DAVE-es lejátszóban. Mind a 7 bit használt:

  • b5, b6: az elsőnek próbált (legmagasabb prioritású) csatorna, 0..3
  • b2..b4: a másodiknak próbált csatorna (csak akkor foglalja ezt, ha jobb az elsőnél), 0..7
  • b0, b1: a harmadiknak próbált csatorna & 3, 0..3 ha a második < 4, 4..7 ha a második >= 4

Az alábbi példák mind 0..127 közötti tartományt tételeznek fel:

  • 0: csak a 0. csatorna
  • 37: csak az 1. csatorna
  • 74: csak a 2. csatorna
  • 6: dinamikus foglalás 0, 1, 2 sorrendben
  • 40: dinamikus foglalás 1, 2, 0 sorrendben
  • 65: dinamikus foglalás 2, 0, 1 sorrendben
  • 5: csak a 0. és 1. csatorna
  • 10: csak a 0. és 2. csatorna
  • 42: csak az 1. és 2. csatorna
  • 18: 0. csatorna 50 Hz-en osztva (0, 4, 6)
  • 55: 1. csatorna osztva (1, 5, 7)
  • 79: 2. csatorna osztva (2, 3)

Az alapértelmezés csatornánként változik:

  • MIDI csatorna 1: 06h = 00 001 10b = 0, 1, 2
  • MIDI csatorna 2: 28h = 01 010 00b = 1, 2, 0
  • MIDI csatorna 3: 41h = 10 000 01b = 2, 0, 1

és ez a minta ismétlődik, kivéve a 10-esnél, ami alapértelmezés szerint mindig a 2-es csatornát használja (4Ah). A 3..7. "SID csatornák" a tényleges fizikai csatornákkal (0-2.) osztva használhatók:

  • 0, 4, 6
  • 1, 5, 7
  • 2, 3

Tehát például az 1-es csatorna osztásához 01 101 11b = 37h = 55 értékre kell állítani a vezérlőt.