Skip to content

Latest commit

 

History

History
176 lines (140 loc) · 8.71 KB

programmeren_sample_chip.md

File metadata and controls

176 lines (140 loc) · 8.71 KB
   P R O G R A M M E R E N   S A M P L E C H I P 
                                                            
      
      In deze tekst ga ik beschijven hoe je samples gemakkelijk in 
      BASIC of ML kunt gebruiken. Deze chip zit in de Music Module 
      van  Philips,  omgebouwde  Toshiba modules  en de  standaard 
      MSX-AUDIO cartridges van Panasonic.
      
      
                  O U T   C 0 H   E N   O U T   C 1 H 
      
      Met  deze twee  OUT's wordt de hele MSX-AUDIO bestuurd. Door 
      een getal  op poort  &HC0 te  zetten kies je een register en 
      door  op poort  &HC1 een  getal te zetten stuur je dat getal 
      naar het eerder gekozen register.
      
      
      Een overzicht van de registers:
      
      Register 1: Niet gebruiken
      
      Register 2: Timer 1 preset. Beginwaarde N1 van Timer 1.
      
      Register 3: Timer 2 preset. Beginwaarde N2 van Timer 2.
      
      Register 4: Timer en Flag control.
                  Bit 0: "1" starten en "2" stoppen Timer 1.
                  Bit 1: "1" starten en "2" stoppen Timer 2.
                  Bit 2: niet in gebruik.
                  Bit 3: "1" maskeert Buffer Ready Flag.
                  Bit 4: "1" maskeert End of Sample Flag.
                  Bit 5: "1" maskeert Timer 2 Flag.
                  Bit 6: "1" maskeert Timer 1 Flag.
                  Bit 7: "1" reset alle Flags.
      Bij het  inschakelen van  dit register  worden bit 3 en 4 al 
      gemaskeerd.  Bij  het  invoeren van  de waarde  &H78 in  dit 
      register  worden alle  Flags gemaskeerd  en bij het invoeren 
      van  &H80  worden alle  Flags gereset  behalve de  al eerder 
      gemaskeerde  Flags.  Voor  meer  informatie  zie  het Status 
      register.
      
      Register 7: ADPCM besturing.
                  Bit 0: "1" reset ADPCM functies.
                  Bit 1, 2, 3: niet in gebruik.
                  Bit 4: "1" herhaalt weergave sample.
                  Bit 5: "1" voor gebruik geheugen in module.
                  Bit 6: "1" opnemen en "0" weergeven.
                  Bit 7: "1" start opnemen of weergeven.
      Bij invoeren  van &HE0  kan er  worden opgenomen en met &HA0 
      weergegeven. Met "1" worden alle bits gereset.
      
      Register 8: Instellingen
                  Bit 0: Moet altijd op "0" worden gezet.
                  Bit 1: Moet altijd op "0" worden gezet.
                  Bit 2: "1" DA en "0" AD conversie.
                  Bit 3: "1" start en "0" stopt DA/AD conversie.
                  Bit 4, 5, 6: niet in gebruik.
                  Bit 7: "1" stelt CSM in.
      Indien ADPCM mode gewenst is moeten alle bits "0" zijn.
      
      Registers 9 en 10: Startadres Sample.
      Er  is  standaard  256 kB  in blokjes  van 32  kB RAM  om te 
      samplen.  Dus  zijn  er  256/32  =  8  van &H2000  bytes. De 
      adressen  lopen  dus  van  &H0000  tot  &H1FFF.  Als er  een 
      geheugenuitbreiding  aanwezig is,  bijv. 1024 kB en er wordt 
      gesampled met een goed prgramma dat ook die 1024 kB gebruikt 
      zijn er  1024/32 =  32 van &H8000. De adressen lopen dan van 
      &H0000  tot &H7FFF.  In register  9 komt  de low-byte  en in 
      register 10 komt de high-byte. Dus als het beginadres &H03FF 
      is dan zet je in register 9 &HFF en in register 10 &H03.
      
      Registers 11 en 12: eindadres.
      Zie registers  9 en  10 alleen nu voor het eindadres. Bij 32 
      kB  is dat  &H1FFF. In  register 11  komt de  low-byte en in 
      register 12 komt de high-byte.
      
      Registers 13 en 14: prescaler.
      In  deze  registers komt  een getal  N te  staan waarmee  de 
      samplefrequentie Fs  wordt bepaald door de klokfequentie van 
      3580 kHz te delen door N. De maximale samplefrequentie is 16 
      kHz en de minimale samplefrequentie is 1.8 kHz.
      
      Opname Frequentie  |     N     | Register 13  | Register 14
      -------------------+-----------+--------------+-------------
        1.8 kHz          |   &H7FF   |    &HFF      |      7
        3   kHz          |   &H4A9   |    &HA9      |      4
        6   kHz          |   &H254   |    &H54      |      2
       10   kHz          |   &H166   |    &H66      |      1
       16   kHz          |   &H0E1   |    &HE1      |      0
      ------------------------------------------------------------
      
      Register 15: ADPCM-data.
      Dit register is een buffer voor de ADPCM data van en naar de 
      computer.  Dit register  kan geschreven  en gelezen  worden. 
      Elke byte bevat 2 ADPCM samples die maar 4 bits (ÇÇn nibble) 
      bevatten. Als  de high-nibble  sample nummer  "n" bevat  dan 
      bevat de low-nibble het sample nummer "N+1"
      
      Registers 16 en 17: ADPCM weergave.
      Deze  registers bevatten  de snelheid van de ADPCM weergave, 
      oftewel de afspeelfrequentie.
      
      Weergave frequentie   |   register 16   |   register 17
      ----------------------+-----------------+-------------------
        1.8 kHz             |      &HF4       |      &H08
        3   kHz             |      &H5D       |      &H0F
        6   kHz             |      &HBA       |      &H1E
       10   kHz             |      &H36       |      &H33
       16   kHz             |      &HF0       |      &H51
       50   kHz             |      &HFF       |      &HFF
      ------------------------------------------------------------
      
      Register 18: volume weergave ADPCM.
      Met dit register kan het volume van de weergave van de ADPCM 
      worden  ingesteld. Met  &HFF staat  het volume voluit en met 
      &H00 is  het geluid  op zijn  zachtst. Dit register kan goed 
      gebruikt worden voor fade ins en outs.
      
      Registers 19 en 20: ADPCM.
      Deze   twee   registers   bevatten   de   ADPCM-codering  en 
      -decodering.
      
      Registers 24 en 25: Output control.
      Met  deze registers  kan het geluid aan- en uitgezet worden. 
      In  register  moet  altijd  "8"  staan  om outputpoort  3 te 
      kiezen. Wanneer  in register  25 het  getal "8"  wordt gezet 
      gaat  het geluid  aan en wanneer er "0" wordt gezet gaat het 
      geluid uit.
      
      Register 26: PCM-data.
      Bufferregister voor AD en DA conversie, de data wordt hierin 
      opgeslagen in 2-complement vorm.
      
      
                  H E T   S T A T U S R E G I S T E R 
      
      Dit  register  kan gelezen  worden zonder  dat er  eerst een 
      register moet worden aangeroepen.
      
              Bit 0: dit bit is "1" tijdens ADPCM opname/weergave.
              Bit 1 en 2: zijn niet in gebruik en staan op "1".
              Bit 3: deze Flag wordt op "1" gezet als de 
                     datatransport klaar is.
              Bit 4: Als het opnemen of afspelen klaar is wordt 
                     dit bit gezet.
              Bit 5: Gezet als Timer 2 "0" is.
              Bit 6: Gezet als Timer 1 "0" is.
              Bit 7: Dit bit wordt gezet als bits 3, 4, 5 en 6 
                     gezet zijn, er wordt dan een interrupt 
                     veroorzaakt. De computer kan dan zien of de 
                     interrupt veroorzaakt werd door de 
                     soundprocessor.
      
      
                        H E T   I N V O E R E N 
      
      Dan nu  hoe je al deze registers kunt programmeren. Zoals ik 
      al eerder heb geschreven doe je dit met OUT &HC0,register en 
      met OUT &HC1,waarde die naar het register moet.
      
      Dus als je het volume voluit wilt zetten doe je:
              OUT &HC0,18:OUT &HC1,&HFF
      
      Zelf  sample ik  het liefst in MoonBlaster en daarna schrijf 
      ik die  sample(s) weg  om ze vervolgens in BASIC in te laden 
      met de MB BASIC routines.
      
      Nu begrijp je misschien waarom het makkelijk is de sample(s) 
      aan  te kunnen  sturen. Veel mensen die alleen de een sample 
      aan willen  sturen maken een songfile waarbij ze dan precies 
      timen  wanneer zo'n  sample afgespeeld  moet worden.  In het 
      softwaremenu staat  een programma  om samples op te nemen en 
      af te spelen.
      
                                                    Bart Schouten