BBS: Inland Empire Archive Date: 07-25-92 (07:25) Number: 200 From: PHIL HODGES Refer#: NONE To: RICH GELDREICH Recvd: NO Subj: Wow! Coolness! Yeah! Conf: (2) Quik_Bas
Well, Rich...It's currently 4:05 a.m...I spent the last 45 minutes checking out your speaker driver some more, and trying that code you showed me to load samples...all I can say is...WOW! At first it was doing something really weird...I added some code so I could enter the name of the sample and the "TweakOn" freq to play it at. Well, the first sample I loaded sounded great. After that, they started sounding the same. Then I realized I had to do the CLEAR , , 2048 after each sample. One other little detail. I got the samples to sound fine in the QB environment, but if you play one from a compiled .EXE, there's this little "whine-ta-ching!" right before it plays it. Any idea why? Anyway, I got to expermenting, and decided to try something I wanted to be able to do with other sound files, like .ROL's or what have you: copy them all into one file. I did this, writing down the size of the two samples. From there, here's what I did...and it works! PLEASE tell me your MOD library works through the Sound Blaster as well! I'll register that sucker so fast your head will swim double-time! Just as long as it's not highway robbery <G>... 'An experiment with Rich Geldreich's Speaker Driver 'Demonstrates how to combine sample files into one big file 'and load one at your leisure! NOTE: This requires his speaker 'drive (fer-duh) DEFINT A-Z DECLARE SUB TweakOn (BYVAL freq%) DECLARE SUB TweakOff () DECLARE SUB PlaySound (BYVAL Offset%, BYVAL Segment%, BYVAL Length%, BYVAL freq DECLARE FUNCTION TweakStatus () CLEAR , , 2048 OPEN "ONEBIG.SAM" FOR BINARY AS #1 A$ = SPACE$(8100) 'The size of the 1st sample GET #1, , A$ CLOSE #1 TweakOn 15000 PRINT "Playing STRINGS8.SAM..." PlaySound VARPTR(A$), VARSEG(A$), LEN(A$), 8000 DO: LOOP WHILE TweakStatus TweakOff: A$ = "" 'Clear that puppy... CLEAR , , 2048 OPEN "ONEBIG.SAM" FOR BINARY AS #1 SEEK #1, 8101 'one byte after the 1st sample ends... B$ = SPACE$(18990) 'The size of the 2nd in the file... GET #1, , B$ TweakOn 15000 PRINT "Playing ORGAN6.SAM ..." PlaySound VARPTR(B$), VARSEG(B$), LEN(B$), 4500 DO: LOOP WHILE TweakStatus TweakOff CLOSE #1: END This was only my first experiment. I'll have work on it some more. I'm a little fuzzy in the department of strings. Was it necessary to clear the A$ like I did above with A$="" ? Or is it possible to just keep that in memory? I wonder if it's possible...nah! I was thinking, "What if you could just store it in EMS???" Of course, I only have 640K, so I couldn't even find out. I suppose I could keep a few small ones in memory...well, I'll have to tinker with it some more, I guess. This is great, Rich! What I was also thinking about trying was just appending a few of the samples to the end of the .EXE file! It would work, since the extra data would be completely ignored by DOS. Thing is, it would require first compiling the program, seeing how big it is, then ...well, it's fairly obvious. But worth it? Nah... ___ X SLMR 2.1a X Eat the rich - the poor are tough and stringy. --- Maximus/2 2.00 * Origin: The Gamorian Vortex Project (1:105/601)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET