SoundZAP v3.0: Description: SoundZAP is a program for converting sound files of various formats into IFF 8SVX, Raw, or Sun .au files. Background: One of the amazing things about the Amiga is its incredible sound support. Its BUILT-IN sound hardware is capable of playing sound of higher quality than most of the add-on sound hardware for other platforms. So when I got access to InterNet earlier this year I was amazed that most of the sound files posted in the alt.binaries.sounds.* newsgroups were NOT posted by Amiga users, and therefore were not in the Amiga standard IFF 8SVX format. I then looked around for a program that would convert these files into a format that I can use easily (i.e. 8SVX). The largest help came from Dave Champion (dgc3@midway.uchicago.edu) who gave me a copy of a program he wrote called "mac2raw". But, that program still only gave RAW signed data. I wanted 8SVX files. So we hacked around a while working on writing a multi-format sound convertor. Dave and I worked for a few weeks on it but finally we both got too busy to give it much more thought. Then two months or so later I got inspiration! I found ulaw28svx, by Michael Boehnisch (billy@uni-paderborn.de) somewhere. It worked great for converting ulawed files and it gave me the output I wanted, so I sat down and re-wrote the program we had been working on before from scratch. I got the ULAW and RAW convertors to work, and before I knew it I had what you now have before you! Capabilities: This program converts sound files of the following formats: RAW (signed, unsigned, and ulaw-ed), .AU files, .VOC files, .WAV, Macintosh, AIFF, and IFF 8SVX sounds. It outputs either IFF 8SVX files, RAW data, or .au files. It auto detects the .VOC, .AU, .WAV, Macintosh, AIFF, and 8SVX headers, converting them appropriately. You can force the program into using a certian sample rate for the output file. You can also force it ignore any headers and convert the file as if it were just RAW data. It can use a variable buffer size and convert samples of any length. There are a few other command line options that will be discussed later. Filenames: You can supply both input and output filenames, or just an input filename. If you only give an input filename the program will strip any 2 or 3 character extentions (i.e. '.snd' or '.au') and append an extention that is descriptive of the output format. '.iff' for 8SVX, '.au' for Sun AU, and '.raw' for RAW output. If a file exists with the same name as the output file IT WILL GET OVERWRITTEN!!! So be careful. If the source filename has the same name as the output file SoundZAP will give you an error. Command Line Options: All options are a minus sign followed by a letter. Some have numerical arguments which should follow the letter (no space between the letter and the number). -a : Amplify the data by n thirds. It takes the value of the data and multiplies it by n/3. If the data is already fairly loud and n is too large, this switch may cause major distortion. If n isn't there (or 0) then the program will search the file for the sample with the largest value (i.e. the loudest) and map that to the loudest value possible (i.e. 127). This will make the file as loud as possible with NO distortion apart from noise that is already present (actually there may be SOME distortion due to rounding...but not much). -b : This will change the size of the buffer the program uses while converting the sample. If you have only a small amount of memory you may have to use this switch, but remember: the larger the buffer the faster the conversion. The default is 50K and n is in K, so "-b1024" would create a 1024 kilobyte (or 1 Megabyte) buffer. If n is not there (or 0) then the program will try to allocate a buffer that is the same size as the sample. This can speed up the conversion of samples quite a bit...if you have enough memory. -c : This will take data, sampled at one rate, and convert it to data with a different sampling rate. This only works if you are converting from a high sample rate to a lower rate (i.e. 22790 -> 8000). 'n' can have the following values: 5 = 5696 samples/sec 7 = 7596 samples/sec 8 = 8000 samples/sec 1 = 11395 samples/sec 2 = 22790 samples/sec This switch will also accept explicit declarations of the sample rate, not just the above abbreviations. Just enter the sample rate right after the '-c' on the command line. Example: "-c2203" would convert to 2203 samples per second. -f : Force the program to assume the input data is RAW. Use this if the header of a file is corrupted and SoundZAP is choking on it. You may then have to edit the sample to get rid of any headers or other non-sample data that doesn't get stripped. This switch assumes SIGNED data, so if the output sounds VERY noisy then use the -u switch along with -f to toggle it. -l : This will cause the program to output u-lawed data. This switch is implied in the -s switch. -n : This will cause the program to only output the VHDR and BODY chunks to an IFF file, and not the AUTH, ANNO, and (c) chunks. If a sample player seems to choke on a converted sample try using this option. It only has an affect if the output is an IFF 8SVX file. -r : This changes the sample rate for the output data. This switch overrides any headers in the source file. This DOES NOT physically change the data, just the rate that a sample player program will play the file at. It is only useful when outputting IFF 8SVX or .au files. The can be any vaild rate as explained in the -c switch. -s : This will cause the program to output a Sun .au file. The data is re-sampled to 8000 samples per second and converted to u-lawed bytes. There is no need to use the -l switch with this option. -u : Output UNSIGNED data. It can also be used to toggle the format of the data if you use the -f switch on unsigned data. -w : Output RAW data...no headers. Registration: I am not asking for any money for this program. It was not that difficult to write and I enjoyed doing it. If YOU feel obligated to send something what you could do is send me any information on sound formats that you think would be useful for future versions. That would probably be the most helpful thing you could do. Updates: I will try to keep the most up-to-date versions on FTP sites for people with FTP access. Since ab20 went down, I will keep new versions on amiga.physik.unizh.ch. If you don't have FTP access I can send you the latest version via Internet E-Mail. Finally, I can Snail-Mail you the latest version if you have no other way of finding it, but you'll have to send me enough money to cover the price of a disk and postage. When you get a new version PASS IT AROUND! Upload it to BBS's and other FTP sites so people can find it! Thanks: Thanks to everyone who has sent me mail! I've recieved alot of very helpful information...especially bug reports and suggestions. Thanks! Author: Michael Cramer (mrc113@psuvm.psu.edu || mrc@ecl.psu.edu) You can contact me at the above E-Mail addresses from September through May. You can also Snail-Mail me anytime at the following address: Michael Cramer 1015 Lindbergh Ave. Stroudsburg, PA 18360 Use E-Mail if you can, becasue it's MUCH faster for me. You can also e-mail me at infestix@hogbbs.scol.pa.us. That will be there forever (or at least for the next 2 or 3 years!) but I don't check it quite as often. If you have any suggestions or comments that don't need immediate attention you can mail them there. If you find ANY bugs or things you think should be changed contact me and I'll do my best to fix them. Please don't make any changes to my source, mail me and I'll release a fixed version. The source is provided as a learning tool. It may be used in your own programs (if you mention me! =) if it is NOT going to be for profit! If you have the specifications and/or a sample of another storage format please mail it to me. I can only support formats that I have access to, and I don't have time to look all over the place for different formats. Thanks! See the file "history" for release history and future plans. This version of SoundZAP was compiled with DICE version 2.06.40 in June of 1992.