*** HANDLEIDING VAN MDL-LIB ***

- COPYRIGHT 1990 BY MDL-SOFT -

Als u dit nog niet gedaan heeft, lees dan eerst de inleiding
in het bestand INLEIDNG.TXT!

Het bestand SOUNDS bevat een aantal zr  gebruikersvriende-
lijke procedures om geluidseffecten mee te programmeren. Dit
gaat echt veel  makkelijker  dan  met  SOUND  in  Basic.  De
standaard-procedures WritePsg en ReadPsg werken rechtstreeks
met PSG registes, maar de rest van  de  procedures  omzeilen
deze moeilijke manier.

Soms dient een set als parameter te worden opgegeven. Als  u
nog niet weet hoe u met sets moet werken, zoekt  u  dat  dan
eerst op in uw Turbo Pascal handboek.

In SOUNDS.LIB is het type SetOfChannel gedefinierd als  SET
OF 0..2. Dit betekent dat er 3 kanalen zijn, genummerd van 0
tot en met 2.

----

Naam      : WritePsg
Actie     : Schrijft naar PSG register
Soort     : Procedure
Declaratie: Procedure WritePsg(reg,data:byte);
Basic     : SOUND reg,data

Deze  procedure schrijft rechtstreeks een byte naar de  PSG.
Hoe  de PSG in elkaar zit, wordt hier niet behandeld. Het is
alleen  belangrijk  dat  te  weten, als u  in  Basic  of  in
machinetaal   programmeert,   aangezien  daar  geen   andere
manieren zijn om geluidseffecten te programmeren.

Overigens: verwijder deze procedure niet, hij wordt door  de
andere sound-procedures gebruikt!

----

Naam      : ReadPsg
Actie     : Leest uit PSG register
Soort     : Functie
Declaratie: Function ReadPsg(reg:byte):byte;

Idem dito, alleen lezen.

----

Naam      : Tone
Actie     : Stelt toonhoogte in
Soort     : Procedure
Declaratie: Procedure Tone(channel:byte; Hz:integer);

Deze procedure stelt de toonhoogte op  kanaal  'channel'  op
'Hz' Herz in. Hz mag niet kleiner dan 28 zijn, anders  wordt
hij door deze procedure gelijk aan 28 gemaakt. 'channel' mag
een nummer van 0 tot 2 zijn, voor 3 kanalen.

----

Naam      : Noise
Actie     : Stelt ruishoogte in
Soort     : Procedure
Declaratie: Procedure Noise(height:byte);

Met  deze  procedure kunt u de hoogte van  de  ruisgenerator
instellen. 'height' is de ruishoogte: van 0 tot 31.

----

Naam      : Volume
Actie     : Stelt volume in
Soort     : Procedure
Declaratie: Procedure Volume(channel,vol:byte);

Met deze procedure kunt u op kanaal 'channel' (van 0 tot  2)
het  vulume  'vol'  (van 0 tot 15) instellen. 0 =  niets  te
horen, 15 = op zijn hardst.

----

Naam      : Effect
Actie     : Stelt effect op kanalen in
Soort     : Procedure
Declaratie: Procedure Effect(channels:SetOfChannel;
                      nr:byte; time:integer);

Met   deze   procedure   kunt u  een   bepaald   effect   op
verschillende  kanalen tegelijk instellen. 'channels' is een
set, waarin de kanalen staan, die dat effect moeten krijgen.
'nr'  is  het effectnummer (zie hieronder) en 'time'  is  de
tijd dat het effect moet duren (kies hier gerust een  waarde
van een paar duizend).

Effectnummer    Grafiek geluidssterkte

 0,1,2,3,9      \______

4,5,6,7,15      /|_____

    8           \|\|\|\

    10          \/\/\/\
                  _____
    11          \|

    12          /|/|/|/
                 ______
    13          /

    14          /\/\/\/

Voorbeeldje: effect([0,2],14,5000);

----

Naam      : SwitchSound
Actie     : Maakt geluid/ruis per kanaal hoorbaar/onboorbaar
Soort     : Procedure
Declaratie: Procedure SwitchSound(tchannels,nchannels:
                                  SetOfChannel);

Met  deze procedure kunt u toon en ruis op bepaalde  kanalen
in-  of uitschakelen (om iets te horen, moet  er  natuurlijk
ook  een  volume  zijn ingesteld).  De  default-situatie  na
ResetPsg  is  dat op alle kanalen toon is  ingeschakeld,  en
ruis uit.
'tchannels'  is  de  set waarin wordt  aangegeven  op  welke
kanalen er een toon te horen is. B.v. [0,2].
'nchannels'  is  de  set waarin wordt  aangegeven  op  welke
kanalen er ruis te horen is. B.v. [1].
Samen wordt dat dan: SwitchSound([0,2],[1]);
Bovenstaand  statement schakelt op kanaal 0 en 2 geluid  in,
en op 1 ruis en geen toon.
Op een kanaal kan overigens ook tegelijk ruis en toon staan.
Bijvoorbeeld:   switchsound([0,1,2],[2])  schakelt  op  alle
kanalen de toon in, op kanaal 2 tevens ruis.

----

Naam      : ResetPsg
Actie     : Reset de PSG
Soort     : Procedure
Declaratie: Procedure ResetPsg;

Deze procedure brengt de soundchip weer in de oude  toestand
terug:  alle volumes op 0, gn effect, op alle kanalen toon
ingeschakeld en ruis uitgeschakeld.

----

Naam      : SetClick
Actie     : Verandert status 1-bit geluidspoort
Soort     : Procedure
Declaratie: Procedure SetClick(status:boolean);

De  MSX-computer  heeft,  behalve  de  PSG,  nog  een  1-bit
geluidspoort, die normaliter de toetsklik verzorgt.  Hiermee
kunt u hem echter zelf ook gebruiken. U hoort een 'tik', als
u  de  status  verandert.  Het  geluid  dat  u   hoort,   is
afhankelijk van hoe vaak per seconde u de status  verandert.
Zie voor een voorbeeld  de  drum-machine  in  MDLTEST.  Hier
wordt  aan  het  begin  van  ieder  drum-geluid   even   een
toetsklikje  gegeven  (twee  keer  SetClick  met  WaitForInt
ertussen in), om het effect wat feller te laten klinken  (en
echter). Als u in  dit  programma  een  niet-geprogrammeerde
toets aanslaat, hoort u alleen dat klikje (b.v. de 1  of  de
RETURN).

----

**** EINDE SOUNDS.TXT ****
                                     