home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
pmos2002.zip
/
SRC
/
MUSICDEM.MOD
< prev
next >
Wrap
Text File
|
1996-10-17
|
5KB
|
137 lines
IMPLEMENTATION MODULE MusicDemonstration;
(********************************************************)
(* *)
(* Test of module Music. *)
(* *)
(* J.S. Bach: Prelude from Cello Suite No. 1 *)
(* *)
(* Programmer: P. Moylan *)
(* Last edited: 17 August 1993 *)
(* Status: *)
(* Working. Musically, it could be polished up a *)
(* little, but from the software development *)
(* viewpoint it is complete - module Music does *)
(* indeed work as desired. *)
(* *)
(* Some notes possibly still wrong. *)
(* *)
(********************************************************)
FROM TaskControl IMPORT
(* proc *) CreateTask;
FROM Semaphores IMPORT
(* type *) Semaphore,
(* proc *) CreateSemaphore, Wait, Signal;
FROM Music IMPORT
(* proc *) SetNoteDuration, PlayMusic, WaitForMusicFinished;
(************************************************************************)
VAR
(* The MusicFinished semaphore is used to signal the end of the *)
(* demonstration. *)
MusicFinished: Semaphore;
(************************************************************************)
PROCEDURE PlayATune;
(* Plays a piece of music. This procedure runs as a separate task, *)
(* which does not exit until the playing is over. *)
BEGIN (* PlayATune *)
(********************************************************)
(* Opening of J.S. Bach, Cello Suite No. 1, Prelude. *)
(********************************************************)
SetNoteDuration (200);
PlayMusic ("dDuAuF#EF#dAuF#dAddDuuAuF#EF#dAuF#dA");
PlayMusic ("dDuBuGF#GdBuGdBddDuuBuGF#GdBuGdB");
PlayMusic ("DC#GF#GC#GC#ddDuuC#GF#GC#GC#");
PlayMusic ("dDuDF#EF#DF#DddDuuDF#EF#DF#C#");
PlayMusic ("dDuBuF#EF#DC#DBDC#DdF#AG#F#");
PlayMusic ("G#uDEDEDEDdG#uDEDEDED");
PlayMusic ("C#EAG#AEDEC#EDEdAC#BA");
PlayMusic ("dBuF#uDC#DdF#uDdF#dBuF#uDC#DdF#uDdF#");
PlayMusic ("dBuG#ABAG#F#EuDC#BuAG#F#ED");
PlayMusic ("C#BAuAEAdC#EdABC#EDC#BA");
PlayMusic ("uD#dACBCAuD#dAuF#dACBCAuD#dA");
PlayMusic ("GBEF#GEBAGBEF#GEC#B");
PlayMusic ("A#C#A#C#EC#EC#A#C#A#C#EC#EC#");
PlayMusic ("DC#BDC#DEC#DC#BAGF#ED");
(* Page 2. *)
PlayMusic ("C#GAGAGAGC#GAGAGAG");
PlayMusic ("DF#uCBCdF#uCdF#DF#uCBCdF#uCdF#");
PlayMusic ("DGBABGBGDGBABGBG");
PlayMusic ("DuC#GF#GC#GC#dDuC#GF#GC#GC#d");
PlayMusic ("DuAuF#EF#DC#BAGF#EDC#BA");
PlayMusic ("G#uEuBC#DBC#DddG#uEuBC#DBC#D");
PlayMusic ("ddGuEABC#ABC#ddGuEABC#ABC#");
PlayMusic ("ddGuEAC#EG#*A/AdEF#GABC#D");
PlayMusic ("EC#ABC#DEF#GEC#DEF#GA");
PlayMusic ("BbAG#AAGF#GGEC#BAEF#G");
PlayMusic ("dAuEAC#EF#GEF#DAGF#DEF#");
PlayMusic ("dADF#ADEF#DG#FEFFED#E");
PlayMusic ("EDC#DDBG#F#EG#BDEG#AG#");
PlayMusic ("AEC#BC#EdAC#dEAG#F#EDC#B");
(* Page 3. *)
PlayMusic ("*A/uuGF#EDC#BAuGF#EDC#BA");
PlayMusic ("GuF#EDC#BAGF#uEDC#BAGF#");
PlayMusic ("EuDC#BC#EdAuEBEC#EDEBE");
PlayMusic ("C#EdAuEDEBEC#EdAuEDEBE");
PlayMusic ("C#EdAuEBEC#EDdEuEdEuF#EddAuEu");
PlayMusic ("EdEuF#EGEddAuuEF#EGEAEF#E");
PlayMusic ("GEF#EGEdEuEF#EdEuEF#EDE");
PlayMusic ("EdEuDEdEuEC#EDEC#EDEBE");
PlayMusic ("C#EdABCdAuC#dAuDdAuuD#ddAuuEddAuuFddA");
PlayMusic ("uuF#ddAuuGddAuuG#ddAuuAddAuuBbddAuuBddAuuCddAuuC#ddA");
PlayMusic ("uuDdF#dAuF#uDdF#uDdF#uDdF#dAuF#uDdF#uDdF#");
PlayMusic ("uDdEdAuEuDdEuDdEuDdEdAuEuDdEuDdE");
PlayMusic ("uC#dGdAuGuC#dGuC#dGuC#dGdAuGuC#dGuC#dG");
PlayMusic ("u***D");
WaitForMusicFinished;
Signal (MusicFinished);
END PlayATune;
(************************************************************************)
PROCEDURE WaitForEndOfMusic;
(* Synchronization procedure: does not return until the music *)
(* demonstration is over. *)
BEGIN
Wait (MusicFinished);
END WaitForEndOfMusic;
(************************************************************************)
PROCEDURE StartTheMusic;
(* Creates the player task, after which it will run autonomously. *)
CONST PlayerPriority = 12;
BEGIN
CreateSemaphore (MusicFinished, 0);
CreateTask (PlayATune, PlayerPriority, "Music demo");
END StartTheMusic;
(************************************************************************)
BEGIN
StartTheMusic;
END MusicDemonstration.