@toc@<+A><:s>REVISION HISTORY ................................................................................................. 14<:f400,FArial,0,0,0><:p<* >>
<+C>NOHISS version 1.0 is a FREE, public domain program. There is no registration process or monetary fee required to use it.
<+@><:s>
<+@>You may freely distribute NOHISS to others as long as:
<+@><:s>
@Bullet 1@<+@><:s><+(>only the original files are distributed<-(>
@Bullet 1@<+@><:s><+(>no changes are made to any files<-(>
@Bullet 1@<+@><:s><+(>no money is charged for the program<-(>
<+@><:s>
<+@><:s>
<+C>NOHISS and this documentation are (C) Copyright 1991 by Andy Hakim. All Rights Reserved. The author of this program is not liable for any damage caused by its use. By using this program, you agree to the above conditions.
<+C><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s><:p<* >>
<+@><:f360,FArial,0,0,0><+!>What is Nohiss<:f360,FArial,0,0,0>?<-!><:f480,FArial,0,0,0>
<+@><:s>
<:s>Nohiss reduces or removes background "noise" that is almost always present when a recording is made on a digital sound card. Background noise is most apparent when using a microphone, but is also present to some degree if you use a direct input connectio
<+@><:s>
<+@>Graphically, "hisssssss" looks like this:
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
NOHISS was designed to work on speech recordings. If you run NOHISS on a digitized music (ie: rock and roll song) file, there will probably be no improvement in quality. There is no fixed level of reduction that works for all speech samples but by adjusti
ng the command line parameters you will generally end up with a better sounding sample. One of the (good) side effects of NOHISS is that the output file will probably compress (using a file compression program) tighter than the original. Run DEMO.BAT to h
ear a sample of the before and after versions of a speech sample.
<+@><:s>
<:s><:#1132,9360>Certainly, removing hiss from sound files is probably not going to appeal to everyone... but there might be certain multimedia and presentation applications where this could prove useful. This project started out merely as an experiment, but after doing so
me tests I heard some dramatic improvements in speech samples.
<+@><:s><:#283,9360>
<:#566,9360>If you find nohiss useful, I would appreciate some feedback. This will encourage me to continue supporting and enhancing this utility.
<+@><:#283,9360>NOHISS supports the following digitized file formats:
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
@Indent@<:#1420,9360><+!>.VOC<-!> Soundblaster 8-bit VOICE format. Currently, only the unpacked format is supported. Normally when you record a sound, it is stored in an unpacked state. The Soundblaster/PRO Stereo sound format it not supported at this time. If the VOC file
contains special blocks such as markers, text information, they will automatically be copied without change.
<+@><:s><:#283,9360>
@Indent@<:#571,9360><+!>.SND<-!> This is raw 8-bit data with header information. There are two basic types of SND files. Nohiss recognizes both versions and retains proper header information.
<+@><:s><:#283,9360>
@Indent@<:#571,9360><+!>.SOU<-!> Raw 8-bit digital data. No header information. The extension may not be SOU in all cases.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
@Indent@<:#849,9360>Note: Although you can specify different extensions for the input and output files, nohiss will not convert between formats. The output file always remains the same format as that of the input file.
@Indent@<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#423,9360><:f360,FArial,0,0,0><+!>COMMAND LINE SYNTAX<-!><:f>
@Indenall@<:#1132,9360>Name of the file that is to be processed. Nohiss automatically looks for .VOC, .SND, and .SOU files if no extension is specified. You may precede the inputfile by a qualified DOS pathname. Wildcards are not allowed, but if you wish to process multiple file
s, I recommend another of my utilities called Wildrun.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:#288,9360><+!><[>outputfile<[>.ext]]<-!>
@Indenall@<:s><:#1415,9360>Name of the output file. If no extension is given, one will be added automatically depending on the input file format. If no output file is specified, a temporary file is created, then deleted when the program is finished. The temporary file is only crea
ted for playback purposes. Therefore if you wish to save the output as a file, you must specify an output filename.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#288,9360><+!><[>options]<-!>
@Indenall@<:#1132,9360>Also known as command line parameters, options allow you to change various settings of the program. All options can be saved directly to NOHISS.EXE by using /SAVE. This saves you the trouble of typing the same parameters over on subsequent uses.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:#423,9360><:f360,FArial,0,0,0><+!>COMMAND LINE OPTIONS<-!><:f>
@Bullet 1@<+@><:s><:#331,9360><+(>be specified in any order<-(>
@Bullet 1@<+@><:s><:#331,9360><+(>may be in upper or lower case<-(>
@Bullet 1@<+@><:s><:#331,9360><+(>may not be abbreviated<-(>
@Bullet 1@<+@><:s><:#331,9360><+(>may be preceded by slash (/) or minus (-)<-(>
@Bullet 1@<+@><:s><:#331,9360><+(>must be separated by a space ( )<-(>
<+@><:s><:#283,9360>
<+@><:#288,9360><+!>/?<-!> (or /HELP, or NOHISS with no options)
@Indenall@<:#566,9360>Displays the help screen and default options. The "defaults" column reflects the settings that are current stored in nohiss.exe.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:#288,9360><+!>/NR=#<-!>
@Indenall@<:#1981,9360>Controls the Noise Reduction level and is specified as a percentage ranging from 0 to 100. This is the factor by which each sample value will be reduced. For example, if /NR=50 then a data value of -6 will be reduced by 50% yielding -3. In other words,
if this is set at 50, then all hiss will be completely silenced only by half its intensity (ie: volume, amplitude). Normally, this should be set at 100 percent if the /RANGE is small. If you notice a sharp drop of volume during silence periods, you can t
ry reducing this value.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#288,9360><+!>/SIZE=#<-!>
@Indenall@<:#3396,9360>Sets the minimum duration for a segment of hiss. This value is measured in individual samples. Another explanation of this value is that there must be a certain number of consecutive values falling in the hiss RANGE (another parameter, see below) as a re
quirement for reduction. It is necessary to have this restriction because the endings of certain words (ex: THIS), often sound similar to background noise. A small SIZE value (ex: 1) will cause words to be clipped at the end. On the other hand, a very la
rge size value will cause no values to qualify for reduction. In terms of time, the size value is closely related to the sampling rate. For example, a rate of 12000 hertz means that 12000 samples are taken each second. Therefore, if you set /SIZE=12000 y
ou are saying that at least one second of continuous hiss must be present before that segment is reduced and any portions of hiss smaller than 1 second are ignored.
<+@><:s><:#288,9360> By using the <+!>/SIZE=#<-!> parameter, you are defining the horizontal width:
<+@><:s><:#283,9360>
<+B><:s><:#283,1020>
<+B><:s><:#283,1020>
<+@><:s><:#283,1020>
<+@><:#283,1020>
<+@><:#283,1020>
<+@><:#283,1020>
<+@><:#283,1020>
<+@><:#283,1020>
<+@><:#283,1020>
<+@><:s><:#283,1020>
@Indenall@<+@><:s><:#283,1020>
@Indenall@<:#566,9360>As another example, is you specify /SIZE=1 any single sample that meets the /RANGE criterion will be reduced.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#288,9360><+!>/RANGE=#<-!>
@Indenall@<:#2264,9360>Sets the width of the hiss spectrum and is specified in volume units ranging from 0 to 254. Nohiss automatically centers this value around 0 (which is considered silence.) Data values falling into this range are reduced. The MIN and MAX values are recompu
ted every time you use this option. Normally you should keep this value just large enough to catch the hiss and not affect the voice. If you start hearing words being clipped, try reducing this value. In my experience, a value less than 3 is useless and a
value greater than 50 takes away too much of the voice data. This value varies from sample to sample.
<+@><:s><:#283,9360>
<+@><:s><:#288,9360> By<+!> /RANGE=#<-!>, you are specifying the vertical width:
<+@><:s><:#283,9360>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,1170>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,530>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360><+!>
<+@><:#288,9360><+!>/MIN=#<-!>
@Indenall@<:s><:#566,9360>Hiss spectrum lower limit, ranging from -127 to +127. This gives you precise control over the hiss spectrum.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#288,9360><+!>/MAX=#<-!>
@Indenall@<:s><:#566,9360>Hiss spectrum upper limit, ranging from -127 to +127. This gives you precise control over the hiss spectrum.
<+@><:s><:#283,9360>
<+@><:#288,9360><+!>/<[>NO]FANCY<-!>
@Indenall@<:#1415,9360>Chooses between two types of screens. The fancy mode is only available if EGA/VGA display is present. If you are using a multitasking program such as Windows or Desqview turn off this option. Technical info for DV or Windows: "direct screen writes" are u
sed in FANCY mode, and BIOS writes are used in NOFANCY mode.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:#288,9360><+!>/<[>NO]OVER<-!>
@Indenall@<:#849,9360>Turns on/off file overwrite confirmation. If set to /NOOVER, you are prompted if an output file exists. If set to /OVER, output files will be overwritten without any user confirmation.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:#288,9360><+!>/<[>NO]PROCESS<-!>
@Indenall@<+@><:#566,9360>Turns on/off hiss processing. If you turn OFF processing, Nohiss functions as a voc file player. This feature can be used to hear differences between two files.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:#288,9360><+!>/<[>NO]PLAY<[>I]<[>O]<-!>
@Indenall@<:#1415,9360>Specifies what should be played back. Use /NOPLAY if you do not want to hear anything. Use /PLAYI to hear only the input file. Use /PLAYO to hear only the output file. Use /PLAYIO to hear both input and output files. Only VOC files can be played back
. Currently, only Soundblaster compatible cards (such as the ATI Sound F/X) and supported at this time.
<+@><:s><:#283,9360>
<+@><:s><:#288,9360><+!>/TIME=#<-!>
@Indenall@<:#849,9360>Specifies the duration of playback in seconds. For example, if you set /TIME=5 then only the first 5 seconds of a file will be played back. Setting this to 0 means there is no limit.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#283,9360><+!>
<+@><:s><:#288,9360><+!>/PORT=#<-!>
<+@><:s><:#283,9360>
@Indenall@<:#1132,9360>Specifies the Soundblaster IO port address in hexadecimal notation. By default, the SB is jumpered at 220, but you can set it from 210, 220... to 260. For example, /PORT=260 sets the port address to 260 hexadecimal. You may want to use the /SAVE option to
make this setting permanent in NOHISS.EXE.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#288,9360><+!>/SAVE<-!>
@Indenall@<:#1415,9360>This causes all options specified on the command line to become permanent. Option values are written to NOHISS.EXE bypassing the need for configuration files. On subsequent uses, you do not have to reenter command line options. For example, NOHISS /POST=
240 /SAVE /? saves the port number and noise reduction level, then displays the help screen. Filenames are not saved.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:s><:#288,9360><+!>/RESET<-!>
@Indenall@<+@><:#566,9360>Restores factory default settings. These settings are automatically written to NOHISS.EXE.
<+@><:s><:#283,9360>
<+@><:s><:#283,9360>
<+@><:#288,9360><+!><;> NUL<-!>
@Indenall@<:#1981,9360>This is not really part of Nohiss, but it is a very handy DOS redirection command that can be used to redirect screen output in some programs to a "null" device block hole sort of. You can use this redirection technique if you do not want anything displaye
d on the screen. Two important things to remember about this command: It can only be used with the /NOFANCY option (this is because in FANCY mode direct screen writes are used) and it must be the last option on the command line. Here is an example:
This will set the noise reduction level to 75%, set the range to 5 units, set the size to 10 samples, process the file overwriting OUTPUT.VOC if it exists, play the output file, and not pause after playing.
<+@>Error messages are reported on the screen as well as in the ERRORLEVEL
<+@>system variable in DOS. A successful run will set ERRORLEVEL to 0.
<+@><:s>
<+@><:s>
<:s><+!>1: INVALID COMMAND LINE OPTION<-!>
<+@><:s>You have entered an incorrect parameter on the command line.
<+@><:s>
<+@><:s>
<:s><+!>2: INPUT FILE NOT FOUND
<:s>Cannot find the input file.
<+@><:s>
<+@><:s>
<+!>3: VOC FILE COMPRESSED<-!>
The voc file contains a packed (compressed) block. Nohiss cannot process these types of files (along with most other voc utilities!)
<+@><:s>
<+@><:s>
<+!>4: VOC FILE CORRUPT/UNSUPPORTED FORMAT<-!>
<+@>The voc file contains and invalid block header or the file is corrupt. Check to see if other utilities can read this file.
<+@><:s>
<+@><:s>
<:s><+!>5: FILE READ ERROR
An error occurred during reading this file. Check to see if the file is accessible by other programs.
<+@><:s>
<+@><:s>
<:s><+!>6: FILE WRITE ERROR/DISK FULL?
<:s>Most likely, you are out of disk space on the output drive. You must have at least as much space as the input file.
<+@><:s>
<+@><:s>
<:s><+!>7: OUTPUT FILE SAME AS INPUT FILE
<:s>You must specify a different output file than the input file.
<+@><:s>
<+@><:s>
<:s><+!>8: OPTION VALUE OUT OF BOUNDS
<:s>The option does not have the correct range value.
<:s><:#283,9360>
@Indenall@<+@><:s><:#283,9360>
<:s><:#283,9360><+!>
<:s><:#283,9360><+!>9: CANNOT ACCESS PROGRAM FILE
The program could not write to NOHISS.EXE. Maybe the disk is write protected, or you do not have write privilege on your network.
@Indenall@<+@><:s>
<+!>10: SOUNDBLASTER PLAYBACK ERROR
An error occurred while playing a VOC file, bad format.
<+@><:s>
<+!>11: SOUNDBLASTER INTERRUPT ERROR
The Soundblaster is not configured correctly. Check to see if it works with other software.
<+@><:s><+">
<+!>12: SOUNDBLASTER NOT INSTALLED OR WRONG IO PORT<-!>
<+@>The Soundblaster is not installed in your machine, or the IO port base address is set incorrectly. You can modify the IO base port address by using the /PORT=# command, where # can range from 210 to 260 (hex). Note: This has been tested successfully with So
undblaster v1.5.
<+@><:s>
<+@><:s><:f400,FArial,0,0,0>
<+@><:s><:f400,FArial,0,0,0>
<+@><:s><:f400,FArial,0,0,0>
<+@><:f360,FArial,0,0,0><+!>SOURCE CODE<-!><:f>
<+@><:s>
<+@>NOHISS was written using Borland C++ v2.0. If you are interested in a copy of the source code, contact me at the addresses listed at the start of this document. If you have information on the decompression algorithms used by the Soundblaster, I am inter
ested! Let me know.
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:s>
<+@><:f360,FArial,0,0,0><+!>TRADEMARKS<-!><:f>
<+@><:s>
<+@>Borland C++ is a trademark of Borland International.
<+@>Soundblaster is a trademark of Creative Labs, Inc.
<+!>Gene "Music Man" Pope<-!> for many helpful suggestions and testing. Gene is an expert on digital sampling, and sound processing in general. His address is cosc12ui@jetson.uh.edu on Internet.
<+!>Aaron Wallace<-!> for clarifying the SND file format. Incidental, he originated the SND file format for PC's which is widely used by many programs. His address is aaron@jessica.stanford.edu on Internet.
<:s>
<+!>Kendall Bennett <-!>of Royal Melbourne Institute of Technology, Victoria, AUSTRALIA for pointing out the 43/50 line EGA/VGA bug.