PDA

View Full Version : The Validity of MD5 Checksums


Five
2020-02-07, 12:34 AM
this is an old article written by site founder RainDawg back in 2004, originally published in sharingthegroove.org technobabble then later on RainDawg's own website (now defunct). we still use md5 for video, but for audio we use st5/ffp for the last 15yrs or so.

In this thread find some lost pages from the past recovered via archive.org. enjoy.
-Five

The Validity of MD5 Checksums

Written By The RainDawg

I've heard several people voice a degree of skepticism as to how reliable the practice of using md5 checksums to validate files is. I mean, just how can a simple 32 digit number tell one file apart from the billions of billions of others on the internet? Well, for the more mathematically minded folks on here, check out this link for a quick description of the actual md5 algorithm:

RFC 1321 - The MD5 Message-Digest Algorithm (http://www.faqs.org/rfcs/rfc1321.html)

Incidentally, the output is actually a 128-bit number, though the output we generally see is encoded to hexadecimal. It is basically a random number ascribed to the particular combination of bits that comprise the file you are making a signature of. This signature is a single "word" that uses 16 characters (0-9 and a-f) and contains 32 places. Using that simple math you learned in high school, this means there are 16^32 combinations, or 3.403*10^38 possible md5 hash values.

Now, to give you an idea of the magnitude of this number, I just rambled off some simple calculations to give comparison. Scientists predict that the universe is 12-14 billion years old. Using the high end of that prediction as a baseline, it's easily calculated that the big bang occured on the order of 4.4*10^17 seconds ago. If you had a computer with the ability to randomly generate files and compute their checksum at 7.7*10^20 per second, it would have taken from the inception of the universe to the current time to randomly generate a file that matches a desired checksum.

Now, you've all verified checksums before, and just checking takes several seconds each, much less the random generation of a file of arbitrary size. Let's assume you had a trillion computers generating files since the beginning of time, you'd still have to have each one capable of randomly generating files at a rate of 770 million per second; impossible by even the most optimistic opinions of the limits of computing, now or in the future.

In fact, if I assume there are 1 trillion computers in the world and that there are 1 trillion files on each computer (both high estimates), there is still only a 1 in 340 trillion chance that there are two files that exist anywhere in the world that contain identical md5 hashes. And, of course, the chance of hitting on these odds is about the same as winning the pick 6 lottery....2 TIMES IN A ROW!

Now, these calculations do not take into account the fact that the file types would have to be compatible. The chance that two files return an identical md5 hash is so small as to be considered impossible. But even if they did, what are the chances that file would be a FLAC file, or even a valid file on a Windows system at all (or Mac, or Linux, or Atari 2600 for that matter). Even if the two files did match, they would be so markedly different that you'd know immediately upon attempting to open the file that wasn't a FLAC or SHN at all.

In conclusion, if you've read this far, this should prove to you more skeptical computers that it is simply impossible to a) create a file from it's md5 hash and b) to have a file pass the md5 hash and NOT be what you're expecting it to be.

Anyone who still doesn't think that md5 is a valid method of fingerprinting files must have a rather profound misunderstanding of the science of random numbers. I would have far more faith in the absurd tenants of tarot cards, the Bible Code, or even Hasidic numerology than to believe that the file I have is different than the one that created the md5 hash I'm verifying against....each of these "arts" has an infinitely higher chance of scoring a "hit".

Five
2020-02-07, 05:14 PM
another dated but useful article from 2004
FLAC Fingerprints

As an alternative to the wholefile md5 scheme required for .shn files, a newer format called the Free Lossless Audio Codec addressed this issue by making an md5 check of just the audio data contained within the file an inherent part of the file's structure. This elegant concept adds a short segment to the header of the FLAC file itself which contains an md5 of the original uncompressed PCM .wav data. This value is called the "fingerprint", a fitting title as it only validates the audio, not the extra data appended to the file. Using the FLAC fingerprint method, users could add or remove tags or change the compression setting and not change the actual audio contained within. Since the fingerprint only checks audio data, traders could change these values at will and they will still verify as identical to the original.

.flac gained rapid support of lossless traders over .shn for several other reasons. First, the filetype is both seekable and seamless, meaning no seek table data had to be appended to the file to use it in your favorite media player. It also contains a check during decoding that actually performs a check of the stored fingerprint value to what's actually inside the file, and if they don't match, the file will not decode. This double-checking ensures that files corrupted during transfer are unusable and therefore the error will not be passed on.

FLAC's use of the fingerprint allows users much more versatility while still maintaining the same core functionality : verifiying that the audio in your files has not altered since it was seeded. Of course, a user may still use wholefile md5 checks on .flac files if they see fit, but this is a practice performed out of ignorance rather than functionality. Using FLAC's fingerprinting is much more useful than wholefile md5 checking, and should be used 100% of the time.

Creating a FLAC Fingerprint File Using FLAC Frontend (http://www.thetradersden.org/forums/showthread.php?p=2837648#post2837648)

Five
2020-02-07, 05:23 PM
FLAC Frontend FFP Tutorial, 2004
Creating a FLAC Fingerprint File with FLAC Frontend

FLAC fingerprints represent the most versatile form of lossless audio verification currently available. To better understand what a FLAC fingerprint is, read this (http://www.thetradersden.org/forums/showthread.php?p=2837645#post2837645). To proceed with a step-through for creating a FLAC fingerprint file (ffp) with FLAC Frontend, read on.

Note: Due to serious inadequacies in older versions of FLAC Frontend (mainly it it's handling of sector boundary correction), please make sure that you are using version 1.7.1 or later, downloadable here (https://xiph.org/flac/download.html).

First, you'll need to have a complete set of properly named FLAC files. Open an explorer window and browse to the directory containing these files.

[image missing]

Open up a FLAC Frontend window. Drag the files from the explorer window into the FLAC frontend window.

[image missing]

Press the "Fingerprint" button, at which point a browse window will open. Direct this window to the same directory as the FLAC files are included. Note that this will output a .txt file which will contain the md5 fingerpring of just the raw audio data contained within the FLAC file. Name this file appropriately and press "OK".

[image missing]

A command line window will be opened by Frontend which will run the command necessary to grab the fingerprint data from the FLAC header and place it into a text file. After it has run, it will automatically close the command line window and the .ffp.txt file will apear in the original explorer window.

[image missing]

Open this file to see what the accepted format for a .ffp.txt file looks like. It should have written one line for each file contained within the folder you selected. If it doesn't, you didn't correctly add all of the files to the FLAC Frontend window and you should start over. If it does, you've successfully create a FLAC Fingerprint file.

[image missing]

Make sure to distribute this file with any sets that you trade or seed to an internet distribution site. This will help traders track and verify their files against the originals.

Five
2020-02-07, 05:30 PM
FLAC Frontend FFP Tutorial 2, 2004
Testing a set of FLAC files with FLAC Frontend

FLAC has the unique ability to store information about it's audio content within the header. The FLAC Fingerprint (http://www.thetradersden.org/forums/showthread.php?p=2837645#post2837645) feature takes an md5 checksum of just the audio data contained within the file. FLAC stores this number inside the header of the file itself, and thus each file can be independantly "tested" to confirm that it has not been corrupted. When you "test" a FLAC file it will take the md5 checksum of the audio contained within the file, compare it to the result stored in the header (put there when the file was originally encoded) and return a pass/fail. This is a simple way to confirm that the file you have has not not corrupted. This is also useful when you've downloaded a file off the internet either with BitTorrent or any other transfer protocall. Run a quick test on your file; if it fails you did not complete the download correctly. If it passes, you're good to go.

Note: Due to serious inadequacies in older versions of FLAC Frontend (mainly it it's handling of sector boundary correction), please make sure that you are using version 1.7.1 or later, downloadable here (https://xiph.org/flac/download.html).

Testing FLAC files is an incredibly easy process, but a necessary step in confirming files after a download has completed. To run a test, simply browse to a collection of FLAC files with a given folder.

[image missing]

Drag all of the files into the fresh FLAC Frontend window. Press the "Test" button located towards the bottom right. This will open a command prompt window and begin displaying the results as it checks each file. It will take several seconds to perform each check, depending on the length of the file.

[image missing]

When done, the window will pause so that you can review the results of each file's "test". Once you're satisfied that all files have been tested successfully, press any key to close the window. The ability to self-test is something that is incredibly easy yet extremely useful for lossless file trading. Always be sure to run a test of your files every time you transfer them off of a CD, DVD, through the internet, or between computers.

[image missing]

Five
2020-02-07, 06:04 PM
important early document about "shntool md5s" (now called .st5) from 2004. shntool like the engine inside Trader's Little Helper (http://tlh.easytree.org/), and is even more powerful when run directly from the command console.

for clarity, I have changed each mention of "shntool md5" to "st5", and the outdated "md5" command to current "hash".

Using st5s

As opposed to traditional "wholefile md5" checks, the fantastic audio file utility shntool has the ability to create an md5 check of just the encoded PCM wav data contained within a given lossless file. st5 can perform an anlysis of virtually any lossless file type you have installed on your system. The clear advantage is that users can change from one format to another, add file tags, add or update seek tags, or any other number of things that perviously would have changed the wholefile md5 check. Yet using the st5, files with identical audio content will have the same checksum regardless of what extra, format changes, etc it has been through so long as the audio remains the same, the container can change at the will of any trader. Before proceeding with this tutorial, please ensure you have shntool installed. If you do not have it installed, please do; it's simply priceless software.

Indicendtally, the st5 of a FLAC file is identical to it's FLAC fingerprint, as both are checking for the same thing: pure audio content [the hash values are also identical, only formatting is different]. If you use the FLAC fingerprint (ffp) for FLAC seeds, st5 is redundant. [st5 is the best choice of the two, or both okay. md5 not necessary.]

The st5 function is most easily run with a DOS batch file (http://www.thetradersden.org/forums/showthread.php?p=2837668#post2837668) to automate the command line switches. Create a new batch file with the following text. This will run and st5 check on every shn, flac, wav, or ape file within the folder and report the result to a file named st5.txt which will be placed in the same folder. Note that sometimes this can can be somewhat slow, epscially with ape files. To ensure that every file is checked, please wait until "Press Any Key To Continue" appears in the command line window running the script.

@echo off
%~d1 & cd %*
for %%T in (shn flac wav ape) do if exist *.%%T shntool hash *.%%T>>st5.txt
pause

Save and close the batch file. Now simply take any folder that contains any shn, flac, ape, or wav files that you'd like to check and drag it onto the batch file. A command line window will pop up yet remain blank during the time that it is testing and recording the st5. After completion, you can check the st5.txt file and/or rename it however you see fit.

Circulating an st5 with your original seeds will allow traders to track and confirm their source without being restricted to any given format to tagging scheme. It will allow traders to focus on the only important thing: the perfect duplication of audio content from trade to trade. Though shntool is somewhat tricky to setup, st5s are a big help to traders and always a welcome addition to any seed.

Five
2020-02-07, 06:09 PM
legacy software article, 2004
Creating a DOS batch file.

Many of us on a Windows PC today take for granted the ease of use which comes with a graphical user interface (GUI). This makes using programs easier, prettier, and more efficient. Yet before the creation of graphical interfaces, computers required the use of "command line" programming: simple text commands given to the operating system. There are many programs still in use today that are either exclusively command line applications or permit the use of command line options to increase the functionality. One such example is shntool, an incredibly powerful audio file application which I use quite frequently.

To automate the use of command line applications, something called a "batch file" was create to send a series of commands, one at a time, to a list of programs. For repetitive work, it can save quite a bit of typing. Batch files can also be used for any commonly used function, preventing the user from having to manually type it each time they wish to use it.

Creating a batch file is really quite simple. There are sections of this website that will refer to creating and using batch files, so I've setup this quick guide for creating and using one. This is not, however, a guide for coding a batch file. There is an enormous amount of information on this topic available on the internet and I'd prefer to not re-create the wheel.

To create a batch file, open Notepad. Click File > Save As. Browse to the directory you'd like to save the file in. In the "Save as type" input box, select the "All Files" option. Then type in a filename ending in .bat instead of .txt. This will identify it as a batch file. Once the file is save, add valid DOS batch file commands, save, and close the file when done.

[image missing]

Once the batch file has been completed, it can be run by double clicking. If the batch file requires another file or a folder as and input it can be triggered by dragging the file/folder onto the batch file in a Windows Explorer window. The batch file will run whatever commands you have programmed it to do and automatically display the necessary results.

[image missing]

Five
2020-02-07, 06:26 PM
command line software article, 2004.

latest version of shntool here:
http://shnutils.freeshell.org/shntool/


cygwin1.dll no longer required in 2020, everything else is the same.
shntool

Shntool is the ultimate audio file checking and simple conversion utility. The most commonly used feature is it's ability to check audio files of virtually any lossless format for sector boundary errors and, if necessary, fix those errors. Fluency in shntool should be a pre-requisite for anyone who wishes to do lossless audio file trading. Since it's a command-line only application, many users shy away from it's use out of sheer intimidation caused by a lack of a GUI. Allow me to dissuade you from feeling scared any longer....

The first step to using shntool is installing the program and the binaries for each file format you wish to use. This tutorial assumes you're using a Windows-32 based system, though many of the terms here carry over to the Mac OSX environment. If Linux is your OS of choice, I'll assume you're comfortable enough with the command line to not need this page at all. All of necessary program files and file format binaries can be found downloaded free of charge here (https://web.archive.org/web/20050204234717/http://etree.org/shnutils/shntool/). You'll want to place a copy of shntool.exe and each .exe codec you plan on using into your Windows PATH directory (on most systems, unless configured otherwise, this will be C:\Windows directory).

Note: In order to run shntool, you will need an updated copy of cygwin1.dll in your PATH as well. This comes packaged in the .zip file if you download shntool from the main www.etree.org page, but also can be obtained as the last item in the list linked above.

Once you've got all the files placed into the PATH directory, you're ready to go. It's that easy. You may want to read through the shntool documentation to get a firm grasp on the powerful utilities that lie at your fingertips, but if you're just interested in running a few simple commands, here's some quick guides that may help you out.

Checking for Sector Boundary Errors and CD Compliance (http://www.thetradersden.org/forums/showthread.php?p=2837687#post2837687)
Using st5 (a better format than traditional wholefile .md5 checksums) (http://www.thetradersden.org/forums/showthread.php?p=2837665#post2837665)

Five
2020-02-07, 06:38 PM
shntool tutorial, 2004. Trader's Little Helper (http://tlh.easytree.org/) also performs this function. FLAC Frontend (http://flacfrontend.sourceforge.net/) can correct without preview using checkboxes.

we are still observing the rule of 588 sample sectors for cd compatibility into 2020, even though not so many people burn audio cdrs these days.
Checking for sector boundary errors and CD compatibility with shntool

It is good practice to only trade CD quality, sector aligned data files. To check a set of files for sector boundary errors (files that are not aligned to sector boundaries) and CD compliance, run then shntool -len command. Using command prompt, navigate to the the folder containing files that you would like to check and type "shntool len *.shn" to check all shn files in that directory. Of course, to check any other file types, substitute ape, flac, wav, or whatever lossless codec your files employ. shntool will then output a summary of qualities pertaining to each of the files checked. Before proceeding with this tutorial, please ensure you have shntool installed (http://www.thetradersden.org/forums/showthread.php?p=2837680#post2837680). If you do not have it installed, please do; it's simply priceless software.

This command is most easily run from a DOS batch file (http://www.thetradersden.org/forums/showthread.php?p=2837668#post2837668), and for the command line dummy, you'll want to do this right away. Open a Windows Explorer window and create a new file named shnlen.bat. Now right click on the file and select "edit" from the list; a blank window should open in Notepad. Copy and paste this text to the window:

@echo off
%~d1 & cd %*
for %%T in (shn flac wav ape) do if exist *.%%T shntool len -u mb *.%%T
pause

Save and close the batch file. Now simply take any folder that contains any shn, flac, ape, or wav files that you'd like to check and drag it onto the batch file. A command line window will pop up and show the results for each file within the folder:

[image missing]

In this particular case there are sector boundary errors on several of the files. You can notice that in the cdr column there is a 'b' noted for track 9 and 10. This set needs to be fixed to be properly sector aligned before burning this set to a CDR.

Here's a list, from the shntool documentation, of what each section's error code means (note that the "x" here is because of the fact the source files were compressed and not decoded PCM data...if this were a .wav file, this would have been a "-" as well):

'-' this particular entry is OK
'x' this particular entry is not applicable or cannot be determined

cdr column:
'c' data is not [C]D-quality
'b' CD-quality WAVE data is not cut on a sector [b]oundary
's' CD-quality WAVE data is too [s]hort to be burned

WAVE column:
'h' WAVE [h]eader is not canonical
'e' WAVE file contains [e]xtra chunks

problems column:
'3' file contains an ID[3]v2 tag
'i' WAVE header is [i]nconsistent about data size and/or file size
't' WAVE file seems to be [t]runcated
'j' WAVE file seems to have [j]unk appended to it

After using the shntool -fix command, the set becomes properly aligned to sector boundaries. Here's a plot from the same list of files after running shntool -fix on the set. Notice how the 'b' in the cdr column is now gone and no errors occur. This set is now suitable for seeding or burning to CDR.

[image missing]

Five
2020-02-07, 07:06 PM
legacy software tutorial, 2004
Creating st5s on a Macintosh using xACT

As opposed to traditional "wholefile md5" checks, the fantastic audio file utility shntool has the ability to create an md5 check of just the encoded PCM wav data contained within a given lossless file. st5 can perform an anlysis of virtually any file lossless file type you have installed on your system. The clear advantage is that users can change from one format to another, add file tags, add or update seek tags, or any other number of things that perviously would have changed the wholefile md5 check. Yet using the st5, files with identical audio content will have the same checksum regardless of what extra, format changes, etc it has been through so long as the audio remains the same, the container can change at the will of any trader.

Indicendtally, the st5 of a FLAC file is identical to it's FLAC fingerprint, as both are checking for the same thing: pure audio content. If you use the FLAC fingerprint (ffp) for FLAC seeds, st5 is redundant.

The following tutorial was written by U2Lynne

1. Locate files on your computer.

[image missing]

2. Open xACT to the checksum tab and drag the files into the window.

[image missing]

3. Hit the Checksum button.

[image missing]

4. Hit the st5 button (verify is the default).

[image missing]

5. It prompts you to save it somewhere, find the same folder.

[image missing]

6. Name the st5 you are creating properly and hit Save.

[image missing]

7. It makes the st5s (it will take a couple of minutes).

[image missing]

Five
2020-02-07, 07:17 PM
video tutorial, 2004
Checking Video Statistics with GSpot

GSpot is a fantastic little utility for Windows systems which can take most common video formats and test all of the codec stats, including audio, video, length, etc. The latest version (still in Beta at the writing of this guide) can read MPEG formats. Since DVD employs the MPEG-2 video codec, this program is perfect for testing the stream info for your DVD-Video discs. To download the latest version, head to the GSpot 2.52 Download Page (https://www.headbands.com/gspot/). Make sure to grab 2.52 or later, as 2.51 and previous versions did not work with MPEG files.

To use this program to check a single file, simply open GSpot and the open the file you wish to check. To find out the pertinent information on a DVD-Video disc, place the disc into your DVD-Drive and browse to the VIDEO_TS folder, which contains the .vob (authored MPEG-2) video files.

[image missing]

Open a new instance of GSpot. Drag the file named VTS_01_1.VOB info the GSpot window. This will scan the file and load all of the relevant stats. Some DVDs may have multiple "titles" included, in which there will also be a VTS_02_1.VOB, etc. In most cases, the statistics for these titles will be the same, though sometimes the codec/bitrates can be different. They will, however, always use the same video system. When seeding DVDs on the internet, the most pertinent stats are:

1. Audio Codec
2. Audio Bitrate in Kilobits per second (kb/s)
3. Video System - The only way to tell this is to look at the framerate (frms/sec) of the video. 25.00 is used for PAL and 29.97 is used for NTSC.
4. Video Bitrate in Kilobits per second (kbps)

[image missing]

Five
2020-02-07, 07:22 PM
legacy software tutorial, 2004
Creating a .torrent file with Azureus

Azureus (https://web.archive.org/web/20041030040224/http://www.azureus.sourceforge.net/) is alltogether one of the most robust and visually appealing BitTorrent clients, but also provides remarkably simple wizard for creating a new .torrent file for seeding on any public tracker. Even better, this program will run equally as nicely on Windows, Macintosh, and Linux. I highly recommend that BitTorrent veterans and newbies alike give this client a try.

Before you start this step-through, you'll need to make sure every file in your torrent has ben saved and is not currently being used by your system. Any file changes after the creation of the .torrent file will cause all peers to be unable to properly finish the download from you. So finish editing and .txt or .nfo files, close your media players that may be using a files you're downloading, etc.

Once you're ready to go, open up Azureus. Click on "File" in the menu and select the "Create a Torrent" feature.

[image missing]

The first window is the wizard will ask you for four pieces of information.
1. First, you'll need to select the "Use an external tracker" opetion. Type in the announce URL for the tracker you wish to seed to. Azureus will save this URL so that future torrents to that tracker can be created more easily.
2. The second section asks you if you want to use multiple trackers or include md5 hashes for some other filesharing networks. Unless you know what these mean and have a specific use for doing such an action, I recommend that you uncheck these boxes.
3. I always seed a directory of files with an informational .txt file, but if you're just seeding one file, you can choose that option as well.
4. Comments are optional. Use them to make a short description of the contents of your seed.

[image missing]

Type in the directory you wish to create a .torrent file or use the "Browse..." button to pick from an explorer window.

[image missing]

Select a location and filename for the new .torrent file. It's best to allow Azureus to pick the best piece size but selecting "Auto" from the pull-down menu.

[image missing]

It will take a few seconds to create the md5 hashes for the files in your torrent, and may even take up to several minutes for "larger" torrents. Once it's done, simply take the created torrent file and upload it to the tracker you're seeding to in whatever manner specified by their admins.

Five
2020-02-07, 07:28 PM
legacy software tutorial, 2004
Winamp Configuration for Lossless File Types

The following tutorial was written by Five

www.winamp.com

[image missing]

I prefer v2.81, old versions are available from these sites:

http://www.winampheaven.net
http://www.oldversion.com

WINAMP SUPPORT FOR SHN - FLAC - APES

Shorten:
http://forums.winamp.com/showthread.php?t=257776

FLAC:
http://www.winamp.com/plugins/details.php?id=131643

FLAC frontend also comes with it as I recall:
http://flac.sourceforge.net/

Monkey's Audio:
You have to install the frontend then install the plugin, in your D:\Program Files\Monkey's Audio\MAC Winamp Plugin (PIMP).exe. You can copy this and uninstall the frontend afterward if you just want the winamp plugin.

http://www.monkeysaudio.com/

Or...

It asks whether to install the plugin when you install the program. That's the easiest way I guess. If you chose not to do it then you can also open up the program, go to the general settings and press the button there.

***Gapless playback!
Also very important is to configure WinAmp for gapless audio playback for a seamless listening experience. There's a couple ways to do this:

You do not need any external gapless plugins for Winamp. Just use the default directsound/waveout plugin, go to preferences/plugins/output/configure/buffering and set the 'buffer ahead on track change' to something like 1 or 2s. Also select the fading tab and disable all fades. There, completely gapless playback without any flashy external plugins.

The other alternative (you guessed it) is to use a gapless audio plugin:

I believe Shnamp 2.02 comes with this one:

http://www.winamp.com/plugins/details.php?id=24303

I use this one:

http://www.winamp.com/plugins/details.php?id=107818

To activate after installation, use <Ctrl+P>, then go to "Output", then select one of these two.

*thanks to Kotti for showing me how to configure WinAmp for gapless playback without plugins and pointing out that Monkey's Audio Frontend asks you if you want to install the WinAmp plugin when you first install it.

Five
2020-02-07, 07:59 PM
legacy Cool Edit Pro / Adobe Audition tutorial, 2004
Removing gaps between tracks on TAO CDs or CDs sourced from non-sector aligned WAV files.

Two of the more common problems that arise in CDR trading are Track-at-Once (TAO) burned discs and discs that are burned from WAV files that are not aligned to a proper sector boundary. Luckily, these two problems are fixed fairly easily using Cool Edit Pro and some of the fantastic features it has. I still use Cool Edit version 2.1, but I think the features are pretty much the same in it's new incarnation, Adobe Audition. There are several other programs that do this, but none quite as nicely as it's done here. Cool Edit is able to open a set of WAV files and piece them together into one long segment, allowing you to see exactly where a silence begins and ends. Second, Cool Edit has an auto-smoothing feature that will blend together two sections of audio that are joined together by the deletion of what's between them. This ensures that when you remove the silence the two portions around it flow smoothly; other programs without this ability can leave a small click at the junction.

First, and most importantly, make sure that auto-smoothing is enabled. Go to Options > Settings > Data. The default settings shown here should be sufficient for removing silence and smoothing the audio.

[image missing]

As the first step to removing the gaps, open an entire set of WAV files that are intended to flow together using the Open Append command. If you're unsure how to do this, there is a quick tutorial over here (http://www.thetradersden.org/forums/showthread.php?p=2837720#post2837720). Once you've got a whole set opened, the window will show the long WAV file with cue list data storing the track splits. Your silences will be near these points.

[image missing]

When zoomed all the way out, it doesn't look like there are gaps between the tracks, but when we zoom in a bit we'll start to see the offending silence. So, go ahead and go to the first cue point and begin zooming in on it. A tip for those of you with a wheel-mouse: place the cursor on top of the cue point and spin up to zoom in and spin down to zoom out. This is quite handy for big files like this. Note that in this example the silence falls all within a single track, but many times the silence will span two tracks and the cue list split will be in the middle. Just follow this example exactly the same, and the cue point will be moved to the audio just outside of the portion you delete so that the track split stays in the same place.

[image missing]

Now that we've zoomed in far enough to see the silence, we can go ahead and select it to remove it. Keep zooming in on one side of the gap until you can see the individual samples. Select the exact point and where the silence begins and drag over to create a selection.

[image missing]

Now zoom start zooming back out a few steps at a time, continuously stretching the selected region as you go.

[image missing]

Keep zooming out until you get to the other side of the gap. Now stretch the selection until it covers the entire gap PLUS a little bit more.

[image missing]

Now you can start zooming in on the end of the silence, slowly shrinking the selected area to get closer and closer to the end of the silence. Eventually, you'll be close enough to position the end of the selection to the exact sample where the silence end.

[image missing]

Now that we have the silence and ONLY the silence selected, go ahead and press the delete button. The entire silence will be deleted and the two sections of audio surrounding them automatically smoothed. Some other audio editing packages will not do this smoothing. Now, all you'll need to do is zoom back out and repeat this feature for every spot where there should be continuous audio that has been separated with silence. It can be somewhat time consuming, but it one of the simpler techniques in audio editing, and repairs a rather common problem.

Five
2020-02-07, 08:04 PM
legacy Cool Edit Pro / Adobe Audition tutorial, 2004
my personal opinion is to take this opinion with a grain of salt. I admit that some shows need help with this. my old ipod recordings needed this (poor a>d).
Correcting the DC Offset

A musical waveform, as with any other waveform, contains spectral components of varying frequencies. Part of this spectrum is known as the direct current component; basically a 0Hz signal. Ideally, there should be zero spectral activity as the signal approaches 0Hz, for several reasons, which are beyond the scope of this tutorial. Simply speaking, if there is a portion of the signal power contained at close to DC frequencies, it can adversely affect the sound quality of your recording and, at very high levels, can cause damage to your speakers or amplifiers. While it’s highly unlikely that you should worry about equipment damage, sound quality degradation as a result of DC offset problems is actually quite common, is very simple to fix, and can give your recording just a little more crispness and clarity. DC components as part of your musical waveform is often called an offset because it evidences itself as the overall waveform not being centered around 0 amplitude, but by either being above or below the horizontal axis in a simple waveform plot. If it is large enough, you will be able to observe an “offset” as the wav sits above or below the 0-amplitude centerline

Note: If you are going to be remastering a recording, DC offset correction should be the first step. Always apply this before any other steps, including fade-ins and fade-outs, as well as more complicated procedures.

The easiest and most effective way of correcting the DC offset is to use Cool Edit Pro. As with many of my tutorials, I recommend using the "Open Append" command and run the correction on an entire set all at once. This will ensure that each track is shifted together. Otherwise, it's possible that the shift will be greater on one track than on an adjacent one, and the resulting change in amplitude between the tracks may cause a small click to appear. To ensure your recording stays perfectly smooth between the tracks, and to save yourself time, apply the DC offset correction on the whole set. For a quick instructions on using Open Append, click here (http://www.thetradersden.org/forums/showthread.php?p=2837720#post2837720).

Note: Only apply this on recordings from a single source. If two separate sources with difference DC offset values are fixed at once, your correction will not be as effective and may actually be worse.

First, analyze the WAV to see if correction is necessary. There are two ways to do this:

1. Select the entire WAV (<Ctrl>+A), then go to Analyze > Statistics. Look at the value for "DC Offset". If it is not zero, this recording could benefit from dc offset correction.

[image missing]

[image missing]

2. If the DC offset is large enough, zooming in on a quiet portion of the audio will reveal that the DC offset is high enough to cause the waveform to ride above or below the red centerline.

[image missing]

If your recording needs to have the DC offset corrected, simply select the entire WAV (<Ctrl>+A). Go to Effects > Amplitude. A window will pop up with a set of preset templates to process the amplitude of your waveform. Select the "Center Wave" option, and press OK.

[image missing]

It's that simple. You can see that the wav is now centered about the red centerline. Compare the plot below to the one above, and notice the huge difference. Your ears will thank you.

[image missing]

Five
2020-02-07, 08:05 PM
legacy Cool Edit Pro / Adobe Audition tutorial, 2004
Opening a set of files using "Open Append"

The "Open Append" command is a remarkably useful tool for remastering a group of WAV files at once. This command will open a selection of WAV files, combine them together into one long track, and store cue data into the WAV file to remember where the original track splits were. I use this feature for many of my remastering examples because, generally, you want to apply the same effects to entire sets. It is also useful in making sure multiple tracks that flow together remain seamless; editing files one at a time can result in discrepancies between the amplitudes on the track splits, causing a click if these tracks are played together. Here's a quick tutorial for opening and exporting a set of WAV files.

Head to File > Open Append. Select all of the files you are going to be working on in the dialog box that opens. Before you press OK, make sure to go to the "File Name:" box and make sure everything is listed in the right order.

[image missing]

It will take a few minutes to open up all of the WAVs, but when it's done, you'll see one long waveform split apart by cue list data, with the original file names shown along the top. Below the waveform there should be a window in which this cue data is displayed. This will take a form of a list with each of the original file names and the start/end points of the sections they cover.

[image missing]

At this point, go ahead and perform whatever editing you wish to do to your set. When you're done, and ready to export the long track back to individual WAV files, go ahead to the rest of this tutorial.



Once you're done editing, go to the cue list info window, and select the entire list. Press the "Batch" button to bring up the output. First, select the "Use Cue Label as Filename Prefix" to have the output files named the same as your source files. Choose an output directory that is different to the location where the original WAVs are stored and select PCM from the "Output Format" dropdown menu.

[image missing]

Press OK and watch as Cool Edit writes your newly smoothed WAV files to the selected directory. Note that the output files will not be sector aligned. You will need to use shntool or FLAC Frontend version 1.7.1 or later to correct this before burning to CD or you will recreate the very problem you just fixed!

Five
2020-02-07, 08:32 PM
legacy article, 2004. here he is speaking about his own site but it represents the attitude of ttd pretty much perfectly. 'bootlegger' should be expressed as 'taper/trader' but overall its still relevant and important to ttd core philosophy.
NEW SITE NEWS

If you're looking for news about the new BitTorrent and trading site I'm working on, the following link will be the permanent home (even after site launch) of news, updates, and status of the site: [archive] (http://www.thetradersden.org/forums/showthread.php?p=2837727)

Introduction

“Some of these bootleggers, they make pretty good stuff” –Bob Dylan

Welcome to my live music trading website. Traditionally, "bootlegging" refers to the rather seamy business surrounding unauthorized recordings. It generally meant that someone was illegally obtaining material with the intent to make a profit from an artist's work. Unreleased studio tapes were often stolen or bribed from money-grubbing studio-hands. All manner of methods were employed to obtain caches of live concert recordings that could be used to make bootleg records or tapes, and eventually CDs. Before the communications explosion of the mid 1990s, most fans had to shell out obscene amounts of money to acquire recordings that were oftentimes sonically inferior to "official" releases. It was rarely a rewarding purchase, but the hardcore fans of certain artists would do anything to obtain clips of music they would be able to purchase in a record store.

As with much of popular society, bootlegging took on a new face at the advent of the internet. Fans of music who simply wanted to hear recordings they otherwise wouldn't be able to developed distribution channels through which unofficial music could be traded. This practice has grown to such proportions that many people who are serious about music have begun collection and trading bootleg recordings.

The goal of the owner of this site is simply to collect and help others in the hobby of collection bootleg music. On this site, you will find no officially released material. Most modern bootleggers (myself included) believe that nothing should be traded that can be officially purchased through normal commercial avenues. We take a strict stance against music piracy, and believe in the virtue of financially supporting the performers or organizations which bring us the music we love. We also believe that unofficial recordings should be given or traded free of charge. This website and many others like it have taken a commitment to tape, trade, and archive music solely for the love the art. There should be no profit made and our archives should, as much as possible, contain material that cannot be purchased in a record store.

Since bootleg music is spread through thousands of hands, it is important to keep the music lossless CD quality. Despite what some supposed music fans will tell you, mp3, ogg, aac, wma, and other lossy music files are NOT CD quality. They employ compression which discards certain parts of the music in favor of smaller file size. While it is true that these formats, if a high enough bitrate is used, are perceptually similar to the original CD quality file, it is considered bad practice to use these formats. Many, many people will obtain recordings that you trade, and for the good of the bootleg trading pool, lossy compression schemes should NEVER be used. NO LOSSY FILE FORMATS (MP3, OGG, AAC, WMA) ARE ALLOWED ON THIS SITE!

So, if you'd like to browse through my tradelist, look over at the left-hand side of the site and you'll see links to my audio and video lists. Feel free to contact me with any questions or to setup a trade. I am always willing to help in any way I can and, time permitting, am always up for trading for new music. Keep it free and keep the music pure.

Five
2020-02-07, 08:53 PM
Countdown to ttd launch blog Part 1, 2004-10-25. sol4590 is now "The RainDawg". Can you feel the electricity? :cool:
SITE NEWS (updated 10/25/2004)

First of all, yes, www.sharingthegroove.org is officially dead. The owner has decided that he no longer cares to manage the site. There are many, many rumors out there, most of which are untrue. Regardless, a great thing has been lost from the community, and I apologize on behalf of myself and many other ex-mods that the final few months were such a disaster, with such final and unfortunate results. None of us, myself included, knew how it was going to end until it did.

After posting a short message in one of the bt.easytree.org torrents about my involvement in a high-quality BitTorrent trading site, I got well over 100 emails from people within a few hours asking for updates. Yes, it's true, I am currently working with several other displaced admins and mods from the now permanently defunct STG to bring you a new site dedicated to sharing music with a special tilt towards technical discussion and higher quality seeds. This is NOT STG2 or a rebirth in any way. It is an entirely new experiment in unofficial music trading ideology.

We currently have a good team of moderators and administrators in place, and are all confident that we can maintain a good website. Our goal is to have the site run entirely from donations and we'd like to abstain from advertising completely. We've had several offers of financial assistance from various people, and we appreciate these. We're not at a point where we can accept these offers right now but we will certainly need help as we go live and adjust our webserver package. Juding by the incredible interest in the community right now, we're expecting quite a few visitors and a likely server upgrade early on in the site's existence. If you'd like to donate, please wait until we have the site up and running.

Finally, we all believe in having an open community. I have put this news on my personal website because I believe in making a personal connection with you, our potential userbase. This will not be another situation where you will be lead to false hope through a barrage of inaccurate data. Myself and the others involed in this project will be straight and up front with you.

As an additional note we are looking for someone with skills in Linux to help write tutorials to be posted on this site, as it will serve as a technical archive for our new endeavor (to save server load). Browse over the few I've got to get an idea of what we will need. If someone could writeup something about audio playing, editing, exact cd ripping and compressing, or anything else for Linux, I would be happy to add it here. You will, of course, be credited however you choose. We need all the help we can get in building a community where technical tutorials can help anyone make quality, verifiable seeds.

Thank You,
The RainDawg

Five
2020-02-07, 08:59 PM
Countdown to ttd launch blog 2004-10-29.
The RainDawg's Guide To Unofficial Collecting

SITE NEWS (updated 10/29/2004)

I'm updating this page to let everyone know that we're getting closer to going live. We have a site name and a domain registered, but I am unable to announce it right now because the site is not quite ready for public use.

Also, we've deicided that it's time to let you all know who we are, so here's a list of the handles each of us go by. You may recognize some of us from the now defunct www.sharingthegroove.org, but we've also expanded to include some that many will not know. We have a very strong team who really are doing an outstanding job putting together this new trading community. The parties involved are:
bill_kate, bowman, DDSTree, Five, RainDawg, Rider, severin, and U2Lynne

Also, we've written a mission statement to help define what we're all about:
Welcome to The Traders' Den. We the administrators will be familiar faces to some, and new to others. Each of us have been involved in various trading communities for many years, and many have worked together on other trading sites. We have come together to create a online trading site with an entirely new ideology. This site will be geared towards a certain kind of collector: those who feel quality and integrity are important. Our policies will seem demanding to many users, but we have witnessed the decline in overall quality in many other trading circles due to lax restrictions. We offer a safe haven for traders frustrated with the dilution of quality in the trading pool, as well as our combined experience and devotion to helping new users enter an elite trading community.
Quality is not an option in the seeds here, it will be the standard.

Once again, note that we aim to have an open, userdriven community. Please feel free to email or get me on AIM if you'd like to talk about this new venture. Also, the site will run without advertising and will rely on donations for operational costs. However, we are unable at the current time to accept donations as the framework for doing so is not in place. Thank you all for the many generous offers we've recieved for funding, and note that once the site is officially launched, you will be able to donate whatever you can.

Thank you all for your patience. We're doing all we can to build an impressive and fun environment, and want to make sure it's right before going live. Keep watch of this page over the next week for an update on what day we're going live.

Thank you again for your interest in this new project,
The RainDawg

Five
2020-02-07, 09:03 PM
Countdown to launch blog 2004-11-04.
The RainDawg's Guide To Unofficial Collecting

This news page is dedicated to providing a running status of the new high quality BitTorrent community I am involved in called The Traders' Den. This site will remain updated throughout the life of the site providing information about the current status.

SITE NEWS (updated 11/4/2004)

I know it seems like it's taking a long time, but we're making such outstanding progress on this site, and want everything to be perfect. Thanks to the thousands of people who have visited this page looking for info on the new site. It's encouraging to see so many people wanting a better and more quality-driven community, and rest assured that everyone involved is working hard to make sure that we don't dissapoint.

We are getting very close to being ready to go live. Though there's no definite timeline yet, stay tuned to this website as we should be able to give out the name and the release day sometime in the next week or two. Just to give you an idea of what features we're putting into the site, here's a few teasers:


An automated tracker upload page that will allow you to upload a .torrent and create an announce thread by only filling out info in an interactive upload page. No more arguments over thread titles or what information needs to be included.
A huge FAQ including software tutorials, technical information, and guides for doing error-free lossless seeding and trading. The FAQ will be open to submissions from users and is therefore limited only to the imagination and dedication of it's userbase.
A detailed seeding policy to help restore a feeling of confidence in the trading pool.
An open suggestion forum where any user can make requests, issue criticisms, and suggest improvements for the site. The administrators have dedicated themselves to responding to any and all posts to ensure that every user at least gets an explanation to their questions or comments.

Five
2020-02-07, 09:05 PM
Countdown to launch blog 2004-11-08.
The RainDawg's Guide To Unofficial Collecting

This news page is dedicated to providing a running status of the new high quality BitTorrent community I am involved in called The Traders' Den. This site will remain updated throughout the life of the site providing information about the current status.

SITE NEWS (updated 11/8/2004)

We've welcomed a new moderator, [SpankSinatra], into the site. He's helped us by designing the site layouts, custom icons, and banners. He'll be hanging around after launch to maintain the site aesthetics and help moderate the forums.

Please stay tuned to this page as we'll be announcing the site's name and a "going live" date within the next couple of days!

Five
2020-02-07, 09:07 PM
Countdown to launch blog 2004-11-09.
The RainDawg's Guide To Unofficial Collecting

This news page is dedicated to providing a running status of the new high quality BitTorrent community I am involved in called The Traders' Den. This site will remain updated throughout the life of the site providing information about the current status.

SITE NEWS (updated 11/9/2004)

Good news! The site has been completed, and is currently undergoing a period of peer review. Some close friends and respected tapers have been asked to come in and test the site out. Starting tomorrow morning, there will be about 10-20 people poking around, helping debug any problems. Right now there are 4 seeds on the tracker, each transferring nicely. If all goes well with the first few test seeds, we will be opening our doors to the public next Tuesday.

If you have some rare or unreleased material with complete lineage available that you'd like to seed, please contact me personally so that I can set you up with an advance account. We'd like to have the world pass through our threshold into an already bustling comminty of trading, technical discussion, and active BitTorrent seeds. If you want to help in this respect, let me know what you're willing to seed and I'll get you the login information.

We're coming down to the final days of the initial phase of site development, and we are all very happy with the results. We've done more over the past few weeks than we ever imagined was possible during our previous endeavors in the BitTorrent trading world, and it's just the beginning. As we have time to conitune to develop our tracker, forum system, and build on our FAQ we honestly believe that we'll be able to distinguish our site as the premier BitTorrent trading site on the internet. It seems that every day or so I hear about another upstart BitTorrent site that beat us out of the gates. We've opted to spend some time and money up front to develop a good team, put together a nice framework, and make it look nice before allowing the world to see. We thank all the hundreds of people who check back to this page every day for their patience. The time is coming when a new trading site unlike any other on the internet will be upon you.

Five
2020-02-07, 09:08 PM
Countdown to launch blog 2004-11-11.
The RainDawg's Guide To Unofficial Collecting

This news page is dedicated to providing a running status of the new high quality BitTorrent community I am involved in called The Traders' Den. This site will remain updated throughout the life of the site providing information about the current status.

SITE NEWS (updated 11/11/2004)

Initial testing at The Traders' Den has been going fantastically. There are a handful of active seeds and a rapidly building discussion board. There have been a few typos and bugs caught by some very eagle-eyed users, so we're glad to have decided to do this peer review period. If things continue to go as well is it has, we're planning on allowing open membership early next week.

Five
2020-02-07, 09:09 PM
Countdown to launch blog 2004-11-16. final entry.
The RainDawg's Guide To Unofficial Collecting

This news page is dedicated to providing a running status of the new high quality BitTorrent community I am involved in called The Traders' Den. This site will remain updated throughout the life of the site providing information about the current status.

SITE NEWS (updated 11/16/2004) - The Traders' Den Open to the Public

The Traders' Den is finally complete, and ready to open it's doors to the public. As of 5:00 PM EST, www.thetradersden.org will be available for open membership. Please read the FAQ and the policies before posting. You'll notice that we are quite a bit more strict in our seeding guidelines than any other music trading website. Please post in our Technobabble forums if you have any questions about the legality of certain seeds before posting. And remember to have fun! This has been a long and difficult project to bring you this site, but it's well-worth it. We appreciate any comments, questions, or concerns.

Five
2020-02-07, 10:01 PM
legacy software documentation shntool.txt
SHNTOOL(1) local SHNTOOL(1)



NAME
shntool - a multi-purpose WAVE data processing and reporting utility


SYNOPSIS
shntool mode ...
shntool [CORE OPTION]


DESCRIPTION
shntool is a command-line utility to view and/or modify WAVE data and
properties. It runs in several different operating modes, and supports
various lossless audio formats.

shntool is comprised of three parts -- its core, mode modules, and for-
mat modules. This helps to make the code easier to maintain, as well
as aid other programmers in developing new functionality. The distri-
bution archive contains a file named 'modules.howto' that describes how
to create a new mode or format module, for those so inclined.


Mode modules
shntool performs various functions on WAVE data through the use of mode
modules. The core of shntool is simply a wrapper around the mode mod-
ules. In fact, when shntool is run with a valid mode as its first
argument, it essentially runs the main procedure for the specified
mode, and quits. shntool comes with several built-in modes, described
below:


len Displays length, size and properties of PCM WAVE data

fix Fixes sector-boundary problems with CD-quality PCM WAVE
data

hash Computes the MD5 or SHA1 fingerprint of PCM WAVE data

pad Pads CD-quality files not aligned on sector boundaries
with silence

join Joins PCM WAVE data from multiple files into one

split Splits PCM WAVE data from one file into multiple files

cat Writes PCM WAVE data from one or more files to the termi-
nal

cmp Compares PCM WAVE data in two files

cue Generates a CUE sheet or split points from a set of files

conv Converts files from one format to another

info Displays detailed information about PCM WAVE data

strip Strips extra RIFF chunks and/or writes canonical headers

gen Generates CD-quality PCM WAVE data files containing
silence

trim Trims PCM WAVE silence from the ends of files


For more information on the meaning of the various command-line options
for each mode, see the MODE-SPECIFIC OPTIONS section below.

For convenience, each mode can specify an alternate name or alias that
will invoke it (this feature is currently only available on systems
that support symbolic or hard linking). In particular, each mode is
aliased to 'shn<mode>'. For instance, running shnlen is equivalent to
running shntool len - thus saving a few keystrokes.


Format modules
File formats are abstracted from shntool through the use of format mod-
ules. They provide a means for shntool to tranparently read and/or
write different file formats. This abstraction allows shntool to con-
centrate on its job without worrying about the details of each file
format.

The following formats are currently supported:


wav RIFF WAVE file format

aiff Audio Interchange File Format (AIFF and uncompressed/sowt
AIFF-C only) (via sox: <http://sox.sourceforge.net/>)

shn Shorten low complexity waveform coder (via shorten:
<http://www.softsound.com/Shorten.html>,
<http://www.etree.org/shnutils/shorten/>)

flac Free Lossless Audio Codec (via flac: <http://flac.source-
forge.net/>)

ape Monkey's Audio Compressor (via mac: <http://www.mon-
keysaudio.com/>, <http://sourceforge.net/projects/mac-
port/>)

ofr OptimFROG Lossless WAVE Audio Coder (via ofr:
<http://www.losslessaudio.org/>)

lpac Lossless Predictive Audio Compression (via lpac:
<http://www.nue.tu-berlin.de/wer/liebchen/lpac.html>)

wv WavPack Hybrid Lossless Audio Compression (via wav-
pack/wvunpack: <http://www.wavpack.com/>)

alac Apple Lossless Audio Codec (via alac:
<http://craz.net/programs/itunes/alac.html>)

la Lossless Audio (via la: <http://www.lossless-audio.com/>)

tta TTA Lossless Audio Codec (via ttaenc: <http://tta.source-
forge.net/>)

bonk Bonk lossy/lossless audio compressor (via bonk:
<http://www.logarithmic.net/pfh/bonk>)

kxs Kexis lossless WAV file compressor (via kexis:
<http://www.sourceforge.net/projects/kexis/>)

cust Custom output format module (output only, useful for
encoding to a format that shntool does not yet support)

term sends output to the terminal

null sends output to /dev/null (output only, useful for dry-
runs in several modes, such as fix mode or strip mode)


When reading files for input, shntool automatically discovers which, if
any, format module handles each file. In modes where files are created
as output, you can specify what the output format should be -- other-
wise, shntool decides for you by selecting the first format module it
finds that supports output (in a default installation, this will be the
wav format).


CORE OPTIONS
Modeless
When run without a mode, shntool takes these options:

-m Show detailed mode module information

-f Show detailed format module information

-v Show version information

-h Show a help screen


GLOBAL OPTIONS
All modes
All modes support the following options:

-D Print debugging information

-H Print times in h:mm:ss.{ff,nnn} format, instead of m:ss.{ff,nnn}

-P type
Specify progress indicator type. type is one of: {pct, dot,
spin, face, none}. pct shows the completion percentage of each
operation. dot shows the progress of each operation by display-
ing a '.' after each 10% step toward completion. spin shows a
spinning progress indicator. face shows the progress of each
operation by displaying six emoticons that become increasingly
happy as the operation nears completion. none prevents any
progress completion information from being displayed. The
default is pct.

-h Show the help screen for this mode

-i fmt Specify input file format decoder and/or arguments. The format
is: "fmt decoder [arg1 ... argN]", and must be surrounded by
quotes. If arguments are given, then one of them must contain
"%f", which will be replaced with the input filename. Examples:

-i 'shn shorten-2.3b' (use official shorten-2.3b instead of
later versions; leave default arguments untouched)

-i 'shn shorten -x -d 2048 %f -' (force shorten to skip the
first 2048 bytes of each file)


-q Suppress non-critical output (quiet mode). Output that normally
goes to stderr will not be displayed, other than errors or
debugging information (if specified).

-r val Reorder input files? val is one of: {ask, ascii, natural,
none}. The default is natural.

-v Show version information

-w Suppress warnings

-- Indicates that everything following it is a filename

Output modes
Additionally, any mode that creates output files supports the the fol-
lowing options:

-O val Overwrite existing files? val is one of: {ask, always, never}.
The default is ask.

-a str Prefix str to base part of output filenames

-d dir Specify output directory

-o str Specify output file format extension, encoder and/or arguments.
Format is: "fmt [ext=abc] [encoder [arg1 ... argN (%f = file-
name)]]", and must be surrounded by quotes. If arguments are
given, then one of them must contain "%f", which will be
replaced with the output filename. Examples:

-o 'shn shorten -v2 - %f' (create shorten files without seek
tables)

-o 'flac flake - %f' (use alternate flac encoder)

-o 'aiff ext=aif' (override default aiff extension of 'aiff'
with 'aif')

-o 'cust ext=mp3 lame --quiet - %f' (create mp3 files using
lame)


-z str Postfix str to base part of output filenames


MODE-SPECIFIC OPTIONS
len mode options
-U unit
Specifies the unit in which the totals will be printed. unit is
one of: {b, kb, mb, gb, tb}. The default is b.

-c Do not show column names

-t Do not show totals line

-u unit
Specifies the unit in which each file will be printed. unit is
one of: {b, kb, mb, gb, tb}. The default is b.

len mode output

The output of len mode may seem cryptic at first, because it
attempts to convey a lot of information in just a little bit of
space. But it is quite easy to read once you know what the col-
umns represent; and in certain columns, what each character in
the column means. Each column is explained below.

length Shows the length of the WAVE data, in m:ss.nnn (millisec-
ond) format. If the data is CD-quality, then m:ss.ff is
shown instead, where ff is a number from 00 to 74 that
best approximates the number of frames (2352-byte blocks)
remaining after m:ss. If all files are CD-quality, the
total length will be shown in m:ss.ff format; otherwise
it will be in m:ss.nnn format. NOTE: CD-quality files
are rounded to the nearest frame; all other files are
rounded to the nearest millisecond.

expanded size
Shows the total size of all WAVE chunks within the file
(header, data and any extra RIFF chunks). Essentially
this is the size that the file would be if it were con-
verted to .wav format, e.g. with shntool conv.

NOTE: Do not rely on this field for audio size! If you
simply want to know how many bytes of audio are in a
file, run it through info mode, and look at the "data
size" field in its output.

cdr Shows properties related to CD-quality files. A 'c' in
the first slot indicates that the WAVE data is not [C]D-
quality. A 'b' in the second slot indicates that the CD-
quality WAVE data is not cut on a sector [b]oundary. An
's' in the third slot indicates that the CD-quality WAVE
data is too [s]hort to be burned.

A '-' in any of these slots indicates that the particular
property is OK or normal. An 'x' in any of these slots
indicates that the particular property does not apply to
this file, or cannot be determined.

WAVE Shows properties of the WAVE data. An 'h' in the first
slot indicates that the WAVE [h]eader is not canonical.
An 'e' in the second slot indicates that the WAVE file
contains [e]xtra RIFF chunks.

A '-' in any of these slots indicates that the particular
property is OK or normal. An 'x' in any of these slots
indicates that the particular property does not apply to
this file, or cannot be determined.

problems
Shows problems detected with the WAVE header, WAVE data,
or the file itself. A '3' in the first slot indicates
that the file contains an ID[3]v2 header. An 'a' in the
second slot indicates that the audio data is not
block-[a]ligned. An 'i' in the third slot indicates that
the WAVE header is [i]nconsistent about data size and/or
file size. A 't' in the fourth slot indicates that the
WAVE file seems to be [t]runcated. A 'j' in the fifth
slot indicates that the WAVE file seems to have [j]unk
appended to it.

A '-' in any of these slots indicates that the particular
problem was not detected. An 'x' in any of these slots
indicates that the particular problem does not apply to
this file, or cannot be determined.

fmt Shows which file format handled this file.

ratio Shows the compression ratio for this file.

filename
Shows the name of the file that's being inspected.


fix mode options
NOTE: file names for files created in fix mode will be based on the
input file name with the string '-fixed' appended to it, and the exten-
sion will be the default extension of the output file format. For
example, with an output file format of shn the file 'foo.wav' would
become 'foo-fixed.shn'. This can be overridden with the -a and/or -z
global options described above.

-b Shift track breaks backward to the previous sector boundary.
This is the default.

-c Check whether fixing is needed, without actually fixing any-
thing. shntool will exit with status 0 if fixing is needed, and
status 1 otherwise. This can be useful in shell scripts, e.g.:
"if shntool fix -c *; then shntool fix *; else ...; fi"

-f Shift track breaks forward to the next sector boundary.

-k Specifies that all files should be processed, even if the first
several of them wouldn't be altered, aside from a possible file
format change. The default is to skip the first N files that
wouldn't be changed from a WAVE data perspective in order to
avoid unnecessary work.

-n Specifies that the last file created should not be padded with
silence to make its WAVE data size a multiple of 2352 bytes.
The default is to pad the last file.

-u Round track breaks to the nearest sector boundary.


hash mode options
-c Specifies that the composite fingerprint for all input files
should be generated, instead of the default of one fingerprint
per file. The composite fingerprint is simply the fingerprint
of the WAVE data from all input files taken as a whole in the
order given, and is identical to the one that would be generated
from the joined file if the same files were joined into one
large file, with no padding added. This option can be used to
fingerprint file sets, or to identify file sets in which track
breaks have been moved around, but no audio has been modified in
any way (e.g. no padding added, no resampling done, etc.).

-m Generate MD5 fingerprints. This is the default.

-s Generate SHA1 fingerprints.


pad mode options
NOTE: file names for files created in pad mode will be based on the
input file name with the string '-prepadded' or '-postpadded' appended
to it, and the extension will be the default extension of the output
file format. For example, with an output file format of shn and pre-
padding specified on the command line, the file 'foo.wav' would become
'foo-prepadded.shn'. This can be overridden with the -a and/or -z
global options described above.

Be aware that some output format encoders (e.g. flac, ape) automati-
cally strip headers and/or extra RIFF chunks.

-b Specifies that the file created should be padded at the begin-
ning with silence to make its WAVE data size a multiple of 2352
bytes.

-e Specifies that the file created should be padded at the end with
silence to make its WAVE data size a multiple of 2352 bytes.
This is the default action.


join mode options
NOTE: file names for files created in join mode will be prefixed with
'joined.', and the extension will be the default extension of the out-
put file format. For example, with an output file format of wav the
files 'files*.wav' would become 'joined.wav'. This can be overridden
with the -a and/or -z global options described above.

-b Specifies that the file created should be padded at the begin-
ning with silence to make its WAVE data size a multiple of 2352
bytes. Note that this option does not apply if the input files
are not CD-quality, since padding is undefined in that case.

-e Specifies that the file created should be padded at the end with
silence to make its WAVE data size a multiple of 2352 bytes.
This is the default action. Note that this option does not
apply if the input files are not CD-quality, since padding is
undefined in that case.

-n Specifies that the file created should not be padded with
silence to make its WAVE data size a multiple of 2352 bytes.
Note that this option does not apply if the input files are not
CD-quality, since padding is undefined in that case.


split mode options
NOTE: file names for files created in split mode are of the form pre-
fixNNN.ext, where NNN is the output file number, and 'ext' is the
default extension of the output file format. If an output file format
of 'wav' is used, and the prefix is not altered via the -n switch
described below, then the output file names will be "split-
track01.wav", "split-track02.wav", etc. This can be overridden with
the -a and/or -z global options described above.

For information on specifying split points, see the Specifying split
points section below.

-c num Specifies the number to start counting from when naming output
files. The default is 1.

-e len Prefix each track with len amount of lead-in taken from the pre-
vious track. len must be given in bytes, m:ss, m:ss.ff or
m:ss.nnn format.

-f file
Specifies a file from which to read split point data. If not
given, then split points are read from the terminal.

-l len Specifies that the input file should be split into smaller files
based on multiples of the len time interval. len must be given
in bytes, m:ss, m:ss.ff or m:ss.nnn format.

-n fmt Specifies the file count output format. The default is %02d,
which gives two-digit zero-padded numbers (01, 02, 03, ...).

-t fmt Name output files in user-specified format based on CUE sheet
fields. The following formatting strings are recognized:


%p Performer

%a Album

%t Track title

%n Track number


-u len Postfix each track with len amount of lead-out taken from the
next track. len must be given in bytes, m:ss, m:ss.ff or
m:ss.nnn format.

-x list
Only extract tracks in list (comma separated, may contain
ranges). Examples include:


7 Only extract track 7

3-5 Only extract tracks 3 through 5

2-6,9,11-13
Only extract tracks 2 through 6, 9, and 11 through 13


Specifying split points
Split points simply mark places within the WAVE data of the
input file where tracks will be split. They can be specified in
any combination of the following formats:

bytes where bytes is a specific byte offset

m:ss where m = minutes and ss = seconds

m:ss.ff
where m = minutes, ss = seconds and ff = frames (75 per
second, so ff ranges from 00 to 74)

m:ss.nnn
where m = minutes, ss = seconds and nnn = milliseconds
(will be rounded to closest sector boundary, or the first
sector boundary if the closest one happens to be the
beginning of the file)

CUE sheet
- a simple CUE sheet, in which each "INDEX 01 m:ss:ff"
line is converted to a m:ss.ff split point

Split points must be given in increasing order, and must appear
one per line. If the byte offset calculated from the final
split point equals the input file's WAVE data size, then it is
ignored. Since split points specify locations within the input
file where tracks will be split, N split points will create N+1
output files. All m:ss formats will create splits on sector
boundaries whenever the input file is CD-quality; to force non-
sector-aligned splits, use the exact byte format.


cat mode options
-c Specifies that extra RIFF chunks should be suppressed from the
output. The default is to write the extra RIFF chunks.

-d Specifies that the WAVE data should be suppressed from the out-
put. The default is to write the data.

-e Specifies that the WAVE header should be suppressed from the
output. The default is to write the header.

-n Specifies that the NULL pad byte at end of odd-sized data chunks
should be suppressed from the output, if present. The default
is to write the NULL pad byte. This option only applies when
WAVE data is also written, otherwise it is ignored.


cmp mode options
-f fuzz
Sets the "fuzz factor" for determining whether byte-shifted data
is identical. fuzz is a positive integer that represents the
maximum number of allowable byte mismatches between the two
files in the area searched by the -s option. This allows one to
check for differing bytes between to files that (a) are byte-
shifted and (b) contain at least one error in the area searched
by the -s option. The higher the fuzz factor, the longer the
search takes, so set it low to begin with (8 or so), and
increase it in small steps if needed. NOTE: this switch can
only be used with the -s switch.

-l List offsets and values of all differing bytes. Output is simi-
lar to 'cmp -l'; in particular, offsets are 1-based. Can be
used with the -s switch.

-s Check to see whether the WAVE data contained in the input files
are identical modulo a byte-shift. Currently, this will only
detect differences up to the first 529200 bytes (equal to 3 sec-
onds of CD-quality data). This can be used to compare WAVE data
within a pre-burned file to WAVE data in the corresponding track
ripped from the burned CD, which is useful if the ripped track
came from a CD burned TAO, and thus might have a 2-second gap of
silence at the beginning. This option can also help identify a
CD burner/CD reader combined read/write offset.


cue mode options
-c Specifies that a simple CUE sheet should be output. This is the
default action. NOTE: all input files must be CD-quality for
CUE sheets to be valid.

-s Specifies that split points in explicit byte-offset format
should be output.


conv mode options
NOTE: file names for files created in conv mode will be named based on
the input file name. Specifically, if the input file name ends with
the default file extension for that file's format, then the default
extension for the desired output format will replace it; otherwise, it
will be appended to it. For example, for an output format of shn and a
wav input file named 'file.wav', the converted file will be named
'file.shn', since '.wav' is the default extension for the wav format.
On the other hand, given the same situation above, but with an input
file named 'file.wave', the converted file will be named
'file.wave.shn', since '.wave' does not match '.wav'. This can be
overridden with the -a and/or -z global options described above.

Be aware that some output format encoders (e.g. flac, ape) automati-
cally strip headers and/or extra RIFF chunks, while others (e.g. sox)
might adjust WAVE data sizes in rare instances in order to align the
audio on a block boundary.

-t Read WAVE data from the terminal.


info mode options
This mode doesn't support any additional options.


strip mode options
NOTE: file names for files created in strip mode will be based on the
input file name with the string '-stripped' appended to it, and the
extension will be the default extension of the output file format. For
example, with an output file format of wav the file 'bar.shn' would
become 'bar-stripped.wav'. This can be overridden with the -a and/or
-z global options described above.

Be aware that some output format encoders (e.g. flac, ape) automati-
cally strip headers and/or extra RIFF chunks, while others (e.g. sox)
might adjust WAVE data sizes in rare instances in order to align the
audio on a block boundary.

-c Specifies that extra RIFF chunks should not be stripped. The
default is to remove everything that appears after the first
data chunk.

-e Specifies that WAVE headers should not be made canonical. The
default is to canonicalize headers.


gen mode options
NOTE: file names for files created in gen mode will be prefixed with
'silence.', and the extension will be the default extension of the out-
put file format. For example, with an output file format of wav the
generated file would become 'silence.wav'. This can be overridden with
the -a and/or -z global options described above.

-l len Generate files containing len amount of silence. len must be
given in bytes, m:ss, m:ss.ff or m:ss.nnn format.


trim mode options
NOTE: file names for files created in trim mode will be based on the
input file name with the string '-trimmed' appended to it, and the
extension will be the default extension of the output file format. For
example, with an output file format of shn the file 'foo.wav' would
become 'foo-trimmed.shn'. This can be overridden with the -a and/or -z
global options described above.

-b Only trim silence from the beginning of files

-e Only trim silence from the end of files


ENVIRONMENT VARIABLES
ST_DEBUG
If set, shntool will print debugging information. This is anal-
ogous to the -D global option, with the exception that debugging
is enabled immediately, instead of when the command-line is
parsed.

ST_<FORMAT>_DEC
Specify input file format decoder and/or arguments. Replace
<FORMAT> with the format you wish to modify, e.g. ST_SHN_DEC.
The format of this variable is analagous to the -i global
option, except that the initial format is not included. Exam-
ples:

ST_SHN_DEC='shorten-2.3b'

ST_SHN_DEC='shorten -x -d 2048 %f -'


ST_<FORMAT>_ENC
Specify output file format extension, encoder and/or arguments.
Replace <FORMAT> with the format you wish to modify, e.g.
ST_SHN_ENC. The format of this variable is analagous to the -o
global option, except that the initial format is not included.
Examples:

ST_SHN_ENC='shorten -v2 - %f'

ST_FLAC_ENC='flake - %f'

ST_AIFF_ENC='ext=aif'

ST_CUST_ENC='ext=mp3 lame --quiet - %f'

Note that command-line options take precedence over any of these envi-
ronment variables.


EXIT STATUS
Generally speaking, shntool will exit with status 0 upon success, and
status 1 if it encounters an error. The only exception is when the
'quit' option is selected from within the interactive file reordering
menu, in which case the exist status will be 255.


NOTES
shntool is a misnomer, since it processes WAVE data, not shorten data.
The name is a holdover from its early days as 'shnlen', a program cre-
ated specifically to extract information about WAVE data stored within
.shn files.

Aliases for shntool are prefixed with 'shn' instead of 'wav' to avoid
possible collisions with existing programs.


AUTHOR
Jason Jordan <shnutils at freeshell dot org>

Please send all bug reports to the above address.

The latest version of shntool can always be found at
<http://www.etree.org/shnutils/> or <http://shnutils.freeshell.org/>.


COPYRIGHT
Copyright (C) 2000-2007 Jason Jordan

This is free software. You may redistribute copies of it under the
terms of the GNU General Public License
<http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the
extent permitted by law.


REVISION
$Id: shntool.1,v 1.109 2006/12/29 17:54:41 jason Exp $



shntool 3.0.0 January 2007 SHNTOOL(1)

Five
2020-02-07, 10:09 PM
Checksums Demystified (.st5, .ffp and .md5), 2006-02-09
TTD Requirements:
SHN/APE: .st5 fingerprints posted in announce thread, should also be included with the show. Since SHN format is not capable of self-testing, some form of checksums must be included.
FLAC: .st5/.ffp fingerprints posted in announce thread, should also be included with the show.
DVD: .md5 checksums posted in announce thread and included with the show.

Checksums (.st5, .ffp and .md5)

Checksums are used for the purpose of verifying the integrity and identity of a digital copy of audio. There are many kinds of checksums but only a few that are commonly used by music traders:

.md5 wholefile checksum. verifies that files are identical in every single way, and is therefore sensitive to compression setting, file format et al.

.st5 aka SHNtool md5. this is a checksum taken from the decompressed audio only. the advantage to this is that it works with any lossless codec at any compression setting. This is the preferred checksum type to be included with FLAC, SHN or APE files.

.ffp aka FLAC fingerprints. These checksums are virtually identical to .st5. some differences are explained below, under "Verifying a checksum file" and "Creating a .ffp file".

For audio, I highly recommend using FLAC and including .st5 and .ffp no wholefile .md5 necessary.

For Mac use xAct. Tutorials here:
Making ShnTool md5s using xACT (http://www.thetradersden.org/forums/showthread.php?p=300188#post300188)
http://u2lynne.sandsmuseum.com/checksums.html

For PC use TLH:
http://tlh.easytree.org/


TLH checksums tutorial

Testing lossless files:

This function runs a simple test to see if the files will decode properly.

1. Go to Test encoded files > Add

2. Use Files of type to select the lossless file type.

3. Select all and hit open.



4. Check that the information displayed in the list is correct.

5. Press Test

6. The result will take a few minutes to display.

[image missing]

Verifying a checksum file:

TLH can verify .st5, .ffp and .md5 files. You can simply double-click the checksum file to begin testing, or:

1. Go to [i]Verify checksum file > Add

2. Use Files of type to select checksum type. Load the checksum file.

3. Press Test.

4. This will take a few minutes.

ffp compares the checksums in the FLAC header without checking the audio.

[image missing] [image missing]

.md5 checks for any change whatsoever in the whole file (useful for DVD).

.st5 checks the decompressed audio only.

[image missing] [image missing]

md5 for DVD cannot find the files, what do I do?

To verify a playable video DVD with checksums which are on your hd, generate md5 checksums (see below) directly from the DVD and then test those against the files which are on your hd.

Another problem that sometimes occurs is that the paths stored in the .md5 file do not tell TLH to look inside the VIDEO_TS folder. So if the .md5 file for your DVD looks like this:

8d50cba158b40a75dd32cada8964aef7 *VIDEO_TS.BUP
8d50cba158b40a75dd32cada8964aef7 *VIDEO_TS.IFO
e40bd45c55f783d519c2a5c9aa088e98 *VIDEO_TS.VOB
e11aaf0c14501bbf15d776a34218c205 *VTS_01_0.BUP
e11aaf0c14501bbf15d776a34218c205 *VTS_01_0.IFO
da29301176f55de40d79be5cba560d06 *VTS_01_0.VOB
99ba41ff0fec88e3def109b6cb824dcb *VTS_01_1.VOB
6c20fa2d2232106310d61dce30cd3e29 *VTS_01_2.VOB


you should (a) make a backup of the original .md5 then (b) add VIDEO_TS/ to the path (open, edit & save using notepad), and test again. The modified .md5 file for the example posted above would look like this:

8d50cba158b40a75dd32cada8964aef7 *VIDEO_TS/VIDEO_TS.BUP
8d50cba158b40a75dd32cada8964aef7 *VIDEO_TS/VIDEO_TS.IFO
e40bd45c55f783d519c2a5c9aa088e98 *VIDEO_TS/VIDEO_TS.VOB
e11aaf0c14501bbf15d776a34218c205 *VIDEO_TS/VTS_01_0.BUP
e11aaf0c14501bbf15d776a34218c205 *VIDEO_TS/VTS_01_0.IFO
da29301176f55de40d79be5cba560d06 *VIDEO_TS/VTS_01_0.VOB
99ba41ff0fec88e3def109b6cb824dcb *VIDEO_TS/VTS_01_1.VOB
6c20fa2d2232106310d61dce30cd3e29 *VIDEO_TS/VTS_01_2.VOB


Be very careful not to alter the 32-digit checksums or filenames, just add "VIDEO_TS/" (no quotes) as above.

Advanced: Another possibility is to burn a standalone-playable data DVD which contains info, artwork (if any) and .md5 checksums inside a folder called EXTRAS_TS. To do this, create three folders in your compilation:

AUDIO_TS
EXTRAS_TS
VIDEO_TS

The VIDEO_TS folder contains the obvious, the AUDIO_TS folder must be there and remain absolutely empty, and the EXTRAS_TS with the art/info/checksums inside. When the .md5 file is placed inside of an EXTRAS_TS folder, the path must be formatted as:

8d50cba158b40a75dd32cada8964aef7 *../VIDEO_TS/VIDEO_TS.BUP
8d50cba158b40a75dd32cada8964aef7 *../VIDEO_TS/VIDEO_TS.IFO
e40bd45c55f783d519c2a5c9aa088e98 *../VIDEO_TS/VIDEO_TS.VOB
e11aaf0c14501bbf15d776a34218c205 *../VIDEO_TS/VTS_01_0.BUP
e11aaf0c14501bbf15d776a34218c205 *../VIDEO_TS/VTS_01_0.IFO
da29301176f55de40d79be5cba560d06 *../VIDEO_TS/VTS_01_0.VOB
99ba41ff0fec88e3def109b6cb824dcb *../VIDEO_TS/VTS_01_1.VOB
6c20fa2d2232106310d61dce30cd3e29 *../VIDEO_TS/VTS_01_2.VOB


If you wish you can substitute \ for /. The end result is a DVD which is playable in most standalones & also includes all the stuff which is normally included in a trade. Another big advantage is that you can double-click the .md5 which is inside the EXTRAS_TS folder and TLH will test all of the files on that DVD. Just be very careful that you get everything correct the same way I explained it above or it will not work.

thanks to fatoldpig and yoho for suggesting this stuff!

Running a len (length) check:

This gives some helpful details about the set's compatability with audio cdr format. This is primarily used to check for SBEs (Sector Boundary Errors), and that the files are 16bit/44.1kHz.

For more detailed information about the meaning of the data, check here:
https://web.archive.org/web/20070114204557/http://www.etree.org/shnutils/shntool/support/doc/shntool.txt

1. Go to [i]Audio file Details > Add

2. Use Files of type to select the lossless file type.

3. Select all and hit open.



4. Check that the information displayed in the list is correct.

5. Press Show details

[image missing]

6. Copy and paste into your info .txt file.

length expanded size cdr WAVE problems filename
2:15.26 23875196 --- -- ---xx gl2005-03-12t01.flac
5:22.52 56923148 --- -- ---xx gl2005-03-12t02.flac
4:14.46 44913836 --- -- ---xx gl2005-03-12t03.flac
6:17.55 66632204 --- -- ---xx gl2005-03-12t04.flac
3:40.49 38923292 --- -- ---xx gl2005-03-12t05.flac
2:03.55 21826604 --- -- ---xx gl2005-03-12t06.flac
23:54.58 253094280 B (totals for 6 files, 0.4980 overall compression ratio)


Creating a .st5 file:

Test the files and run a len check before you do this.

st5 is a new name for something known as a SHNtool md5. it is a checksum for verifying only decompressed audio from a lossless file. .st5 is identical to .ffp except formatting of the text.

1. Go to [i]Create checksum file > Browse

2. Select the folder containing the lossless files you want to fingerprint. Press Add use Files of type to change the correct format. Select all the files you want to fingerprint and press Open

3. From the dropdown menu on the right, select md5 fp then hit Create



4. The checksums will take a few minutes to calculate.



5. [i]Save your .st5 to the same folder.



c0437a74a414351fb1fb4e4cece99e06 [shntool] gl2005-03-12t01.flac
1822d349a6be042a49af9bb0085e093c [shntool] gl2005-03-12t02.flac
5028343d2820679c23a99cc0e2f6e1f5 [shntool] gl2005-03-12t03.flac
c485a617b3af2e4267753d334b709fa2 [shntool] gl2005-03-12t04.flac
fd6e94f4c89685e8b41e4df2c073fb48 [shntool] gl2005-03-12t05.flac
2c3d244df2a8cb4aab370e26e4f3f393 [shntool] gl2005-03-12t06.flac

Creating a .ffp file:

Test the files and run a len check before you do this.

1. Go to [i]Create checksum file > Browse

2. Select the folder containing the FLACs you want to fingerprint. Press Add use Files of type to change format to FLAC. Select all the files you want to fingerprint and press Open

3. From the dropdown menu on the right, select flac fp then hit Create

[image missing]

4. Since the ffp checksums were calculated during initial coding they can be very quickly extracted from the headers and put into a list. FLAC files should also be tested to make sure they can be decoded properly (see "Testing lossless files" above).

[image missing]

5. Save your .ffp to the same folder.

[image missing]

ffp is generated by FLAC itself. during encoding a checksum is generated from the [i]decoded audio only for each file and stored in the header. the checksums are the same as a .st5 (aka SHNtool md5) just the formatting of the .ffp is slightly different.

gl2005-03-12t01.flac:c0437a74a414351fb1fb4e4cece99e06
gl2005-03-12t02.flac:1822d349a6be042a49af9bb0085e093c
gl2005-03-12t03.flac:5028343d2820679c23a99cc0e2f6e1f5
gl2005-03-12t04.flac:c485a617b3af2e4267753d334b709fa2
gl2005-03-12t05.flac:fd6e94f4c89685e8b41e4df2c073fb48
gl2005-03-12t06.flac:2c3d244df2a8cb4aab370e26e4f3f393

Creating a .md5 file for a DVD:

.md5 checksums are only used for video at TTD.



1. Go to [i]Create checksum file tab.

2. Press Browse. Select the folder containing the VIDEO_TS folder of the DVD you want to create checksums for. It is best not to select the VIDEO_TS folder, but instead the folder which contains the artwork, info and VIDEO_TS folder.

3. Press Add then use Files of type to change format to all. Double-click on the VIDEO_TS folder, select all the files inside that folder then press Open

4. From the dropdown menu on the right, select md5 sig (default).

5. Review that the files and folder are all correct, then hit Create.

6. Save your .md5 to the folder which contains the artwork (if you have), info and VIDEO_TS folder and not inside the VIDEO_TS folder. In the example, you would want to save to a folder called 1971.09.09 Hampton.

8d50cba158b40a75dd32cada8964aef7 *VIDEO_TS/VIDEO_TS.BUP
8d50cba158b40a75dd32cada8964aef7 *VIDEO_TS/VIDEO_TS.IFO
e40bd45c55f783d519c2a5c9aa088e98 *VIDEO_TS/VIDEO_TS.VOB
e11aaf0c14501bbf15d776a34218c205 *VIDEO_TS/VTS_01_0.BUP
e11aaf0c14501bbf15d776a34218c205 *VIDEO_TS/VTS_01_0.IFO
da29301176f55de40d79be5cba560d06 *VIDEO_TS/VTS_01_0.VOB
99ba41ff0fec88e3def109b6cb824dcb *VIDEO_TS/VTS_01_1.VOB
6c20fa2d2232106310d61dce30cd3e29 *VIDEO_TS/VTS_01_2.VOB

Five
2020-02-07, 10:31 PM
legacy Cool Edit Pro / Adobe Audition DC Offset Correction Tutorial 2005-07-10
first, make sure you open the whole show. 60mins or whatever, open the whole thing at once (http://www.thetradersden.org/forums/showthread.php?p=2837720).

then here's what to do...

1. Select the right channel by double-clicking in the place shown in the picture.

[image missing]

2. Copy.

[image missing]

3. Create a new file. Make sure you get the settings exactly right as in the picture. select ok.

[image missing] [image missing] [image missing]

4. Paste.

[image missing]

5. It will convert the file to stereo!

[image missing]

6. Save a backup.

DC OFFSET Correction

Now another important thing I noticed looking at your screenshot is that the dc offset is incorrect. You can check the dc offset by going to analyze > statistics.

[image missing] [image missing] [image missing]

If it is not zero (or very very close), it is good to fix it. When the dc offset is incorrect, the wave is not symetrical. Try analyzing the statistics on some of your favorite officially released cds, you will see that the dc offset is zero! The sound will be a tiny bit better this way because your speakers can work better with a centred wave.

Also, it is best to take as few steps as possible when processing audio in any way. So, if you want to raise the volume and correct the dc offset at the same time, this is the shortest method:

1. Select all.

[image missing]

2. Go to Effects > Amplitude > Normalize. Be sure to normalize an entire show all at the same time, not each track one at a time! This is very important.

[image missing]

4. Set it to 98% and enable dc bias adjust.

[image missing]

this will boost the volume of the show to a safe level and at the same time. If you don't want to adjust the volume of the show, uncheck the box for "Normalize to"

[image missing]

alternatively, you can also correct the dc offset using Amplify. Either use the Normalization option or the Amplify option, but never both! Just one or the other. So to correct the dc offset using "Amplify", go to Effects > Amplitude > Amplify. In this case we are not going to amplify at all, just correct the dc offset. There is a preset for this on the right, called "center wave". Select it and press ok.

[image missing] [image missing]

5. Go to Analyze > Statistics again and verify that the dc offset is now zero (or very very close like 0.002 or something).

[image missing]

6. Save this.

Then you just have to cut the show on the sector boundaries. If you're not sure about how to do this, let me know I can show you how to do this correctly as well.

Work slowly and carefully, saving backups frequently.

Five
2020-02-07, 10:41 PM
foobar2000 tutorial, 2004-12-22
Easily edit your foobar2000 scripts

So, many people shy away from personally tweaking the display scripts in foobar2000 because it is somewhat difficult to read and interpret. Using this thread at HA for inspiration:
http://www.hydrogenaudio.org/forums/index.php?showtopic=7191

I created a user-defined style for the excellent script editor Notepad++ (a free, open source text editor).

Simply download the Notepad++ program from sourceforge:
http://notepad-plus.sourceforge.net/uk/about.php

Then check out my post at HA for instructions on how to setup the foobar2000 editing style:
http://www.hydrogenaudio.org/forums/index.php?showtopic=7191&st=0&p=261224&#entry261224

Now just copy the fb2k script into the Notepad++ window, edit it with the ease of colorcoded styles, and paste the result back into fb2k when you're done.

This will take some of the hassle out of tweaking the scripts. This level of customizability really is the heart and soul of foobar, and once people learn to start using scripts to their advantage, the days of Winamp will continue to dwindle into obscurity.

Note that the xml style I created could use some tweaking, if you'd like, and Notepad++ has the ability to change colors and styles very easily. Feel free to use my style as a starting point to get things to look just how you want.

Five
2020-02-07, 11:06 PM
foobar2000 tutorial, 2004
foobar2000: The ultimate Windows audio file player

To make sure you have the most functional and up-to-date version of foobar2000, head to the foobar 2000 blogsite (https://web.archive.org/web/20040208061651/http://foobar2000.blogsite.org/) and download the newest installer. For SHN support and a plethora of other plugins, download the Special Installer. For a list of extra addons you can install (it's as easy as dropping a .dll in the plugins folder), check out the foobar 2000 3rd Party Plugins Page (https://web.archive.org/web/20051126220021/http://pelit.koillismaa.fi/plugins/general.php)

Note: You may become frustrated with the default playlist window as it's very dull. The special installer includes something called Columns UI as a replacement playlist window interface. I highly recommend using this as it is rich in customizability and viewing features. The screenshot below uses the Columns UI interface.

[image missing]

foobar2000 is the ultimate audio media player for the Windows platform. It has a rather utilitarian interface and lacks many of the resource-sucking graphical features of it's competitors. The list of features that it does have, however, should make all of the commercial players out there embarassed. The open API license for foobar2000 permits users to create plugins for features that may be missing from the default installation, and thus the amount of features available for this player is only limited by the resourcefulness of it's userbase.

For lossless audio traders, this program is a godsend. Here's a list of the advantages this program has over any other media player out there:

Small footprint, runs smoothly on virtually any system.
Plain but simple, fully customizable interface.
Plays FLAC, SHN, APE, WAV, AIFF, MP3, OGG, AAC, etc, etc, etc.
Convenient masstagger feaute works as an id3, id3v2, Vorbis, and APE tagging utility.
Customizable user interface allows the viewing or sorting by of any tag, standard or non-standard.
Fully customizable database feature allows you to setup your own way of viewing your files.
Open API with a huge community of developers creating helpful plugins.
Plays everything you need, right "out of the box", without having difficult plugins to install.
Dynamic creation of seektables for SHN files without them. Never worry about seeking again!
(the list goes on and on!)

This program takes some persistence to get the hang of, but don't give up on it. Once you get used to the interface, play with some of the third party plugins, and realize just how powerful customizable this program is, you'll never go back. If you need help with setting this program up or want some help writing custom display strings, check out the hydrogenaudio.org official foobar2000 forums (https://hydrogenaud.io/index.php/board,28.0.html). If you need further assistance with this program, please don't hesitate to email me.

And now, for a gratuitous screenshot of the fully customizable music database browser:

[image missing]

Five
2020-02-07, 11:15 PM
Quick-Par tutorial, 2004
Using Quick-Par to Recover Partially Corrupted Files

Quick-Par is an open-source program that employs the par2 algorithm to create recovery volumes which can be used to recreate partially corrupted or missing files from a set. I use it to make backup volumes for files burned to data DVDs so that screatched or dirty discs can be recreated using only part of the missing files. It is also useful when downloading music or video from Usenet (http://www.thetradersden.org/forums/showthread.php?p=2837776#post2837776) to form files with missing messages.

To download Quick-Par or read about what the technology is and how it works, head to the Quick-Par Official Site (http://www.quickpar.org.uk/).

Five
2020-02-07, 11:25 PM
Newsgroups tutorial, 2004
Usenet/Newsgroup Downloading

Usenet (aka newsgroups), like FTP (http://www.thetradersden.org/forums/showthread.php?p=2837779#post2837779), is an older way of sharing all manner of files over the internet. It has largely been replaced by BitTorrent as the preferred means of broadband fileswapping, but there are still some nice gems to be found on various usenet servers. I personally still regularly keep watch on alt.binaries.music.shn.dylan, where all of the new Dylan shows and (when he's not touring) many older ones as well can be found daily.

The major hindrance to usenet has always been the sporadic access that many people have to good servers. Traditionally, newsgroups were only meant to contain text and small attachments. A way of encoding files so that several thousands of text messages could be combined to form a single file was developed to work around this limitation. It is possible to upload files of virtually unlimited size. However, if even a single message of those thousands is lost, the file will be unable to be recreated. Since many Newsgroup servers begin to drop messages after several days, the durability of usenet uploads is rather poor. Sometimes, for large downloads, messages will begin being dropped before the final set has even been uploaded.

Some ISPs provide access to usenet as part of their service, so it is possible that you already can use them. For those who don't, you will need to seek out a third-party service. All of the ones that provide decent retention, which you will need to get larger files, will require a periodic fee.

This page is not intended as a tutorial on how to use Newsgroups/usenet to obtain files. There is a lot of information on the subject scattered throughout the web, and I do not intend to recreate the wheel. Be warned that this method is not recommended for people who are computer-illiterate or don't have the tenacity to struggle through learning several new software packages and techniques. For those who wish to pursue this avenue, here are some links to software packages that will help you get rolling.

Slyck's Guide to the Newsgroups (https://web.archive.org/web/20180803183003/http://www.slyck.com/ng.php) - A thorough guide to understanding binaries downloading through usenet, finding the right host service, and learning about the various filetypes you are likely to come across. Highly recommended reading for anyone interested in getting into usenet trading.
Grab-It Binary usenet Reader (https://www.shemes.com/) - A free, simple, and streamlined program for easily grabbing binary files from usenet. It is updated regularly, and just works with no added fees or unneeded widgets. I have been using it for years, and highly recommend people to switch over to this for simple usenet downloading.
Quick-Par (http://www.thetradersden.org/forums/showthread.php?p=2837775#post2837775) - An open-source program that can be used to make recovery volumes using the Par2 algorithm. Allows for recreation of partial file sets even when it is unknown which file or part will be missing.
7-Zip (https://www.7-zip.org/) - An open-source program that can be used to decode all common file compression formats. Many people use WinRAR for decoding the .rar archives you frequently find on usenet servers, but I perfer this simpler, free, open-source counterpart. Also works with .zip, .tar, .cab, .7z, .gz, and others.

Five
2020-02-07, 11:42 PM
ftp tutorial, 2004
FTP Downloading

File Transfer Protocol (FTP) is somewhat of an old-school method of trading files online. It is still very widely used for many applications, though it's reliance on dedicated servers has caused it to decline in popularity as an impetus for swapping audio files with the rise of decentralized distributed networks like BitTorrent. A more technical description of the nature of FTP can be found at Wikipedia (https://en.wikipedia.org/wiki/File_Transfer_Protocol).

FTP downloading sites are becoming few and far between, and since they are exclusively maintained by private parties, they vary greatly in terms of their capacity and reliability. FTP site administrators also employ varying degrees of accessibility, from fully open/public servers to private ones for personal friends only. Google, word-of-mouth, and private forums are the best way to locate FTP servers that may contain material you will be interested in. Just remember that you are always using someone else's property when download from an FTP site, so be respectful and polite to the people who provide the service to you.

In order to access an FTP site, you will need an FTP client software package. There are countless different options out there, some free, some ad-based, and some pay-for-use programs. I recommend FileZilla (https://filezilla-project.org/), a free open-source, fully secure FTP client distributed through SourceForge. There is no need to endure advertising, crippled versions, or licensing fees to use FTP. If you are interested in setting up your own FTP site, FileZilla offers a server package as well.

Here's some examples of FTP sites that I have used and enjoyed over the years. They represent mostly my own personal tastes, but feel free to check them out or look around for others which you may enjoy.

Bluegrassbox (https://web.archive.org/web/20060208063924/http://www.bluegrassbox.com/) - A semi-public FTP site with live Bluegrass music.
Shntunes (https://web.archive.org/web/20060206100429/http://shntunes.org/) - This one's been around forever. Lots of jam-band type stuff.
The Live Music Internet Archive (https://archive.org/details/etree) - Though not exclusively an FTP site, the Live Music Archive (consistenting of 1000s of shows) can be accessed through FTP as well as HTTP download and BitTorrent.

Five
2020-02-07, 11:53 PM
b&p tutorial, 2004
Blanks and Postage (B&P) Trading

If you are somewhat new to lossless audio trading, or have been doing it exclusively throught internet downloading, you may be unfamiliar with the term B&P. Simply put, it is an acronym for a "Blanks and Postage" trade. In essence, you send someone black media (CDs or DVDs) and a postage paid return mailer, addressed to yourself, in order that someone can make you copies of the material you want, and drop it in a mailbox to return it to you without having to pay. In the early days of internet trading, this was one of the few ways that someone could get into the trading field. People willing to donate some time to making copies for you could do so without having to invest in the media and shipping themselves.

Though they are far less common today than several years ago, many, many people still use B&Ps as a way to share with others, get a small tradelist started, or just out of nostalgia for the good old days. I am generally willing to do reasonably sized B&P offers with people who request for me to do so. Many other traders are willing to do the same. Below are some links to help you learn the etiquette, find somewhere to search for B&P offers, etc. Have fun!

Beginner's B&P Instructions (https://web.archive.org/web/20060205105101/http://www.mcnichol.com/bnp/) - An exceptionally detailed guide to doing a proper B&P. The author mentions Grateful Dead, DMB, and Phish, but the same rules apply to all trading communities.
The Trader's Den B&P Forums (http://www.thetradersden.org/forums/forumdisplay.php?f=7) - A forum where you can seek out, offer, or respond to B&P offers (free registration required to post).

Five
2020-02-08, 12:01 AM
foobar2000 tutorial, 2004-12-02
Tagging an Album List on foobar2000

I was asked to give some information on how I tag and setup my files with foobar2000, so here goes. This is, by no means, a definitive tutorial, but just some samples to get people stepping in the right direction. It would take several days to put together a really foolproof guide for all of these, but I wanted to get this out to some people, so I made it quick and chockfull of pictures. It might take some time to get used to all of this, but I just spent two hours making this guide, so I fully expect everyone to devote equal time to figuring out this program....once you do, it will be worth it, I promise.

First, put a list of files that you want tagged into the foobar2000 playlist window. Right click on them, select masstagger, and then "edit tags"

[image missing]

The script that I have made, shown in the screencap below, shows all of the necessary tags to get my album list window to work properly. You can, of course, add or remove any of them as you see fit.

Artist = The main artist for this album
Albumartist = The artists you'd like this to show up under in the albumlist. You cannot add multiple artists in this dialog, we'll cover that in a minute (a weakness of masstagger here...)
Album = album
Date = YYYY-MM-DD...my album list sciprt sorts by this, so you'll want to set this properly
Genre
Input Data = I use this to add the song titles. Each track will get one line, sequentially. I copy/paste the setlist data into this window, and then edit the string above it to tell masstagger how to interpret each line.
Format "TITLE" using "$caps($trim(%title%))" = This will capitalize the first letter from each word in the title, and trick leading and trailing spaces. Makes editing the text in each line easier ;)
Auto Track Number = self-explanatory for multidisc sets, I number them sequentially from 1-xx...technically you could wrestly with giving each track a disc# and a track#, but that's more shit than it's worth. Just number them in order from start to finish....
Legality = Bootleg or Official

[image missing]

Now press "Run" to apply all the tags. When you're satisfied, close masstagger, and you have nicely tagged files.

[image missing]

If you want to add multiple instances of the albumartist tags, required for the album to show up under multiple names in the album list, you'll need to head back to the main playlist window, select all of the files, right click, and select "properites". It will list all of the tags currently on the file. Double-click the "albumartist" field and add whatever extra artists you wish to, separated by a "\" character.

[image missing]

Now to setup the database. In the preferences dialog, select "database" from the list of options. Tell it what folder is the master for your audio files. You can also tell it what filetypes to add if you want. When you're done, you will need to shutdown and restart foobar2000. Then, re-enter the database dialog and press "scan". Depending on how many files you have, this will take several minutes to gather the metadata for every file.

[image missing]

Now to setup the album list. Again, go into the preferences dialog, and select album list. In this screencap, you'll see all of my formatting scripts. The one I am going to be displaying later on this page is here:

albumartist|'('$if3(%date%,%year%,'no date')')' $if($greater($meta_num(albumartist),3),'Various Artists',$if(%band%,%artist%' & '%band%,$meta_sep(artist,'; '))) '"'%album%'" ['%legality% $upper($ext(%_path%))']'|$num(%tracknumber%,2)'. '$if($greater($meta_num(albumartist),3),$if(%band%,%artist%' & '%band%,$meta_sep(artist,'; '))' - ',)%title%' ['%__bitrate%'Kbps]'

[image missing]

Save that script, then head to the album list.

[image missing]

Mine looks like this:

[image missing]

And then a glance at what a nicely organized artist entry is. Notice how they say what the "main artist" is at the beginning of each entry. There is one in there called "Rock of Ages" that is actually an album by The Band. Since Dylan appears on it, I added him has an "albumartist" previously, and now it shows up under both artists in the Album List.

[image missing]

Five
2020-02-13, 08:22 PM
foobar2000 tutorial, 2004-12-02. Recommended to use TLH these days.
SHN to FLAC Conversions Using Foobar2000

First off, special thanks to RainDawg who wrote much of the text included here and gave me the knowledge to create this visual tutorial.

As for converting, it is acceptable and encouraged to convert SHN to FLAC, as the former is an outdated and obsolete codec. FLAC has numerous advantages, and you can read a little more about the major differences in the FAQ's audio types and descriptions entry:
http://www.thetradersden.org/forums/faq.php?faq=audio#faq_filetypes

Foobar2000 Installation and Configuration

Now, foobar2000 is the complete solution to PLAYING your files, but you may not realize that it comes with an enormous amount of plugins that help you do everything else with those files too. First, make sure you've got the Special Installer version 0.8.3 (http://foobar2000.org/) (the most complete and up to date version) from the foobar2000 blogiste.

When you install this program, make sure you include all of the plugins (some may not be useful to you, but they are all fun to play with and learn what options are out there). This will make sure that you have the diskwriter plugin, which will allow you to do direct file conversions.

When the foobar2000 installer promts you to select installation type, select "Full".



The next thing you need to do is configure foobar2000. Go to Foobar2000>Preferences.



On the left, click on "Diskwriter". Under "Output presets" press the "Add new" button. A new window will appear with the title "Select file writer". Select FLAC.

[image missing]

A new window will appear with the title "FLAC encoding settings". Set "Compression level" to 8. Since FLAC decompresses at the same speed no matter what the compression setting is during encoding, it is best to encode your FLACs with the maximum available compression.

The padding is a certain amount of space left at the beginning of the file, before the audio portion, for adding tags (aka Vorbis comments). You can force this to be something other than the default 4096, but it's not recommended. What creating this default space does is allow people to add and edit tags without having to rewrite the entire file....

Unles you're putting a sick amount of information (pages of text for a single track) the 4096 should be plenty. Of couse, it's awfully rude to decrease this value as people who download your seeds WILL want the freedom to add whatever tags they choose.

Click "OK".

[image missing]

Next, configure foobar2000 so that filenames aren't changed and the output is in the same directory as the source files. Set "Output directory" to "Same as source file directory" and under "Output file name formatting put "%_filename%" (no quotes). More formatting options can be found here (http://www.foobar2000.net/titleformat_help.html).

Your diskwriter preferences should appear as below. Click "Save all".

[image missing]

foobar2000 is now installed and configured for the conversion.

Conversion

Before starting the conversion, check the md5s using md5summer (http://www.md5summer.org) or similar program. All files must be "OK".

[image missing]

Now rename the .md5 file in a way that reflects that it is only associated with the old SHN files. I usually add "shn_" to the beginning of the filename. Do not delete this file. It can be useful as another means to identify which version of the show this is. Do not edit this file other than the filename.

Now you are almost ready to begin conversion. This is a good time to fix spelling mistakes, rename your files to etree format, add a zero before the track numbers 1-9, etc. When you're done, drag and drop all of the SHN files into foobar2000.

[image missing]

Press Ctrl + A to select all files, then right-click on one of the files and select Convert>Run conversion.

[image missing]

A new window will appear with the title "Select file writer preset". FLAC : compression level 8, 4096 bytes padding should be the default setting, if not then select it from the drop-down menu and click "OK".

[image missing]

A progress window will appear. This will take a few minutes.

[image missing]

Bit-compare

When the conversion is finished, select all of the newly-created FLACs and drag and drop them into foobar2000 together with the SHNs which are still there.

[image missing]

At this point you should have the complete SHN and FLAC sets in foobar2000's playlist. Do some simple math... in my example I have 14 SHNs + 14 FLACs = 28 files in foobar2000... yup, we're ready to start. Select all (Ctrl + A), right-click and select "Bit-compare tracks..."

[image missing]

First time you will see some one-time information. Click "OK".

[image missing]

A progress bar will appear, as well as the Console window. Wait a few minutes for it to finish.

[image missing]

Now it's time to check the results:

INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t01.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t01.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t02.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t02.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t03.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t03.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t04.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t04.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t05.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t05.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t06.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t06.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t07.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t07.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t08.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t08.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t09.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t09.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t10.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t10.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t11.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t11.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t12.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t12.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t13.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t13.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.
INFO (foo_bitcompare) : Comparing:
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t14.shn" (0)
INFO (foo_bitcompare) : location: "file://D:\sp1992-09-12.flac16\sp1992-09-12d1t14.flac" (0)
INFO (foo_shn) : cannot find / read external metadata tag file
INFO (foo_shn) : internal seektable will be used.
INFO (foo_bitcompare) : No differences in decoded data found.
INFO (foo_bitcompare) : Finished successfully.

Q: Now, it says that there were no differences found, and I'm cool with that.

The part where it says that it cannot find / read external blah blah blah. No seektable loaded, etc.

Is this cause for concern?

A: No cause for concern here. foo_shn is the SHN decoder plugin for foobar2000. This is just giving you a little feedback about the SHN file:

INFO (foo_shn) : cannot find / read external metadata tag file

This means that there is no .tag file associated with the SHN file. Since SHN does not have any inherant support for tagging, foo_shn can write metadeta to a .tag file. This obviously doesn't have one, but that's fine.

INFO (foo_shn) : cannot find / load external seektable file.

Again, foo_shn is looking for either appended to external seektables. It didn't find any, which means that the SHNs are not seekable (in most other players). The line below that, however, shows just one reason why foobar is the best player out there: it is making up for the lack of a seektable by generating one on the fly so that the end user will never have to worry if the original files were seekable or not.

The foo_bitcompare plugin is just telling you which files it is comparing, and then returns the result that no differences were found. You've successfully completed a SHN > FLAC conversion!

The fastest way to check for errors is to look for the word "ERROR" anywhere on the left-hand side of the log. If you only see the word "INFO", then there were no errors. For an example of what an error looks like, I compared two different files and snapped a pic of the Console window:

[image missing]

Don't rely on your machine "beeping". Mine didn't.

So long as there are no errors, feel free to delete the SHN files now.

Fingerprinting and Updating Lineage

So at this point hopefully you've finished your conversion and have finished a successful verification. Congratulations! There is just a little bit more to do.

FLAC fingerprints: Get FLAC frontend (http://www.mikewren.com/flac/) and install it if you haven't already. Drag and drop your new FLAC files into FLAC frontend. It's a nice touch to keep them in the correct order, so grab the set from the first file (circled). Push "Fingerprint".

[image missing]

Save the generated .txt file in the same folder with the FLACs.

[image missing]

If you are feeling paranoid, push the "Test" button to verify your FLACs again using FLAC frontend.

Always include in your lineage how you did to the files what you did. The above example would include:

SHN > foobar2000 0.8.3 (convered and bitverified identical) > FLAC


[i]Note: this will NOT look at, change, or correct any sector boundary issues. If you have SBEs that you need to correct, this needs to be done with shntool. If you run a conversion with FLAC Frontend, there IS an option to correct SBEs, but if the files are in the wrong order in the original window, you're going to have screwed up the entire set.

Feel free to also add tags to your FLAC files:
http://www.thetradersden.org/forums/showthread.php?t=1140

SBE checking code for foobar2000

To add file format independent SBE indication to your playlist, append the following code to your playlist formatting string ([i]Preferences -> Display -> Title formatting, Playlist tab):

$ifgreater($mod(%_length_samples%,588),0,$rgb(180,90,90,180,90,90)$num($mod(%_length_samples%,588),3 ),)

The result looks kinda like this:

[image missing]

Tracks with a red number after the playing time have an SBE. For example, in the screenshot above, only the Stolen Ogre tracks have SBEs.


note the nifty PacMan progress bar :D

Five
2020-02-13, 08:41 PM
Creating DVD/CD Cover Art Guide by trbrown4 via thisistoto, 2006-02-18
Tim’s (trbrown4) Guide To The Basics Of Creating Cover Art

Intro

I was asked to put this little “how-to” guide together. By no means am I an expert or a professional in this field. I figured most of these tricks out on my own and have been fairly happy with the results. Take from this what you will, and if you have any comments or additions to this guide please contact me.

I hope that some of you will find this helpful and that you will begin/continue to create cover art and spread it to the community.

Enjoy!

Who Is This For?

This guide is aimed at the user who has a fair amount of computer knowledge and has some basic computer problem solving skills. If you already are able to create cover art that other people like and are able to create art that you would be willing to post online, this probably is not for you. If you have the desire to create some cool art, but little Photoshop experience, this guide is for you.

To create cover art for my DVD/CD collection I use Adobe Photoshop 7.0. So this guide will be geared towards a Photoshop 7.0 user. I am sure that there are other graphic programs that can be used, even older versions of Photoshop, many with the same tools. But, this guide is based in Photoshop 7.0.

Below are a few templates for you to use as blank canvases, one for the front of CD jewel case and one for a standard DVD case. I did not create the DVD template, I found in about 2 years ago on Sharingthegroove (RIP).

CD Cover



DVD Cover



[I]Before You Begin….

Grab yourself a copy of Adobe Photoshop and start a nice image collection. To find and gather images I use Google’s Image search. This tool is a lifesaver for any digital artist.

http://www.google.com/imghp?hl=en&tab=wi&client=firefox-a&rls=org.mozilla:en-US:official_s

Bookmark this site! Use it, and use it often. Since you will not be using this art for profit, you do not need to worry about copyright and image licensing. However, it is polite to at least grant credit to a photographer if you use their work in your art and get their permission first.

I often use Google’s Image Search to gather images for background art for my covers. Try and grab the highest resolution possible. There is a search option that will look for “large”, “medium” or “small” images.

You will also want to build your collection of fonts. The basic ones that are built into your OS will get old…very quick. There are tons of free fonts out there for every OS….thousands of them. It takes some time to collect and install them, but it will be worth it when you find that you have a huge collection of fonts to choose from!

A Couple Of Useful Tools In Photoshop:

Undo

Oh yeah…and remember that UNDO is your friend! Ctrl-Z at anytime to undo what you just did, this is a lifesaver.

Zooming

You can zoom in and out of your image to get a close up view or see the big picture. Zoom in Ctrl +, zoom out Ctrl -

Saving

As soon as you have completed your first step on any art work it is a good idea to save your art in case something tragic happens. Save every few minutes or after every major step/addition. It sucks to lose something that you have just spent a lot of time on.

File->Save will allow you to save in Photoshop format. PSD format keeps all of your layers intact and makes it super simple to edit later. Always keep a saved copy of your art in PSD for later edits!!! TO save in JPG or any other common image format…..
File->Save-as and the select your format.

[I]Let’s Begin….

I will guide from beginning to end of the creation of some custom DVD artwork. All of these techniques can be used in various types of artwork, so feel free to play around.

Start up Photoshop and open up a template, either CD or DVD. OK, so now what??? Just a blank white canvas??? No, that just won’t do. You’ve got to add some sort of background. You can either choose a solid color and fill it in using the paint bucket tool, or you can use a higher resolution back ground image.

http://www.thetradersden.org/images/thumb/sc01.jpg (http://www.thetradersden.org/images/sc01.jpg)

Setting Your Background Image

Open an image which you would like to use as a background or the base of your art work. Select all (Ctrl-A) to select the entire image and copy (Ctrl-C). Once you have “selected all” you will notice a moving dotted line outlining the image.

http://www.thetradersden.org/images/thumb/sc02.jpg (http://www.thetradersden.org/images/sc02.jpg)

Close the image window out and make sure the open template is selected. Paste (Ctrl-V) the image into open template.

http://www.thetradersden.org/images/thumb/sc03.jpg (http://www.thetradersden.org/images/sc03.jpg)

Now your copied and pasted background image appears in your template. Notice that it automatically created a new layer in the layers window. I have circled this in red for you to see. So, the image is there and now you need to resize that layer to fit the template. First grab the image and drag it to one corner. Edit->Transform-Scale and drag by one of the corners to stretch it as much as you would like. When you have resized the background image to the desired size press enter to make it official. Now you should have something that looks like this.

http://www.thetradersden.org/images/thumb/sc04.jpg (http://www.thetradersden.org/images/sc04.jpg)

Making A Color Overlay Layer To Dull The Image Down A Bit

If you plan adding a lot of detail over your background image, you may want to consider dulling the background color a little bit. This is strictly a judgment call on your part, and it is easy to reverse if you decide against it later.

First, create your new layer. Layer->New->Layer. Once you have done this a window will pop up enabling you to name this layer. For organizational purposes name it something like “Color Overlay”. Select layer opacity to around 50%, this makes the layer transparent. Feel free to experiment later with which percentage you prefer. To do this simply right-click on the layer and adjust the opacity percentage in the “Blending Options” menu.

Ok, so now that you have created you new layer with an opacity percentage less than 100 you can now fill it in using a dull shade like grey or white. Select the “Color Overlay” layer and select the paint bucket tool (follow the red arrow below). Then select the color you will use to fill in using the color selector tool (follow the blue arrow below).

http://www.thetradersden.org/images/thumb/sc05.jpg (http://www.thetradersden.org/images/sc05.jpg)

Once you have selected the paint bucket tool and you color, fill it in. I used white to fill in and it looks like this now:

http://www.thetradersden.org/images/thumb/sc06.jpg (http://www.thetradersden.org/images/sc06.jpg)

If you don’t like it, you can simply change the color or opacity. Easy as pie! Or you can just do away with the overlay layer altogether by deleting it from your layer window. You can always just click on the little eye to hide that layer and see what your image will look like with out that layer.

You can add additional pictures or artwork over top (or behind) using the same blending/opacity techniques to mix it all up and make and very interesting background. Experiment and have fun!

Adding Text

So, it may be a good idea to label the covert art with important information regarding the contents of the disc(s). Text is fairly easy to include and alter. Select the text tool (follow the dark green arrow below.) Select you font style and size (follow the gold arrow below.) Set the cursor where ever you want to add your text.

http://www.thetradersden.org/images/thumb/sc07.jpg (http://www.thetradersden.org/images/sc07.jpg)

Every time that you select the text tool and place the cursor it will create a new layer for that text. You can edit text in an already established letter by selecting the text tool at any time and click on the text that you want to edit. This takes some getting used to, but eventually you will get the hang out it. Earlier version of Photoshop required you to select the layer first and then place the cursor. Gotta love version improvements!

You will also notice that when the text tool is selected there are many text options located along the top of the window. The ‘right justify’ ‘center justify’ and ‘left justify’ buttons are essential. You can use different fonts and sizes within one layer, just select the text that you want to edit and go for it.

Now that you have placed text on the front and back cover you will want to label the spine. There are two ways to do this. You can either enter the text and then rotate it OR you can rotate the entire image, add the text ad then rotate back. I prefer the later.

Image->Rotate Canvas->90 deg. CCW. Select you text tool, place your cursor and type away. You should have something that looks like this:

http://www.thetradersden.org/images/thumb/sc08.jpg (http://www.thetradersden.org/images/sc08.jpg)

Now rotate the image back by doing… Image->Rotate Canvas->90 deg. CW.

Text Effects

These are also very easy with newer versions. Select the text layer that you want to add an effect to and then select all of the text that you want affected. Layer->Layer Style->(Which ever style you want to play with). I like to use the ‘drop shadow’ and ‘stroke’ styles with text. There are many parameters that you can edit and play with. Have fun and experiment.

So I have decided to add a drop shadow to the band name text on the front cover, and here is how it looks (I zoomed in)

http://www.thetradersden.org/images/thumb/sc09.jpg (http://www.thetradersden.org/images/sc09.jpg)

These same layer style effects can be applied to images and other object with in your image. Simply assign it to a new layer and “style” away.

Adding Misc. Stuff

So to make your final art look even more impressive add a “Warning” to the back cover and a “DVD” logo to your spine. My typical warning sounds something like this:

WARNING: This DVD was created by fans of the BAND NAME live experience for fans and should not be profited from in anyway. Please support the free trade of live music. Cover Art designed by YOUR NAME

So, feel free to add that.

Below is a generic DVD logo to insert on to the spine. You will want to add this just as you did your initial background image. Before you put it in your art you may want to change the color to match the theme of your art. Open it, copy it, paste it and resize it. I sometimes even add a drop shadow

[image missing]

You can also add a cute little logo or band picture in the upper part of the spine if you want to. Get creative!

So after adding these here is what we have:

http://www.thetradersden.org/images/thumb/sc10.jpg (http://www.thetradersden.org/images/sc10.jpg)

Printing

Now that you have spent many minutes creating this art you will want to print it. If you used the template that I gave you, it will print out to the appropriate size if you set the print layout to ‘Landscape’. Print settings vary for each printer manufacturer so you will have to play around and figure it out.

I almost always use matte (not glossy) photo paper for my art. I use the brand made by my printer manufacturer. I never would have thought that this made as much of a difference, it truly does. You can always use regular paper stock if you like, just don’t expect top photo quality results. Also, I never use generic ink. I used to years ago in my old printer but I found that over time the print quality got worse. I don’t know how to explain this, but I only use brand name ink now. I guess if you want top results you have to be willing to pony up the dough for the real stuff.

I have been using a Canon i560 with Canon Ink and Canon Matte Photo paper for the last 18 months or so and have been very pleased with the results.

Five
2020-02-13, 08:55 PM
Technobabble sticky post by RainDawg, 2004-11-29
Technobabble Thread Guidelines - Please Read Before Posting

We have setup the Technobabble forum for discussion and questions on all technical topics. Before posting, however, please read through the FAQ (http://www.thetradersden.org/forums/faq.php?) to see if your question has been answered before. Also remember to search the Technobabble Archive for old discussions relating to the topic you're wondering about. There is a wealth of discussion, knowledge, and contrasting opinion on this site that may help you seek out answers to common questions. If you have read through, and still have not felt that there has been a sufficient answer, please feel free to post and ask.

If you ask for assistance, please provide as much information as you can to help others answer your question. What operating system you use, what hardware or software is applicable, what methods you've tried to fix the problem or what you changed before the problem occured will help everyone diagnose and help you sooner. If you can, post necessary screen captures relating to any problems.

This forum is closely moderated. Inactive discussions which contain valuable information will be sent to the Technobabble Archive for the continuing edification of our readers. Threads that contain questions easily answered with an FAQ search or useless threads will be sporadically purged to keep this forum active, up to date, and on topic.

Five
2020-02-13, 09:37 PM
offsite TLH tutorial by Godxofxrock9, 2013-12-21. version with images available here as of this writing. (https://iorr.org/talk/read.php?2,1964553,1964636)
How to make a torrent using Trader's Little Helper

I will show you with traders little helper you can also use utorrent vuze etc but this one is the best for me
[tlh.easytree.org]

01. open it the icon should look like this once installed

[image missing]

02. once opened it should look like this

[image missing]

03. then go over to the part that says torrent and it will give you the option to check the torrent or create you want to create so then it should look like this

[image missing]

you can select where the files are that you want to make in to a torrent with the directory then go to tracker announce and select your tracker

[image missing]

then create your torrent
once successfully done it should look like this

[image missing]

Five
2020-02-15, 12:17 AM
.shn / shorten.txt 2007-03

SHORTEN(1) local SHORTEN(1)



NAME
shorten - fast compression for waveform files

SYNOPSIS
shorten [-hlu] [-a #bytes] [-b #samples] [-c #channels] [-d #bytes] [-m
#blocks] [-n #dB] [-p #order] [-q #bits] [-r #bits] [-t filetype] [-v
#version] [waveform-file [shortened-file]]

shorten -x [-hl] [ -a #bytes] [-d #bytes] [shortened-file [waveform-
file]]

shorten [ -e | -i | -k | -s | -S<name> ] shortened-file

shorten [ -s | -S<name> ] < shortened-data

DESCRIPTION
shorten reduces the size of waveform files (such as audio) using Huff-
man coding of prediction residuals and optional additional quantisa-
tion. In lossless mode the amount of compression obtained depends on
the nature of the waveform. Those composing of low frequencies and low
amplitudes give the best compression, which may be 2:1 or better.
Lossy compression operates by specifying a minimum acceptable segmental
signal to noise ratio or a maximum bit rate. Lossy compression oper-
ates by zeroing the lower order bits of the waveform, so retaining
waveform shape.

If both file names are specified then these are used as the input and
output files. The first file name can be replaced by "-" to read from
standard input and likewise the second filename can be replaced by "-"
to write to standard output. Under UNIX, if only one file name is
specified, then that name is used for input and the output file name is
generated by adding the suffix ".shn" on compression and removing the
".shn" suffix on decompression. In these cases the input file is
removed on completion. The use of automatic file name generation is
not currently supported under DOS. If no file names are specified,
shorten reads from standard input and writes to standard output. When-
ever possible, the output file inherits the permissions, owner, group,
access and modification times of the input file.

From release 2.3 the RIFF WAVE (Microsoft .wav) file type is the
default. These files contain enough information to set most of the
switches presented below, so effective operation is obtained just by
setting the desired level of compression (-n or -r switch).

OPTIONS
-a align bytes
Specify the number of bytes to be copied verbatim before com-
pression begins. This option can be used to preserve fixed
length ASCII headers on waveform files, and may be necessary if
the header length is an odd number of bytes.

-b block size
Specify the number of samples to be grouped into a block for
processing. Within a block the signal elements are expected to
have the same spectral characteristics. The default option
works well for a large range of audio files.

-c channels
Specify the number of independent interwoven channels. For two
signals, a(t) and b(t) the original data format is assumed to be
a(0),b(0),a(1),b(1)...

-d discard bytes
Specify the number of bytes to be discarded before compression
or decompression. This may be used to delete header information
from a file. Refer to the -a option for storing the header
information in the compressed file.

-e Erase seek information from an existing file.

-h Give a short message specifying usage options.

-i Inquire as to whether the given file is an external seek table
file, a file with seek tables appended to it, or neither. If
seek tables are present, the seek table revision number is
shown.

-k Append seek information to an existing file.

-l Prints the software license specifying the conditions for the
distribution and usage of this software.

-m blocks
Specify the number of past blocks to be used to estimate the
mean and power of the signal. The value of zero disables this
prediction and the mean is assumed to lie in the middle of the
range of the relevant data type (i.e. at zero for signed quanti-
ties). The default value is non-zero for format versions 2.0
and above.

-n noise level
Specify the minimum acceptable segmental signal to noise ratio
in dB. The signal power is taken as the variance of the samples
in the current block. The noise power is the quantisation noise
incurred by coding the current block assuming that samples are
uniformally distributed over the quantisation interval. The bit
rate is dynamically changed to maintain the desired signal to
noise ratio. The default value represents lossless coding.

-p prediction order
Specify the maximum order of the linear predictive filter. The
default value of zero disables the use of linear prediction and
a polynomial interpolation method is used instead. The use of
the linear predictive filter generally results in a small
improvement in compression ratio at the expense of execution
time. This is the only option to use a significant amount of
floating point processing during compression. Decompression
still uses a minimal number of floating point operations.

Decompression time is normally about twice that of the default
polynomial interpolation. For version 0 and 1, compression time
is linear in the specified maximum order as all lower values are
searched for the greatest expected compression (the number of
bits required to transmit the prediction residual is monotoni-
cally decreasing with prediction order, but transmitting each
filter coefficient requires about 7 bits). For version 2 and
above, the search is started at zero order and terminated when
the last two prediction orders give a larger expected bit rate
than the minimum found to date. This is a reasonable strategy
for many real world signals - you may revert back to the exhaus-
tive algorithm by setting -v1 to check that this works for your
signal type.

-q quantisation level
Specify the number of low order bits in each sample which can be
discarded (set to zero). This is useful if these bits carry no
information, for example when the signal is corrupted by noise.

-r bit rate
Specify the expected maximum number of bits per sample. The
upper bound on the bit rate is achieved by setting the low order
bits of the sample to zero, hence maximising the segmental sig-
nal to noise ratio.

-s Write seek table information to a separate file (uses shortened
file name with '.skt' extension). If the shortened data is read
from standard input, then the seek table information will be
saved in 'stdin.skt'.

-S<name>
Write seek table information to a separate file given by
"<name>".

-t file type
Gives the type of the sound sample file as one of aiff, wav, s8,
u8, s16, u16, s16x, u16x, s16hl, u16hl, s16lh, u16lh, ulaw, or
alaw.

The simple types are listed first and have an initial s or u for
signed or unsigned data, followed by 8 or 16 as the number of
bits per sample. No further extension means the data is in the
natural byte order, a trailing x specifies byte swapped data, hl
explicitly states the byte order as high byte followed by low
byte and lh the converse. Hence s16 means signed 16 bit inte-
gers in the natural byte order (like C would fwrite() shorts).

ulaw is the natural file type of ulaw encoded files (such as the
default sun .au files) and alaw is a similar byte-packed scheme.
Specific optimisations are applied to ulaw and alaw files. If
lossless compression is specified with ulaw files then a check
is made that the whole dynamic range is used (useful for files
recorded on a SparcStation with the volume set too high). Loss-
less coding of both file types uses an internal format with a
monotonic mapping to linear. If lossy compression is specified
then the data is internally converted to linear. The lossy
option "-r4" has been observed to give little degradation and
provides 2:1 compression.

With the types listed above you should explicitly set the number
of channels (if not mono) with -c and if the file contains a
header the size should be specified with -a. This is most
important for lossy compression which will lead to data corrup-
tion if a file header is inadvertently lossy coded.

Finally, as of version 2.3, the file type may be specified as
wav (the default). In this case the file to be compressed is
interogated for the specific data type (chosen from the above)
and the number of channels to be used. The header length align-
ment (-a flag) is also automatic so lossless compression
requires no switches to be set and lossy compression requires
only that the compression level be set with -n or -r.

-u The ulaw standard (ITU G711) has two codes which both map onto
the zero value on a linear scale. The "-u" flag maps the nega-
tive zero onto the positive zero and so yields marginally better
compression for format version 2 (the gain is significant for
older format versions).

-v version
Specify the binary format version number of compressed files.
Legal values are currently 1, 2 and 3, with higher numbers gen-
erally giving better compression. 2 and 3 are identical, with
the exception that 2 does not generate seek tables, while 3
does. Detection of format version on decode is automatic.

-x extract
Reconstruct the original file. All other command line options
except -a and -d are ignored.


METHODOLOGY
shorten works by blocking the signal, making a model of each block in
order to remove temporal redundancy, then Huffman coding the quantised
prediction residual.


Blocking
The signal is read in a block of about 128 or 256 samples, and con-
verted to integers with expected mean of zero. Sample-wise-interleaved
data is converted to separate channels, which are assumed independent.


Decorrelation
Four functions are computed, corresponding to the signal, difference
signal, second and third order differences. The one with the lowest
variance is coded. The variance is measured by summing absolute values
for speed and to avoid overflow.


Compression
It is assumed the signal has the Laplacian probability density function
of exp(-abs(x)). There is a computationally efficient way of mapping
this density to Huffman codes, The code is in four parts: a run of
zeros; a bounding one; a fixed number of bits mantissa; and the sign
bit. The number of leading zeros gives the offset from zero. Some
examples for a 2 bit mantissa:

Value zeros stopbit mantissa signbit total code
0 1 00 0 1000
1 1 01 0 1010
2 1 10 0 1010
4 0 1 00 0 01000
7 0 1 11 0 01110
8 00 1 00 0 001000
-1 1 00 1 1001
-2 1 01 1 1011
-7 0 1 10 1 01101

Note that negative numbers are offset by one as there is no need to
have two zero codes. The technical report CUED/F-INFENG/TR.156
included with the shorten distribution as files tr154.tex and tr154.ps
contains bugs in this format description and is superceeded by this man
page.


EMBEDDED OPERATION
Shorten may be used embedded within other programs. shorten is a func-
tion call implemented in the file shorten.c. The file main.c provides
a wrapper for stand alone operation. A simple example of ebedded oper-
ation can be found in the file embedded.c. Full windows DLL operation
is provided in the windll subdirectory.


SEE ALSO
compress(1),pack(1).


DIAGNOSTICS
Exit status is normally 0. A warning is issued if the file is not
properly aligned, i.e. a whole number of records could not be read at
the end of the file.

BUGS
An easy way to test shorten for your system is to use "make check", if
this fails, for whatever reason, please report it to <shnu-
[email protected]>.

No check is made for increasing file size, but valid waveform files
generally achieve some compression. Even compressing a file of random
bytes (which represents the worst case waveform file) only results in a
small increase in the file length (about 6% for 8 bit data and 3% for
16 bit data). There is one condition that is know to be problematic,
that is the lossy compression of unsigned data without mean estimation
- large file sizes may result if the mean is far from the middle range
value. For these files the value of the -m switch should be non-zero,
as it is by default in format version 2.

There is no provision for different channels containing different data
types. Normally, this is not a restriction, but it does mean that if
lossy coding is selected for the ulaw type, then all channels use lossy
coding.

The technical report CUED/F-INFENG/TR.156 (included in the shorten dis-
tribution) report contains errors in the bitfield format description
and is superceeded by this document.

See the file "ChangeLog" for a history of bug fixes and feature addi-
tions.

Please mail Jason Jordan at the address below if you find a bug in
shorten involving seek tables.

Please mail Brian Willoughby at the address below if you find a bug in
the AIFF implementation.

Please mail Tony Robinson immediately at the address below if you find
a bug in shorten that is NOT related to seek tables or AIFF support.
Make sure you can reproduce your bug using version 2.3a, the last ver-
sion known to be released by him.


AVAILABILITY
The latest 2.x and 3.x versions can be obtained from
<http://www.etree.org/shnutils/shorten/> or <http://shnu-
tils.freeshell.org/shorten/>.


AUTHORS
Copyright (C) 1992-1999 by Tony Robinson and SoftSound Ltd (ajr@soft-
sound.com)

Unix maintenance of 3.x versions by Jason Jordan <shnu-
[email protected]>.

AIFF support and maintenance by Brian Willoughby
<[email protected]> of Sound Consulting <http://sounds.wa.com/>.

Shorten is available for non-commercial use without fee. See the
LICENSE file for the formal copying and usage restrictions. For sup-
ported versions please see http://www.softsound.com/Shorten.html and
for commercial use please contact [email protected]



shorten 3.6.1 March 2007 SHORTEN(1)

Five
2020-02-15, 12:23 AM
shntool install.txt, 2006-12-23

shntool for DOS/Windows
-----------------------

shntool was built as a native DOS/Windows console application using the MinGW
toolkit, available at <http://www.mingw.org/>.

Support for various file formats is available by downloading the appropriate
win32 helper program linked from the shntool webpage.


============
Installation
============

To install shntool, first extract the files contained in the distribution .zip
file to a temporary directory, and copy shntool.exe to any directory that is
in your PATH. To find out what directories are in your PATH, open a DOS prompt
and type:

C:\> echo %PATH%

Any of the listed directories will do, but perhaps the best choice is one of the
Windows directories, e.g. C:\Windows, C:\Windows\Command, C:\Windows\System,
C:\WinNT, C:\WinNT\System32, et cetera. Of course, yours may be different than
these, and there may be more than one Windows directory listed.

To make sure shntool working correctly, go to the DOS prompt and type:

C:\> shntool -v

If that doesn't work, you may need to add the extension:

C:\> shntool.exe -v

You should see shntool's version information (verify that it shows the correct
version - if not, then you probably have an outdated copy of shntool.exe
somewhere on your hard drive that you need to remove). If you don't see the
version information, or if you get a message saying that the command was not
found, then shntool is not installed correctly.

After you are sure that shntool is installed correctly, you can install any of
the helper programs listed above by copying them to the same directory in which
shntool.exe resides.


=====
Usage
=====

To use shntool, simply invoke it from a DOS prompt as follows:

C:\> shntool

To learn more about shntool command-line parameters and how to use its various
modes, see the shntool.txt or shntool.pdf files included in this distribution.


==================
Document revision:
==================

$Id: INSTALL.mingw,v 1.2 2006/12/23 06:10:11 jason Exp $

Five
2020-02-15, 11:54 AM
shntool changelog.txt and known bugs, 2009-03-30

version 3.0.10 (2009-03-30)
+ cat mode: fixed bug that prevented use of the -d option
+ cat mode [win32]: properly write WAVE data to the terminal
+ conv mode [win32]: properly read WAVE data from the terminal

version 3.0.9 (2009-03-18)
+ allow fix mode to fix (essentially postpad) just one file, which is useful
when using the -c option to check for boundary issues
+ added new global -F option to specify a file containing input filenames
(most modes will now accept input filenames from a single source, using the
following order of precedence: file specified by -F option, otherwise
filenames on the command line, otherwise filenames read from the terminal)

version 3.0.8 (2008-08-27)
+ added new -a option to show default encoder/decoder arguments
+ fixed bug when prompting for overwrite action when stdin was
already at EOF on certain platforms (e.g. OS X)
+ split mode: handle CUE sheets that contain Unicode BOMs
+ wv format: support self-extracting WavPack files

version 3.0.7 (2008-03-02)
+ support for TAK decoding (requires TAK 1.0.4+)
+ updated MPEG-4 ALS to version RM20, and added output support
+ removed detection of unsupported formats RKAU and WMA

version 3.0.6 (2007-12-16)
+ support for TAK encoding (requires TAK 1.0.3+)

version 3.0.5 (2007-10-22)
+ hash mode: show progress indicators
+ cmp mode: new -c option to specify size of byte-shift comparison buffer

version 3.0.4 (2007-09-07)
+ no longer ignore raw WavPack files (wvunpack creates WAVE header for us)
+ support for TTA 3.4.x as well as TTA encoding
+ fixed display bug in joined mode when input files were not CD-quality
+ split mode: new -m option to allow character manipulation of CUE filenames

version 3.0.3 (2007-06-01)
+ improved use of exit codes
+ mkw format: removed deprecated input kluge
+ split mode: override path separation characters in CUE-generated files

version 3.0.2 (2007-02-18)
+ split mode: -c option works again
+ split mode: support wider range of CUE sheets
+ aiff format: support for sox 13.x

version 3.0.1 (2007-01-24)
+ fixed bug with WavPack format detection on 64-bit systems
+ split mode: fixed bug parsing CUE sheets whose last line lacks a newline
+ added support for MKW files
+ added support for MPEG-4 ALS files (input only)
+ added support for detection of TAK files (no input or output yet)
+ added support for detection of WMA files (no input or output yet)
+ added support for detection of RKAU files (no input or output yet)

version 3.0.0 (2007-01-01)

[platform support]
+ shntool is now a native windows executable (Cygwin is no longer needed)

[file formats]
+ added support for WavPack 4.x files
+ added support for m4a (Apple Lossless Audio Codec) files (input only)
+ added support for la (Lossless Audio) files (input only)
+ added support for tta files (input only)
+ added support for bonk files
+ added support for kxs (Kexis) files (input only)
+ added new format 'term' to send output to a terminal (standard output)
+ cust format: correct output filenames now shown (instead of "file.custom")
+ cust format: partially-written output files are now removed on error

[modes]
+ added new mode 'gen' to generate arbitrary-sized files containing silence
+ added new mode 'trim' to trim silence from front and/or back of files
+ renamed mode 'md5' to 'hash', since it now calculates MD5 and SHA1 hashes
+ hash mode: added option to reorder filenames - may be useful with -c
+ split mode: new -n option to control output count format (01, 001, ...)
+ split mode: support for wider range of CUE sheets
+ split mode: new -t option to name files based on keywords in CUE sheets
+ split mode: fixed bug in which -l option failed with large input files
+ split mode: new -e/-u options for specifying lead-in/lead-out
+ split mode: new -x option to extract specific tracks
+ len mode: show compression ratio for individual files as well as overall
+ len mode: show input file format for each file
+ len mode: new -c/-t options to suppress column names/totals line
+ len mode: configurable units for files and totals
+ conv mode: new -t option to convert WAVE data read from the terminal
+ fix, join and hash modes: filenames can now be sorted automatically using
a natural sorting algorithm, which orders filenames containing numbers the
the same way a human would, e.g. "t1.wav, t2.wav, ... t10.wav" instead of
"t1.wav, t10.wav, t2.wav, ...". as this was taken from the sources of GNU
ls (see 'ls -v'), it is considered stable enough to be the default.
if desired, sorting can still be done interactively, or not at all.

[global behavior]
+ user-configureable progress types (percentage, dots, spin, faces or none)
+ default overwrite option is now 'ask' - can be overridden with -O option
+ allow on-the-fly renaming when files exist and overwrite option is 'ask'
+ new -H option to show h:mm:ss.{ff,nnn} in output, instead of m:ss.{ff,nnn}
+ new -a and -z options to override default file name prefix and postfix
+ new options -w to suppress warnings and -q to suppress non-critical output
+ converted to getopt - this means long options have become single characters
+ alternate input decoder: -i "fmt decoder [arg1 ... argN]"
+ alternate output ext/encoder: -o "fmt [ext=abc] [encoder [arg1 ... argN]]"
+ in addition to the new -i/-o options above, default encoders/decoders
and/or their arguments, as well as file extensions, can be overridden
using any combination of appropriately named environment variables:

ST_<format>_DEC="decoder [arg1 ... argN]"
ST_<format>_ENC="[ext=abc] [encoder [arg1 ... argN]]"

e.g.:

% ST_SHN_DEC="shorten-2.3b" shntool len *.shn
% ST_FLAC_ENC="flake - %f" shntool conv -o flac *.wav
% ST_AIFF_ENC="ext=aif" shntool gen -o aiff -l 1:00

version 2.0.3 (2004-05-05)
+ fixed bug in len mode that sometimes caused the m:ss.ff value on the totals
line to be reported as being one second longer than it actually is - this
should finally resolve all variants of this bug, which was discovered after
2.0.0 was released, thought to have been fixed in 2.0.1, and has since been
determined to have existed from version 0.96 onward
+ len and info modes now indicate whether audio data is block-aligned

version 2.0.2 (2004-05-04)
+ fixed crash when using -stdout in join mode without specifying an output
format

version 2.0.1 (2004-05-03)
+ fixed bug in len mode that sometimes caused the m:ss.ff value on the totals
line to be reported as being one second shorter than it actually is

version 2.0.0 (2004-04-20)
+ added new mode 'pad' to individually prepad or postpad CD-quality files
+ added new mode 'cue' to generate CUE sheets or split points from files
+ split mode now supports simple CUE sheets for splitting
+ added "-l len" option in split mode to split file into smaller files
based on multiples of time interval "len"
+ added -c option to md5 mode for calculating composite MD5 fingerprints
+ added the ability to prepad or postpad files created in join mode
+ added support for sowt-compressed AIFF-C files (requires sox 12.17.4)
+ added the ability to skip ID3v2 tags contained in files or input streams:
- formats with decoders that natively handle ID3v2 tags: shn, flac, ape
- formats that handle ID3v2 tags through clever trickery: wav, aiff, ofr
- formats that currently cannot handle ID3v2 tags: lpac, wv
+ added -O option to all modes that create output files, so that the user can
control whether output files that already exist are overwritten
+ len mode modified to always show overall compression ratio
+ new column in len mode to indicate whether files contain an ID3v2 tag
+ changed length format for non-CD quality files from m:ss to m:ss.nnn
+ several additions and updates to the information shown by info mode
+ all modes now accept the -D option, which enables debugging information
+ modes that create files now remove partially-written output files on error
(does not apply to the cust format module, since filename cannot be trusted)
+ updates to handle NULL-padding of odd-sized data chunks, per RIFF specs
+ fixed nasty bug in conv mode that caused some input files to be overwritten
+ fixed split mode m:ss.nnn bug that ignored nnn when file was not CD quality

version 1.2.3 (2003-03-20)
+ split mode will now split any file, not just CD-quality ones
+ cat mode now accepts multiple filenames
+ fixed bug in split mode where split point files with Windows line endings
were considered invalid

version 1.2.2 (2003-02-22)
+ fixed bug in md5 mode that caused extra RIFF chunks to inadvertently be
included in the calculation of MD5 fingerprints
+ relaxed the file name placeholder requirement for the cust format module
(the '%f' placeholder can now be a substring of an argument)

version 1.2.1 (2003-02-17)
+ added new mode 'md5' (computes MD5 hash of audio data, independent of format)
+ added support for wv (WavPack) file format
+ added new output format module 'cust' that allows one to specify a custom
encoder to use in the creation of output files - this enables the user to
override the default encoder arguments for formats that shntool already
supports, as well as encode to formats that shntool does not yet support

version 1.2.0 (2002-12-07)
+ info mode now supports extra per-format information (currently this is used
to indicate seekability of shn files)
+ join mode now supports joining of non-CD quality files

version 1.2.0-rc2 (2002-10-31)
+ overall compression ratio shown in len mode if all input files are compressed
+ fixed bug in fix mode that caused shntool to hang in rare instances
+ added support for ofr (OptimFROG) and lpac file formats

version 1.2.0-rc1 (2002-09-12)
+ added support for aiff, flac and ape file formats; dropped kexis support
(aiff format supports only AIFF and uncompressed AIFF-C, not compressed AIFF-C)
+ added new mode 'conv' (converts files from one format to another)
+ improved functionality in cmp mode (new -s, -l and -f options)
+ join mode can now write to stdout (only with 'wav' output format)
+ shntool now waits for child processes (prevents shorten 3.4/md5sum race condition)
+ fixed bug in join mode that caused output file to have incorrect data size
when the data was not sector-aligned, and -nopad was specified
+ some debugging output now shown if SHNTOOL_DEBUG environment variable is set
(currently limited to the status of child processes - useful if shntool is hanging)

version 1.01 (2001-01-23)
+ fixed rounding error in len and info modes that caused certain
non-sector-boundary-aligned CD-quality files to appear to be about one
second shorter than they actually are. For example, a file that was just
over half of a frame longer than 3:14.74 would have been incorrectly rounded
to 3:14.00, when it should have been rounded to 3:15.00. The error occurred
when the WAVE data size modulo 176400 fell in the range [175224, 176399].
Assuming that the data sizes of non-sector-aligned CD-quality WAVE files are
uniformly distributed, the chance of this error occurring is just over 1 in
150 (1176 in 176325, to be exact).
+ removed arbitrary 4-byte file size cutoff

version 1.00 (2001-01-13)
+ fixed offset miscalculation in cmp mode for files that differ
+ fixed design error in cat mode where extra RIFF chunks were not output.
If cat mode was used to extract a file (e.g. shncat file.shn > file.wav),
then the output file would appear to be truncated to len mode. Extra RIFF
chunks can be still suppressed if needed via the new -nr switch.
+ cat mode now quits when nothing more would be output
+ minor documentation and output updates

version 1.00 beta 9 (2001-01-08)
+ added 'r' shift type to fix mode (round to nearest sector boundary)
+ added new mode 'cmp' (compares WAVE data in two files)
+ added -c switch to split mode
+ now only installs symbolic links for specified built-in modes
+ finally wrote a "tutorial"
+ generalized the file order editor, and added more useful commands to it
+ added -nd switch to cat mode

version 1.00 beta 8 (2001-01-05)
+ split mode erroneous input bug fixed
+ minor code cleanup and (hopefully) improved alias installation

version 1.00 beta 7 (2001-01-05)
+ Digital Unix 4.0D compile fix and a 64-bit-architecture header size
calculation fix
+ added new mode 'split'
+ shortened some command-line arguments in certain modes

version 1.00 beta 6 (2001-01-03)
+ added new mode 'cat'
+ each mode is now aliased to "shn<mode>", e.g. shnlen, shnfix, shncat, etc.
+ cleaned up all errors reported by gcc -Wall

version 1.00 beta 5 (2001-01-01)
+ fixed display errors when using aliases

version 1.00 beta 4 (2001-01-01)
+ added support for conditional compilation of modules
(see the INSTALL file for more information)

version 1.00 beta 3 (2000-12-31)
+ converted to GNU autoconf

version 1.00 beta 2 (2000-12-28)
+ reimplemented mode aliasing, e.g. creating a symbolic link to shntool named
'shnlen' will start shntool in len mode

version 1.00 beta 1 (2000-12-23)
+ completely rewritten to be more modular
+ added three new modes - 'join', 'strip' and 'info'
+ see the README file for more information

version 0.98 (2000-11-22, never released)
+ started improving some things, but gave up in favor of a full code redesign

version 0.97a (2000-11-22)
+ fixed help screen bug

version 0.97 (2000-11-21)
+ cleaned up and corrected help screens
+ check whether files are 'CD-quality', and report if they are not
+ display file length in m:ss.ff format only if it is CD-quality, and
print totals line in m:ss.ff format only if all files were CD-quality -
otherwise, display file length in m:ss format
+ check that all files are CD-quality before proceeding in fix mode
+ check that at least one file has an error before proceeding in fix mode
+ some code cleanup
+ realized that this thing is due for a rewrite :^)

version 0.96 (2000-11-18)
+ now report file length in m:ss.ff format, where ff is a number from 0 to 74
that best approximates the remaining number of 2352-byte blocks after m:ss
+ more error and sanity checking for input files

version 0.95 (2000-10-19)
+ fixed bug where chunk size wasn't being updated for files that were altered in fix mode
+ added code to help determine whether shorten is in the default path
+ WAVE data for headers in .wav (not .shn) files are now verified
+ added extra debugging information in len mode
+ file names created in fix mode are now based on input filenames when -f or -b are given

version 0.94 (2000-08-24)
+ added option to pad the last file with zeroed data in fix mode, if necessary

version 0.93 (2000-07-06)
+ I partially broke file reading from stdin in len mode in 0.92 - fixed.
+ cleaned up code to use the file_info struct for the filename wherever possible
+ added error checking after some malloc's
+ made some error messages more descriptive with regard as to why they may have happened
+ added a generic bug_report() routine (may want to add some diagnostic info to it later)
+ changed all // comments to standard comments to satisfy some bitchy compilers :)

version 0.92 (2000-07-04)
+ added setlinebuf() support for architectures that don't have it
(via the "-D_SETLINEBUF_HACK" compiler option)
+ added description of the len mode "-debug" flag to its help menu

version 0.91 (2000-07-04)
+ WAVE headers are processed correctly again
+ added "-debug" switch for len mode
+ fixed segfaults with headers > 64 bytes

version 0.9 (2000-07-03)
+ initial public release

version 0.03 (2000-07-02)
+ all major bugs seem to be worked out, only minor cosmetic
issues remain

version 0.02 (2000-07-01)
+ started merging shnlen with fixwav to form a unified tool

version 0.01 (2000-06-30)
+ some ideas coalesced, and development started on fixwav
Known bugs

Here is the list of all known bugs in the latest stable version:

When extracting compressed WAVE or AIFF audio, do NOT use the '-t' option, or you will lose data. Specifically, do not run the following commands:

% shorten -x -t wav filename.shn
% shorten -x -t aiff filename.aiff.shn

The resulting files will only contain the audio header, but no audio data.

Since the original shorten doesn't handle this correctly, I'm not sure whether this is a bug, design flaw, or neither. But it certainly is not intuitive, and it will destroy your data, so take heed!

Who do I contact if I have any questions/comments/suggestions/patches/bugs/flames?

Send it all to <shnutils at freeshell dot org>.

Five
2020-02-15, 12:47 PM
text from the old etree shorten page, still hosted at shnutils.freeshell.org
What is it?

shorten is a fast, low complexity waveform coder (i.e. audio compressor), originally written by Tony Robinson at SoftSound. It can operate in both lossy and lossless modes. More information might be found here (https://web.archive.org/web/20060820202526/http://www.softsound.com/#Products).

The last official version released by Tony was 2.3a. In the fall of 2000, I started hacking on the code to add unix support for seek tables, which Wayne Stielau had developed and implemented for the Windows platform. With his help, I was able to release version 3.0 on 9/29/2000, and have maintained the unix 3.x versions ever since.

Seek tables allow one to seek through a .shn file in real-time while playing it in various audio players. Here is a list of plugins that support seek tables:


xmms-shn (http://shnutils.freeshell.org/xmms-shn/) (for XMMS (http://www.xmms.org/))
ShnAmp (http://forums.winamp.com/showthread.php?t=257776) (for WinAmp (http://www.winamp.com/))
foo_shn (https://www.foobar2000.org/components/view/foo_input_shorten) (for foobar2000 (https://www.foobar2000.org/))

See the ChangeLog file for more information about what's new in each version.

Where can I get it?

Right here:
http://shnutils.freeshell.org/shorten/

Five
2020-02-15, 03:32 PM
shorten license and changelog. As of v3.6.1 Cygwin.dll is no longer needed, 2007-03-19.

SHORTEN SOFTWARE LICENSE

This software is being provided to you, the LICENSEE, by Tony Robinson
and SoftSound under the following license. By obtaining, using and/or
copying this software, you agree that you have read, understood, and
will comply with these terms and conditions:

This software may not be sold or incorporated into any product which is
sold without prior permission from SoftSound. When no charge is made,
this software may be copied and distributed freely.

Permission is granted to use this software for decoding and
non-commercial encoding (e.g. private or research use). Please email
[email protected] for commercial encoding terms.

DISCLAIMER

This software carries no warranty, expressed or implied. The user
assumes all risks, known or unknown, direct or indirect, which involve
this software in any way.

1.00 released on Tue 30 Mar 1993
shorten.h changed to allow ANSI prototypes
insertion of Steve Lowes fixes for PC compatibility
Inclusion of the file laplacian.tex
Typo in man page fixed (hl -> lh)
1.01 released on Tue 06 Apr 1993
Inclusion of the file change.log
Documentation of the default byte order
Setjmp() moved so as to only be used in embedded applications
Bug in casting to long in word_get() fixed
1.02 released on Thu 08 Apr 1993
sizech.c removed in line with allowing sizeof(int) == 2
variable nsd in vario.c:uvar_put() changed to unsigned long
variable uvar in vario.c:var_get() changed to unsigned long
constant 1 changed to 1L in vario.c:var_put()
log(0.0) avoided in lpc.c for pathological cases
check inserted for predictor order being less than the block size
if NEED_TO_GUARANTEE_LPC_STABILITY is defined, it will do just that
1.03 released on Mon 12 Apr 1993
resetopt() added to getopt.c and called before getopt() in shorten.c
tables in bitshift.h changed from int to char to reduce executable size
option -d added to discard header bytes on compression/decompression
wav2lpc() fixed so that the returned value "resn" is non-negative
1.04 released on Fri 07 May 1993
check added to ensure that the lpc order is less than the buffersize
1.05 released on Sat 08 May 1993
option -d fixed to work with pipe input and discard on decompression
bitshift.h removed from the distribution to reduce the size
types uchar and schar typedef'ed in shorten.h and used in bitshift.h
1.06 released on Tue 11 May 1993
try to preserve the mode, owner, group, atime and mtime of UNIX files
input file in unlinked if output file was written successfully
array.c created to contan pmalloc() and long2d() which error check
1.07 released on Thu 13 May 1993
added the file INSTALL to give installation instructions
fixed a few function declarations that were missing
internal movement within shorten.c in prepration for lossy coding
changed test file to be real speech
change from shar to tar.Z format for distribution
new typdefs ulong and ushort for the obvious things
pmalloc and long2d now take arguments of type ulong
1.08 released on Fri 18 Jun 1993
better function prototyping (gcc style) in shorten.h
uchar ushort ulong now #defined to avoid warnings if typedef exists
1.09 released on Thu 01 Jul 1993
provisional implementation of -q and -r flags - not finalised
getc_exit and putc_exit macros used in shorten.c
-a for version 2 now copies verbatim (checking for the magic number)
various changes and additions to sphere.c from Jon Fiscus
getopt functions/variables have hs_ prepended to avoid system conflict
dupfileinfo.c renamed to be dupfinfo.c - less than eight characters
memory allocation in fixio.c and vario.c tied up for embedded use
1.10 released on Mon 04 Oct 1993
updated man page for -q and -r
exit routines now use varargs and are less verbose
bitshift now prints longs to bitshift.h as %ld
shn109.exe included for the first time
1.11 released on Mon 08 Nov 1993
hsgetopt.h deleted - obsoleted by correct definitions in shorten.h
division by zero for null input avoided in lpc.c
1.12 released on Wed 23 Feb 1994
out by one bug in lpc.c internal array sizes fixed (-p 64 now works)
magic and version (0 ... 7) numbers merged for SPHERE header parsing
decompression starts when the magic number is found
option -a now allows for alignment prior to during decoding
1.13 released on Mon 11 Apr 1994
dupfinfo.c - utime() now called before chmod() and chown()
prototpye for malloc changed to unsigned long
readme.dos created for DOS specific problems
support for stdargs added if HAVE_STDARG_H defined on compilation
exit.c - fprintf(stderr, ": "); perror(NULL) changed to perror("\0")
main.c - DOS pipe output hacked by opening fd 1 "wb" with no buffer
fixio.c - optimisation test for nchan == 0 changed to nchan == 1
shorten.c - changed abs() for labs() as arguements are long, not int
lots of non-functional disambiguation to keep DOS compilation quiet
bitshift.c renamed to mkbshift.c and bitshift.h hardwired in for DOS
shorten.exe included in the distribution
releases now made with mkrelease, *.tar.Z, *.tar.gz. *.zip
1.14 released on Mon 08 Aug 1994
ulaw files are now lossy coded by internally converting to linear
better treatment of LPC quantisation errors from version 2
slightly better -h screen
default nmean is 4 as from version 2
fixed stupid bug that corrupted the zip version of shorten.exe
1.15 released on Wed 24 Aug 1994
ICASSP94 support code deleted
lpc.c: now pass non-zero mean signal and offset
shorten.c: massive internal reorganisation of compression section
shorten.c: reasonable mean correction when in lossy mode from V 2.0
1.16 released on Mon 29 Aug 1994
stdlib.h and string.h now assumed to exist
lpc.c: fix bug which malloced too few bytes (introduced in 1.16)
1.17 released on Wed 31 Aug 1994
1.18 released on Sat 03 Sep 1994 (by mistake)
lossy compression to a given segmental SNR is now supported (-n)
man page rewritten and updated to support lossy compression
the au file type option is has been renamed ulaw (au is still valid)
filetimes on the DOS release now match those on the UNIX release
v2: maximum lpc order searched is the best previous value plus two
PC compilation moved from XT/tcc to 486/gcc and Makefile.dos deleted
1.19 released on Mon 03 Oct 1994
spurious labs() in poly.c swapped for abs
change all #ifdef unix for #ifndef MSDOS as djgpp #defs unix
1.20 released on Mon 17 Oct 1994
bcc supported again as the executable is smaller (so labs() is back)
1.21 released on Mon 14 Nov 1994
option -l implemented to print the contents of the LICENSE file
technical report 156 added as files tr156.tex and tr156.ps
man page updated
support added for the WATCOM compiler from [email protected]
mkrelease and Change.log renamed to release and change.log
shorten.c: very minor change in lossy coding with -n (2.0 -> 25.0/12.0)
MSDOS stdin/stdout binary mode fiddling moved from main.c to shorten.c
linear2ulaw(int) changed to linear2ulaw(long)
old XT compatable executable renamed shorten.086
1.22 released on Tue 10 Jan 1995
shorten.c: bug with FN_ZERO fixed - no longer look for more bitshifts
exit.c: basic_exit() - delete output file if abnormal termination
shorten.1: warn about lossy coding of unsigned data with offset
shorten.c: new flag, -u, maps both ulaw zeros onto the positive zero
v2: new type for lossless ulaw, TYPE_AU2, for two zero ulaw data
1.23 released on Fri 14 Jul 1995
minor documenation changes
2.0 released on Sun 27 Aug 1995
lpc.c: round quantised coefficents to the nearest integer
*.c: numerous casts to avoid warnings with Visual C/C++
shorten.1: changed format of bit table
ulaw.c: replaced with Sulawalaw.c
alaw support: much like ulaw except no zero merge or fancy bitshift()
shorten.c: help screen left shifted by six chars to accomodate "alaw,"
Limited WINDOWS support added
slight optimisation when frame is all zero (don't change bitshift)
shorten.c: bug fixed when FN_QLPC called after FN_ZERO
fixio.c:signed values close to max were converted to min when quantised
BUGFIX_RELEASE definition moved from Makefile to shorten.h
old ANNOUNCE file deleted and minor changes to INSTALL
shorten.mak: Default DOS compiler changed from BCC to MS Visual C++
Makefile/release: now take BUGFIX_RELEASE from shorten.h
Makefile: no longer delete bitshift.h on clean/spotless
2.1 released on Mon 26 Feb 1996
lpc.c: a bug disabled the early stopping on the search for LP order
shorten.c: silly bug in ordering of arguments in a rare printf()
shorten.c: redundant variable/storage buffer1 removed
shorten.1: Document bugs in the tech report on Rice coding
-t is now honoured (where possible) to convert file types on decode
Makefile updated to be more package friendly (James Christie)
2.2 released on Mon 10 Mar 1997
New -t option "wav" for RIFF WAVE files (automatic selection of -t)
-t wav now the default - man page and shntest updated, mvs_s16 renamed
script release renamed mkRelease to avoid MS VC++ name conflict
setjump() bugfixes for embedded operation (Martin Saxon)
New windows DLL operation (Martin Saxon)
2.3 released on Thu 04 Sep 1997
exit.c: system dependence on *sys_errlist[] changed to strerror()
SHORTEN.086, SHORTEN.EXE and shortn32.exe removed
Some Debian support
2.3a released on Fri 26 Feb 1999
3.0 released on Fri 29 Sep 2000
Seek table extensions by Wayne Stielau
Unix backport of seek table extensions by Jason Jordan
Debian support improvements by Caleb Epstein
3.1 released on Tue 10 Oct 2000
Seek table append option 'fixed'
Documentation updated
3.2 released on Sat 13 Jan 2001
Added '-i' switch to display whether a file contains seek information
Cleaned up endian-conversion code
Fixed a file naming bug - now, when only an input file name is given,
output files are named according to the following rules:

If shortening a file:

If the input file name ends in .wav, then change
extension to .shn; otherwise, append .shn to the
input file name. Examples:

file.wav -> file.shn
file.ext -> file.ext.shn

If extracting a file:

If the input file name ends in .shn, then change
extension to .wav; otherwise, append .wav to the
input file name.

file.shn -> file.wav
file.ext -> file.ext.wav

When the caller specifies -v2 on the command line, seek tables are
not generated (neither appended nor created in separate files).
The default behavior is to generate/append seek tables.
3.3 released on Sun 12 Aug 2001
Converted to autoconf/automake build system
Made seek table code 64-bit clean
Changed seek table data structures to compensate for compilers that don't
properly implement #pragma pack(1)
Various minor cleanups/updates that don't impact the shorten algorithm
3.4 released on Sun 10 Feb 2002
Fix for reading/writing binary data on stdin/stdout for operating systems
that do not have a single '\x0A' as a line separator (Frank Klemm)
Shorten now refuses to input data from or output data to a tty
Fixed crash when trying to create seek tables from a non-shorten file
-s and -S options can now create seek table files from data read on stdin
(with -s, output filename is 'stdin.skt')
Seek tables are now appended to non-stdout output file when reading
uncompressed data from stdin (e.g. shorten - outfile.shn < data.wav)
3.5.0 released on Mon 18 Nov 2002
Support for compression of AIFF files contributed by Brian Willoughby of
Sound Consulting
Changed file naming convention during extraction - when only an input file
name is given, output files are named according to the following rules:

If the input file name contains more than one '.' and
ends in .shn, then drop the .shn; otherwise, if the input
file name ends in .shn, then change the extension to .wav;
otherwise, append .wav to the input file name.

file.aiff.shn -> file.aiff
file.aiff.ext -> file.aiff.ext.wav
file.shn -> file.wav
file.ext -> file.ext.wav

This change was made so that non-wav files would be properly named after
shortening and unshortening. For example, 'shorten file.aiff' creates
file.aiff.shn, and with the change above, 'shorten -x file.aiff.shn'
will now create file.aiff (instead of file.aiff.wav).
3.5.1 released Wed 12 Feb 2003
Minor AIFF spec compliance updates
3.5.2 released Sun 28 Mar 2004
Fixed seek table permissions bug when creating seek-enabled files from
read-only input files
3.6.0 released Mon 03 May 2004
Fixed a seek table bug which, in rare cases, caused seek tables for certain
files (e.g. ones that end with silence) to be generated incorrectly. Seek
tables created with the -k, -s or -S options are not affected. To help
distinguish older, possibly buggy seek tables from newer ones, the seek
table revision number has been bumped from 0 to 1. Thanks to Peter Kunath
for the report and the fix.
Updated the '-i' option to determine whether a file is an external seek
table file, a file with seek tables appended, or neither. If seek tables
are present, the seek table revision number is now shown.
3.6.1 released Mon 19 Mar 2007
Shorten is now a native Windows executable (Cygwin is no longer needed)

Five
2020-02-15, 05:16 PM
earliest known announcement of legacy software mkwACT, 2000-10-30. we use Trader's Little Helper for .mkw, .shn, .md5 since 2005.

playing older .shn files, you could not seek, i.e. skip to the middle of a track. mkwACT was the killer app because it usually worked and could encode seekable .shn files for the first time ever. none of this is an issue in 2020 lol.

etree.org | mkwACT introduction

The mkw Audio Compression Tool (mkwACT) is a Windows program designed to allow easy and convenient conversion of WAV audio files to and from various lossless and lossy compressed formats, including Shorten.

mkwACT is the easiest utility available for compressing and decompressing Shorten files for Windows. It also can generate and check MD5's.

The latest version of mkwACT, v0.97 beta 1, can encode Shorten files with seek information!

For the most recent software and documentation updates, please visit the official mkwACT website

etree.org | mkwACT download

mkwACT097b1.exe v0.97 beta 1 - 1.1MB Released: 10/2/00

mkwACT096f.exe v0.96f Released: 6/8/00

If you are installing mkwACT 0.96e or later for the first time, install these MFC runtime libraries first.

etree.org | mkwACT docs

For mkwACT documentation, please view the mkwACT readme.

etree.org | mkwACT credits

Thanks to Michael K. Weise, the author of mkwACT, for making a great tool for the entire lossless trading community!

mkw license, last known version still online to 2004-10-30
MKW LICENSE

This software is copyright (c) 1998, 1999 by Michael K. Weise ("the author".)
Personal use of the software is permitted free of charge.

Commercial use of the software or incorporation of the software into an income-
producing product is not permitted without the author's prior written consent.

The software may be redistributed freely, provided that it is not altered, that
it is accompanied by the author's original documentation and that no fee
whatsoever is charged of the recipient.


DISCLAIMER OF WARRANTY

This software is provided "as is" without warranty of any kind, either expressed or
implied, including, but not limited to, the implied warranties of merchantability
and fitness for a particular purpose. By installing or using the software, you
assume all associated risks, known or unknown. In no event will the author be
liable for any damages arising from the use of or inability to use the software.
mkwACT readme, 1999
(The readme is currently somewhat outdated. Please see the change log for latest information. -mkw)


The mkw Audio Compression Tool

Contents

[color=blue]Introduction
Components & Licenses
How to use mkwACT - Basic
How to use mkwACT - Advanced
Known Issues
Author Contacts
Where to look for software updates


Introduction

The mkw Audio Compression Tool (mkwACT) is a Win32 program designed to allow easy and convenient conversion of WAV audio files to and from various lossless and lossy compressed formats. Currently supported compressed formats are MKW, SHN and MP3.
The easiest way to initiate a compression task is by simply dragging the file from Explorer into the mkwACT window, but a command line interface and a DDE interface are also supported. Queued tasks are asynchronously processed one at a time, using only idle CPU time (i.e., without significantly slowing down other applications running on the same system.) MD5 Checksum generation and testing of compressed files are also supported. Processing can also be manually paused at will.


Platform Compatability

I personally test each new version of mkwACT on a Windows NT 4.0 (SP6) platform before releasing it. The software is used by others running various versions of Windows 9x as well as Windows 2000. Windows 3.1 and Win32s are not supported, however.


Components & Licenses

The mkw Audio Compression Tool (mkwACT) acts as a front-end user interface to various plug-in components which complete various audio compression tasks. Due to the fact that two of these components are provided by others than myself, Setup will ask you to accept three different license agreements during the installation process. The mkw Audio Compression Tool and all supported plug-in components have licenses that permit personal use at no charge; see each author's license for details.

mkwACT currently supports the following plug-in components:

MKWM?.DRV

These components provide two-way support for MKW, a lossless compression format for CD quality (16 bit, 44.1 kHz, stereo) recordings. MKW compression is faster than shorten, but does not provide as good a compression ratio. These components are my work and, like the main mkwACT program, are subject to the mkw license.


SHNDLL32.DLL

Provides two-way support for shorten, the current de-facto standard in lossless audio compression. SHNDLL32.DLL is the work of Tony Robinson and SoftSound Ltd., and is subject to [color=blue]the shorten license (http://www.thetradersden.org/forums/showthread.php?p=2841475#post2841475).


BLADEENC.DLL

Provides encoding support for MPEG Layer III (.mp3), the current de-facto standard in lossy audio compression.
All valid bitrates from 160 kbps on up are supported; lower bitrates are not supported for the reasons stated here. (Personally, I don't recommend using bitrates below 192 kbps in the first place, but if you wish to sacrifice sound quality for a higher compression ratio you'd be better off using the Fraunhofer encoder rather than Blade. At the recommended bitrate of 256 kbps, Blade's output quality is noticeably superior to all other encoders I know of.) BLADEENC.DLL is the work of Tord Jansson and subject to the GNU General Public License (https://web.archive.org/web/20050122055621/http://www.fsf.org/copyleft/lesser.html).


MKWMPEG??.DRV

Provides decoding support for MPEG Layer I, II and III (.mp?) files at all valid bitrates, including VBR. It is based closely on the ISO reference code, meaning it is not optimized for speed but should provide the best output quality possible from a given MPEG file. This module was derived by myself from MAplay1.2+, and is subject to the GNU General Public License (https://web.archive.org/web/20050122055621/http://www.fsf.org/copyleft/lesser.html). Feel free to download the source code.


MD5SUM.DLL

Allows the generation of checksum (.md5) files for all compressed file types, as well as checksum testing to verify file integrity. This code was derived by myself from the RSA Data Security, Inc. MD5 Message-Digest Algorithm.

How to use mkwACT - Basic

Simply drop files to be converted onto the mkwACT window. When dropping WAV files, hold down SHIFT to convert to SHN, CTRL to convert to MP3 or no key to convert to MKW. That's just about all there is to basic operation.

The output file will have the same name as the input file, with the appropriate extension for its type of course. Decoding MPEG files is an exception, in that the MPEG compression layer and bitrate used will be appended to the name of the decoded file as a reminder of its origin. Any existing file of the same name in the same location will be overwritten.

Whether the input file will be removed after the output file has been successfully written is a configurable option (see below). By default it is enabled for lossless processing and disabled for lossy (MPEG) processing.

Optionally, whenever a compressed file is created, its md5 checksum can be calculated and written to an .MD5 file in the same directory. (This option is enabled by default.) The checksum will be appended to an existing .MD5 file in the same directory if there is one. If there is none, a new file will be created using (1) the name of any .NFO found in the same directory, failing that (2) the name of any .TXT file found in the same directory, or failing that (3) NONAME.MD5.

To test the integrity of all files referenced in an .MD5 file, simply drop the .MD5 file onto the mkwACT window. Unlike compression tasks, which are always added at the bottom of the processing queue, checksum verification tasks are always added to the top of the queue. Thus, you can simply drop a folder containing an .MD5 file and several compressed files onto mkwACT in order to first verify the integrity of the compressed files and subsequently decompress them.
No news is good news: as long as all checksums match, mkwACT will not display any messages. If missing or corrupt files are encountered during processing of an .MD5 file, mkwACT will stop further processing and display an error message.

As of version 0.96, mkwACT associates itself with .MKW, .SHN and .MD5 files, so that it can be launched by double-clicking on such a file in the Windows shell.


How to use mkwACT - Advanced

{ todo }


Known Issues

Note that WAV files may contain non-audio data blocks, which are typically used only by the creating application and ignored by other applications. mkwACT will ignore such data blocks without issuing a warning. Thus, WAV files containing such extra information will not be byte-identical after compressing and uncompressing, although the audio data contained will be identical.


Author Contacts

For feedback, including feature suggestions and bug reports, please use this message board.

You can also reach me by private e-mail at [email protected], but again please use the message board for all matters that may be of interest to other users.

mkwACT is a gift from me to my fellow music lovers. If you wish to help motivate me to develop mkwACT further, your support in the form of CDs containing live Grateful Dead recordings (other than these) or a check in any amount will be greatly appreciated at this address:

Michael K. Weise
xxx xxxxxxx xxxxx
xxxxxxx xx xxxxx-xxxx

Gratitude for the shorten codec should be directed towards SoftSound Ltd. (https://web.archive.org/web/19981212032902/http://www.softsound.com/)

Gratitude for the Blade MPEG encoder should be directed towards Tord Jansson.


Where to look for software updates

Official mkwACT download page

Official Shorten home page (http://shnutils.freeshell.org/shorten/)

Official Blade Encoder home page
notes from his Trading Preferences page, which show the troublesome situation of cdr(x) trading in the 90s
Trading for other Recordings

If you are not absolutely certain of your ability to make a bit-accurate copy of a CD (100% jitter-free DAE and DAO burning,) stop right here and read "If you wish to trade for blanks" instead.
Any flaws my recordings have are meticulously described in my list, and I expect no less of those I trade with.

Five
2020-02-15, 08:06 PM
etree.org mkwACT page, as it appeared from 2001 until about 2017-11-30
etree.org | mkwACT introduction

The mkw Audio Compression Tool (mkwACT) is a free Windows® 95/98/Me and NT/2000 and XP program created for the easy and convenient conversion of WAV audio files to and from various lossless and lossy compressed formats, including Shorten (SHN).

mkwACT is simply the easiest utility available for compressing and decompressing Shorten files, and checking and creating MD5 signatures.

By following the step-by-step instructions below, most users should be able to download, install, configure, and learn to use mkwACT within 20 minutes or less!

etree.org | mkwACT download

If you are installing mkwACT for the first time on a Windows 95/98/NT PC, you must install the mkwACT Runtime Libraries first!. If you are using Windows 2000 or XP, you do not need to install the mkwACT Runtime Libaries.

mkw-mfc42.exe - mkwACT Runtime Libraries

mkwACT097b1.exe v0.97 beta 1 - 1.1MB Released: 10/2/00

etree.org | mkwACT runtime libraries installation

Before you install mkwACT program, you must first install the mkwACT Runtime Libraries, unless you are using Windows 2000 or XP (***note: XP need's further "tweaking" which is covered in the Setup Section***).

The mkwACT Runtime Libraries are self-installing utilities that are necessary for mkwACT to function properly in Windows 95/98/NT.

Before installation, be sure to turn off or disable any virus protection software you may be using.
Click on the mkw-mfc42.exe link above (in the download section). When the "File Download" window appears, choose "Run this program from its current location."

[image missing]


Note to Netscape users: If you are only given the option to save the setup program, save it to your desktop, then launch it by double-clicking.

[image missing]


You will receive a Security Warning window after the mkwACT Runtime Libraries download. This is normal, and is nothing to be concerned about. Click the "Yes" button to continue with the installation.

[image missing]


Next, you may see the window below (if you do not, don't worry about it). DO NOT click the "OK" button on the window below!!! You want to continue the mkwACT Runtime Installer. Only click the "OK" button on the window below after you finish with the mkwACT Runtime Libraries Installer (these instructions will tell you when it's OK).

[image missing]


You will see the main mkwACT Runtime Libraries Installer. Click the "Next" button to continue.

[image missing]


mkwACT Runtime Installer will now install what it needs to on your hard drive. When it's finished, you will see the window below. Click "Finish" to continue.

[image missing]


mkwACT Runtime Installer is now finished. It is now allright to click the "OK" button on the mkwSFX window (pictured below).

[image missing]

Congrats... you are half-way done with installing mkwACT!
etree.org | mkwACT program installation

Only AFTER you have installed the mkwACT Runtime Libraries, you may install the mkwACT Program.

Before installation, be sure to turn off or disable any virus protection software you may be using.
Click the "mkwACT097b1.exe" link above (in the download section). When the "File Download" window appears, choose "Run this program from its current location."

[image missing]


Note to Netscape users: If you are only given the option to save the setup program, save it to your desktop, then launch it by double-clicking.

[image missing]


You will receive a Security Warning window after the mkwACT program downloads. This is normal, and is nothing to be concerned about. Click the "Yes" button to continue with the installation.

[image missing]


Next, you may see the window below (if you do not, don't worry about it). DO NOT click the "OK" button on the window below!!! You want to continue the mkwACT Program Installer. Only click the "OK" button on the window below after you finish with the mkwACT Program Installer (these instructions will tell you when it's OK).

[image missing]


The next window will ask you where to install mkwACT on your hard drive. For most people, the default directory will be OK. Unless you have a specific reason to change this, you should not. Click the "Next" button to continue.

[image missing]


Next, you will be prompted as to what options to install. You should leave all options checked. Click the "Next"button to continue.

[image missing]


Now, time for the requisite licenses. First is the mkwACT license, then the Shorten license, and last is the BladEnc (MP3) license. Just click the "Yes" button to continue through all three license agreements.

[image missing] [image missing]
[image missing]


Next, the mkwACT Setup will add program icons to the Program Folder listed in the text box (by default, it will be "mkw Audio Compression Toolkit"). The default text is fine, so click the "Next" button to continue.

[image missing]


The mkwACT program will now install to your hard drive. When it is finished, you will see the window below. Click the "Finish" button to continue.

[image missing]


Remember that pesky window below? Now it's OK to click the "OK" button to close it!

[image missing]


Finally... You have successfully installed mkwACT! You're now ready to compress and decompress files with the glorious Shorten lossless audio format! Continue with the usage instructions below to learn how to easily set up and use mkwACT!
etree.org | mkwACT setup

Open mkwACT. It should be in your "Start > Programs" folder.

[image missing]

Once the mkwACT program is open, click on "Options" then "File Options". Under "Output directory for when input is on a fixed disk drive", select the path (directory) that you want all your converted files to go to. For instance, when you're converting SHN files to WAV files for CD-R burning, you want them to go to a convenient place that you'll easily find on your hard drive. Choose that directory here.

[image missing]

In our example, c:\burning is the directory where all WAV files will go when they're converted from SHN.

Below that, can select the "Output directory for when input is on a removable drive" (such as a CD-R). It is a good idea to have this path (directory) be the same as above, so it won't get (too) confusing.

Also, make note the checkboxes below the two dialog boxes... Make sure your configuration is similar, especially the "Delete input files after lossless (MKW or SHN) processing" option. If this option is checked (the default), your SHN files will be automatically deleted as you convert them to WAV files. For most people, this is undesirable, and leads to "Where the hell did my SHN files go?!?" emails to the Server Team. ;)

Also, you may wish to change the option for "report MD5 verification results only on errors". If this option is checked, it will only let you know if a SHN file does not pass the MD5 verification.

Other than these settings, mkwACT is pretty much ready to roll right out of the box UNLESS you are on a Windows XP system.

If you are running under Windows XP then you should follow these further directions:

If you simply want to convert shn>wav mkwACT will run fine on XP right out of the box.

However, if you want to encode .wav>.shn (w/ seeking as .skt files or appended) it becomes a bit trickier ,(it will also encode from .wav>.shn w/o any seeking fine.... but that suck's ; ).

XP comes w/ a backwards compatibility option.

To run mkwACT in Windows XP, change the compatibility mode for mkwACT to "Windows 2000" by:

* Right-click on the link to mkwACT in the start menu or desktop

* Click properties

* Click the Compatibility tab

* Click the checkbox for "Run this program in compatibility mode for:"

* In the pulldown menu, choose "Windows 2000"

*Apply the change

Now that should have mkwACT running 99% correctly (We still haven't been able to get it to let us batch files to it by highlighting a large group of files , right clicking on them and choosing to "convert to wav" or "encode to shn", but drag & drop will still work in batches fine and it otherwise works as it always has).

etree.org | mkwACT usage

There are two different methods of using mkwACT. The first method is to drag files (or entire folders) onto the mkwACT console window. This is very difficult to explain to someone that is not accustomed to dragging and dropping files/folders in Windows Explorer. Below is a simple sketch at how to arrange your windows so you can easily drag and drop a folder into mkwACT.

[image missing]

After you drop files or entire folders onto the mkwACT console window, the program will automatically perform the necessary MD5 verifications, and if all SHN files pass, they will be decompressed to the directory specified when you configured mkwACT. Pretty slick, eh?

Another way to use mkwACT, is to use the right-click features in Windows Explorer (rather than the drag-and-drop menthod described above).

Open Windows Explorer (this is usually in your "Start > Programs" folder). Find a show you just downloaded to your hard drive. You can double-click on the MD5 files to automatically check the SHN files in that directory!

Once you have performed an MD5 check, you can decompress the SHN files by highlighting the SHN files...

[image missing]

...and then right-clicking. A small window will pop up. Click on "decode to wav".

[image missing]

The mkwACT program will now be automatically launched, and the SHN filess selected with be decompressed to the directory specified when you configured mkwACT. Don't worry that the progress indicator does not seem to do anything, like it does when you perform an MD5 check. This is normal.

[image missing]

When your SHN files are finished decompressing to WAV, the "Processing Status" will say "Idle" (the bottom-left of the mkwACT console window).

etree.org | mkwACT credits

Thanks to Michael K. Weise, the author of mkwACT, for creating this fantastic tool for the lossless trading community!

This documentation page created by Mike Wren, and last updated by Michael Crow on 6/6/2002.

For additional software and documentation, please visit the official mkwACT website.

Five
2020-02-15, 09:05 PM
mkwACT v0.94a 2/6/99 (Use this version to decode MKW files created with versions prior to 0.94)
If you enjoy mkwACT, please register your copy by sending an empty e-mail message to mkwact-announce-subscribexxxxxxxx.xxx. Registration is free, and it ensures that you will be notified whenever a new version of mkwACT is released. In addition, it will allow me to find out how many people are actually using mkwACT.


I've set up another e-mail list with egroups.com for user-to-user discussion, feature suggestions and so on.


mkwACT uses Microsoft MFC and may not function properly if your MFC libraries are damaged or out of date. For Windows NT, 95 and 98 it is recommended that you download and run this MFC updater from Microsoft. For Windows 2000 and Windows ME, use the built-in "Windows Update" feature instead.


Download mkwACT:
Caution: Use of Beta software always involves the risk of potentially serious, as yet undiscovered bugs. Please send any bug reports to mkwxxxx.xxx.

0.97b1 confirmed stable mkwACT 0.97b1 includes support for Shorten seek tables for use with Wayne Stielau's Winamp plug-in (http://forums.winamp.com/showthread.php?t=257776).
Version 0.96f released 6/8/00
Version 0.94a 2/6/99 (Use this version to decode MKW files created with versions prior to 0.94)
Please bear in mind that newly released versions could contain as yet undiscovered bugs, as they are tested only by myself until they are put up here. Should you discover any problems, please report them to me and revert to a previous version.
Other great freeware every collector of digital recordings should have:

Exact Audio Copy (http://www.exactaudiocopy.de/)
LeechFTP
A simple but useful command batch to create M3U files

mkw's detailed system of rating shows, opinions of lineage, cdr(x), dat(x), mp3, circa 1999
Legend and Notes

Sound Rating

The sound rating describes how fully and clearly what came out of the PA at the actual show has been reproduced. It is affected negatively by such factors as a flat or weak low-end, muddy or hollow trebles and foggy stereo scaping.
If this column is blank, it means that I haven't yet gotten around to rating the recording in question for quality. Needless to say, I rate CD-Rs far more stringently than I did cassette tapes back in the days of analogue.

**** Virtually Flawless

This category is reserved for truly exceptional recordings: AUDs that make you think you're there if you close your eyes, vault SBDs that barely sound their age, DSBDs and recordings that have been digitally remastered on professional studio equipment.

*** Excellent

An excellent recording sounds clear, even through headphones, and the entire audible spectrum is well represented.

** Good

A recording of solid quality. Expect to be neither disappointed, nor particularily impressed with the sound.

* Listenable

Though fine for casual listening, the recording is noticably flawed and I recommend thinking twice about whether you really want it, or at least looking around for a better recording elsewhere.

- Bad or worse

This means the recording is severely flawed and meant to serve historical interest, not listening pleasure.

Noise Rating

Noise Rating is affected negatively by anything that distracts from the music, such as:

A - excessive Audience noise (I do like the ambience provided by audience recordings, but if one can make out individual voices close to the mics, that is a definite minus.)
H - Hiss (from any analog lineage)
M - Noise Modulation (i.e. the noise level varies with the peak level to some degree)

Note that when mastering CDs myself, I will generally prefer retaining a moderate level of constant noise over getting noise modulation from applying too much noise reduction.
D - Digital Noise (i.e. clicks, pops, buzzes or dropouts)

Note that I tolerate very little digital noise, as it tends to be far more annoying than a constant level of hiss could ever be. Even a single click will prompt a downgrade, and any CD with more than a handful of audible pops over its length belongs in the trash, as far as I'm concerned.
F - FM noise (static, distortion) or PCM noise (mild PCM noise often sounds very much like FM static)
N - Other Noises of analog origin (i.e. hums, thumps, buzzes, etc.)
L - Occasional recording Level overshoots, resulting in slight distortion of loudest parts.
C - Inopportune master flips Cut into music.
S - Splices or fades (e.g. BCDs commonly have the tuning and crowd reaction between songs edited out, which can ruin the atmosphere of a recording)
Each of these symbols may appear once to denote an occasional slight distraction, twice if it creates a nuissance or thrice if the corresponding noise factor is a real pain in the arse.

A ü in this column indicates that the recording exhibits no notable flaws.

Note

Lately I haven't managed to keep up with grading the sound quality of each recording - in those cases, both "rating" columns are left blank.

CDs

The number of CDs it takes to hold the recording. A letter in this column indicates a shared disk; e.g. the two shows listed as "3(a)" share a disk, occupying 5 CDs between them, and so on.

Lineage

I do not count generations for digital clones; i.e. SBD>DAT>DAT>DAT>CD>CD would be listed as SBD>DAT>CD.
For analog media, on the other hand, >CAS> or >REEL> always means exactly one generation. >CAS/1> is short for >CAS>CAS>, and so on. My notation for an unknown number of cassette generations is >CAS/?>. If I make an educated guess based on sound quality, I note that as, for example, >CAS/2?> ("sounds like about two generations") or >CAS/3?4 ("sounds like 3-4 generations").

If I encounter the words "I think" in the process of tracing back a lineage, I mark the lineage as "fairly certain" or "uncertain", as the case may be.

On the controversial subject of mp3 compression in a recording's lineage, I can only say that the difference between a well-made mp3/256 and its source is often indistinguishable to the human ear. Note that mp3/256 (5:1 compression) is quite a different matter than the more widely used mp3/128 (10:1 compression) - I would not want a CD made from mp3/128 in my collection, as such compression does tend to result in a sound akin to the taste of decaffeinated coffee.

Performance

Obviously a very subjective rating - I've simply marked those recordings which I find myself listening to most frequently.
xp.txt
Several workarounds have been proposed for MKW-XP trouble. This is
reportedly the simplest and most effective to date.

Mike Wren <[email protected]> wrote:

To run mkwACT in Windows XP, change the compatibility mode for mkwACT to
"Windows 2000" by:

* Right-click on the link to mkwACT in the start menu or desktop
* Click properities
* Click the Compatibility tab
* Click the checkbox for "Run this program in compatibility mode for:
* In the pulldown menu, choose "Windows 2000"

br0thercr0w <[email protected]> added:

That should have it running 99% correctly (i still haven't been able to
get it to let me batch files to it by highlighting a large group of files
and right clicking on them and choosing to "convert to wav" or "encode to
shn", but drag & drop still works in batches fine and it otherwise works as
it always has).

Five
2020-02-15, 10:45 PM
burning an audio cdr with Feurio! without those annoying two second gaps. I think its called TAO gaps, tutorial circa 2000-12-09

I had to do something similar with Nero back in the day. I burned audio cdrs for personal use only not for trading. Attached .gif is from the old Feurio! homepage, classic.
etree.org | feurio! introduction

Feurio! is a software program designed for creating audio CD-R's on PC's using Windows 95/98/Me and Windows NT/2000. You may use Feurio! for as long as you like without registering, without the software becoming crippled or any features becoming disabled. The only difference between the unregistered and registered versions of Feurio! are a few nag windows that will pop-up reminding you to register.

This page contains many graphics and may take a few seconds to load completely, depending on your Internet connection speed. Please be patient!

For more information about Feurio!, we suggest you visit the Official Feurio! website.

etree.org | feurio! download

To download the most recent version of Feurio!, go to the Official Feurio! English Download Page

etree.org | feurio! installation

Before installation, be sure to turn off or disable any virus protection software you may be using.
Click the Feurio! Download link above
When the "File Download" window appears, choose "Run this program from it's current location."
Note to Netscape users: If you are only given the option to save the setup program, save it to your desktop, then launch it by double-clicking.

[image missing]


The Feurio! installation program will now be downloaded to your PC.

[image missing]


You will receive a Security Warning window after the Feurio! installation program downloads. This is normal, and is nothing to be concerned about. Click the "Yes" button to continue the installation.

[image missing]


Continue through the Feurio! installation process. When you are finished, you will see the screen below.

[image missing]


Now, fill out as much information about yourself as you feel comfortable. When you're finished, click the "Demo" button. Feurio! will now begin. Remember, you may use Feurio! as long as you like, without the software becoming crippled or any features becoming disabled (or having it insert annoying "nag" messages in the audio, like some other burning software. The only difference between the unregistered and registered versions of Feurio! are a few nag windows that pop-up reminding you to register.

[image missing]


If you'd like to register Feurio!, visit Feurio!'s registration page.
etree.org | feurio! config

Launch Feurio! from "Start > Programs > Feurio! > Feurio! CD-Manager"

[image missing]


The first time you start Feurio!, you will see a few configuration warning windows. Most Windows 98, Me, and 2000 users need not worry. Follow the "Don't remind me again" prompts to disable those annoying warning messages and then click "OK".

[image missing]


You will now see the main Feurio! window. See the usage instructions below.
etree.org | feurio! usage - basic

Open the Feurio! program.
You will see three main windows. On the left-hand side is the larger frame. This is called the Copy Source frame, and has three tabs at the top of it, labeled "CD-ROM", "Database"" and "Harddisc". You want to click on the "Harddisk" tab, since this is where the WAV files you want to burn to CD-R are located.
Browse to the location (drive and folder) of the WAV files you want to burn to CD-R. You want to make sure the WAV files are showing, similar to the example below.

[image missing]


Note: To expand (show the contents of) a drive or folder, click on the plus sign to the left of the drive or folder. It will then show it's contents, and the plus will turn into a minus.
Once you can see the WAV files you want to burn to CD-R, hold down the CONTROL button on your keyboard, and select the files you wish to burn. Release the CONTROL button when you're finished. The WAV files should be selected, similar to the example below.

[image missing]


Now, drag these files to the lower right-hand frame (this frame should be labeled "Project: Various - New Project"). It should look similar to the example below.

[image missing]


Make sure the tracks are in the correct order in the lower left-hand frame ("Project: Various - New Project" frame).
Click on the "Settings" button in the upper right-hand frame (it's next to the "Burn" button). A dialog box will appear.

[image missing]


Make sure the "Do not insert pauses between tracks - round track markers" is selected (first line), otherwise Feurio! may insert a two second gap in between each track.
Click "OK"
Now, click on the "Burn" button in the upper right-hand frame.

[image missing]


The burner dialog box will now pop up (you are using an unregistered version of Feurio!, you will see the nag screen first).
Click on the "Write" button, then click the "Burn CD" button. See the example below.

[image missing]


Please remember, these are very, very basic instructions to a process that is actually quite involved. We encourage you read the documentation at the Official Feurio! Website (https://web.archive.org/web/20001203203200/http://www.feurio.de/English/index.asp) to better understand how Feurio! works.
etree.org | feurio! usage - advanced

For advanced usage information for Feurio!, we strongly suggest you take a look at the Official Feurio! Webpage (https://web.archive.org/web/20001203203200/http://www.feurio.de/English/index.asp).

etree.org | feurio! credits

Thanks to Fangmeier Systemprogrammierung, the creator of Feurio! This page written and maintained by Mike Wren. Please email mikew at etree.org with comments or suggestions.

Five
2020-02-16, 12:25 AM
md5sum command line tool. .ffp/.st5 checksums required and preferred since 2005
etree.org | md5sum.exe introduction

After you download all the Shorten (.shn) files for a particular disc or show, you want to verify that the files are not corrupted or otherwise unusable before you burn them to disc or host them on your file server. We do this by checking the downloaded Shorten (.shn) files against an .md5 file. An .md5 is a simple text file that contains a "fingerprint" of each Shorten file.

When you perform an md5 check, you are comparing the fingerprint from the files you downloaded to the fingerprint of the files on the server you downloaded from. If the md5's (fingerprints) match, you have an uncorrupted Shorten file.

etree.org | md5sum.exe download

md5sum.exe (http://md5summer.org/download.html) - 48KB 1243 Downloads since 9/29/00

etree.org | md5sum.exe installation
Windows 95/98/Me: Download md5sum.exe to c:\windows\command

Windows NT/2000: Download md5sum.exe to your c:\winnt\system32
etree.org | md5sum.exe usage, checking

Open an MS-DOS window and go to the directory of the show you want to check. When you are in that directory, type:

md5sum -c [filename].md5

You must insert the name of the .md5 file [without the brackets]. Below is an example of a successful md5sum check:

[image missing]

On the other hand, if a track does not pass the md5check, you will see the following:

[image missing]

If any Shorten files do not pass the .md5 check, you should delete the offending file(s), and try re-downloading. Then run the .md5 check again. The file(s) should now pass the .md5 check.

If the same files fail an .md5 check more than twice, you should contact the FTP Siteop you downloaded the files from and let them know what tracks are giving you a problem. They may be hosting a corrupted track without knowing it.

etree.org | md5sum.exe usage, creating

Open an MS-DOS window and go to the directory of the show you want to create an .md5 file for. When you are in that directory, type:

md5sum *.shn > [filename].md5

NOTE: You must insert the name of the .md5 file [without the brackets]. Example:

md5sum *.shn > ph94-06-26d1.md5

An .md5 file will be created and placed in that directory. Please remember to adhere the etree.org naming scheme when naming .md5 files!

etree.org | md5sum.exe etcetera

Please remember to always .md5 check your Shorten files before burning!

etree.org | md5sum.exe credits

Special thanks to brucexxxxxxxxxx.xxx and the PCP community for compiling this special version of md5sum. Documentation and graphics by Mike Wren.
legacy software documentation md5sum.txt
Usage: md5sum [OPTION] [FILE]...
or: md5sum [OPTION] --check [FILE]
Print or check MD5 checksums.
With no FILE, or when FILE is -, read standard input.

-b, --binary read files in binary mode
-c, --check check MD5 sums against given list

The following two options are useful only when verifying checksums:
--status don't output anything, status code shows success
-w, --warn warn about improperly formated MD5 checksum lines

--help display this help and exit
--version output version information and exit

The sums are computed as described in RFC 1321. When checking, the input
should be a former output of this program. The default mode is to print
a line with checksum, a character indicating type (`*' for binary, ` ' for
text), and name for each FILE.

WARNING: You are using a specially adapted copy of md5sum. This version
has been modified as follows:
1) Only ever use binary mode
2) Be more liberal about line endings in files used by --check
3) Built-in Win32 file wildcard matching (globbing)
This version was compiled by brucexxxxxxxxxx.xxx for the
People for a Clearer Phish. Source code changes are available
from Bruce upon request.


Report bugs to brucexxxxxxxxxx.xxx
--version
md5sum (PCP patchlevel 2) (GNU textutils) 1.22
eb574b236133e60c989c6f472f07827b *md5sum.exe

Five
2020-02-16, 01:52 AM
shntool credits.txt
Thanks go to the following people, in no particular order:

Tim [tmo], whose ideas prompted the creation of this program's predecessor
(shnlen), and whose diligent testing helped iron out the bugs in that program.

Herschel Gelman, who had the great suggestion that shnlen could check to see
whether the .wav files inside the .shn's were properly cut on sector boundaries.
He also suggested that join mode could write to stdout, so that large amounts of
data could be piped into an external program, such as an mp3 encoder.

Caleb Epstein, for sending patches and helping to debug shntool, as well as
providing documentation and binary packages. Also, for reporting the fix mode
hang, as well as providing a set of files that helped me reproduce it.
Additionally, for suggesting that info mode could tell whether .shn files were
seekable.

Jeff Kempka, for helping me obtain unruly files to aid in figuring out a rare
bug in the 0.9x series, as well as usability suggestions.

Bill Bumgarner, for suggesting that shntool move to GNU autoconf. I learned a
lot in the process. :^)

Paul Mather, for reporting bugs and compilation problems on platforms on which I
currently have no access, as well as testing and verifying their respective
fixes. Also, for reporting the m:ss.ff rounding bug, as well as providing a
detailed analysis of the problem which expedited its fix.

Mike Kelleher, for contributing toward the design of split mode, as well as
helping to test it.

Mike Vernal, for providing the impetus (and nearly the code) to support AIFF, as
well as testing it.

Scott Brown, for putting the AIFF support through the wringer, helping to iron
out the kinks. Also, for informing me that sox 12.17.4 now supports sowt-
compressed AIFF-C files.

jelly, for suggesting that join mode be able to join non-CD quality files.

Michael Dougherty, for reporting a bug where shntool would inadvertently include
extra RIFF chunks when calculating audio MD5 fingerprints.

Christian Weisgerber, who provided a Makefile patch.

Boogie Shafer, who was the first to suggest that shntool should support CUE
sheets. Also, for the idea that split mode could split a file based on multiples
of a given time interval. Finally, for enduring and reporting a seriously nasty
data-destroying bug in conv mode, which led to the implementation of file clobber
checks and the eventual instatement of 'ask' as the default overwrite action. :-/

John Cook, who was the first of several to ask for the ability to prepad files.
Also, for suggesting that shntool generate split points from an existing set of
files, and for suggesting that info mode show the sector-misalignment of
CD-quality files.

David Loehr, who was the first to report a set of files that could not be read
by shntool, which turned out to be caused by the existence of ID3v2 tags.
These tags are now skipped by shntool, leaving it up to external decoder
programs to handle them.

deep_elem, who reported a situation in which split mode would round extremely
small split points (0:00.001 - 0:00.020) to 0, causing shntool to error out.

Tim Ebben, whose keen eye noticed that the m:ss.ff value on the totals line was
reporting an incorrect value.

Greg Eriksen, for suggesting that shntool have an option not to add predefined
strings (e.g. "-fixed") to files. This led to the ability to specify arbitrary
user-defined prefixes and postfixes. Also, for suggesting that md5 mode allow
file reordering, for use with composite md5s.

M Blake, who was the first of several people to request the ability to trim
leading and/or trailing silence from files.

Dave Maley, who didn't like that split mode moved to a three-digit numbering
scheme (split-track001.wav, ...). This led to the ability to specify your own
number format, in printf syntax (e.g. "%02d").

Krzysiek Wojszko, whose CUE file tripped up split mode so badly that I decided
I better try to support the whole CUE specification. :)

Mike Harder, who reported a bug in split mode that prevented extremely large
files from being split correctly when using the -l option.

Michael Barnes, for contributing a patch to support natural filename sorting, and
for the idea that shntool can better utilize exit codes.

John, for suggesting that split mode be able to name output files based on TITLE
keywords in CUE sheets.

rob, for reporting a bug that prevented shntool from processing filenames read
from stdin under Windows.

Pierre-Yves, for offering to contribute code to name output files in split mode
based on several fields in CUE sheets.

David Bonde, for suggesting that split mode support user-defined lead-in and/or
lead-out.

Wim Speekenbrink, for reporting a bug where the last line of a CUE sheet that
lacks a newline character was not getting parsed in split mode.

Samson, for reporting a WavPack format detection issue and working with me to
discover the cause, which turned out to be a bug triggered by 64-bit systems.
Also, for providing me with sample CUE sheets that helped make split mode's
CUE sheet parsing more robust.

Thomas Strosslin, for reporting a major shortcoming in shntool's exit code
reporting (especially affecting conv mode), and for providing a patch to
address this issue.

Tom, for suggesting that hash mode use progress indicators, like other modes.

Paolo Saggese, for suggesting that shntool allow user-specified byte-shift
comparison buffer sizes in cmp mode, for those times when DAE is off by more
than the default of 3 seconds.

German Pulido, for reporting an issue in which self-extracting WavPack files
were not being properly detected by shntool.

Albin Larsson, for suggesting that fix mode should handle the case where just
a single file is specified (essentially postpad the file), which is especially
useful when using the -c option to check files for boundary issues.

Robert Rozee, for suggesting that shntool could read input filenames from a
file, instead of listing everything on the command line.

Mark, for reporting multiple issues with cat mode and providing fixes.

-------

Thanks also goes to the developers of the following software, from which I have
taken both ideas and code for shntool:

xmms - shntool's WAVE header parsing algorithm was based on the one in xmms's
WAVE input plugin

proftpd - shntool's method for gluing modules together was adapted from the way
proftpd handles it

sox - the WAVE_FORMAT_* defines and format_to_str() function were taken from the
sox distribution

coreutils - the MD5 and natural filename sorting algorithms were lifted from the
GNU coreutils distribution

v2strip - shntool's ID3v2 detection was based on the v2strip implementation

==================
Document revision:
==================

$Id: CREDITS,v 1.30 2009/03/30 06:31:13 jason Exp $

Five
2020-02-16, 10:55 PM
shntool tutorial by Jason Jordan, 2004-05-05

part one of three

shntool 2.0.3 tutorial
----------------------

This is a fairly brief but hopefully useful document on how to use shntool and
its various modes. It is a work in progress, so take what it says with a grain
of salt. I will try to keep it current with each new release. However, even if
this document becomes dated, shntool's built-in help screens as well as its man
page (i.e. the README.txt for Windows folks) will be kept current, so if you
have any troubles you can consult those sources of information. The help
screens can be accessed from any mode by giving the '-h' command-line switch.

NOTE: For the purposes of this tutorial, all sample commands will be given in
their long form (e.g. 'shntool len' as opposed to 'shnlen'), since some
platforms do not support symbolic links, which allow one to use the short form.
Also, the '%' represents the command prompt, whatever platform you are on.
Most of you know this, but this is for those who don't, so that I don't get any
email saying "When I run '% shntool', it says 'command not found'!!!!" :^)

shntool's modes can generally be split into three categories - modes that simply
display information about given files, modes that create new files based on
input files, and modes that do something else that is not covered by the above
two categories.


Contents:

1. Modes that display information
1a. len mode
1b. info mode
1c. md5 mode
1d. cue mode
2. Modes that create files
2a. fix mode
2b. join mode
2c. split mode
2d. strip mode
2e. conv mode
2f. pad mode
3. Miscellaneous modes
3a. cat mode
3b. cmp mode
4. Custom format modules
4a. cust format


=================================
1. Modes that display information
=================================

Currently len, info, md5, and cue modes are the only modes that simply show
information about files. All of these modes read filenames from the command
line, or from standard input if none are given on the command line.


------------
1a. len mode
------------

len mode shows a one-line summary detailing many properties of a given file.
Below is sample output from len mode:

% shntool len *.shn
length expanded size cdr WAVE problems filename
18:39.49 197506892 --- -- ---xx gd72-08-27d2t01.shn
8:48.56 93270956 --- -- ---xx gd72-08-27d2t02.shn
4:58.46 52675436 --- -- ---xx gd72-08-27d2t03.shn
12:18.62 130329068 --- -- ---xx gd72-08-27d2t04.shn
5:32.39 58656572 --- -- ---xx gd72-08-27d2t05.shn
50:18.27 532438924 B (totals for 5 files, 0.5612 overall compression ratio)
%

NOTE: overall compression ratio is simply the total size of the actual files on
the disk divided by the total size of the WAVE data (i.e. the header,
data, and extra RIFF chunks) contained in the files. Thus, any data
appended or prepended to input files (such as ID3 tags, ID3v2 tags or seek
tables) will increase the overall compression ratio, even pushing it above
1.0000! While seemingly counterintuitive, this makes sense, since the
extra data only serves to reverse the effect of any compression done to a
given file.


Here are some files that show off many of the property/problem flags described
in the "Explanation of output columns" section below:

% shntool len < test.list
length expanded size cdr WAVE problems filename
0:00.543 6030 cxx -- ----- doh.wav
0:00.543 6030 cxx -- ----j doh-withjunk.wav
4:08.31 43820156 --- -- 3--xx test-ok.shn
4:08.31 43820156 --- -- 3---- test-ok.wav
0:19.535 215420 cxx he ----- test-he.wav
0:06.123 135876 cxx -e ----- test-e.wav
0:06.123 135049 cxx -- ---t- test-t.wav
3:40.40 38901578 -b- -e ---xx test-be.shn
10:01.65 106169336 --- h- ---xx test-h.shn
22:32.076 233209631 B (totals for 9 files, 0.6327 overall compression ratio)
%

You can specify an alternate totals unit with the -u command-line switch. For
example, running:

% shntool len -u mb *.shn

on the first set of files listed above will produce identical output, except for
the totals line which will be shown in terms of megabytes instead of bytes:

50:18.27 507.77 MB (totals for 5 files, 0.5612 overall compression ratio)


Explanation of output columns
-----------------------------

The 'length' column shows the length of the WAVE data in that file, in m:ss.nnn
format. If the WAVE data is CD-quality, then the length is shown in m:ss.ff
format, where ff is a number from 00 to 74 that best approximates the number of
frames (2352-byte blocks) remaining after m:ss. If all files given are
CD-quality, then the total length is displayed in m:ss.ff format; otherwise, the
total length will be displayed in m:ss.nnn format.

Note on rounding: If the WAVE data is CD-quality, then its length is rounded to
the nearest frame. Otherwise, it is rounded to the nearest
second.

The 'expanded size' column shows the total size of the WAVE header, WAVE data
and any other RIFF chunks appended to the file. Essentially this shows exactly
how large a file is (or will be when it is decompressed). NOTE: Do not rely on
this field for audio size! If you simply want to know how many bytes of audio
are in a file, run it through info mode, and look at the "data size" field in
its output.

The following three columns - cdr, WAVE and problems - attempt to show
properties and/or problems associated with the corresponding file. Each entry
under a particular column stands for a specific property/problem. In all three
columns, whenever that entry is applicable and checks out okay, a '-' will
appear in its place; and whenever that entry is not applicable or cannot be
determined, an 'x' will appear in its place. However, if a particular entry
does not check out okay, you will see a unique letter corresponding to what
went wrong. Read on for more information about what these letters mean.

The 'cdr' column shows properties of CD-quality WAVE data. There are three
entries under this column. The first entry will contain a 'c' if the WAVE data
is not CD-quality. The second entry will contain a 'b' if the data is
CD-quality, but not cut on a sector boundary. The third entry will contain an
's' if the data is CD-quality, but too short to be burned (i.e. 705600 bytes - 4
seconds worth of CD-quality WAVE data).

The 'WAVE' column shows properties of the WAVE data for any file. These properties
are not problems; they are just indicators of WAVE data that is not canonical.
There are two entries under this column. The first entry will contain an 'h' if
the WAVE header is not canonical (44 bytes). The second entry will contain an
'e' if the WAVE file contains extra RIFF chunks, other than the required 'fmt'
and 'data' chunks. Files that exhibit one or both of these properties can be
made canonical by stripping the unnecessary data via shntool's built-in strip
mode.

The 'problems' column shows problems with the WAVE header, WAVE data or the file
itself, for the given file. There are four entries under this column. The
first entry will contain a '3' if the file contains an ID3v2 tag. The second
entry will contain an 'a' if the audio data is not block-aligned, i.e. the data
size is not a multiple of the block align. The third entry will contain an 'i'
if the header size plus the reported data size is greater than the calculated
total size taken from the header (i.e. chunk size + 8). The fourth entry will
contain a 't' if the calculated total size is greater than the file's actual
size, and the file is not compressed (e.g. a .wav file). The fifth entry will
contain a 'j' if the calculated total size is less than the file's actual size,
and the file is not compressed. The last two entries are only verified for WAVE
data that is not compressed, since it would take far too long to verify this for
compressed WAVE data as well.

Summary of one-character abbreviations:

all columns:

'-' this particular entry is OK
'x' this particular entry is not applicable or cannot be determined

cdr column:

'c' data is not [C]D-quality
'b' CD-quality WAVE data is not cut on a sector [b]oundary
's' CD-quality WAVE data is too [s]hort to be burned

WAVE column:

'h' WAVE [h]eader is not canonical
'e' WAVE file contains [e]xtra chunks

problems column:

'3' file contains an ID[3]v2 tag
'a' audio data is not block-[a]ligned
'i' WAVE header is [i]nconsistent about data size and/or file size
't' WAVE file seems to be [t]runcated
'j' WAVE file seems to have [j]unk appended to it


-------------
1b. info mode
-------------

info mode shows a detailed, multi-line listing of the properties of a given
file. Below is sample output from info mode when run on just one file.

NOTE: for CD-quality files, the sector-misalignment is simply the remainder
when the data size is divided by 2352; i.e. it is the number of bytes
by which the audio data exceeds the previous sector boundary.


% shntool info kottke1992-07-04d1t17.shn
-------------------------------------------------------------------------------
file name: kottke1992-07-04d1t17.shn
handled by: shn format module
length: 4:37.45
WAVE format: 0x0001 (Microsoft PCM)
channels: 2
bits/sample: 16
samples/sec: 44100
average bytes/sec: 176400
rate (calculated): 176400
block align: 4
header size: 44 bytes
data size: 48969228 bytes
chunk size: 48969264 bytes
total size (chunk size + 8): 48969272 bytes
actual file size: 21108269
file is compressed: yes
compression ratio: 0.4311
CD-quality properties:
CD quality: yes
cut on sector boundary: no
sector misalignment: 588 bytes
long enough to be burned: yes
WAVE properties:
non-canonical header: no
extra RIFF chunks: no
Possible problems:
file contains ID3v2 tag: no
data chunk block-aligned: yes
inconsistent header: no
file probably truncated: unknown
junk appended to file: unknown
odd data size has pad byte: n/a
Extra shn-specific info:
seekable: no


NOTE: compression ratio is simply the total size of the actual file on the disk
divided by the total size of the WAVE data (i.e. the header, data, and
extra RIFF chunks) contained in the file. Thus, any data appended or
prepended to the file (such as ID3 tags, ID3v2 tags or seek tables) will
increase the compression ratio, even pushing it above 1.0000! While
seemingly counterintuitive, this makes sense, since the extra data only
serves to reverse the effect of any compression done to the file.


------------
1c. md5 mode
------------

md5 mode computes the MD5 fingerprint of the WAVE data contained within input
files. This can be used to catalog unique sources of audio, and to determine
whether files stored in one format are identical in terms of audio data. The
string "[shntool]" is added to the output to distinguish these MD5 sums from
normal MD5 sums. If you want to calculate the composite MD5 fingerprint from
a set of files, use the -c option. The composite MD5 sum can be useful for
fingerprinting a file set, or identifying file sets that contain the exact same
audio data, but different track breaks (e.g. file sets that have been "fixed",
with no padding added).

NOTE: The -c option is equivalent to the following commands:

a) % shntool cat -nh -np -nr <files> | md5sum

b) % shntool join -nopad <files>
% shntool md5 joined.wav

The advantage of the -c option over a) is that it can be uses on systems
that don't have md5sum installed, and the advantage over b) is that no
extra disk space is required for the joined file.


Here is the output for one source of a particular show:

% shntool md5 *.shn
b3b7d3f6c6b0ffc88e6588f4f279d97e [shntool] ph1993-08-20d1t01.shn
dc989e4aa15b31b8389814d7ac945c87 [shntool] ph1993-08-20d1t02.shn
e3e3276ce8c1d5aac3ba9c603d9a1810 [shntool] ph1993-08-20d1t03.shn
1cc17eaef4c086222bbb5974e61de72f [shntool] ph1993-08-20d1t04.shn
6a1b42c3d592b3004212dc6ac36649ea [shntool] ph1993-08-20d1t05.shn
0c177bcb31e882efee9bd5930cf9c2ec [shntool] ph1993-08-20d1t06.shn
0bf26039c8bb42c15518f0c4988dd01e [shntool] ph1993-08-20d1t07.shn
b82f32b6c727e465ba7a925a2bf0f7f7 [shntool] ph1993-08-20d1t08.shn
1164b3207df6916621808ff4ee2ac9b7 [shntool] ph1993-08-20d1t09.shn
32dc984bd441a4703a5b65902583ec45 [shntool] ph1993-08-20d2t01.shn
14f466e265499a56aacbfb7144057d37 [shntool] ph1993-08-20d2t02.shn
8a35ff394515baa062610172f125e376 [shntool] ph1993-08-20d2t03.shn
a23d9996e43df5107a802b3aba4a2830 [shntool] ph1993-08-20d2t04.shn
8a35eb14fcbb0dacbad1915a07746400 [shntool] ph1993-08-20d2t05.shn
1808c90d6728dd151eafd3d6135d1ee0 [shntool] ph1993-08-20d2t06.shn
afe8dd6c67afa59d2f31fb04dc6a78c1 [shntool] ph1993-08-20d2t07.shn
136f555973b5a92433522f0fccf05e7d [shntool] ph1993-08-20d3t01.shn
8cffae094165d8a5bffacd5198dd53a7 [shntool] ph1993-08-20d3t02.shn
08c9532a2c07750cb7ccb5cbe678da6b [shntool] ph1993-08-20d3t03.shn
a8c76355bd329d563b79d4ac75485314 [shntool] ph1993-08-20d3t04.shn
e2429980fd995cb19764b7768ff188e3 [shntool] ph1993-08-20d3t05.shn
%

Here is an example showing how the MD5 sum of WAVE data remains constant
even though the compression formats differ:

% shntool md5 example.*
e09f22c64d717ed89c6009b52fcfddd2 [shntool] example.aiff
e09f22c64d717ed89c6009b52fcfddd2 [shntool] example.ape
e09f22c64d717ed89c6009b52fcfddd2 [shntool] example.flac
e09f22c64d717ed89c6009b52fcfddd2 [shntool] example.ofr
e09f22c64d717ed89c6009b52fcfddd2 [shntool] example.pac
e09f22c64d717ed89c6009b52fcfddd2 [shntool] example.shn
e09f22c64d717ed89c6009b52fcfddd2 [shntool] example.wav
%

Here's one way to find the MD5 fingerprint of all your audio files:

% find /audio/dir | shntool md5 2>/dev/null

Here's an example showing the usefulness of the -c option. Notice how the
individual MD5 fingerprints change, while the composite MD5 fingerprint
remains constant (as long as no padding is added to the fixed files):

% shntool md5 *.flac
3ec1532ce893a8e845a3a1c5ff6db537 [shntool] gd1966-07-16d01t08.flac
3a5e83dec13f396be2f0d10b848f1f30 [shntool] gd1966-07-16d01t09.flac
% shntool md5 -c *.flac
09fdf2f9d7c55b007a5cc738a67662ee [shntool] composite
% shntool fix -o flac -nopad *.flac
shntool [fix]: warning: no shift direction specified - assuming backward shift
gd1966-07-16d01t08.flac --> gd1966-07-16d01t08-fixed.flac ... done.
gd1966-07-16d01t09.flac --> gd1966-07-16d01t09-fixed.flac ... done.
File 'gd1966-07-16d01t09-fixed.flac' was not padded, though it needs 420 bytes of padding.
% shntool md5 *fixed*.flac
d666d3a7ff07981210d57707e6de86be [shntool] gd1966-07-16d01t08-fixed.flac
1007bed4c0b891213e5b3e837d41c6a5 [shntool] gd1966-07-16d01t09-fixed.flac
% shntool md5 -c *fixed*.flac
09fdf2f9d7c55b007a5cc738a67662ee [shntool] composite


------------
1d. cue mode
------------

The purpose of cue mode is to generate a CUE sheet or a set of split points
from a set of files. You can use a CUE sheet to burn data joined from a set
of files, or to re-split the same joined data by feeding the CUE sheet to
split mode. Since CUE sheets are sector-aligned by design, cue mode also
allows you to create explicit byte-offset split points from a set of files.
That way, you can re-split the joined data in exactly the same places in which
it was originally split, whether the tracks were sector-aligned or not.

Here is an example showing a CUE sheet created from a set of files:

% shntool cue *.flac
shntool [cue]: warning: no output type specified - assuming CUE sheet
FILE "joined.wav" WAVE
TRACK 01 AUDIO
INDEX 01 0:00:00
TRACK 02 AUDIO
INDEX 01 1:30:07
TRACK 03 AUDIO
INDEX 01 2:57:43
TRACK 04 AUDIO
INDEX 01 9:25:44
TRACK 05 AUDIO
INDEX 01 17:23:58
TRACK 06 AUDIO
INDEX 01 27:47:63
TRACK 07 AUDIO
INDEX 01 37:05:16
TRACK 08 AUDIO
INDEX 01 40:53:63
%

If you want raw split points instead, use the '-s' option:

% shntool cue -s *.flac
15892464
31323936
99769488
184121616
294206976
392527632
432857376
%

Five
2020-02-16, 10:57 PM
shntool tutorial by Jason Jordan, 2004-05-05

part two of three

==========================
2. Modes that create files
==========================

Currently, the modes that create output files are fix, join, split, strip,
conv, and pad. These modes are highly configurable in terms of the output files
they can produce. All of these modes support the following command-line options
(with the exception of conv mode, which does not support -p):

-o format (specifies output format, where format may be wav, shn, etc.)
-O action (specifies whether output files should be overwritten if they
exist - action must be 'ask', 'always' (default) or 'never')
-d dir (specifies an alternate output directory than the default)
-p (preview changes without actually making them)

NOTE: Be aware that some output format encoder programs (e.g. flac, ape)
automatically strip headers and/or extra RIFF chunks, while others
(e.g. sox) might adjust WAVE data sizes in rare instances in order to
align the audio on a block boundary.


------------
2a. fix mode
------------

The purpose of fix mode is to take a set of input files that contain CD-quality
WAVE data and rewrite them so that they are properly aligned on a sector
boundary. It does this in one of three ways - it shifts track breaks backward
to the previous multiple of 2352 bytes whenever necessary, shifts track breaks
forward to the next multiple of 2352 bytes whenever necessary, or rounds track
breaks to the nearest multiple of 2352 bytes whenever necessary. The default
action is to shift track breaks backward (though this may change to rounding
after it has been sufficiently tested, since this method minimizes the amount of
shifting performed). The desired shift may be specified with the '-s'
command-line switch.

Given a set of files to correct, fix mode will start its fixing at the first
file that has a sector-boundary error. This is intended to eliminate redundancy
and minimize the total amount of work done. For example, consider the following
set of files:

% shntool len *.shn
length expanded size cdr WAVE problems filename
2:59.54 31702652 --- -- ---xx ph91-07-15d2t01.shn
10:03.65 106522124 --- -- ---xx ph91-07-15d2t02.shn
5:08.23 54385340 --- -- ---xx ph91-07-15d2t03.shn
6:10.00 65268044 --- -- ---xx ph91-07-15d2t04.shn
4:46.43 50551300 -b- -- ---xx ph91-07-15d2t05.shn
8:29.39 89879372 --- -- ---xx ph91-07-15d2t06.shn
6:18.41 66775676 --- -- ---xx ph91-07-15d2t07.shn
1:35.53 16882436 -b- -- ---xx ph91-07-15d2t08.shn
45:32.18 481966944 B (totals for 8 files, 0.5567 overall compression ratio)
%

If you attempt to fix these files via 'shntool fix *.shn' or similar, then fix
mode will skip the first four files because they would not be changed (from a
WAVE data perspective). If you want to force it to operate on all files
regardless of whether they would be modified, then use the '-noskip'
command-line switch.

By default, the last file will be padded with zero-bytes up to the next multiple
of 2352 bytes, if necessary. This can be disabled via the '-nopad' option.

Output files will be named based on the corresponding input file, with "-fixed"
appended to the base part of the file name. By default, output files are
created in the current directory, unless told otherwise via the '-d'
command-line switch.

Here is sample output from fix mode when run on the above files:

% shntool fix *.shn
shntool [fix]: warning: no output format specified - assuming wav
shntool [fix]: warning: no shift direction specified - assuming backward shift
shntool [fix]: warning: skipping first 4 files because they would not be changed
ph91-07-15d2t05.shn --> ph91-07-15d2t05-fixed.wav ... done.
ph91-07-15d2t06.shn --> ph91-07-15d2t06-fixed.wav ... done.
ph91-07-15d2t07.shn --> ph91-07-15d2t07-fixed.wav ... done.
ph91-07-15d2t08.shn --> ph91-07-15d2t08-fixed.wav ... done.
Padded 'ph91-07-15d2t08-fixed.wav' with 544 zero-bytes.
%

Here is sample output exhibiting several different options:

% shntool fix -o shn -s r -d /mnt/audio/tmp -nopad -noskip *.shn
ph91-07-15d2t01.shn --> /mnt/audio/tmp/ph91-07-15d2t01-fixed.shn ... done.
ph91-07-15d2t02.shn --> /mnt/audio/tmp/ph91-07-15d2t02-fixed.shn ... done.
ph91-07-15d2t03.shn --> /mnt/audio/tmp/ph91-07-15d2t03-fixed.shn ... done.
ph91-07-15d2t04.shn --> /mnt/audio/tmp/ph91-07-15d2t04-fixed.shn ... done.
ph91-07-15d2t05.shn --> /mnt/audio/tmp/ph91-07-15d2t05-fixed.shn ... done.
ph91-07-15d2t06.shn --> /mnt/audio/tmp/ph91-07-15d2t06-fixed.shn ... done.
ph91-07-15d2t07.shn --> /mnt/audio/tmp/ph91-07-15d2t07-fixed.shn ... done.
ph91-07-15d2t08.shn --> /mnt/audio/tmp/ph91-07-15d2t08-fixed.shn ... done.
File '/mnt/audio/tmp/ph91-07-15d2t08-fixed.shn' was not padded, though it needs 544 bytes of padding.
%

Here is a sample showing the preview capability:

% shntool fix -o wav -d ../disc1 -p -noskip *.wav
shntool [fix]: warning: no shift direction specified - assuming backward shift

Preview of changes:
-------------------

Track breaks will be shifted backward when necessary.

track1.wav --> ../disc1/track1-fixed.wav
- beginning of track will remain unchanged
- data size will remain unchanged

track10.wav --> ../disc1/track10-fixed.wav
- beginning of track will remain unchanged
- data size will remain unchanged

track2.wav --> ../disc1/track2-fixed.wav
- beginning of track will remain unchanged
- data size will remain unchanged

track3.wav --> ../disc1/track3-fixed.wav
- beginning of track will remain unchanged
- data size will remain unchanged

track4.wav --> ../disc1/track4-fixed.wav
- beginning of track will remain unchanged
- data size will remain unchanged

track5.wav --> ../disc1/track5-fixed.wav
- beginning of track will remain unchanged
- data size will decrease by 2072 bytes

track6.wav --> ../disc1/track6-fixed.wav
- beginning of track will be moved backward by 2072 bytes
- data size will remain unchanged

track7.wav --> ../disc1/track7-fixed.wav
- beginning of track will be moved backward by 2072 bytes
- data size will remain unchanged

track8.wav --> ../disc1/track8-fixed.wav
- beginning of track will be moved backward by 2072 bytes
- data size will increase by 264 bytes

track9.wav --> ../disc1/track9-fixed.wav
- beginning of track will be moved backward by 1808 bytes
- data size will increase by 1808 bytes

The last file '../disc1/track9-fixed.wav' would be padded with 544 zero-bytes.
%

The above example shows the usefulness of the '-order' switch, which allows you
to edit the order in which the files will be processed. Using the online
editor, you can fix the list so that track 10 properly appears after track 9,
instead of after track 1. This is usually simpler than specifying each track in
the correct order on the command line, although in the above case you can put
files in the correct order with:

% shntool fix -o wav -d ../disc1 -p -noskip track?.wav track??.wav

One final note on fix mode. If you have a single track that is not properly
sector-aligned, and you want to shift the track break backward (i.e. truncate
the extra data, rather than pad it), then you are out of luck because fix mode
will not let you do this. There is a workaround, though. Simply use a second
dummy file (such as 1 second of silence), and run fix mode with backward shift
on both files. When you are done, discard the second fixed file (the dummy
file) and the file you are left with will be your original file, truncated to
the previous sector boundary. Here is an example:

% shntool fix -s b -nopad badfile.wav dummy.wav
shntool [fix]: warning: no output format specified - assuming wav
badfile.wav --> badfile-fixed.wav ... done.
dummy.wav --> dummy-fixed.wav ... done.
File 'dummy-fixed.wav' was not padded, though it needs 1956 bytes of padding.
% shntool len badfile.wav badfile-fixed.wav
length expanded size cdr WAVE problems filename
2:46.21 29332232 -b- -- ----- badfile.wav
2:46.21 29331836 --- -- ----- badfile-fixed.wav
5:32.42 58664068 B (totals for 2 files, 1.0000 overall compression ratio)
%

Notice that badfile-fixed.wav is now the backward-shifted (truncated) version of
badfile.wav, which is what we wanted. Now remove 'dummy-fixed.wav', and you're
done.


-------------
2b. join mode
-------------

The purpose of join mode is to concatenate WAVE data from multiple files into
one output file. This can be useful if you want to completely retrack a show,
not just fix sector boundary problems. Note that all input files must have the
same WAVE format, number of channels, samples per second, bits per sample and
rate - otherwise shntool can't join them. If all input files are CD-quality,
then by default the output file will be post-padded with zero-bytes up to the
next multiple of 2352 bytes, if necessary. If you want to pre-pad the file
instead, use the '-prepad' option. If no padding is desired, use the '-nopad'
option. Unless you use the '-stdout' option, the output file will be named
'joined.ext', where 'ext' is the extension of the output file format. It will
be created in the current directory unless told otherwise via the '-d'
command-line switch. The default output format is 'wav' for unmodified builds
of shntool. Below is a sample of what you will see if you join mode with no
options:

% shntool join *.shn
shntool [join]: warning: no output format specified - assuming wav
Adding contents of gd73-03-24d3t01.shn to joined.wav ... done.
Adding contents of gd73-03-24d3t02.shn to joined.wav ... done.
Adding contents of gd73-03-24d3t03.shn to joined.wav ... done.
Adding contents of gd73-03-24d3t04.shn to joined.wav ... done.
Adding contents of gd73-03-24d3t05.shn to joined.wav ... done.
Adding contents of gd73-03-24d3t06.shn to joined.wav ... done.
Adding contents of gd73-03-24d3t07.shn to joined.wav ... done.
No padding needed for 'joined.wav'.
%

Here is an example using -stdout to pipe to another process:

% shntool join -stdout disc?/*.shn | lame - > stretch93-10-15.mp3 2>/dev/null
shntool [join]: warning: no output format specified - assuming wav
Adding contents of disc1/stretch93-10-15d1t01.shn to stdout ... done.
Adding contents of disc1/stretch93-10-15d1t02.shn to stdout ... done.
Adding contents of disc1/stretch93-10-15d1t03.shn to stdout ... done.
(many lines snipped for brevity)
Adding contents of disc3/stretch93-10-15d3t11.shn to stdout ... done.
Adding contents of disc3/stretch93-10-15d3t12.shn to stdout ... done.
Adding contents of disc3/stretch93-10-15d3t13.shn to stdout ... done.
No padding needed for 'stdout'.
%

Here is an example that exhibits several options:

% shntool join -d /mnt/audio/tmp -o shn -nopad *.wav
Adding contents of test01.wav to /mnt/audio/tmp/joined.shn ... done.
Adding contents of test02.wav to /mnt/audio/tmp/joined.shn ... done.
Adding contents of test03.wav to /mnt/audio/tmp/joined.shn ... done.
Adding contents of test04.wav to /mnt/audio/tmp/joined.shn ... done.
Adding contents of test05.wav to /mnt/audio/tmp/joined.shn ... done.
File 'joined.shn' was not padded, though it needs 1844 bytes of padding.
%

Here are a couple of samples showing the preview capability:

% shntool join -p doh.wav doh.wav

Preview of changes:
-------------------

WAVE data from the following files:

doh.wav
doh.wav

will be joined into file 'joined.wav', in the order shown above.

Padding would not apply to these files because they are not CD-quality.
%

% shntool join -p -d /mnt/audio/tmp -o wav *.wav

Preview of changes:
-------------------

WAVE data from the following files:

test1.wav
test10.wav
test11.wav
test12.wav
test2.wav
test3.wav
test4.wav
test5.wav
test6.wav
test7.wav
test8.wav
test9.wav

will be joined into file '/mnt/audio/tmp/joined.wav', in the order shown above.

This file wouldn't be padded, but would need 2176 bytes of padding.
%

The above example shows the usefulness of the '-order' switch, which allows you
to edit the order in which the files will be processed. Using the online
editor, you can fix the list so that tracks 10 through 12 properly appear after
track 9. This is usually simpler than specifying each track in the correct
order on the command line, although in the above case you can put files in the
correct order with:

% shntool join -d /mnt/audio/tmp -o wav test?.wav test??.wav


--------------
2c. split mode
--------------

The purpose of split mode is to create multiple files from a single input file.
Track breaks are defined by split points, which can be in any of the following
formats:

bytes (explicit byte offset from beginning of WAVE data)
m:ss (standard minutes:seconds format)
m:ss.ff (minutes:seconds.frames format, where a frame is 1/75 of a second)
m:ss.nnn (minutes:seconds.milliseconds format)
CUE sheet (simple CUE sheet format)

NOTE: m:ss.ff can only be used with CD-quality input files.

NOTE: CUE sheets MUST have the "FILE" keyword on the first line in order to be
properly recognized as a CUE sheet by shntool. From the second line on,
split points are recognized as lines which contain the "INDEX 01" keyword,
but NOT the comment keyword "REM". The m:ss:ff values on such lines are
parsed and internally converted to m:ss.ff split points. There is no
checking done to ensure that "TRACK" numbers are sequential. I do not
know whether this works for all possible permutations of a CUE sheet
(other than ones that don't have the "FILE" keyword on the first line of
course), so unless you use a CUE sheet generated by cue mode, there are no
guarantees that your files will be split correctly. Consult the cue mode
section above to see how it generates CUE sheets.

All of the above formats (except for bytes) are converted to byte offsets. If
the input file is CD-quality, then the byte offsets are rounded to the nearest
sector boundary. If you want to force non-sector aligned track boundaries, use
the explicit byte offset format.

NOTE: for CD-quality input files, if m:ss.nnn rounded to the nearest sector
boundary happens to be the beginning of the file, then it is rounded up to
the first sector boundary. Because of this, certain sequences of split
points will generate an error, even though they seem to be correct.
However, this is extremely unlikely to happen to you, unless you have two
split points within the first 0:00.020 of the file. ;-)

Split points can be read from standard input, from a file, or via the '-f' or
'-l' command-line switches. If the '-l' option is given, then the file will be
split into smaller files based on multiples of the given time interval;
otherwise, split points must be given in increasing order, and must not go
beyond the size of the WAVE data in the input file. If the first and/or last
split point's calculated byte offset falls at the very beginning and/or end of
the input file's WAVE data respectively, then it is ignored.

In the following examples, the contents of the split points files are shown for
reference.

Here is a sample invocation of split mode with repeated, same-sized split points:

% shntool split -l 72:00 bigfile.wav
shntool [split]: warning: no output format specified - assuming wav

Input file 'bigfile.wav' is being split into 3 pieces.

Writing split-track001.wav (72:00.00) ... done.
Writing split-track002.wav (72:00.00) ... done.
Writing split-track003.wav (67:13.45) ... done.
%


And another sample, with various split points:

% cat offsets1
0:13.25
0:26.50
0:40.00
0:53.25
1:06.50
1:20.00
1:33.25
1:46.50
% shntool split test.wav < offsets1
shntool [split]: warning: no output format specified - assuming wav

Input file 'test.wav' is being split into 9 pieces.

Writing split-track001.wav (0:13.25) ... done.
Writing split-track002.wav (0:13.25) ... done.
Writing split-track003.wav (0:13.25) ... done.
Writing split-track004.wav (0:13.25) ... done.
Writing split-track005.wav (0:13.25) ... done.
Writing split-track006.wav (0:13.25) ... done.
Writing split-track007.wav (0:13.25) ... done.
Writing split-track008.wav (0:13.25) ... done.
Writing split-track009.wav (0:04.74) ... done.
%

% cat offsets2
FILE "<anything can go here>" WAVE
TRACK 01 AUDIO
INDEX 01 0:00:00
TRACK 02 AUDIO
INDEX 01 6:04:67
TRACK 03 AUDIO
INDEX 01 14:06:19
% shntool split -o flac test.shn < offsets2
shntool [split]: warning: discarding initial zero-valued split point

Input file 'test.shn' is being split into 3 pieces.

Writing split-track001.flac (6:04.67) ... done.
Writing split-track002.flac (8:01.27) ... done.
Writing split-track003.flac (10:40.08) ... done.
%

You can change aspects of the output file names via the '-n' and '-c'
command-line switches:

% cat offsets3
0:13.333
0:26.667
0:40.000
0:53.333
1:06.667
1:20.000
1:33.333
1:46.667
% shntool split -o shn -f offsets3 -n mytest -c 7 test.wav
shntool [split]: warning: rounding 0:13.333 (offset: 2351941) to nearest sector boundary (offset: 2352000)
shntool [split]: warning: rounding 0:26.667 (offset: 4704059) to nearest sector boundary (offset: 4704000)
shntool [split]: warning: rounding 0:53.333 (offset: 9407941) to nearest sector boundary (offset: 9408000)
shntool [split]: warning: rounding 1:06.667 (offset: 11760059) to nearest sector boundary (offset: 11760000)
shntool [split]: warning: rounding 1:33.333 (offset: 16463941) to nearest sector boundary (offset: 16464000)
shntool [split]: warning: rounding 1:46.667 (offset: 18816059) to nearest sector boundary (offset: 18816000)

Input file 'test.wav' is being split into 9 pieces.

Writing mytest007.shn (0:13.25) ... done.
Writing mytest008.shn (0:13.25) ... done.
Writing mytest009.shn (0:13.25) ... done.
Writing mytest010.shn (0:13.25) ... done.
Writing mytest011.shn (0:13.25) ... done.
Writing mytest012.shn (0:13.25) ... done.
Writing mytest013.shn (0:13.25) ... done.
Writing mytest014.shn (0:13.25) ... done.
Writing mytest015.shn (0:04.74) ... done.
%

Finally, you can preview what changes would be made before actually making them
with the '-p' switch:

% cat offsets4
0:13
4704001
0:40.00
0:53.333
11760000
% shntool split -d /mnt/audio/tmp -p -n output_ -c 0 test.wav < offsets4
shntool [split]: warning: no output format specified - assuming wav
shntool [split]: warning: file 2 will not be cut on a sector boundary
shntool [split]: warning: file 3 will not be cut on a sector boundary
shntool [split]: warning: rounding 0:53.333 (offset: 9407941) to nearest sector boundary (offset: 9408000)

Preview of changes:
-------------------

File 'test.wav' will be split into 6 pieces:

+ /mnt/audio/tmp/output_000.wav (0:13.00)
- this file will contain 2293200 bytes of WAVE data (plus 44-byte header)

+ /mnt/audio/tmp/output_001.wav (0:13.50)
- this file will contain 2410801 bytes of WAVE data (plus 44-byte header)
- this file will not be cut on a sector boundary

+ /mnt/audio/tmp/output_002.wav (0:13.25)
- this file will contain 2351999 bytes of WAVE data (plus 44-byte header)
- this file will not be cut on a sector boundary

+ /mnt/audio/tmp/output_003.wav (0:13.25)
- this file will contain 2352000 bytes of WAVE data (plus 44-byte header)

+ /mnt/audio/tmp/output_004.wav (0:13.25)
- this file will contain 2352000 bytes of WAVE data (plus 44-byte header)

+ /mnt/audio/tmp/output_005.wav (0:44.74)
- this file will contain 7935648 bytes of WAVE data (plus 44-byte header)
%


--------------
2d. strip mode
--------------

The purpose of strip mode is to remove extraneous data from files. It has the
ability to shrink WAVE headers down to the canonical 44-byte header, and also to
remove extra RIFF chunks from the end of WAVE streams, which usually contain
miscellaneous information about the program used to create or edit the WAVE data
in that file. Since neither having a non-canonical header nor containing extra
RIFF chunks are harmful in and of themselves, it is usually not necessary to use
this mode. The only time you may want to use it is when you encounter a program
that cannot load a particular WAVE file because it expects it to have a
canonical header and/or expects that nothing follows the 'data' chunk in the
WAVE stream.

NOTE: Be aware that some output format encoder programs (e.g. flac, ape)
automatically strip headers and/or extra RIFF chunks, while others
(e.g. sox) might adjust WAVE data sizes in rare instances in order to
align the audio on a block boundary.

By default, headers are canonicalized, and extra RIFF chunks are stripped. You
can disable one or the other of these actions via the '-nh' (no header) and
'-nr' (no RIFF chunks) switches. Output files will be named based on the
corresponding input file, with "-stripped" appended to the base part of the file
name. By default, output files are created in the same directory as the
corresponding input file, unless told otherwise via the '-d' command-line
switch. File names are read from the command line, or from standard input if
none are specified on the command line. Here is a sample run of strip mode:

% shntool strip a.wav tms.shn
shntool [strip]: warning: no output format specified - assuming wav
a.wav --> a-stripped.wav ... done.
tms.shn --> tms-stripped.wav ... done.
%

You can preview what would be done with the '-p' switch (note the use of the
'-d' and '-o' switches as well):

% shntool strip -o shn -p -d /mnt/audio/tmp a.wav p2.wav

Preview of changes:
-------------------

a.wav --> /mnt/audio/tmp/a-stripped.shn
- will rewrite 46-byte WAVE header to the canonical 44-byte header
- will strip 1 byte worth of extra RIFF chunk(s) from the end of this file

p2.wav --> /mnt/audio/tmp/p2-stripped.shn
- will strip 827 bytes worth of extra RIFF chunk(s) from the end of this file

%

Here is what happens when you run strip mode on the above files, but specify not
to strip extra RIFF chunks:

% shntool strip -o shn -d /mnt/audio/tmp -nr a.wav p2.wav
a.wav --> /mnt/audio/tmp/a-stripped.shn ... done.
shntool [strip]: warning: file 'p2.wav' already has a canonical header - skipping.
%


-------------
2e. conv mode
-------------

The purpose of conv mode is to convert a set of input files to a specified
output format. File names are read from the command line; if none are given,
file names are read from standard input. If the input file name matches the
output file name, that file is skipped so that the input file isn't accidentally
overwritten. You can avoid file name clashes altogether by using the '-d'
option to specify an alternate ouput directory.

Output files are named based on the input file name. Specifically, if the input
file name ends with the default file extension for that file's format, then the
default extension for the desired output format will replace it; otherwise, the
default extension for the desired output format will be appended to it. For
example, for an output format of shn and a wav input file named 'file.wav', the
converted file will be named 'file.shn', since '.wav' is shntool's default
extension for the wav format. On the other hand, given the same situation
above, but with an input file named 'file.wave', the converted file will be
named 'file.wave.shn', since '.wave' does not match '.wav'.

NOTE: Be aware that some output format encoder programs (e.g. flac, ape)
automatically strip headers and/or extra RIFF chunks, while others
(e.g. sox) might adjust WAVE data sizes in rare instances in order to
align the audio on a block boundary.

By default, output files are created in the same directory as the input file.
This can be altered with the -d switch.

Here is one way to convert a set of SHN files to FLAC:

% shntool conv -o flac *.shn
converting 'gd73-03-24d3t01.shn' to 'gd73-03-24d3t01.flac' ... done.
converting 'gd73-03-24d3t02.shn' to 'gd73-03-24d3t02.flac' ... done.
converting 'gd73-03-24d3t03.shn' to 'gd73-03-24d3t03.flac' ... done.
converting 'gd73-03-24d3t04.shn' to 'gd73-03-24d3t04.flac' ... done.
converting 'gd73-03-24d3t05.shn' to 'gd73-03-24d3t05.flac' ... done.
converting 'gd73-03-24d3t06.shn' to 'gd73-03-24d3t06.flac' ... done.
converting 'gd73-03-24d3t07.shn' to 'gd73-03-24d3t07.flac' ... done.
%

Here is an example that converts files in different directories, placing the
output files in a specified directory:

% find gd72-08-27 -name \*.shn | shntool conv -o aiff -d tmp
converting 'gd72-08-27/disc1/gd72-08-27d1t01.shn' to 'tmp/gd72-08-27d1t01.aiff' ... done.
converting 'gd72-08-27/disc1/gd72-08-27d1t02.shn' to 'tmp/gd72-08-27d1t02.aiff' ... done.
converting 'gd72-08-27/disc1/gd72-08-27d1t03.shn' to 'tmp/gd72-08-27d1t03.aiff' ... done.
(many lines snipped for brevity)
converting 'gd72-08-27/disc3/gd72-08-27d3t05.shn' to 'tmp/gd72-08-27d3t05.aiff' ... done.
converting 'gd72-08-27/disc3/gd72-08-27d3t06.shn' to 'tmp/gd72-08-27d3t06.aiff' ... done.
converting 'gd72-08-27/disc3/gd72-08-27d3t07.shn' to 'tmp/gd72-08-27d3t07.aiff' ... done.
%

Here is an example with many different input file formats, as well as
non-standard file extensions:

% shntool conv example*
shntool [conv]: warning: no output format specified - assuming wav
converting 'example1.aiff' to 'example1.wav' ... done.
converting 'example2.ape' to 'example2.wav' ... done.
converting 'example3.flac' to 'example3.wav' ... done.
converting 'example4.shn' to 'example4.wav' ... done.
converting 'example5.ofr' to 'example5.wav' ... done.
converting 'example6.pac' to 'example6.wav' ... done.
converting 'example7.unknown' to 'example7.unknown.wav' ... done.
%

An unintended use for conv mode is to verify that files are not truncated,
by converting files to the 'null' output format. This output format simply
discards any data it receives, so it doesn't create any output files.
Examples are below.

Here is sample output for an intact, non-truncated file:

% shntool conv -o null test.shn
converting 'test.shn' to 'test.null (actually /dev/null)' ... done.
%

Here is sample output for a truncated file:

% shntool conv -o null truncated.shn
converting 'truncated.shn' to 'truncated.null (actually /dev/null)' ...
shntool [conv]: warning: tried to read 76496 bytes, but only read 75776 - possible truncated/corrupt file
shntool [conv]: warning: error while transferring 23931600-byte data chunk - skipping.
%


-------------
2f. pad mode
-------------

The purpose of pad mode is to individually pad files that are not aligned on
a sector boundary. This is NOT intended to be a replacement for fix mode!
It is provided to make padding easier for those who know what they are doing.
Files are padded at the end by default. Use the '-prepad' or '-postpad'
options to control where the file gets padded. To see what changes would be
made without actually making them, use the '-p' option.

Output files are named based on the input file name, with the string
"-prepadded" or "-postpadded" appended to the end, and the extension is the
default extension of the output file format.

NOTE: Be aware that some output format encoder programs (e.g. flac, ape)
automatically strip headers and/or extra RIFF chunks.

For instance, suppose you have a disc's worth of files in which only the first
file is not cut on a sector boundary. In this situation, some people would
prefer to add silence to the beginning of the first track in order to align it
on a sector boundary, instead of fixing every file in the whole set. Here is
an example of this:

% shntool len *.shn
length expanded size cdr WAVE problems filename
1:17.33 13660388 -b- -- ---xx grisman-rice95-04-30t01.shn
2:33.01 26991596 --- -- ---xx grisman-rice95-04-30t02.shn
2:56.14 31079372 --- -- ---xx grisman-rice95-04-30t03.shn
2:19.46 24627836 --- -- ---xx grisman-rice95-04-30t04.shn
5:23.73 57148940 --- -- ---xx grisman-rice95-04-30t05.shn
3:36.39 38194172 --- -- ---xx grisman-rice95-04-30t06.shn
5:36.45 59376284 --- -- ---xx grisman-rice95-04-30t07.shn
4:16.37 45245468 --- -- ---xx grisman-rice95-04-30t08.shn
3:11.01 33694796 --- -- ---xx grisman-rice95-04-30t09.shn
0:47.64 8441372 --- -- ---xx grisman-rice95-04-30t10.shn
5:03.42 53548028 --- -- ---xx grisman-rice95-04-30t11.shn
4:43.58 50057660 --- -- ---xx grisman-rice95-04-30t12.shn
6:30.50 68913644 --- -- ---xx grisman-rice95-04-30t13.shn
6:25.17 67954028 --- -- ---xx grisman-rice95-04-30t14.shn
4:29.30 47522204 --- -- ---xx grisman-rice95-04-30t15.shn
59:11.25 626455788 B (totals for 15 files, 0.6050 overall compression ratio)
% shntool pad -prepad -o shn grisman-rice95-04-30t01.shn
pre-padding 'grisman-rice95-04-30t01.shn' as 'grisman-rice95-04-30t01-prepadded.shn' with 72 zero-bytes ... done.
% shntool len grisman-rice95-04-30t01-prepadded.shn
length expanded size cdr WAVE problems filename
1:17.33 13660460 --- -- ---xx grisman-rice95-04-30t01-prepadded.shn
1:17.33 13660460 B (total for 1 file, 0.5335 overall compression ratio)
%

At this point you can replace the original file with the pre-padded file to
have a complete set of sector-aligned files.

Five
2020-02-16, 10:57 PM
shntool tutorial by Jason Jordan, 2004-05-05

part three of three

======================
3. Miscellaneous modes
======================

The following modes don't quite fit in the categories listed above.

------------
3a. cat mode
------------

The purpose of cat mode is to write (catenate) the WAVE header, WAVE data,
and/or extra RIFF chunks from one or more files to standard output. This can be
useful for things like on-the-fly CD burning or streaming audio. Typing:

% shntool cat filename

or

% echo "filename" | shntool cat

will write the WAVE header, WAVE data, and any extra RIFF chunks from the given
file to standard output. If you want to suppress the WAVE header and extra RIFF
chunks (which, if not suppressed, can cause 'clicks' at the beginning and/or end
of tracks when piping output to a CD-burning program that expects raw WAVE
data), then give the '-nh' (no header) and '-nr' (no extra RIFF chunks)
switches:

% shntool cat -nh -nr filename

If you only need to output the WAVE header, then use the '-nd' (no data) and
'-nr' switches:

% shntool cat -nd -nr filename

The only use I can think of for this at the moment is for bug reporting.
Sometimes I only need to see WAVE headers to debug a problem, and this provides
a way for you to get them to me. I hope you never have to use this option for
that reason, though. :^)


------------
3b. cmp mode
------------

The purpose of cmp mode is to compare the WAVE data contained within two files.
This is useful if you want to verify the results CD-audio extraction against the
original files. This can also be used to compare the WAVE data within two files
of different formats (e.g. file1.wav and file2.shn), for which other methods of
verification such as md5sum will not do. Since this mode ignores WAVE headers
and extra RIFF chunks when making the comparison, it can also be used to compare
files that have been stripped (see strip mode above) to their unstripped
counterparts, which is another situation where md5sum would not be sufficient.

Before running the comparison, the WAVE headers are examined for differences.
If any value in the headers differ other than the reported data size or the
block align, then an error is reported and the files are not compared.
Otherwise, if the size of the WAVE data differs in the two files to be compared,
then a comparison is run only up to the size of the smaller of the two; and if
the block align values differ, then a warning is printed (since some CD-quality
WAVE files have headers that report a block align of 4 instead of 2), but the
comparison continues (since it seems that the block align is often ignored by
programs).

When run normally, cmp mode will either say the files are identical, or exit at
the first differing byte. If you want to see all differing bytes (and their
values), use the -l option. If any bytes differ, you will see a list of
offsets, similar to 'cmp -l' under UNIX. In particular, offsets are 1-based,
meaning the first byte is offset 1, not 0. The byte values of the differing
bytes in each file are also shown for reference.

Sometimes you might want to compare data in two files, one of which might
contain extra bytes at the beginning (such as a file ripped from a CD burned TAO
which might have an initial 2-second gap of silence, depending on the program
used to rip it). In this case, you can use the -s option to have shntool
determine whether one of the files contains extra bytes at the beginning of the
WAVE data. This option can also help identify a CD burner/CD reader combined
read/write offset. Currently, only the first 529200 bytes (3 seconds of
CD-quality WAVE data) are searched for identicalness, but this should be more
than enough for most purposes. If for some reason you believe that the files
are byte-shifted, but shntool does not think so, you can use the -f switch to
give shntool a "fuzz factor" that it will use. This fuzz factor is simply a
positive integer that represents the maximum number of allowable byte mismatches
within the first 529200 bytes. This allows you to check for differing bytes
between to files that (a) are byte-shifted and (b) contain at least one error
within the first 529200 bytes (an error that could have been cause by an
unreadable section of the CD, an unreliable CD reader, a bad hard drive/hard
drive cable, a network error, buggy hardware drivers, etc.). The higher the
fuzz factor, the longer the -s option takes, so set it low at first (e.g. 8),
and increase it in small steps if needed. Note that the -f option can only be
used with the -s option, since that's the only time the fuzz factor is used.

Here's an example comparison:

% shntool cmp test.wav test2.shn
comparing WAVE data in files 'test.wav' and 'test2.shn' ...

contents of these files are identical.
%

Here's what you will see if the WAVE data sizes differ, but are identical up to
the WAVE data size of the smaller file:

% shntool cmp cmp1a.wav cmp1b.wav
shntool [cmp]: warning: size of data to be compared differs between these files -
WAVE data will only be compared up to the smaller size
comparing WAVE data in files 'cmp1a.wav' and 'cmp1b.wav' ...

contents of these files are identical (up to the first 29332188 bytes of WAVE data).
%

Here's an example of what you might see if the WAVE data itself differs:

% shntool cmp test.wav test3.wav
comparing WAVE data in files 'test.wav' and 'test3.wav' ...

WAVE data differs at byte offset 9847801.
%

Curious what the differences were in the above case? Let's see:

% shntool cmp -l test.wav test3.wav
comparing WAVE data in files 'test.wav' and 'test3.wav' ...

offset 1 2
----------------
9847801 13 157
10619542 216 47

contents of these files differed as indicated above.
%

Now let's check a ripped file against its pre-burned couterpart:

% shntool cmp preburned.shn ripped.wav
shntool [cmp]: warning: size of data to be compared differs between these files -
WAVE data will only be compared up to the smaller size
comparing WAVE data in files 'preburned.shn' and 'ripped.wav' ...

WAVE data differs at byte offset 1.
%

Oops, we should have used the -s option:

% shntool cmp -s preburned.shn ripped.wav
checking for byte-shift between input files...

file 'ripped.wav' seems to have:

350448 extra bytes (87612 extra samples, or 149 extra sectors)

these extra bytes will be discarded before comparing the data.

preparing to do full comparison...

comparing aligned WAVE data in files 'preburned.shn' and 'ripped.wav' ...

aligned contents of these files are identical.
%

Let's check two files that we think are identical, but one of which was ripped
from a sun-bleached, flaking, scratched CD:

% shntool cmp -s preburned2.shn ripped2.wav
checking for byte-shift between input files...

files 'preburned2.shn' and 'ripped2.wav' do not share identical data within the first 529200 bytes.
%

Hmm, I still think they are identical... let's use a fuzz factor to check:

% shntool cmp -s -f 8 preburned2.shn ripped2.wav
checking for byte-shift between input files...

with fuzz factor 8, file 'ripped2.wav' seems to have:

350448 extra bytes (87612 extra samples, or 149 extra sectors)

these extra bytes will be discarded before comparing the data.

preparing to do full comparison...

shntool [cmp]: warning: size of data to be compared differs between these files -
WAVE data will only be compared up to the smaller size
comparing aligned WAVE data in files 'preburned2.shn' and 'ripped2.wav' ...

WAVE data differs at byte offset 137.
%

Hmm, I wonder where else they differ:

% shntool cmp -s -f 8 -l preburned2.shn ripped2.wav
checking for byte-shift between input files...

with fuzz factor 8, file 'ripped2.wav' seems to have:

350448 extra bytes (87612 extra samples, or 149 extra sectors)

these extra bytes will be discarded before comparing the data.

preparing to do full comparison...

shntool [cmp]: warning: size of data to be compared differs between these files -
WAVE data will only be compared up to the smaller size
comparing aligned WAVE data in files 'preburned2.shn' and 'ripped2.wav' ...

offset 1 2
----------------
137 227 228
1653 216 215
56820 13 157

aligned contents of these files differed as indicated above.
%


========================
4. Custom format modules
========================

There is only one custom format module, 'cust'. It is described below.

---------------
4a. cust format
---------------

The cust format provides the user with a means of specifying the precise
program and arguments shntool should use to encode output files. This is
useful for overriding shntool's defaults for existing output formats, and
for enabling shntool to create files in a format that it does not yet
officially support. The cust format has a simple format:

{ program argument_1 argument_2 ... argument_N }

This will create files with an extension of .custom by default. If you wish
to provide your own extension (e.g. 'abc'), use this format:

ext=abc { program argument_1 argument_2 ... argument_N }

NOTE:
-----
At least one of the arguments must contain the string '%f', which is the
placeholder for the output filename. The cust format module will stick
the output filename here, with the appropriate extension.

NOTE TO WINDOWS USERS:
----------------------
Due to the way the Windows command prompt operates, you will need to put
quotes around the curly braces, i.e.: '{' program argument_1 ... '}'
Also, if you use cust mode inside a batch file, you must use '%%f' instead
of '%f'.


Here are two example uses for the cust output format. The first shows how
you can use it to override an existing format module's default options, and
the second shows how you can use it to encode to a totally new format.

1. Suppose you want to fix a set of files, and in the process create .shn's
that are NOT seekable. Here's one way to do it. Note that although
the output shows an extension of .custom, the files will really have the
specified extension of .shn:

% shntool fix -noskip -o cust ext=shn { shorten -v2 - %f } *.shn
shntool [fix]: warning: no shift direction specified - assuming backward shift
gd80-10-11d1t01.shn --> gd80-10-11d1t01-fixed.custom ... done.
gd80-10-11d1t02.shn --> gd80-10-11d1t02-fixed.custom ... done.
gd80-10-11d1t03.shn --> gd80-10-11d1t03-fixed.custom ... done.
gd80-10-11d1t04.shn --> gd80-10-11d1t04-fixed.custom ... done.
gd80-10-11d1t05.shn --> gd80-10-11d1t05-fixed.custom ... done.
gd80-10-11d1t06.shn --> gd80-10-11d1t06-fixed.custom ... done.
gd80-10-11d1t07.shn --> gd80-10-11d1t07-fixed.custom ... done.
gd80-10-11d1t08.shn --> gd80-10-11d1t08-fixed.custom ... done.
gd80-10-11d1t09.shn --> gd80-10-11d1t09-fixed.custom ... done.
gd80-10-11d1t10.shn --> gd80-10-11d1t10-fixed.custom ... done.
No padding needed for 'gd80-10-11d1t10-fixed.custom'.
% shntool info *fixed.shn | grep seekable
seekable: no
seekable: no
seekable: no
seekable: no
seekable: no
seekable: no
seekable: no
seekable: no
seekable: no
seekable: no
%

An alternate way of specifying the .shn extension is as follows:

% shntool fix -noskip -o cust ext= { shorten -v2 - %fshn } *.shn


2. Suppose you want to convert a set of files to a new format that shntool
does not currently support. Let's make one up named 'crunch'. Assuming
this fictitious format has a command-line program that will encode WAVE data
read on standard input, all you have to do is figure out the proper
arguments for doing so and plug it into the cust format module:

% shntool conv -o cust ext=crunch { wavcrunch -level 9 -input - -output new-%f } *.wav
converting 'test1.wav' to 'test1.custom' ... done.
converting 'test2.wav' to 'test2.custom' ... done.
converting 'test3.wav' to 'test3.custom' ... done.
%

Again, the files created above would have the specified extension of .crunch, not
the .custom extension shown. Also, each file would be prefixed with the string
"new-", since that's what was specified to the encoder. Thus, the three files
created in the above example would be named "new-test1.crunch", "new-test2.crunch"
and "new-test3.crunch".


==================
Document revision:
==================

$Id: TUTORIAL,v 1.77 2004/05/05 07:37:46 jason Exp $

Five
2020-02-18, 02:33 AM
early shntool documentation only online for a few months, 2000-11-09
shntool

What is it?
What does it do?
Len mode
Fix mode
Where can I get it?
How do I compile the source?
Command-line switches
How do I run it?
Len mode examples
Fix mode examples
Known bugs
Future improvements
Credits
Contact information

What is it?

shntool is a multi-purpose .wav/.shn processing utility. File formats are abstracted from the functions that perform the real work in shntool. Thus, .shn files and .wav files are structurally identical from its perspective.

As far as its functionality, shntool currently has several uses. shntool can:

report size/length information about the WAVE data within .wav and/or .shn files
write corrected files for input files that weren't cut on sector boundaries (in this respect, it's sort of a rudimentary CDWave for unix, except it can read and write .shn's as well as .wav's)
write a concatenated .wav or .shn file from the given .wav and/or .shn files
print all WAVE information contained in the header of .wav and/or .shn files

shntool has native support for .wav files. If you want to also work with .shn files, you must have shorten somewhere in your default PATH.

shntool is currently beta software (though I run it with no problems). Keep this in mind! If you use shntool, be sure to double-check its results until you feel comfortable with it.

If you have a great idea for shntool, let me know! Or code it yourself - shntool is GPL'ed. ;-)

What does it do?

Depending upon the mode it is run in, shntool will perform certain actions. shntool currently has two modes, 'len' mode and 'fix' mode.

Note that any error messages are printed to stderr, so you can redirect them to /dev/null if you don't want to see them. (I suggest you don't do this while in fix mode, because error messages there are pretty important.)

Len mode

In len (length) mode, files are quickly scanned to determine their contents. Len mode takes the following arguments:

an optional argument from the following list (if none is given, the default unit is bytes):

"-kb" to specify that totals should be output in kilobytes
"-mb" to specify that totals should be output in megabytes
"-gb" to specify that totals should be output in gigabytes

an optional argument, "-debug", to specify that all of the following information be printed for each file given, instead of the standard output line (described below):

the file name
length, in mm:ss format
samples per second
number of channels
bits per sample
average bytes per second
rate (should equal average bytes per second)
block align
header size
data size
total size
chunk size
any errors associated with the file

If the file is a .wav file (not a .shn), then to aid in debugging 'hdr' errors, you will also see:

header size + data size
chunk size + 8
actual size
All three of the above should match.

finally, optional file names to process. If none are given, then file names are read from standard input.

If "-debug" is not specified, then for each valid file name given, shntool reports the following information:

the length of the WAVE data within the .wav or .shn, in minutes:seconds format
the exact size, in bytes, of the WAVE data within that .wav or .shn
One of the following status indicators:

the word "bound" if the WAVE data within that .wav or .shn is not cut on a sector boundary, or
the word "short" if the WAVE data within that .wav or .shn is too short to be burned, or
the word " hdr " if the WAVE header within that .wav contains incorrect information with respect to sizes (not applicable to .shn files), or
the character " - " (dash, or minus sign) otherwise

the file name of the .wav or .shn

After all files have been processed, it will report the total run length and disk space used and/or needed for the given files.

Fix mode

In fix mode, the given files are checked for .shn and/or .wav validity, and are processed only if (a) all files pass the check and (b) all files have identical headers (to prevent accidental mixing of different WAVE streams). Fix mode takes the following arguments:

a required argument, "-wav" or "-shn", which specifies .wav or .shn output, respectively
a required argument from the following list:

"-b" to specify that track breaks be moved backward to the previous multiple of 2352 bytes, where necessary, or
"-f" to specify that track breaks be moved forward to the next multiple of 2352 bytes, where necessary, or
"-j" to specify that all WAVE data from the given files be joined together in one large output file (useful if you want to split the tracks with a more advanced .wav editor)

an optional argument "-d", which indicates that the next argument is the name of an alternate output directory
an optional argument "-pad" to force padding of the last file written in fix mode, if necessary
an optional argument "-order" to edit the order that your files will be processed (see the important note below)
finally, at least two filenames to process.

While running in fix mode, shntool displays which file it is currently processing. Output file names will be in the following format:

prefix-fixed.ext (for forward- and backward-shifted files created with "-f" or "-b")
joined.ext (for joined files created with "-j")

where 'prefix' is the basename of the input filename, and '.ext' is either '.shn' or '.wav', depending on what you specify. For example, assuming that the '-wav' command-line switch was given, 'th79-08-08d1t03.shn' would become 'th79-08-08d1t03-fixed.wav'.

If you use fix mode, make sure to listen to the resulting files to ensure that they came out alright. There is always the possibility of a bug lurking in the WAVE-splitting code.

IMPORTANT NOTE!

Because some shows contain files with non-etree-standardized names, simply running (for example) 'shntool -fix -shn -b *.shn' on those .shn's will produce unexpected (i.e. wrong) results, because of the wildcard expansion. That's why I've included an optional switch, "-order", which allows you to edit the order that the files will be processed. Typing (for example) 'shntool -fix -shn -b -order *.shn' will bring up this editor. Below is a chart showing an example of how non-etree-standardized file names can screw up the file order:

File order from wildcard expansion - Desired file order

track1.shn -- track1.shn
track10.shn - track2.shn
track11.shn - track3.shn
track12.shn - track4.shn
track13.shn - track5.shn
track2.shn -- track6.shn
track3.shn -- track7.shn
track4.shn -- track8.shn
track5.shn -- track9.shn
track6.shn -- track10.shn
track7.shn -- track11.shn
track8.shn -- track12.shn
track9.shn -- track13.shn

Where can I get it?

Right here. To see if you are using the most current version, type 'shntool -v'.

version 0.95, released 2000-10-19
+ Available as C source code (56711 bytes)
+ Now available for DOS/Windows: shntool.zip (316969 bytes) - thanks Caleb Epstein!
NOTE: Please consult the README file included in this zip file for installation instructions.
+ fixed bug where chunk size wasn't being updated for files that were altered in fix mode
+ added code to help determine whether shorten is in the default path
+ WAVE data for headers in .wav (not .shn) files are now verified
+ file names created in fix mode are now based on input filenames when -f or -b are given

version 0.94, released 2000-08-24
+ Available as C source code (53189 bytes)
+ added new fix mode switch "-pad" to force padding of the last file written with zeroed bytes up to the next multiple of the sector size, if necessary

version 0.93, released 2000-07-06
+ Available as C source code (51151 bytes)
+ I partially broke file reading from stdin in len mode in 0.92 - fixed.
+ did several other minor cleanups/corrections that did not affect the core functionality of shntool

version 0.92, released 2000-07-04
+ Available as C source code (49633 bytes)
+ added setlinebuf() support for architectures that don't have it (see the compiling section for more info)
+ added description of the len mode "-debug" flag to its help menu

version 0.91, released 2000-07-04
+ Available as C source code (49201 bytes)
+ WAVE headers are now processed correctly (this was the bug reported in version 0.9)
+ added "-debug" switch for len mode
+ fixed segfaults with headers > 64 bytes

version 0.9, released 2000-07-03
+ Available as C source code (45179 bytes)
+ Initial release

How do I compile the source?

Simple:

% gcc -Wall shntool.c -o shntool
%

NOTE: If you see the following error trying to compile shntool as above, try using the "-D_SETLINEBUF_HACK" compiler switch:

% gcc -Wall shntool.c -o shntool
shntool.c: In function `start_child':
shntool.c:311: warning: implicit declaration of function `setlinebuf'
% gcc -Wall -D_SETLINEBUF_HACK shntool.c -o shntool
%

Now stick 'shntool' somewhere in your PATH.

For ease of use, shntool recognizes when it is run as 'shnlen' and 'fixwav'. This way, by creating symbolic links to shntool with these names, you can avoid having to remember to specify which mode you want to run shntool in. Here's how to do this:

% cd /directory/where/shntool/is/installed
% ln -s shntool shnlen
% ln -s shntool fixwav
%

Thus, running 'shnlen' is equivalent to running 'shntool -len', and running 'fixwav' is equivalent to running 'shntool -fix'.

NOTE: If you previously installed the older program 'shnlen', make sure that you remove it before installing shntool. You can find out your shnlen version by typing 'shnlen -v'. If it's 0.5 or less, you need to remove the old shnlen executable.

The source is known to compile cleanly on the following platforms (given by 'uname -srm'):

Linux 2.2.x i686
Linux 2.2.x alpha
Linux 2.0.x i686
Linux 2.0.34 mips (Cobalt Qube)
SunOS 5.7 sun4u
SunOS 5.5.1 sun4u
SunOS 4.1.4 sun4c
FreeBSD 3.4-RELEASE i386
IRIX64 6.5 IP27
IRIX 6.5 IP22
HP-UX B.10.20 9000/735
add your platform here

Thanks to Steve B. for providing several of these entries.

If it does not compile on some other platform, but you successfully port it to that platform, please let me know!

Command-line switches

To see what command-line switches are supported, simply type 'shntool -h'.

% shntool -h
usage: shntool [ -len | -fix ] ...

For help with the -len switch, type 'shntool -len -h'.

For help with the -fix switch, type 'shntool -fix -h'.

%

How do I run it?

Here are some sample uses. How you use it is entirely up to you.

Len mode examples

Here's a file not cut properly on a sector boundary:

% shntool -len disc1/lc85-07-06d1t10.shn
4:45 50398704 bound disc1/lc85-07-06d1t10.shn
4:45 50398704 B (total for 1 file)
%

See exactly what information is contained within a troublesome file:

% shntool -len -debug lc85-07-06d1t10.shn
filename: lc85-07-06d1t10.shn
samples/sec: 44100
channels: 2
bits/sample: 16
avg. bytes/sec: 176400
rate: 176400
block align: 4
header size: 44
data size: 50398660
total size: 50398704
length: 4:45
errors: not cut on sector boundary
---------------------------------------------------------------
%

Get statistics for one disc of a show, and display totals in terms of megabytes:

% shntool -len -mb *.wav *.shn
29:12 309097532 gd78-10-22d1t1.shn
6:15 66288812 gd78-10-22d1t2.shn
4:33 48277196 gd78-10-22d1t3.wav
6:07 64891724 gd78-10-22d1t4.shn
9:49 104021948 gd78-10-22d1t5.wav
6:29 68749004 gd78-10-22d1t6.wav
10:29 111049724 gd78-10-22d1t7.shn
72:59 736.60 MB (totals for 7 files)
%

Find out how many gigabytes of WAVE data you have sitting within the .wav's and .shn's on your hard drive(s):

% find / -iname \*.shn -o -iname \*.wav | shntool -len -gb | tail -1
4966:56 48.96 GB (totals for 773 files)
%

Fix mode examples

Fix a disc of .shn's, where some files are not cut on sector boundaries, and write our fixed files as .shn's (note that the last file in a disc might still not be cut on a sector boundary, unless you specify the '-pad' option like I do below). I show the results of 'shntool -len' on these files, before and after fixing, for comparison:

% shntool -len ak98-08-21/disc1/*.shn
3:23 35911420 bound ak98-08-21/disc1/ak98-08-21t101.shn
4:23 46550828 - ak98-08-21/disc1/ak98-08-21t102.shn
3:57 41844476 - ak98-08-21/disc1/ak98-08-21t103.shn
4:27 47261132 - ak98-08-21/disc1/ak98-08-21t104.shn
4:16 45299560 bound ak98-08-21/disc1/ak98-08-21t105.shn
3:05 32803388 - ak98-08-21/disc1/ak98-08-21t106.shn
3:41 39113804 - ak98-08-21/disc1/ak98-08-21t107.shn
4:50 51193676 - ak98-08-21/disc1/ak98-08-21t108.shn
5:39 59804348 - ak98-08-21/disc1/ak98-08-21t109.shn
3:40 38979740 - ak98-08-21/disc1/ak98-08-21t110.shn
5:09 54547624 bound ak98-08-21/disc1/ak98-08-21t111.shn
5:00 53025872 bound ak98-08-21/disc1/ak98-08-21t112.shn
3:32 37455644 - ak98-08-21/disc1/ak98-08-21t113.shn
3:15 34503884 - ak98-08-21/disc1/ak98-08-21t114.shn
4:36 48780524 - ak98-08-21/disc1/ak98-08-21t115.shn
4:32 48110204 - ak98-08-21/disc1/ak98-08-21t116.shn
3:05 32681084 - ak98-08-21/disc1/ak98-08-21t117.shn
70:39 747867208 B (totals for 17 files)
% shntool -fix -shn -d /mnt/fixed -b -pad ak98-08-21/disc1/*.shn
ak98-08-21/disc1/ak98-08-21t101.shn --> /mnt/fixed/ak98-08-21t101-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t102.shn --> /mnt/fixed/ak98-08-21t102-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t103.shn --> /mnt/fixed/ak98-08-21t103-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t104.shn --> /mnt/fixed/ak98-08-21t104-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t105.shn --> /mnt/fixed/ak98-08-21t105-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t106.shn --> /mnt/fixed/ak98-08-21t106-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t107.shn --> /mnt/fixed/ak98-08-21t107-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t108.shn --> /mnt/fixed/ak98-08-21t108-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t109.shn --> /mnt/fixed/ak98-08-21t109-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t110.shn --> /mnt/fixed/ak98-08-21t110-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t111.shn --> /mnt/fixed/ak98-08-21t111-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t112.shn --> /mnt/fixed/ak98-08-21t112-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t113.shn --> /mnt/fixed/ak98-08-21t113-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t114.shn --> /mnt/fixed/ak98-08-21t114-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t115.shn --> /mnt/fixed/ak98-08-21t115-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t116.shn --> /mnt/fixed/ak98-08-21t116-fixed.shn ... done.
ak98-08-21/disc1/ak98-08-21t117.shn --> /mnt/fixed/ak98-08-21t117-fixed.shn ... done. Padded this file with 1332 zero bytes.
% shntool -len -pad /mnt/fixed/*fixed.shn
3:23 35910380 - /mnt/fixed/ak98-08-21t101-fixed.shn
4:23 46550828 - /mnt/fixed/ak98-08-21t102-fixed.shn
3:57 41844476 - /mnt/fixed/ak98-08-21t103-fixed.shn
4:27 47261132 - /mnt/fixed/ak98-08-21t104-fixed.shn
4:16 45299564 - /mnt/fixed/ak98-08-21t105-fixed.shn
3:05 32803388 - /mnt/fixed/ak98-08-21t106-fixed.shn
3:41 39113804 - /mnt/fixed/ak98-08-21t107-fixed.shn
4:50 51193676 - /mnt/fixed/ak98-08-21t108-fixed.shn
5:39 59804348 - /mnt/fixed/ak98-08-21t109-fixed.shn
3:40 38979740 - /mnt/fixed/ak98-08-21t110-fixed.shn
5:09 54547628 - /mnt/fixed/ak98-08-21t111-fixed.shn
5:00 53025884 - /mnt/fixed/ak98-08-21t112-fixed.shn
3:32 37455644 - /mnt/fixed/ak98-08-21t113-fixed.shn
3:15 34503884 - /mnt/fixed/ak98-08-21t114-fixed.shn
4:36 48780524 - /mnt/fixed/ak98-08-21t115-fixed.shn
4:32 48110204 - /mnt/fixed/ak98-08-21t116-fixed.shn
3:05 32683436 - /mnt/fixed/ak98-08-21t117-fixed.shn
70:39 747868540 B (totals for 17 files)
%

Create one large .wav file from a disc's worth of .shn's, without padding it. Again, I show the results of 'shntool -len' on the joined file for comparison. Note that the joined files size will be smaller than the sum of the split files - this is due to the header lengths of the split files being counted in the total file size.

% shntool -fix -wav -j ak*.shn
Adding contents of ak98-08-21t101.shn to joined.wav ... done.
Adding contents of ak98-08-21t102.shn to joined.wav ... done.
Adding contents of ak98-08-21t103.shn to joined.wav ... done.
Adding contents of ak98-08-21t104.shn to joined.wav ... done.
Adding contents of ak98-08-21t105.shn to joined.wav ... done.
Adding contents of ak98-08-21t106.shn to joined.wav ... done.
Adding contents of ak98-08-21t107.shn to joined.wav ... done.
Adding contents of ak98-08-21t108.shn to joined.wav ... done.
Adding contents of ak98-08-21t109.shn to joined.wav ... done.
Adding contents of ak98-08-21t110.shn to joined.wav ... done.
Adding contents of ak98-08-21t111.shn to joined.wav ... done.
Adding contents of ak98-08-21t112.shn to joined.wav ... done.
Adding contents of ak98-08-21t113.shn to joined.wav ... done.
Adding contents of ak98-08-21t114.shn to joined.wav ... done.
Adding contents of ak98-08-21t115.shn to joined.wav ... done.
Adding contents of ak98-08-21t116.shn to joined.wav ... done.
Adding contents of ak98-08-21t117.shn to joined.wav ... done.
% shntool -len joined.wav
70:39 747866504 bound joined.wav
70:39 747866504 B (total for 1 file)
%

Known bugs

shntool's WAVE header parsing algorithm is not comprehensive - it only recognizes canonical WAVE headers and certain variations of the canonical format. Multiple RIFF chunks and/or other chunk types may cause the file to be declared "not a .shn or a .wav file." If you run into this problem, please let me know, and try to provide a way for me to get a hold of the offending file(s) so I can improve shntool. (Thanks to Jeff Kempka for reporting this bug)

Future Improvements

generalize the WAVE header parsing algorithm to support a wider range of headers
possibly add an option to write canonical WAVE headers in fix mode
possibly make shntool track-splitting more robust, so that it can split tracks according to user input, instead of just correcting the splits by jumping to the next (or previous) sector boundary
when in fix mode, have shntool check whether any changes would be made before processing files (you can do this manually by running shntool in len mode on the files to be processed)

I'm open to suggestions, so let me know if you have an idea for an improvement.

Credits

Special thanks goes out to Tim [tmo], whose ideas prompted the creation of this program's predecessor (shnlen), and whose diligent testing helped iron out the bugs in that program.

Thanks also goes out to Herschel Gelman, who had the great suggestion that shnlen could check to see whether the .wav files inside the .shn's were properly cut on sector boundaries.

Both of these ideas/functionalities were carried over into shntool.

Who do I contact if I have any questions/comments/suggestions/patches/bugs/flames?

Send it all to jasonxxxx.xxxxxxxx.xxx.

Five
2020-02-18, 07:10 PM
Peter King's SHN 2k Batch Files ... The functionality of this software is most impressive and useful yet never carried forward into the flac era. it was linked for many years from etree.org top software links.

Peter King's SHN 2k Batch Files v0.9 beta7 · 7/16/02 is the final known revision. if anybody has a copy of this, please pm me, I was unfortunately only able to find Peter King's SHN 2k Batch Files v0.80 · 12/14/01 (shown below in full)

from the SHN2K homepage, only online from 2002-2003
SHN2k -- the shorten compression assistant for Windows


Introduction

Today's tools for creating .shn files leave a lot to be desired the way content is organized -- noname.md5, anyone? -- and it occurred to me that a Better Way was within our grasp. Enter SHN2k, a batch file for Windows that creates a burn-ready folder of .shn files from your .wav source files. -- a .shn folder in complete compliance with the etree standard, available at your fingertips any time via the Start>Run panel.

SHN2k was born when I noticed there was no existing command-line tool for Windows 2000 in the etree archive. I began by duplicating the functionality of the existing 'compress.bat' code for Win98, but that only got my mind wandering about further things that could be done with the script! Around the same time, I had some sketchy content come my way in a few e-trades: files with inconsistent names, folders mixed with .shn and .mkw files (none of which matched the included 'noname.md5'), and the like. Why not create a tool that makes this sort of thing impossible?

Why not create a tool that does it all -- the right way?


What It Does

Best, I think, to say it with pictures!
These are your .wav files, ready for encoding... Start > Run > SHN2k project_name -- it's that easy! SHN2k creates .shn files, an .md5 file, encode notes, wrapped up in a .shnf (shorten folder) -- all named consistently.

[image missing] [image missing] [image missing]

SHN2k creates a folder completely ready to burn or to send to the FTP server of your choice. it also automatically creates a 'VERIFY' script for anyone who might be receiving these .shn files from you. Just double click on the included VERIFY script and it checks the validity of the .shn files and, if they pass the inspection, expands them.

If you'd like to see the encode_notes file or VERIFY_ script from the above example, click on their names. [these two links reproduced in full below]


How Do I Use It?

Before using SHN2k the first time, you've got to edit the script to reflect your specific PC system, namely where your .wav files are stored and where you'd like to resulting .shn content to go. To do this, simply open the script in Notepad and follow along -- the few lines that require your intervention are very clearly marked. You'll also see fields for your name and the equipment you regularly use to create your .shn files, which is used to create the 'encode_nodes' file. You only need to do this once -- and once you're ready, save the SHN2k script in your windows system directory:

windows 95/98/ME users save it to c:\windows\command
windows 2000/XP users save it to c:\winnt\system32
(In the SHN2k.zip file there are also handy shortcuts to these paths to make installation very simple.)

You also *must* have shortn32.exe and md5sum.exe installed in the same location. Please download them here. if you don't have them already. (mkwACT users *will* need to install these two additional files.)

Now that you've done that, the fun can begin!

To use SHN2k, all you need is a folder of .wav files that you'd like to convert to .shn. It is probably the best idea to name your source files as in the example above, namely

t01.wav
t02.wav
etc.

( I've configured EAC on my system to output tracks named in this fashion when I extract, or when I'm mastering a new source, I use 'Extract Regions' in SoundForge 4.5. If you'd like more info on how I get my source .wav files named this way, email me.)

Once you've got files ready to encode, it really is as easy as calling 'Start > Run > SHN2k' and providing it with the name of your .wav project, date and name of band, what have you.

At the end of the process, it will automatically open the resulting .shnf folder so you can further edit the 'encode notes' file -- add a setlist, venue details, etc., run the VERIFY script if you'd like to check the validity of the files you've just created, etc.


Downloads

SHN2k is completely free for non-commercial use. I cannot be held responsible for any damage or unpredictable results that befall your system as a result of using this script. But, having said that, it's just a formality. I've been using SHN2k exclusively to create my .shn material for the last three months. It works. :-)

SHN2k.zip download


Support Notes

As the name somewhat implies, SHN2k was developed originally and optimized for Windows 2000 since there was no existing command-line solution. Windows 9x functionality was an afterthought, and, while it works, certainly things aren't as silky as in Win2k.

Windows 98 users will have better results if, instead of calling SHN2k from Start > Run, they open a DOS session first. (Start > Run > command) Then, once the DOS box is open, run SHN2k.

If you've installed Windows in a non-standard location -- anything other than c:\windows or c:\winnt -- you're going to have to manually modify the code of SHN2k. If you need to do this, email me and I'll give you some pointers.

:: TODO for v1.00 --
:: chomp on one file at a time
:: resolve wav_md5 naming problem
:: menu driven
:: turbo mode !!!
:: investigate 'out of environment space' error in win98 w / start-run method LEADS TO VERSION # not working
:: works when memory is allocated to it explicitly, but not by default. wtf?!!?
:: accept argument after project_name to replace local .wav location (maybe)
:: if temp_dir already exists, make new path (in the event of multiple encode sessions)

:: *** if you direct output to a subfolder, at md5 creation there's a 'cannot find path specified'
:: 'starting compression' just as the thing is finishing???
:: *** if a file is in use -- output an error message when trying to move to temp directory
:: *** make everything read-write before processing
:: rename folder with .shnf extension depending on name???
:: PREP mode -- chops name of files in current folder up to t0x.wav (DARING!!!!!)
:: VERIFY script -- instead of 'confirming shn.md5' why not give specific name to the md5 being verified
:: VERIFY script doesn't work when content has lived on a CD-rom (read/write issues i suspect)

:: RECENTLY FINISHED:
:: VERIFY_.bat for win9x
:: remove .shn extension before extracting
:: extract mode
:: VERIFY script needs version number
:: 'processing PROJECT_NAME...'
:: VERIFY only extracts files starting with name same as its own - line 343
:: add only relevant files to the .md5 file
:: VERIFY pop open relevant window
:: win98 time/date stamping -- done, but why phantom character??
:: BLANK VARIABLE = usage notes
:: -edit mode brings up script into notepad??
:: create warning file in temp folder about premature ejections

encode_notes.txt
dbyrne_05-24-01_fm

encoded by pwking (sleepypedro_at_yahoo.com)
Wed 01/23/2002 @ 6:02pm

audio extraction: Plextor PX-W1610A ~ EAC (secure mode) ~ shn2k

i rip, therefore i am!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
created by shn2k (v.0.9 beta5)
the shorten compression assistant for windows 2000 + beyond
written by peter w. king (sleepypedro_at_yahoo.com)
(c)2002 crabcollective productions



VERIFY_ script
@echo off
cls
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo VERIFY_dbyrne_05-24-01_fm.bat
echo created by shn2k (v.0.9 beta5)
echo the shorten compression assistant for windows 2000 + beyond
echo written by peter w. king (sleepypedro_at_yahoo.com)
echo (c)2002 crabcollective productions
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
echo verifying shn.md5 checksum
echo.
md5sum -c dbyrne_05-24-01_fm_shn.md5
echo.
if errorlevel=1 goto NOT_ROCKING
if errorlevel=0 goto FULLY_ROCKING

:NOT_ROCKING
echo Please try re-downloading the track(s) in question. Your copy doesn't match.
goto end

:FULLY_ROCKING
if "C:\WINNT"=="C:\WINNT" goto NEXT_SECTION
echo.
lfnfor on
:NEXT_SECTION
echo shorten files validated --
echo i'll extract them for you now!
echo.
:FILE_RENAMER
mkdir temp_dir
FOR %%f in (dbyrne_05-24-01_fm*.shn) DO move "%%f" "temp_dir\%%f"
cd temp_dir
FOR %%f in (*.shn) DO rename *.* *.
FOR %%f in (*) DO shortn32 -x %%f ..\%%f.wav
FOR %%f in (*) DO rename * *.shn
FOR %%f in (*.shn) DO move "%%f" "..\%%f"
cd ..
if "C:\WINNT"=="C:\WINNT" rmdir /Q temp_dir
if "C:\WINNT"=="C:\WINDOWS" rmdir temp_dir
explorer .
:end


readme.txt
::**************************************************************
::* SHN2K v0.80
::* the shorten compression assistant for Windows 2000 & beyond
::* written by peter w. king ([email protected])
::* 12-14-2001
::**************************************************************

Hi there! Welcome to shn2k! This script was written to facilitate the creation
of shorten files and their corresponding .md5 checksums that automagically conform
to the naming convention of your choice -- no more files named Track01.shn, Track02.shn
and the god-awful 'noname.md5'! Try it, I think you'll like it!

Please edit the variables in the shn2k.bat file so that they match your exact setup, then save the file.

for win2000 / nt4 / XP(?) : save it in the \system32 folder of your \winnt directory (probably c:\winnt\system32)
for win98: save it in the \command folder of your \windows directory (probably c:\windows\command)

after that, using the script is as easy as

Start >
Run >
shn2k disk_name

it is assumed you've already got shortn32.exe and md5sum.exe installed correctly. if not, download these small programs from www.etree.org and install them in the same folder where you've installed this script.

please email me with comments/questions/suggestions/etc.

:: TODO for v1.00
:: windows9x date/time stamping
:: return to original DOS directory?
:: menu driven
:: turbo mode !!!
:: extract mode
:: autogenerate confirmation.bat script that both confirms and extracts for recipients

::**************************************************************
::* SHN2K v0.80
::* the shorten compression assistant for Windows 2000 & beyond
::* written by peter w. king ([email protected])
::* 12-14-2001
::**************************************************************
@echo off
goto variable_declaration

Hi there! Welcome to shn2k! This script was written to facilitate the creation
of shorten files and their corresponding .md5 checksums that automagically conform
to the naming convention of your choice -- no more files named Track01.shn, Track02.shn
and the god-awful 'noname.md5'! Try it, I think you'll like it!

Please edit the variables in the section below these notes
so that they match your exact setup, then save the file.

for win2000 / nt4 / XP(?) : save it in the \system32 folder of your \winnt directory (probably c:\winnt\system32)
for win98: save it in the \command folder of your \windows directory (probably c:\windows\command)

after that, using the script is as easy as

Start >
Run >
shn2k disk_name

it is assumed you've already got shortn32.exe and md5sum.exe installed correctly. if not, download these small programs from www.etree.org and install them in the same folder where you've installed this script.

see KNOWN ISSUES at the end for further notes
please email me with comments/questions/suggestions/etc.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:variable_declaration
:: WHERE ARE YOUR WAV FILES STORED, d00d?
REM for example, if c:\wavs, set the variables as follows:
set wav_drive=c
set wav_path=wavs

REM the wav_path can also be a full pathname, e.g. 'data\wavs\doo-wop\60s'

:: WHERE SHALL I STORE YOUR SHN FILES, d00d?
set shn_drive=c
set shn_path=shn

:: USER SPECIFIC INFO
set your_name=dirk diggler
set your_email=dirk@feel_my_heat.org
set your_gear=some cd-rom ~ EAC ~ shn2k
REM you can't use the > mark, which is why i'm using the ~ above
set adjustable_slogan=i rip, therefore i am!

set temp_dir=shn2k
REM this folder will be deleted as soon as work is done.

REM ok, that's it! now save the file and you're ready to go.
goto greenlight

:opening_credits
* PREREQUISITES:
* shortn32 & md5sum installed somewhere in your %PATH (eg. c:\winnt\system32 or c:\windows\command)
*
* usage:
* modify operating variables
* open DOS shell (start > run > 'shn2k cd_name' (without ' marks, and no spaces in 'cd_name')
*
**********************************************************

:highly_anomalous
REM echo %WINDIR%
if "%WINDIR%"=="C:\WINNT" echo you are using windows NT or 2000
if NOT "%WINDIR%"=="C:\WINDOWS" echo you are using windows 9x
goto end

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
: EVERYTHING BELOW IS PRODUCTION CODE. DO NOT MODIFY. THANKS.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:wav_directory_is_bad
echo.
echo TROUBLE WITH YOUR CHOSEN WAV_DIRECTORY --
echo %wav_drive%:\%wav_path% doesn't exist; the program will end.
echo.
echo please edit the shn2k.bat file and modify the 'wav_path' variable
goto end

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:shn_directory_is_bad
if NOT exist %shn_path% mkdir %shn_drive%:\%shn_path%
echo.
echo your chosen shn_path, %shn_drive%:\%shn_path%,
echo did not exist so I created it for you.
echo.
goto checkup_pt2

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:shn32_no_esta_aqui
echo.
echo SHORTN32.EXE DOESN'T SEEM TO EXIST --
echo please install it correctly and try shn2k again; the program will now end.
echo.
goto end

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:greenlight
cls
echo **********************************************************************
echo * *
echo * SHN2K -- the shn compression assistant for Windows 2000 + beyond *
echo * *
echo * written by peter w king ([email protected]) *
echo * *
echo **********************************************************************
echo.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:checkup
REM if "%WINDIR%"=="C:\WINDOWS" if NOT exist %wav_drive%:\%wav_path% goto wav_directory_is_bad
REM if "%WINDIR%"=="C:\WINDOWS" if NOT exist %shn_drive%:\%shn_path% goto shn_directory_is_bad

REM why do these win9x lines work as you'd expect?

if "%WINDIR%"=="C:\WINNT" if NOT exist %wav_drive%:\%wav_path% goto wav_directory_is_bad
if "%WINDIR%"=="C:\WINNT" if NOT exist %shn_drive%:\%shn_path% goto shn_directory_is_bad

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:checkup_pt2
shortn32 -h > nul
if errorlevel=1 goto shn32_no_esta_aqui
if "%WINDIR%"=="C:\WINNT" goto opening_statement

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:special_for_w9x_users
lfnfor on

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:opening_statement

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:setup

%wav_drive%:
cd \
cd %wav_path%

mkdir %temp_dir%
FOR %%f in (*.wav) DO move "%%f" "%wav_drive%:\%wav_path%\%temp_dir%\%%f" > nul
REM echo just moved files to temp_dir
cd %temp_dir%
mkdir %shn_drive%:\%shn_path%\%1.shnf

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:wav_md5_&_shn_prep
echo preparing wav_md5 checksum
FOR %%f in (*.wav) DO md5sum "%%f" >> "%shn_drive%:\%shn_path%\%1.shnf\%1_wav.md5"
FOR %%f in (*.wav) DO rename *.* *.

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:shn_conversion
if "%WINDIR%"=="C:\WINNT" FOR %%f in (*) DO echo encoding track %%f.wav & shortn32 "%%f" "%shn_drive%:\%shn_path%\%1.shnf\%1_%%f.shn" > nul
if "%WINDIR%"=="C:\WINNT" goto file_cleanup
REM win98 wouldn't work like it should. will be fixed for v1.
echo starting compression
FOR %%f in (*) DO shortn32 "%%f" "%shn_drive%:\%shn_path%\%1.shnf\%1_%%f.shn" > nul
echo compression complete

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:file_cleanup
FOR %%f in (*.) DO rename * *.wav
FOR %%f in (*.wav) DO move "%%f" "%wav_drive%:\%wav_path%\%%f" > nul
cd ..
if "%WINDIR%"=="C:\WINNT" rmdir /Q %temp_dir%
if "%WINDIR%"=="C:\WINDOWS" rmdir %temp_dir%
REM wow, why does microsoft break basic functionality between releases???

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:shn_md5_creation
cd %shn_drive%:\%shn_path%\%1.shnf
echo preparing shn_md5 checksum
FOR %%f in (*.shn) DO md5sum "%%f" >> "%shn_drive%:\%shn_path%\%1.shnf\%1_shn.md5"

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:dear_diary
echo %1 >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo.
if "%WINDIR%"=="C:\WINNT" for /f %%a in ('TIME /T') do set Time=%%a
if "%WINDIR%"=="C:\WINNT" echo encoded on %DATE% @ %Time%m >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo by %your_name% (%your_email%) >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo audio extraction: %your_gear% >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo. >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo. >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo %adjustable_slogan% >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt

echo. >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo. >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo.
:: PLEASE DON'T MODIFY THE LINES BELOW; LET ME HAVE MY FIFTEN MINUTES O' FAME...
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo created with shn2k, the shorten compression assistant for windows 2000 and beyond >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo written by peter w. king ([email protected]) >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo (c)2001 crabcollective productions >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> %shn_drive%:\%shn_path%\%1.shnf\%1_encode_notes.txt

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:compression_tool_or_virus???
REM if exist c:\winnt\system32\shn2k.bat copy /Y c:\winnt\system32\shn2k.bat %shn_drive%:\%shn_path%\%1.shnf\shn2k.bat > nul

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:confirm_and_rip

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:last_gasp
explorer %shn_drive%:\%shn_path%\%1.shnf
echo finished -- thanks for using shn2k!
echo.

:end

::CLOSING CREDITS
::the win9x code doesn't trap errors as gracefully as it does in w2k
::so you might end up with a screenful of 'path not found' msgs --
::but only if your variables are misconfigured. :-)
::
::there are no other known issues. it works. i am satisfied, for now.
::
::over and out,
::
::pwk
::
:: TODO for v1.00
:: windows9x date/time stamping
:: return to original DOS directory?
:: menu driven
:: turbo mode !!!
:: extract mode
:: autogenerate confirmation.bat script that both confirms and extracts for recipients

Five
2020-02-18, 07:48 PM
omg do you remember etree rule #33???!!! this is why we don't consider wholefile md5 authoritative whatsoever.. it caused so much strife at etree before they cancelled rule #33. st5 checksums and Trader's Little Helper solved 99% of all these old issues by virtue of being valid across any lossless codec.

ffp/st5 and otherwise useful information such as st5 composite and shntool len check are excellent to see posted in the threads. wholefile .md5?? if you insist.

if you want to add embedded skt to shn and seed here to this day, it is okay just post ffp/st5 checksums they are not changed by this kind of activity.


shorten v3 page, retrieved from archive.org capture, 2002-10-17
etree.org | shn v3 introduction

Shorten version 3 (SHN v3) allows Shorten users the ability to "audition" SHN files by jumping to different parts of the file using the slider control in Winamp (Windows users), or XMMS (Linux users). SHN v3 is (and always will be) 100% backward compatible! This means that older Shorten players and decoders will have no problem decoding Shorten files encoded with SHN v3.

Below is an evolving list of questions and answers about SHN v3. If you have any questions about SHN v3 that isn't answered below, please email serverxetree.org! We need your input!

etree.org | shn v3 q & a

What the heck are .skt files?

A .skt file is Shorten seek data.

Shorten seek data can either be embedded inside a Shorten file, or "live" outside the Shorten file. A .skt file is seek data that happens to "live" outside the Shorten file.

The reason for a separate seek data file is because the original seeder did not encode that particular show with Shorten v3. Re encoding the old Shorten file with the seek data embedded into it would change the MD5 checksum, and cause much confusion. Because of this, you should never append seek data to older Shorten files. You can create .skt files for your older (non seeking) Shorten files with SHN v3 tools.

.skt files are only necessary if you want to listen to Shorten files in ShnAmp or XMMS-SHN and be able to seek. Seeders that encode new shows with the SHN v3 tools will have seek data automatically embedded into the SHN file by default. The seek data is there so people can take advantage of seeking without needing additional (.skt) files.

Remember, SHN v3 (with or without the .skt files) will always be 100% backward compatible. This means you will always be able to decode any Shorten file with any Shorten decoder. The only difference between the different versions of Shorten is the ability to take advantage of new features (currently seeking).

Will creating .skt files change the MD5's of my Shorten files?

Creating .skt files will never affect the MD5 of your Shorten files. This is the whole purpose of .skt files; to avoid the potential nightmare of having two sets of MD5's floating around. Remember, creating .skt files is the ONLY way to seek-enable older SHN files.

What's this I'm hearing about rule #33?

Yes, there is indeed a new etree.org rule... Rule #33: Never append seek data to old (non-seeking) SHN files!!!!

Five
2020-02-19, 06:06 PM
since 2005 we have .st5 checksums available from .shn sets using Trader's Little Helper (TLH), which can be compared for perfection against Flac Fingerprint (.ffp). Also noteworthy is that double-clicking an ffp file with TLH installed will compare and run self-test. Using Flac Frontend, you have to hit 'test' and 'fingerprint' then compare visually the checksums with other known sets to identify it. TLH modern way is great. Also, etree's current 'Flac Fingerprint' page is spot-on as of this writing, go look it up.

Blast from the past, showing some of the confusion upon the arrival of flac and understandable resistance of all the people who collected 10,000 GD/Phish shows in .shn format, using the poor standard of wholefile .md5 as opposed to current .ffp/.st5

keep in mind reading this that it is for the history, and also that .st5 we have been using since 2005 is the exact same checksums inside.

original etree wiki Flac Fingerprint page 2002-11-17
Thu, 02 Jan 2003 17:32:44 DianaHamilton [lma]
Flac Fingerprint

A FLAC Fingerprint is a small text file (ffp.txt) that contains the filename and a printout of checksum information for one or more .flac files. The fingerprint is analogous to yet somewhat different from the .md5 files for used for Shorten (.shn):

Unlike an .md5 file, the FLAC Fingerprint ffp.txt file itself is not actually used in performing integrity checks on .flac files. Instead, FLAC automatically verifies each file against an internal checksum when you decompress.


The ffp.txt information is used to visually compare different .flac filesets for lineage purposes. Reference fingerprints can be listed in the ShnDatabase. In a similar way, the ShnDatabase lists .md5s as "fingerprints" for .shn filesets. In both cases, the [Internet Archive] also uses the fingerprints stored in the ShnDatabase to speed up their archiving of the music. So, it makes good sense to include a FLAC fingerprint file with each .flac seed.


A FLAC Fingerprint is generated only for the audio data portion of the file. This gives a truer reference point- just for the most important part of the file. In contrast, .md5s are generated against whole files, including extraneous or variable data (such as the seek tables on .shns).


SPECIAL NOTE ABOUT .MD5 FILES AND FLAC: It is a VERY bad idea to make an .md5 checksum file for a .flac fileset! Under FLAC, you can change the compression ratio and add/remove meta data to .flac files without changing the actual audio. The audio may be identical, but the extra data will completely change the .md5 checksum. This would cause major confusion when trying to compare the fileset against others in a database (similar to the current situation with nonseeking vs. seek-appended .shn files).


Repeat: Never make .md5 checksum files of .flac files. For .flac files, .md5s are useless as reference tools. Doing so will only cause unnecessary chaos and confusion.


See also: FLAC, FlacFrontend, SeedingGuidelines
This Page Last Changed: Nov 7, 2002 14:29:11

Five
2020-02-19, 06:10 PM
be sure to check the link for Adam Fox's Shorten guide (http://members.tripod.com/~rimeswel/shnguide.html), still online as of this writing in 2020. amazing! :clap: last updated 2001-11-13

batchfaq.txt by Jeremy Clark, 1999-04-26
Subject: [pcp-shn] How to handle Shorten and MD5 my way.
Date: Mon, 26 Apr 1999 18:05:28 +0000
From: Jeremy Clark <RubyBroomxxxxxxxx.xxx>
To: PCP <[email protected]>, PCP-SHN <[email protected]>

From: Jeremy Clark <RubyBroomxxxxxxxx.xxx>

OK, I finally got my Shorten setup working perfectly with batch files
(thanks to Adam Fox's Shorten Guide), so I thought I'd share my method,
because I think it works rather nicely.

1. Create a folder on your C: drive called "util"

2. Create a folder on your C: drive called "burning"

3. Make sure there are copies of Shortn32.exe and md5sum.exe in the
"util" folder you created

4. Create the following 4 batch files in notepad and put them all in
the
"util" foler you created:

----------cut here-----------------
cls
lfnfor on
for %%f in (*.shn) do c:\util\shortn32.exe -x %%f c:\burning\%%f.wav
lfnfor off
----------cut here-----------------

name this file "unshorten.bat"

----------cut here-----------------
cls
lfnfor on
for %%f in (*.wav) do c:\util\shortn32.exe %%f c:\burning\%%f.shn
lfnfor off
----------cut here-----------------

name this file "shorten.bat"

----------cut here-----------------
c:\util\md5sum --binary *.shn > > ~NameMe~.md5
----------cut here-----------------

name this file "md5gen.bat"

----------cut here-----------------
cls
lfnfor on
for %%f in (*.md5) do c:\util\md5sum.exe --check %%f
lfnfor off
----------cut here-----------------

name this file "checksum.bat"

5. Open Windows Explorer and go to View>Options>File Types and click on
"New Type" and enter into the Description of type field "Shorten file"
and into the Associated extension field ".shn"

6. Create a "New..." action and call it "Extract". Put
"c:\util\shortn32.exe" -x "%1" "%1.wav" (WITH the quotes) into the
"application to perform action" field. Click on "Ok".

7. Create a "New..." action and call it "Extract all". Under
"application to perform action", browse to the file "unshorten.bat" you
created. Click on "Ok".

8. Create a "New..." action and call it "Generate MD5". Under
"application to perform action", browse to the file "md5gen.bat" you
created. Click on "Ok".

9. Back in View>Options>File Types, again click on "New Type" and enter
into the Description of type field "md5 checksum" and into the
Associated extension field ".md5"

10. Create a "New..." action and call it "check". Under "application to

perform action", browse to the file "checksum.bat" you created. Click
on "Ok".

11. Find "Wave sound" (or something similar) on the list of registered
file types and double click on it. Create a "New..." action and call it

"Shorten all". Under "application to perform action", browse to the
file "shorten.bat" you created. Click on "Ok".

12. Create a "New..." action and call it "Shorten". Under "application
to perform action", type "c:\util\shortn32.exe" "%1" "%1.shn" (WITH the
quotes). Click on "Ok".

Ok, now your system is set up to do the following:

1. Right click on a .shn file on a CDROM disc (or anywhere for that
matter) and choose "Extract all". All the shorten files in the current
directory will be sequentially extracted into .wav files in the
c:\burning directory.

2. Right click on a .shn file in a directory and choose "Generate MD5".
A file called "~NameMe~.md5" will be created in the c:\burning
directory. Rename the file appropriately.

3. Right click on an .md5 file in a directory and choose "check". A DOS

window will open and md5sum will sequentially verify that all the .shn
files in the directory match the .md5 file.

4. Simply double-click on any .shn file anywhere and it will decompress
to a .wav file.

5. Right click on a .wav file and choose "Shorten". A .shn file will be

created in the same directory.

OK I think I got it all typed in there. I hope all this helps! Feel
free to
email me with any questions, although I'm not really an expert.
I owe most of this to Adam Fox's Shorten guide
at http://members.tripod.com/~rimeswel/shnguide.html

--
Jeremy Clark
AOL Instant Messenger - RubyBroom
ICQ# - 7534422
IRC nicks - ]eremy, RubyBroom

Five
2020-02-19, 07:22 PM
the batch files posted below really give a window into how we used to do things back in the day.

shortn32.exe description and tutorial by Mike Wren, 2000-10-19
etree.org | shortn32.exe introduction

Shorten® (.shn) is an audio compression scheme that is used to compress audio (.wav) files losslessly. This means that after you decompress a Shorten file, everything that was in the original .wav is there. This is unlike MP3, in which the compression step throws away information that can never be recovered.

For distribution and archiving purposes, the Shorten (.shn) files themselves can also be burned onto a CD-R as data. One big advantage to archiving Shorten files is that you'll never have to deal with digital audio extraction (DAE) from an audio disc, which can sometimes produce clicks and other undesired artifacts.

The Shorten source code is the property of SoftSound Limited and has been made available to the general public for non-commercial use. The original SoftSound code has been extended by etree.org (most notably by the work of Wayne Steilau and Jason Jordan) to include "seek-tables" so that you can easily skip to any portion of a song in audio players like WinAmp and XMMS. The latest version of Shorten can always be found on the etree.org shnutils page or the FreshMeat project page.

For Windows users who wish to use a command line version of Shorten, you've come to the right place! When shortn32.exe is used along with the etree.org batch files, it's surprisingly robust and easy to use, minus all the bells and whistles of a graphical user interface.

etree.org | shortn32.exe download

This is the official distribution site for SHN v3 (seeking SHN)

shorten-3.5.1.zip v3.5.1 (Cygwin) - 440KB Released 2/12/03
Cygwin version of Shorten. Works on Windows 9x/ME/NT/XP.

[color=blue][u]shortn32.exe v3.1 OLD - 99KB Released 10/10/00 31336 Downloads since 10/10/00

etree.org batch files - 3KB Updated 8/20/02 10478 Downloads since 10/9/00
These batch files will work for Windows users ONLY!

etree.org | shortn32.exe installation

You will want to replace your existing shortn32.exe file.

Windows 95/98: Download shortn32.exe to c:\windows\command

Windows NT/2000: Download shortn32.exe to c:\winnt\system32

To find out what version of shortn32.exe you are currently using, open an MS-DOS window and type:

shortn32 -h

The version number will be at the top.

If you downloaded the [color=blue]etree.org batch files for Windows[/blue], extract the three batch files (compress.bat, decompress.bat, makeskt.bat) to the directory: c:\windows\command

etree.org | shortn32.exe usage, extracting

To extract .shn files to .wav files (for burning to CD-R), open an MS-DOS window, go into the directory where the .shn files are located, and type the following:

shortn32 -x [filename].shn [filename].wav

You must insert the names of the .shn files [without the brackets]. Example:

shortn32 -x ph94-06-26d1t01.shn ph94-06-26d1t01.wav

The first file (.shn) is your input file, the last file (.wav) is your output file. You will have to repeat this process for each SHN file in the directory, unless you are using the etree.org batch files.

If you're using the etree.org batch files, open an MS-DOS window and go to the directory you wish to extract from SHN to WAV. Type: "decompress" (without quotes). The batch file will prompt you what drive you wish to save the WAV files to.

etree.org | shortn32.exe usage, compressing

After making sure you have downloaded and copied shortn32.exe into the proper directory (see installation), open an MS-DOS window and go to the directory of the show you wish to compress into Shorten format.

Type:

shortn32 [filename].wav [filename].shn

You must insert the names of the .shn files [without the brackets]. Example:

shortn32 ph94-06-26d1t01.wav ph94-06-26d1t01.shn

The first file (.wav) is your input file, the last file (.shn) is your output file. You will have to repeat this process for each file in the directory, unless you are using the etree.org batch files. Also, if you are using Shorten v3.0 or above, any SHN's you compress will have seek data embedded into the SHN file by default. Please encode the seek data to the Shorten files if you are creating/seeding a new show!

If you're using the etree.org batch files, open an MS-DOS window and go to the directory you wish to convert to SHN. Type: "compress" (without quotes). The batch file will prompt you what drive you wish to save the Shorten files to.

etree.org | shortn32.exe usage, creating seek

If you have older SHN files that are not SHN v3 (seek) enabled, you can manually create seek data for these files!!! The easiest way to do this is by using the etree.org batch files.

Open an MS-DOS window and go to the directory containing the SHN files you want to create seek files for.

Type: "makeskt" (without quotes). The batch file will then create and save in that same directory a seek (.skt) file for each SHN file. It's that easy!

etree.org | shortn32.exe etcetera

When compressing new Shorten files, please remember to follow the etree.org naming scheme, and also make sure you are using the most recent version of Shorten!

etree.org | shortn32.exe credits

Special thanks to Wayne Stielau, the creator of SHN v3. All documentation written and updated by Mike Wren.
complete contents of batch.zip

readme.txt
Shorten® Batch Utilites for Windows® 95/98
Written by Terrapin, Updated for SHN v3 by Mike Wren.

10/9/00

http://etree.org · Leading the Lossless Audio Revolution!

Special Thanks to Wayne Stielau for creating the SHN v3
standard for the etree.org community.




Installation:

First, make sure you have the most recent version of
shortn32.exe in your c:\windows\command directory. Extract
the three batch files (compress.bat, decompress.bat and
makeskt.bat) to the c:\windows\command directory.



Usage:

Compressing - Open an MS-DOS window and go to the directory
you wish to convert to SHN. Type: "compress" (without quotes).
The batch file will prompt you what drive you wish to save the
Shorten files to.

Extracting - Open an MS-DOS window and go to the directory
you wish to extract from to SHN to WAV. Type: "decompress"
(without quotes). The batch file will prompt you what drive
you wish to save the WAV files to.

Creating Seek (.skt) files - If you have older SHN files you
want to make seek indexes for, you can do so with this new
batch file. Open an MS-DOS window and go to the directory
containing the SHN files you want to create seek files for.
Type: "makeskt" (without quotes). The batch file will then
create and save in that same directory seek (.skt) files for
each SHN file.


Updates:

Don't forget to check http://etree.org/software.html regularly
for software updates. For questions or comments about these
batch utilitites, please email Mike Wren < [email protected] >.


--------------------------------------------------------------

Etree.org is the leader in lossless digital audio distribution
on the Internet! We are a community committed to providing the
highest quality live concerts in a lossless, downloadable format.

You can find every band that allows taping in the jambands
community on etree.org, including Phish, the Grateful Dead,
String Cheese Incident, The Slip, Medeski, Martin & Wood,
Umphrey's McGee, The Big Wu, Amphibian and The New Deal.

To use Etree.org, all you need is a high speed Internet
connection (cable modem, xDSL, T1, or Ethernet) and a CD-R burner.
Etree.org uses Shorten (.shn) audio compression because it creates
an exact clone of the original DAT source.

We do not use MP3 due to it's lossy compression scheme which
greatly degrades from the quality of the music. If you trade a
CD-R burned from MP3 audio, you're polluting the CD-R trading
community.

Etree.org gives everyone the means to easily create and trade music
with no loss of quality. Best of all, it's all FREE!
compress.bat
@echo off
cls
echo WAV to SHN batch compression utility for Windows 95/98
echo Written by Terrapin ú Updated for SHN v3 by Mike Wren
echo ÿ
echo http://etree.org ú Leading the Lossless Audio Revolution
echo ÿ
echo ÿ
lfnfor on
choice /c:CDEFGHIJKLMNOPQRSTUVWXYZA /N Select a drive letter to compress to:ÿ

if errorlevel 25 goto end
if errorlevel 24 goto z
if errorlevel 23 goto y
if errorlevel 22 goto x
if errorlevel 21 goto w
if errorlevel 20 goto v
if errorlevel 19 goto u
if errorlevel 18 goto t
if errorlevel 17 goto s
if errorlevel 16 goto r
if errorlevel 15 goto q
if errorlevel 14 goto p
if errorlevel 13 goto o
if errorlevel 12 goto n
if errorlevel 11 goto m
if errorlevel 10 goto l
if errorlevel 9 goto k
if errorlevel 8 goto j
if errorlevel 7 goto i
if errorlevel 6 goto h
if errorlevel 5 goto g
if errorlevel 4 goto f
if errorlevel 3 goto e
if errorlevel 2 goto d
if errorlevel 1 goto c


:C
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "c:\%%f.shn"
@echo off
goto end

:D
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "d:\%%f.shn"
@echo off
goto end

:E
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "e:\%%f.shn"
@echo off
goto end

:F
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "f:\%%f.shn"
@echo off
goto end

:G
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "g:\%%f.shn"
@echo off
goto end

:H
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "h:\%%f.shn"
@echo off
goto end

:I
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "i:\%%f.shn"
@echo off
goto end

:J
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "j:\%%f.shn"
@echo off
goto end

:K
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "k:\%%f.shn"
@echo off
goto end

:L
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "l:\%%f.shn"
@echo off
goto end

:M
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "m:\%%f.shn"
@echo off
goto end

:N
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "n:\%%f.shn"
@echo off
goto end

:O
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "o:\%%f.shn"
@echo off
goto end

:P
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "p:\%%f.shn"
@echo off
goto end

:Q
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "q:\%%f.shn"
@echo off
goto end

:R
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "r:\%%f.shn"
@echo off
goto end

:S
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "s:\%%f.shn"
@echo off
goto end

:T
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "t:\%%f.shn"
@echo off
goto end

:U
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "u:\%%f.shn"
@echo off
goto end

:V
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "v:\%%f.shn"
@echo off
goto end

:W
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "w:\%%f.shn"
@echo off
goto end

:X
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "x:\%%f.shn"
@echo off
goto end

:Y
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "y:\%%f.shn"
@echo off
goto end

:Z
@echo on
FOR "%%f" in (*.wav) DO shortn32 "%%f" "z:\%%f.shn"
@echo off
goto end

:end
echo ÿ
echo Compression complete!
echo ÿ
lfnfor off

decompress.bat
@echo off
cls
echo SHN to WAV batch decompression utility for Windows 95/98
echo Written by Terrapin ú Updated for SHN v3 by Mike Wren
echo ÿ
echo http://etree.org ú Leading the Lossless Audio Revolution!
echo ÿ
echo ÿ
lfnfor on
choice /c:CDEFGHIJKLMNOPQRSTUVWXYZA /N Select a drive letter to decompress to:ÿ

if errorlevel 25 goto end
if errorlevel 24 goto z
if errorlevel 23 goto y
if errorlevel 22 goto x
if errorlevel 21 goto w
if errorlevel 20 goto v
if errorlevel 19 goto u
if errorlevel 18 goto t
if errorlevel 17 goto s
if errorlevel 16 goto r
if errorlevel 15 goto q
if errorlevel 14 goto p
if errorlevel 13 goto o
if errorlevel 12 goto n
if errorlevel 11 goto m
if errorlevel 10 goto l
if errorlevel 9 goto k
if errorlevel 8 goto j
if errorlevel 7 goto i
if errorlevel 6 goto h
if errorlevel 5 goto g
if errorlevel 4 goto f
if errorlevel 3 goto e
if errorlevel 2 goto d
if errorlevel 1 goto c

:C
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "C:\%%f.wav"
@echo off
goto end

:D
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "D:\%%f.wav"
@echo off
goto end

:E
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "E:\%%f.wav"
@echo off
goto end

:F
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "F:\%%f.wav"
@echo off
goto end

:G
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "G:\%%f.wav"
@echo off
goto end

:H
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "H:\%%f.wav"
@echo off
goto end

:I
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "I:\%%f.wav"
@echo off
goto end

:J
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "J:\%%f.wav"
@echo off
goto end

:K
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "K:\%%f.wav"
@echo off
goto end

:L
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "L:\%%f.wav"
@echo off
goto end

:M
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "M:\%%f.wav"
@echo off
goto end

:N
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "N:\%%f.wav"
@echo off
goto end

:O
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "O:\%%f.wav"
@echo off
goto end

:P
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "P:\%%f.wav"
@echo off
goto end

:Q
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "Q:\%%f.wav"
@echo off
goto end

:R
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "R:\%%f.wav"
@echo off
goto end

:S
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "S:\%%f.wav"
@echo off
goto end

:T
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "T:\%%f.wav"
@echo off
goto end

:U
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "U:\%%f.wav"
@echo off
goto end

:V
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "V:\%%f.wav"
@echo off
goto end

:W
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "W:\%%f.wav"
@echo off
goto end

:X
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "X:\%%f.wav"
@echo off
goto end

:Y
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "Y:\%%f.wav"
@echo off
goto end

:Z
@echo on
FOR "%%f" in (*.shn) DO shortn32 -x "%%f" "Z:\%%f.wav"
@echo off
goto end

:end
echo ÿ
echo Decompression complete - Enjoy the music!
echo ÿ
lfnfor off
makeskt.bat
@echo off
cls
echo Seeking Shorten batch creation utility for Windows 95/98
echo Written for SHN v3 by Mike Wren
echo ÿ
echo http://etree.org ú Leading the Lossless Audio Revolution
echo ÿ
echo ÿ
echo Working...
echo ÿ
lfnfor on

FOR "%%f" in (*.shn) DO shortn32 -s "%%f" "%%f.shn"
goto end

:end
echo ÿ
echo Seek (.skt) files successfully created and saved
echo in the same directory as your Shorten files.
echo ÿ
lfnfor off

makeskt2k.bat
@echo off
cls
echo Seeking Shorten batch creation utility for Windows 2K/XP
echo Written for SHN v3 by Mike Wren
echo Updated for Win2K/XP By Rich Denis
echo ÿ
echo http://etree.org ú Leading the Lossless Audio Revolution
echo ÿ
echo ÿ
echo Working...
echo ÿ


FOR %%f in (*.shn) DO shortn32 -s %%f %%f
goto end

:end
echo ÿ
echo Seek (.skt) files successfully created and saved
echo in the same directory as your Shorten files.
echo ÿ

Five
2020-02-19, 09:16 PM
legacy software Etree Menu, last updated 2001-02-24
Ed's Page

Eddie Burks
Current project: "batch" programming for SHN/MD5 Menu association in Win9X and once again NT 4.0

Ebshn is now EtreeMenu

It also now has a completely automatic installer
Free software: get Etreemenu now karma-ware
Easy menus for making SHN's and MD signatures
Icons for SHN and MD files, Your SHN's will seek in SHNAMP
Makes seek tables for older SHN's, uses Shortn32.exe v3.1
Current installer EtreeMenu212c.exe has 2 level user input
Enjoy! Eddie Burks GOT MOOK?

download ~750K EtreeMenu save as .EXE

second site

update history -- screenshot

Juno bans exe files so I spelled EXE, ZIP; The mirror sometimes has odd performance. Whatever site you use, SAVE the file as EtreeMenu.EXE
User input batch file has been rewritten to work with Win9X and NT 4.0. There is now an install option for 9X or NT4.0 since different files are needed.

someone please test 9X & NT install option in Win ME, Uninstall between tries
There is NO Win2K support

Features:

Network drives (that are mapped to a drive letter) may be
used. A new feature lets you supply drive and folder names.

right click to:

create .skt (seek) files for all SHN's in a folder
compress all waves in folder (you specify destination)
uncompress all shn's in folder (you specify destination)
compress 1 wave destination is the same folder
uncompress 1 shn destination is the same folder
check ALL MD5's in folder
check 1 selected MD5
create md5 for waves
create md5 for shns
Play a Wave in Winamp (Winamp must be installed)
Play SHN's in Winamp (Winamp must be installed with
the SHNAMP Plugin)

NO redundant file extensions (trackname.shn.wav.shn.wav)

Fully uninstallable via the control panel at any time
(All etreemenu items will be removed from Context Menus)

---------------------------------------------------------------

EtreeMenu Requires: access to c:\
(for temp files and installation to C:\Program Files)

---------------------

Correct EtreeMenu implementation of SHNAMP requires:

1) Select Custom Setup Type during EtreeMenu install
and check "Winamp Menu"

2) Winamp (http://www.winamp.com) is installed in C:\Program Files\Winamp

3) SHNAMP plugin is installed
See http://www.etree.org/shnamp.html

4) Configure Winamp's preferences so that SHN and WAV
are NOT SELECTED in Winamp file types. Winamp will
steal control of the Wave and SHN file associations
if you get this wrong and you will not get EtreeMenus.

Configuring Winamp's preferences:
Open Winamp. Open preferences [Ctrl P] look at file types.
On my Winamp file types, selected items are shaded in BLUE.
SHN and WAV should NOT BE SHADED IN BLUE.

Links

The Official Shnamp Page

Exact Audio Copy -EAC- (http://www.exactaudiocopy.de)

CDWave (http://www.milosoftware.com/cdwave/) Wave Splitter/Recorder
While doing DAT>HD CDWave does not thrash on your Harddrive like SoundForge

How to EXACTLY verify proper EAC extraction using EtreeMenu

CoolEdit 96 2Mb direct download (c)1992-1996 Syntrillium Software shareware wave editor

CoolEdit 96/2000/Pro emphasis/de-emphasis Filter by Eddie Burks cool.ini zipped

This will allow you to fix music that was digitally cloned with the emphasis bit improperly flagged. This has occurred with some old PCM transfers and with some DAT to DAT transfers (some SCMS strippers and AES/EBU to SPDIF converters could have caused this.

Winamp (http://www.winamp.com)

Adam Fox' Shorten Guide (http://rimeswel.tripod.com/shnguide.html)

The Official Shnamp Page

Greg & Diana Hamilton's Shorten and md5sum FAQ (http://alumni.umbc.edu/~hamilton/shnfaq.html).

CLEAN UP!
So, you have installed Etreebeta043, Winamp plugins, Ebshnbetas, 3 different mp3 decoders and a half dozen other programs that all gave you additional stuff in context menus. This put invisible clutter in your registry and visible clutter in your menus. The etreebeta uninstaller does not remove it's registry entries.

NOW
EtreeMenu has a nice automatic installer and a nice automatic uninstaller too. This uninstaller will remove
all EtreeMenu associations. To restore things to original state though you should uninstall and reinstall the Windows Sound Recorder so that any old stuff in your wave menu will be cleaned out. Then you can reinstall whatever you have found that works for you and have a nice clean setup.

[image missing]

This page was last updated on: February 24, 2001

[Createyourownwebsiteathome.juno.com!]

update.txt
update history

EtreeMenu212c.exe compiled 2/12/2001

Added 2nd level of folders for user input
you may now direct files to a drive a folder
AND a subfolder ie c:\thisistheplace\disc1

EtreeMenu212.exe compiled 2/08/2001

New input routines using senvar.com for 9X and
qbasic for NT4.0. This install contains a
selectable WIN9x or NT4.0 install. This version
does not support Win2K (might work with Win ME)


EtreeMenu210.exe compiled 2/5/2001

Fixed bug that caused most Win98 installs to fail
to work (user input feature problem) Rewrote input.
Added make SKT files for older SHN's. This program is
still NOT certified for NT, ME, and 2K, it will probably
work for them if the executable and com files are
on the default path. If the input senvar.com is not
compatible the batch files could be changed to omit the
input script.


EtreeMenu123.exe compiled 8/25/2000 and 1/23/2001

Renamed, revamped, new InstallShield Installer/Uninstaller
user input drive and folder destination for extracted file
Shorten v3.1 (seekable) engine SHNAMP compatible
32bit win9x console based; only tested for Win95 Win98

ebshn_bXXX.exe md5 and shorten for WIN9X NT4.0

b725.1 7/25/00

Removed default shn/md5 additions to winamp; made them options

b725 7/25/00

Added Menu_set folder with info for setting up the following:

all menus on machines with Winamp (and the SHN plugin) installed
all menus on machines without Winamp (my standard install)
Just the menus for MD5 on wave files only (for EAC verification)

b721 7/21/00

OOPS... sorry, even though the programming works fine in NT.40, I was
distributing the program in an NT incompatible archive.
New SFX archive format is Windows based and fully NT4.0 ready

Slight icon changes, credits for icons to Jeremy Clark

Some cosmetic changes to batch files


b717 7/17/00

New icon added for MD5 this has the big check mark

Revised some documentation and batch file text comments

Added info about installing over etreesetup0_43b

Finished Documenting SHNCD setup (in the eb-tree\shncd folder)
This shows you how to make autoextract SHN CDS's for newbys


b715 7/15/00

a slightly different md5icon
(but no larger lettering or big check yet :-) :-) :-)

added the edit function to md5file menu

set all etree related files to always show extension


b714 7/14/00

this archive should have all the expected syntax for NT4.0
it would still be best to delete lfnfor on and lfnfor off
from NT batch files as this is not needed or supported in NT4.0
(they ARE required for WIN9X)

an md5file icon was added
I would still like to see larger lettering for this icon
and/or a big checkmark very visible over the disc

(anything to make it more recognizable if viewing files as
small icons)
eacmd5.txt [not accurate]
right click to perform the following on extracted wave file folders

To assure perfect extraction with EAC you extract all files
twice into separate folders , create an MD signature for 1 set.
Move this MD5 file to the other folder of extracted files and check
MD5 (compare 2nd set of files to the 1st set). If all files verify
you are assured to have a perfect EAC extraction. Files that fail
should be extracted again; if you can change the extract conditions
for the failed files this may help.
coolini.txt
Cut and paste the stuff from this cool.ini file to get my filter

You may have to finesse this into your cool.ini (in Windows folder)
by changing the [Filters96] heading to match your version

First I would just paste the whole section in as is and
see what happens; backup your existing cool.ini

Eddie Burks
cool.ini

; add the section below to your cool.ini file in Windows folder
; you may have to change [Filters96] to match your version
; the filters I made are the last 2

[Filters96]
Item1=Treble Boost,3,7,0,50,9305,49,10441,53,11577,64,12599,71,13885,75,16384,76,2,0,50,16384,50,2,0,800,1,2,0,0, 1000,100,3,0,100,-15,15,1600,1,0,1
Item2=Morph low to high,3,9,0,50,1322,51,2106,59,2831,70,3744,70,4424,63,5093,54,6617,49,16384,50,7,0,50,2831,50,6959,5 2,9721,56,10895,67,12031,72,16384,73,2,1,400,0,4,0,0,648,31,831,57,1000,100,3,0,100,-15,15,1600,2,1,1
Item3=Super-High End Boost,3,9,0,50,13280,50,13999,53,14377,59,14836,70,15205,80,15484,84,15887,85,16384,85,9,0,26,0,25,0 ,27,278,34,527,46,958,56,1563,67,2693,72,16384,73,2,1,400,1,4,0,0,648,31,831,57,1000,100,3,0,100,-20,20,1600,2,1,1
Item4=Low Pass 5512 Hz,3,4,0,100,4095,100,4096,0,16384,0,4,0,100,8192,100,8193,0,16384,0,1,1,400,1,4,0,0,648,31,831,57,1 000,100,3,0,100,-20,20,1600,2,1,0
Item5=Ringing A's,3,30,0,0,3628,0,3629,100,4059,100,4060,0,5382,0,5382,100,5585,100,5585,0,7073,0,7073,100,7182,10 0,7182,0,8741,0,8741,100,8795,100,8795,0,10381,0,10382,100,10435,100,10436,0,12033,0,12034,100,12060 ,100,12061,0,13671,0,13672,100,13698,100,13699,0,16384,0,9,0,26,0,25,0,27,0,34,278,46,752,56,1405,67 ,2596,72,16384,73,1,1,1024,1,4,0,0,648,31,831,57,1000,100,3,0,100,-18,18,4096,2,1,1
Item6=Low Pass 11025 Hz,3,4,0,100,8192,100,8193,0,16384,0,4,0,100,8192,100,8193,0,16384,0,1,1,400,1,4,0,0,648,31,831,57,1 000,100,3,0,100,-20,20,1600,2,1,0
Item7=Low Pass 4000 Hz,3,4,0,100,2972,100,2973,0,16384,0,4,0,100,8192,100,8193,0,16384,0,1,1,400,1,4,0,0,648,31,831,57,1 000,100,3,0,100,-20,20,1600,2,1,0
Item8=Sub-Woofer Boost,3,11,0,50,642,51,1236,60,1563,73,2044,81,2596,85,3349,87,3774,79,4029,60,4599,51,16384,50,11,0 ,50,143,50,527,58,958,77,1322,94,1711,94,2106,88,2336,64,2547,53,3003,50,16384,50,2,1,1024,1,4,0,0,6 48,31,831,57,1000,100,3,0,100,-20,20,4096,2,1,1
Item9=Telephone Bandpass,3,6,0,0,4424,0,4740,100,11964,100,12100,0,16384,0,6,0,100,1981,100,1981,0,2740,0,2740,100,1 6384,100,1,0,1024,1,2,0,0,1000,100,3,0,100,-15,15,2048,1,0,1
Item10=Treble Reduce,3,7,0,50,9837,50,11010,48,11994,43,12751,35,13432,31,16384,31,7,0,50,12233,50,14359,52,15149, 56,15418,67,15653,72,16384,73,2,1,256,1,4,0,0,648,31,831,57,1000,100,3,0,100,-15,15,1024,2,1,1
Item11=Loudness,3,19,0,50,1054,50,1485,58,1916,71,2547,76,3201,77,3804,73,4185,65,4556,57,5557,52,65 44,50,13279,50,13998,53,14376,59,14755,66,15172,71,15563,75,15966,76,16384,76,9,0,26,0,25,0,27,143,3 4,406,46,857,56,1485,67,2645,72,16384,73,2,1,512,1,4,0,0,648,31,831,57,1000,100,3,0,100,-18,18,2048,2,1,1
Item12=Bass Boost,3,11,0,50,527,51,1711,56,2336,67,2918,77,3619,78,4259,76,4915,68,5515,57,6765,50,16384,50,11,0 ,50,527,51,1147,60,1485,73,1981,81,2547,85,3313,87,3744,79,4002,60,4578,51,16384,50,2,1,1024,1,4,0,0 ,648,31,831,57,1000,100,3,0,100,-15,15,4096,2,1,1
Item13=Bass Cut,3,11,0,50,567,43,1286,36,2043,31,2875,27,3594,25,4389,29,5032,39,5751,48,6765,50,16384,50,11,0,5 0,527,51,1147,60,1485,73,1981,81,2547,85,3313,87,3744,79,4002,60,4578,51,16384,50,2,1,1024,1,4,0,0,6 48,31,831,57,1000,100,3,0,100,-15,15,4096,2,1,1
Item14=60Hz Notch,3,6,0,100,2215,100,2216,0,2611,0,2612,100,16384,100,6,0,100,2215,100,2216,0,2611,0,2612,100,16 384,100,1,0,12000,1,2,0,0,1000,100,2,0,100,-15,15,24000,1,0,1
Item15=50Hz Notch,3,6,0,100,1742,100,1743,0,2216,0,2217,100,16384,100,6,0,100,1742,100,1743,0,2216,0,2217,100,16 384,100,1,0,12000,1,2,0,0,1000,100,2,0,100,-15,15,24000,1,0,1
Item16=60Hz + 120Hz Notch,3,10,0,100,2215,100,2216,0,2611,0,2612,100,3960,100,3961,0,4157,0,4158,100,16384,100,10,0,100, 2215,100,2216,0,2611,0,2612,100,3960,100,3961,0,4157,0,4158,100,16384,100,1,0,12000,1,2,0,0,1000,100 ,2,0,100,-15,15,24000,1,0,1
Item17=50Hz + 100Hz Notch,3,10,0,100,1742,100,1743,0,2216,0,2217,100,3507,100,3508,0,3744,0,3745,100,16384,100,10,0,100, 1742,100,1743,0,2216,0,2217,100,3507,100,3508,0,3744,0,3745,100,16384,100,1,0,12000,1,2,0,0,1000,100 ,2,0,100,-15,15,24000,1,0,1
Item18=de-emphasis (dat),3,21,0,50,3587,50,8429,51,8886,51,9150,52,10707,57,11653,62,12392,68,12919,73,13310,77,13697,8 1,14015,84,14269,86,14522,88,15468,94,15624,95,15770,96,15907,97,16037,97,16166,98,16384,98,2,0,50,1 6384,50,2,0,6400,1,2,0,0,1000,100,3,0,100,10,-10,12800,1,0,1
Item19=emphasis (dat),3,21,0,50,3587,50,8429,51,8886,51,9150,52,10707,57,11653,62,12392,68,12919,73,13310,77,13697,8 1,14015,84,14269,86,14522,88,15468,94,15624,95,15770,96,15907,97,16037,97,16166,98,16384,98,2,0,50,1 6384,50,2,0,6400,1,2,0,0,1000,100,3,0,100,-10,10,12800,1,0,1

untitled.txt
If you really like and use EtreeMenu and you are in the
shrinking number of persons who CAN, please consider
giving blood... frequently. Many people can no longer
give blood due to the hepatitis epidemic in the USA.
And as Phil Lesh also asks... consider signing an
organ donor card and discuss it with your family.

Five
2020-02-19, 10:30 PM
legacy software shnclick windows right-click context menu frontend for shntool, last update circa 2003-07-28

it came from Canada

shnclick

shnclick is a windows right-click context menu frontend for shntool. It is solely intended to provide quick access to common shntool tasks like checking and fixing sector boundaries on shorten files or stripping excess header info before seeding.

It enables a user to avoid the command line interface, and access basic shntool functionality from within the windows explorer shell by right-clicking one of a set of shorten files.

More advanced useage will require using the command line.

There's a picture here.

Requirements

shnclick works with 98 and 2000, and now even XP.
shnclick requires mkwACT to be installed prior to loading shnclick. You can find mkwACT here.

Installation

shnclick comes as a windows executable install routine, and strives to avoid clobbering existing file associations.
The uninstall routine is registered in the windows control panel "Add and Remove Software" section.

shnclick will install the following dependant software into your system directory:

shntool 1.2.2
shorten 3.5.1
cygwin.dll

Where's it at?

Right here:

Version 0.0.4 shnclick-0.0.4.exe 505KB shn files only
Version 0.0.4-wav shnclick-0.0.4-wav.exe 505KB with wav file support

Please send feedback to bobby at geewow dot net.

Five
2020-02-19, 10:41 PM
ctree.org, circa 2002-06-04

CDRs used to be this important...
bobby geeWOW's CDR Rant..

This is basically a general overview of CDR technology culled from a buncha sources. Its intended to pull together all the divergent bits of info out there and kind of put things into context for joe non-computer-professional lotus-eating shorten trader.

While I do of course degenerate into offering my own deluded opinions here and there, I urge you bear in mind that I know nothing and claim no expertise in anything whatsoever - except for some propensity towards maximising sheer wonder and enjoyment in the beauty this great country of ours is blessed with.

So set yer bullshit filters to fine grained and kick back if yer gunna read it, 'cause this got WAY longer than I thought:

Episode 1 Is a general introduction to CDR technology.
Episode 2 Gets into the technology in a little more depth in order to address some of my ludicrous claims.
Episode 3 Here come things like the Plextor/Mitsui fetish.
Episode 4 Deals with software. Yowtch, get yer flame retardent ready..

If you have any comments/questions/open redicule to offer, please direct them to me or the list.


Episode 1: Myths and Facts in CDR burning.

First off the accelerated age testing that supported the industry's claim of 100 year CDR life spans turned out to be rediculous in the real world. And remember when they hyped us with the "you can scratch the bejeesus out of a CD and still play it so forget about albums" spiel?

Basically when you burn a disk the laser discolours the dyes on the disk in such a fashion that the data on them will be recognized and read for playback. Turns out that light and heat over the life of a disk will continue to change the state of these dyes until they eventually, and inevitably, become unreadable. I have a large batch of 3 year old audio disks burned to cheapo CDR's that are starting to just fail to play back audio at all - sitting happily ensconced in the darkness of binders at room temperature. Then hold a disk that's just been whizzing around for a while in your computer's CDOM drive between the palm of your hands...

So there are two basic types of disks:

Cyanine dye (type 0 and type 1) or Azo disks use a `long write' strategy type: low laser power for long periods of time. Typically blue in color.

Phtalocyanine dye use a `short write' strategy type: high laser power for a short time. This corresponds to the increasing speed at which modern burners operate. Typically light greeny/goldish in color.

By the way, Verbatim has the patent on Azo, Mitsui on Phtalocyanine, and Tayo Yuden has Cyanine (also the first CDR's made and the basis of the "Orange Book" specifications).

There are also key differences in what happens when yer burning the disks: Cyanine dyes, the original, do a phase change which discolours the burned parts that a reader then decodes into the ones and zeros that make up digital audio or data. I urge the gentle reader to think about this and picture just how "permanent" such a disk will be.

When Phtalocyanine disks are burned, a lower layer oozes up and hardens, actually imitating the pits of a real silver factory pressed disk. As you can imagine, these disks will be more robust and tolerant to environmental changes, as well as give the reading laser a little more to bite on.

On to the chaos:

Bear in mind there are a lot of factors involved when performing a burn - ambient temperature, temperature in the burner, type of dye on the disk, write strategy, humidity (go ahead and laugh..), speed of rotation, etc.

Also throw in such physical factors as groove width (which is different for factory audio disks and CDR specs) and the literally microscopic accuracy of the manufacturing necessary to make a good consistent disk. Utter flatness and resistance to warping (unlike what we strive for in our lives) are needed. As a side note, some CDR manufacturers are replacing their stamper dyes (molds) almost every 4-6 months to keep up with the changing dye formulations.

So even a good old Tayo Yuden Cyanine CDR is not the same disk it was two years ago.

Oh yeah:

I strongly encourage you next time yer bored, to grab some coaster you made and break it. Go ahead, its good fun - it blows up with surprising force. *DO NOT LOOK!* - in fact close your eyes while you break it. Point it at a corner of the room or the pieces'll be all over the place.

Then find some shard that's scattered about and check it out. You'll find the actual micro-thin burning surface is in fact glued to the TOP of the disk, and the plastic underneath makes this surface flat, like pressing your face against a window. Sometimes there is writable paint on top of the reflective coat, obscuring but not protecting it.

From this you'll see just how obviously the most delicate part of a disk is actually the TOP of the disk, and you'll see how incredibly easy it is to instantly and permanently destroy a disk by scratching this layer. You will need to find a shard with a frayed bit of reflective layer to really see what I mean here.

Kodak Ultimas, Mitsuis, cdrecordable disks all have a protective coating on top for this. cdrecordable has confirmed they license their dyes from Mitsui by the way, so they have a firm stake as one of the cheapest sources of quality CDR's on the net.


Episode 2: The Depths and Depravity in Burning Plastic

Here's where it gets weird:

The pits in a factory pressed CD vary in length to denote information. Fine. But the length is *relative to time* - in other words to the rate of spin on the disk. This is bizzarre since they must remain readable within very tight (microscopic!) specs. Consequently we have long and short write strategy types to compensate for this, and associated media to make it all happen. Its chaos and deeply weird, but it works.

The whole idea is to imitate these microscopic varying-length pits made by CD presses as per Phillips's patent. Not a trivial undertaking when using a laser to burn dyes embedded in plastic travelling at high speeds - especially considering the margin for error and this wacky relative pit length scenario..


However, read on:

When actually creating a pit of a particular length, everything varies with the whim of the tree spirits. A certain setting on a laser of a certain strength that produces a certain length pit on one disk at such a spin rate will not necessarily produce the same length pit when a different dye is used, or the ambient temperature goes up, or the sun peeks out from behind the clouds in Tuktayuktuk for that matter...

Nothing is linear here either, and doubling the setting for a 3T pit does not produce a pit twice as long. Its insanely finnicky stuff to get right. Additionally, your burner is optimized for certain dye types and write strategies, which are themselves in a continuous state of flux.

Then of course the reader has to interpret these pits exactly in order to accurately reproduce the data contained within. Enter the mayhem of accurate ripping and the birth of such tools as EAC and cdparanoia to combat all this ambiguity, essentially by re-reading the data until its satisfied it statistically speaking has the correct bits...this is not trivial either, as is evidenced by some cheap readers not even being able to maintain a consistent offset, literally making it impossible to get accurate audio rips.

Another factor here is the relative reflectivity of the dyes used. If its brighter it requires more laser or more time to make a good impression, and still has to be read by the stereo CD player, which of course is built to read a certain relectivity at different specs than those called for in CDR technology.

So its entirely possible that your Phytloyanine disk burned with a long write strategy on your old burner with the weaker laser won't be playable on your stereo, but might be fine if burned at a slower speed on a full moon in May over a fine pint of Guinness.

As a side note, the various CDR identifiers out there of course can't actually tell what the dye on the disk is - only what the stamper that made the disk is designed to produce, and consequently enter into the pregroove's ATIP info.

That may well change with the new specs. The good news is that you can be sure that if it says Cyanine, it is Cyanine, since the differences between dyes is so pronounced that a you can't use a Phyalocyanine stamper to make a Cyanine disk (or visa versa). However, a stamper made for Cyanine type 1 might well be used to make a type 0 disk, or use a reformulation of the originally intended dye.


Episode 3: Gearhead Love

So what colour disk should I get for my burner then?

As you can see, there are no hard and fast answers to this. "Whatever works for you" is good advice. Older burners tend to be designed for a Cyanine long write strategy, and newer ones for Phytlocyanine short write strategies.

Or go with the highend manufacturers that are consistently on the cutting edge of this rapidly developing technology and have always out-performed mandatory specifications, like the famous Plextor/Mitsui combo.



Aw christ, why Plextor?

Basically they have been at the forefront of CDR technology since the beginning. Their drives are of universally high quality, and tend to not only define, but exceed standards imposed on CDR(OM) drives. It is not uncommon to have Plextors burning thousends upon thousends of disks correctly and without a complaint. Their ripping accuracy is similiarly without peer. They actually design their CDROM's with accurate audio extraction in mind.

Now immediately after saying this, you should know that shawn has burned thousends of disks spread over many years with a crappy old P133 laptop and an external USB 4x HP burner, about the most nightmarish setup going, so go figure. Mind you, the ol' beast refuses to extract audio accurately, so its a good thing he archives his shns.

Here's the scoop on what Plextor's up to right now. They invented BurnProof technology to prevent coasters caused by buffer underruns. Works beautifully. Essentially if your buffer runs out of data because you've got seventeen other apps open at the same time, (Plextors have nice big buffers too) then the laser stops at an ECC or header spot away from the data part of the disk and hangs out until it can continue burning. I can actually burn data images directly from drives located across a 100Mbit network connection using CDRDAO with BurnProof turned on as long as I don't bog down the network by streaming the latest shn seed from the server across the house at the same time..

Next up from Plextor:

PowerRec II - supposed to be a couple years off, but according to a Plextor beta tester *cough!*, they already have drives that can recognize the media type and calibrate themselves with respect to write speed, write strategy, and laser strength, integrated with BurnProof in order to provide the ideal burn. Other manufacturers like Yamaha are also working on this logical next step.

But THEN we have OPC. Get this..

What happens here is that the burner monitors the reflected light coming back from the disk as the burned pits form, comitting a signature to memory. As the burn progresses, the Plextors will monitor the new marks as they are created, and actually modify the burnspeed *on the fly!* to maintain the optimum burn. No kidding. The technology has to mature for a while before going public, but our friendly brotha at Plextor claims to be playing with pre-alpha firmware that already works. It could be that all you gotta do is upgrade yer current Plextor's firmware to get in on this good stuff when its ready..



So what's with the Mitsui trip then?

Mitsui directly controls every aspect of their production process. They do not outsource any part of the manufacturing process, technology, or even raw materials(!). Their quality control is second to none, and one of the key trips is to make CDR's as flat as possible to enable stability at high RPM's. That's kind of the main deal with 24x and now the Plextor-only 40x certification. Its also crucial for longevity, since a disk that is easily warped will also become unreadable very quickly.

The gold disks come with a lifetime guarantee. In all the industry testing for Orange Book compliance (involving block error rate (BER) tests on abused disks, Mitsui's consistently outperform the specs, in particular the light exposure tests. (CDR masters going in for mass production are made to Red Book specs by the way.) They also coat their disks with a protective layer to guard against scratching, including the top side of the disk.

They also own the patent on Phytlocyanine dye, which as I explained earlier is far superior to Cyanine/Azo dyes.

That said, they are the pinnacle of CDR's. They gained their reputation in the early stages and have held true. They now license their dyes to people like Kodak and cdrecordable, who make excellent disks themselves.

Update:

Unfortunately Kodak has now sold off their CDR assets, including Matsushita Manufacturing LLC of America at the end of last year. They made good stuff, get 'em while you can.


Episode 4: Let's take 'er for a spin then!


...and wrecklessly forge on to the software side of things..

When you are ripping audio disks, use EAC for windows or cdparanoia for *nix. Mac users have Trackthief. This software knows all about CDROM offsets, CDR sector boundaries, and so on. You will have to tell it manually what your drive's offset is. The resultant wavs will be as bit accurate as possible, and when burned back to disk will yield non-skipping, non-popping audio CD's if everything else is right.

Anything else will result in inaccurate rips, and you will be corrupting the community's gene pool, bringing disease and pestilence on the land. You can easily check your ripping by making an md5sum of some wavs, burning them to audio, then ripping them back to wav and checking the md5sum you made for the originals. If they fail you need to get your ripping trip together pronto or live with your own karma...or archive your shns!

EAC/cdparanoia will also tell you a little about your reader, because they require setting and checking your CDROM's offset and will give you a log file of the ripping process to let you know how many potential corrupted bits are in your wav files.

Of course shn files completely eliminate all the ripping ambiguity. Shn disks are burned as data CD's, and file integrity can be verified with an included md5sum, ensuring precise clones of the original master tapes. Places like etree.org archive the md5sums from the original seeds of shows, so you can check the lineage of your sources directly.

It might be worth archiving your shn files and burning audio disks as needed to throw in the truck, give to friends, etc. This way you maintain a perfect clone of the source recording for future audio burns, your next trade - and future generations if yer thinking of propagating the species with that special someone in yer life on a groovy afternoon on a sunny hillside..



Burning. Ouch. I must be out of my mind to even go here. Passions run high with this one, so please review the opening disclaimer before proceeding. There are lots of considerations to take into account here, including the robustness of the burning engine itself, supported drives, the ability to create bit-accurate data copies, conformity to standards and so on.

If you actually read all this drivel so far, you probably appreciate that the process of interfacing with the burning device to provide an accurate, steady bitstream to be burned into a disk is not quite so trivial as might appear. And I haven't even touched on file systems, sectors, EEC headers, zones, and all that dry technical grind that define the exact format of a CDR. Yech, don't ask.

For our purposes, the number one factor is the ability to burn in Disk-At-Once (DAO) mode. Anything else and yer playing with fire - especially that abomination called DirectCD that used to be bundled with burners. It uses a packet writing technique, and is to be treated as the very incarnation of evil itself and purged from your system accordingly. I'm serious, I've seen 70+ packet written CD's suddenly simply stop working all at once, representing a devastating loss of data to a friend of mine. He now believes in my DAO fetish.

Speaking of DAO, I'd say that any software that supports it (and you can dig out the place to make that your default setting) will do fine. If you're wondering, the absolute cadillac of burning apps for windows types is CDRWin. Rumoured to be based on opensource unix code, it makes good bit-accurate rips of data CD's into a format called bin/cue, and is very good at burning data reliably, bit by bit, onto a CD. All CD's rigorously conform to standards, with no convienience kludges to make it work. It supports BurnProof, raw read/writing, and ONLY does DAO writing. It doesn't even know what TAO, packet writing, or any of those other hokey methods are.

Unix users have CDRDAO for all that stuff. Needless to say it works perfectly out of the box, including BurnProof support, leaving them once again to wonder why people would even use an inferior OS. (Then casually engage them in a linux vs. BSD debate and watch the sparks fly..)

If you've been using Nero for audio:

PLEASE check out the integrity of your audio disks! A bug has been discovered wherein Nero consistently *loses frames of audio*, and writes corrupt tunes to disk! Ahead software has confirmed this, and pomises a fix sometime. This really hoses Nero users who burn audio disks and didn't archive their shns. One can only wonder how many shows out there have been affected by this rediculous bug. The original report is gone, but have a search of google to get an idea.

You can check your disks with md5sum as I described above, and shntool will give you sector boundarys and lenths of the wavs.



One sneaky little issue that has caused immense headaches for people is the cursed ASPI layer. This is a standard device interface layer that is owned by Adaptec. Huh? You heard me, a standard that is proprietrary. Sort of like the Cisco/VRRP debacle, but that's a different trip all together. The ASPI layer basically makes an ATAPI (IDE) device look like a SCSI device to the burning util in question. Only Adaptec products (like EZCD) are allowed to ship with an ASPI layer.

This causes mayhem in itself, with differing versions and other manufacturers making their own ASPI knockoffs. Adaptec has gone so far now as to make their installers check if you have an Adaptec product (hardware or software) installed before it will throw the thing in there. You must load an ASPI layer to burn disks if your app doesn't bring its own, which CDRWin now does.

As an aside, I hear some dilligent freedom hackers have modified this installer to load the ASPI layer regardless of such Adaptec created environmental concerns and released it on the 'net for public download. This will also install ASPI layers onto XP machines, which have their own issues regarding burning with their "integrated" burning facility junk. I also gather that you can goto your "Control Panel - Add/Remove Hardware" and pretend to install an Adaptec SCSI card to fool the official Adaptec ASPI installer.

Update: Adaptec received so much flak for this move that they have relented, and released the latest ASPI installer to load on non-Adaptec endowed PC's and it supports XP too.



So what can we conclude with all this? Its a crazy, fast-changing, dynamic little corner of technology, that's for sure. Are there any guaranteed solutions? No. But it does go some way towards explaining the rabid brand conciousness some people exhibit when confronted with this debate. You will have to experiment, try this and that, until you have a dependably working combination of ingredients.

I would say though, if you go Plextor+Mitsui+CDRWin and have a reasonably fast hard drive, you can't go wrong - and based on my experience, will never regret the reliable, consistent burns you will achieve for years to come. You will also have the comfort of knowing that people you trade with won't groan when they open their package to find badly burned cheapo CDR's that pop and click, wrecking their eagerly awaited can't-miss jam of the year.



Instead they'll throw the new disks on, crank it up, and invitingly start to slink about the kitchen in a suggestive manner as the groove begins to move their bones and everything erupts in titanic sexy mayhem, encouraging everyone to get on up, feel free, and groove!

dasmueller
2020-02-19, 11:44 PM
I'm baffled w all this, why ?

Five
2020-02-20, 12:30 AM
in the early days we were philosophers and were chasing hot new software. the last hot new software was Trader's Little Helper 15yrs ago, and that's a shntool frontend which is about 5yrs older than that.

I'll come up with something long-winded, but for now let's just say that I'm really really into history at this point. especially ttd, etree, stg. finishing some things we started in those exciting days. :cool:

Five
2020-02-20, 01:02 AM
People for a clearer Phish, 1999-11-28
How to get the most out of Shorten and MD5
These instructions courtesy of Jeremy Clark. Thanks, Jeremy!

Create a folder on your C: drive called "util"
Create a folder on your C: drive called "burning"
Make sure there are copies of Shortn32.exe, md5sum.exe, and shorten.ico in the "util" folder you created
Create the following batch files in notepad and put them all in the "util" foler you created:

cls
lfnfor on
for %%f in (*.shn) do c:\util\shortn32.exe -x %%f c:\burning\%%f.wav
lfnfor off

name this file "unshorten.bat"

cls
lfnfor on
for %%f in (*.wav) do c:\util\shortn32.exe %%f c:\burning\%%f.shn
lfnfor off

name this file "shorten.bat"

c:\util\md5sum --binary *.shn > > ~NameMe~.md5

name this file "md5gen.bat"

cls
lfnfor on
for %%f in (*.md5) do c:\util\md5sum.exe --check %%f
lfnfor off

name this file "checksum.bat"
Open Windows Explorer and go to View>Options>File Types and click on "New Type" and enter into the Description of type field "Shorten file" and into the Associated extension field ".shn" Then click on "Change Icon" and browse to the files "shorten.ico" in the "util" folder you created.
Create a "New..." action and call it "Extract". Put "c:\util\shortn32.exe" -x "%1" "%1.wav" (WITH the quotes) into the "application to perform action" field. Click on "Ok".
Create a "New..." action and call it "Extract all". Under "application to perform action", browse to the file "unshorten.bat" you created. Click on "Ok".
Create a "New..." action and call it "Generate MD5". Under "application to perform action", browse to the file "md5gen.bat" you created. Click on "Ok".
Back in View>Options>File Types, again click on "New Type" and enter into the Description of type field "md5 checksum" and into the Associated extension field ".md5"
Create a "New..." action and call it "check". Under "application to perform action", browse to the file "checksum.bat" you created. Click on "Ok".
Find "Wave sound" (or something similar) on the list of registered file types and double click on it. Create a "New..." action and call it "Shorten all". Under "application to perform action", browse to the file "shorten.bat" you created. Click on "Ok".
Create a "New..." action and call it "Shorten". Under "application to perform action", type "c:\util\shortn32.exe" "%1" "%1.shn" (WITH the quotes). Click on "Ok".

Ok, now your system is set up to do the following:

Right click on a .shn file on a CDROM disc (or anywhere for that matter) and choose "Extract all". All the shorten files in the current directory will be sequentially extracted into .wav files in the c:\burning directory.
Right click on a .shn file in a directory and choose "Generate MD5". A file called "~NameMe~.md5" will be created in the c:\burning directory. Rename the file appropriately.
Right click on an .md5 file in a directory and choose "check". A DOS window will open and md5sum will sequentially verify that all the .shn files in the directory match the .md5 file.
Simply double-click on any .shn file anywhere and it will decompress to a .wav file.
Right click on a .wav file and choose "Shorten". A .shn file will be created in the same directory.

I hope all this helps!

Five
2020-02-20, 01:39 AM
jclark guide v2.0, last archive image 2005-02-05
Shorten Information

Here's a great way to set up your Windows 95/98 system to handle shorten and md5 files:

Download the following files and place them in the windows/command directory (right click and choose "save link as...":

shortn32.exe
md5sum.exe
md5gen.bat
checksum.bat
shorten.bat
unshorten.bat
shorten.ico
md5b.ico


Create a folder on your C: drive called "burning". If you have a different folder to hold files to be burned, you need to open all the .bat files above into notepad and change all occurrances of c:/burning/ to whatever directory you use.


Open Windows Explorer and go to View>Folder Options>File Types, click on "New Type" and enter the following information:

Description of Type: Shorten file
Associated extension: .shn


Now click on "Change Icon" and browse to the file "shorten.ico" on your computer.


Create a "New..." action and call it "Extract", and enter the following information:

Application to perform action: shortn32.exe


Click on "Ok".


Create a "New..." action and call it "Extract all", and enter the following information:

Application to perform action: unshorten.bat
Click on "Ok".


Create a "New..." action and call it "Generate MD5", and enter the following information:

Application to perform action: md5gen.bat
Click on "Ok".


Back in View>Folder Options>File Types, click on "New Type" and enter the following information:

Description of Type: MD5 Checksum
Associated extension: .md5


Now click on "Change Icon" and browse to the file "md5b.ico" on your computer.


Create a "New..." action and call it "Check", and enter the following information:

Application to perform action: checksum.bat
Click on "Ok".


Find "Wave sound" (or something similar) on the list of registered file types and double click on it.


Create a "New..." action and call it "Shorten All", and enter the following information:

Application to perform action: shorten.bat
Click on "Ok".


Create a "New..." action and call it "Shorten", and enter the following information:

Application to perform action: "shortn32.exe" "%1" "%1.shn" (WITH the quotes)
Click on "Ok".
Now your system is set up to do the following:

Right click on a .shn file on a CDROM disc or a folder on your computer and choose "Extract all". All the shorten files in the current directory will be sequentially extracted into .wav files in your burning directory.


Right click on a .shn file in a directory and choose "Generate MD5". A file called "~NameMe~.md5" will be created in the current directory. Rename the file appropriately.


Right click on an .md5 file in a directory and choose "check".A DOS window will open and md5sum will sequentially verify that all the .shn files in the directory match the .md5 file.


Simply double-click on any .shn file anywhere and it will decompress to a .wav file in the same directory.


Right click on a .wav file and choose "Shorten".A .shn file will be created in the same directory.


Right click on a .wav file and choose "Shorten All".All the .wav files in the current directory will be compressed into .shn files in the Burning directory.



Frequently Asked Questions

Q: I can't find "wave sound" or anything like that on my list of registered file types. Where is it?

A: Several audio programs such as Realplayer and Winamp will steal your audio file extensions upon installation. To free up the .wav extension, open the preferences or options of your audio software and make sure .wav isn't registered as a native file type for that program.

If you have further problems with these instructions contact me at xxxxx-xxxxxxxxxxxx.xxx, or you can try the mkw Audio Compression Tool, I'm told it works well.


Jeremy Clark

Other shorten help:

http://alumni.umbc.edu/~hamilton/shnfaq.html
md5gen.bat
md5sum --binary *.shn > > ~NameMe~.md5

checksum.bat
cls
lfnfor on
for %%f in (*.md5) do md5sum.exe --check %%f
lfnfor off

shorten.bat
cls
lfnfor on
for %%f in (*.wav) do shortn32.exe %%f f:\shn\%%f.shn
lfnfor off

unshorten.bat
cls
lfnfor on
for %%f in (*.shn) do shortn32.exe -x %%f f:\wav\%%f.wav
lfnfor off

Etree Setup 0.43b, circa 2000-09-03
Etree Shorten and MD5sum Setup File Download

Click here the download EtreeSetup0.43b.exe (http://hatfield.etree.org/setup.html) (839K)

Thanks to Jeremy Clark for supplying the initial batch instructions I used to create this program. <RubyBroomxxxxxxxx.xxx>
This setup will configure Windows NT or Windows 9x for trading music in the shn format.

Features:

Right click on .shn file to create an md5sum file for a folder of shn files.
Right click on .shn file to extract a folder of shn files to the folder c:\burning.

Right click on .md5 file to run md5sum.exe to check a folder of shn files for corruption.

Right click on .wav file to compress a folder of wav files into shn files.

You can edit the .bat files in c:\program files\etree\misc to change the burning
directory to a different drive, ie d: ***you must then create a burning dir on that drive***



i don't have a whole lot of time so feel free to help me out with the documentation.


email:treyhowxxxxxxxxxxx.xxx

Five
2020-02-20, 02:19 AM
my shntool info page mirror, 2001-03-17
7/12/02 note: Below is a mirror of an old page created by Chris Green. It is apparently long gone from its original site, and a couple links are outdated, but I thought it was useful enough to save and republish here. I have not altered/updated this mirror significantly, except to strip off the geocities adware and note updated urls . Chris, if you're out there give me a buzz about this if you like. Diana Hamilton

***

Have you ever recieved a show in shn format and wanted to quickly find out what the length and size of the wav's are?

shntool is a command line utility which reports information about the compressed wav inside a shn file.

click here for a screenshot. [DSH note- not saved, no longer available]
There's more to shntool than what I describe here, but the 'len' parameter displays the playing time (length) and wav size in shn files. These directions will help you create a batch file to run the command line shntool.exe and associate it in Windows95/98/NT/2K so that you can get this info about the wavs quickly and easily.

get shntool
go here : http://shnutils.freeshell.org/ to get shntool
once your at the shnutilities page, click the shntool link.
download the zip archive (or archive file type of your preference) and unzip to a folder such as c:\utils\


copy the program & library files to a directory that is in your path
go to the c:\utils\ folder and move the files below to a directory that is in your path

shntool.exe
shorten.exe
cygwin1.dll

the files above need to go in a directory that is in your path so that they can be found no matter what directory you are running the command from. common locations would be:

c:\windows\ [on win95/98]
c:\winnt\ [on winNT/2K]

go back to c:\util\ and create a new text file, name it shnlength.bat
enter the following for your batch file

cls
shntool -len -mb *.shn
:: cmg 4/18/2001
:: the syntax above uses the new parameter style,
:: previous ver was "shntool len -u mb *.shn".
:: alternately, you may use other params,
:: such as "shntool -len -mb -debug *.shn" for more info.
:: see "shntool -len -h" for specific help on the '-len' param.s
pause
exit

NOTE: you could modify the batch file to be the following if you wanted to save the output of the console window to a textfile.

The following would put place the info in a file
named 'shnlength.txt' in the same directory as
the shn files that you are checking :
shntool -len -mb *.shn > shnlength.txt
You could also specify a directory before the output
file to always put the file in the same place:
shntool -len -mb *.shn > c:\shnlength.txt


create a new association for .shn files to your batch file
Win95/98/NT

Open an Explorer window
Select View from the menu
Select Options
Under 'file types' select (shn) from the list
(MKW users may notice that the association is
named "Compressed Audio "Shorten)"
Click the Edit button
Click New..,
call it 'shnlength' or whatever you like
Browse to the batch file you made back at c:\util\shnlength

Win2000

Open an Explorer window
Select Tools from the menu
Click on the 'file types' tab
Select (shn) from the list
Click the Advanced button
Click New..,
call it 'shnlength' or whatever you like
Browse to the batch file you made back at c:\util\shnlength

Jeremy Clarks shn page http://www.cstp.umkc.edu/~jclark/shn/ has great info on creating associations & shn files [DSH note- Jeremy's writeup now hosted at http://pcp.gridpoint.com/shn.phtml ]


test it out
go to a folder where you have shn's
select a shn file, right-click and select 'shnlength' from the popup menu
a console will open displaying the information about all the shn's in that directory


problems?
try going to a dos prompt and type 'shntool -h' if you get an unrecognized command error, check the location of the files back in step 1
if the above works, check the file associations
see the supporting txt files that come with shntool or reference the shnutils website


created: 03-17-2001
updated: 04-18-2001
I thought this was a helpful utility so i made a page to help others set it up. email me with questions.
this page is a work in progress, please report errors or discrepancies to me

Sites referenced in this page
http://shnutils.freeshell.org
http://www.cstp.umkc.edu/~jclark/shn/ [DSH- updated to http://pcp.gridpoint.com/shn.phtml ]

Other useful sites
http://research.umbc.edu/~hamilton/shnfaq.html [DSH- url updated]
http://etree.org/howto.html
http://home.att.net/~mkw/

Five
2020-02-20, 04:03 AM
batch files from Adam Fox's Shorten guide (http://members.tripod.com/~rimeswel/shnguide.html), 2001-11-14

FOR 2000/XP
2002-08-19:

chkMd5All.bat
@echo off
FOR %%f IN (*.md5) DO md5sum.exe --check "%%~ff"
pause

chkMd5Single.bat
@echo off
FOR %%f IN (%1) DO md5sum.exe --check "%%~ff"
pause
GenMd5All.bat
:: Generate MD5 Checksum Files For Every File
:: With Matching Extension In The Directory
@echo off
@echo Generating MD5 Checksum Files
@echo All File Types %~x1
@echo This May Take Awhile...
FOR %%f in (*%~x1) DO md5sum.exe -b "%%f" > "%%f.md5"
GenMd5Single.bat
@echo off
@echo Generating MD5 Checksum File
@echo For File %~nx1
@echo This May Take Awhile...
FOR %%f IN (%1) DO md5sum.exe -b "%%~ff" > "%%~f.md5"

FOR WIN95, WIN98
2001-11-12:

1md5ck.bat
@echo off
lfnfor on
@echo on
for %%f in (%1) do md5sum.exe --check %%f
@echo off
pause
lfnfor off
cls

makeskt.bat
@echo off
cls
echo Seeking Shorten batch creation utility for Windows 95/98
echo Written for SHN v3 by Mike Wren
echo Mod for NT4 by Eddie Burks (beware filename's with spaces!)
echo ÿ
echo http://etree.org ú Leading the Lossless Audio Revolution
echo ÿ
echo ÿ
echo Working...
echo ÿ
lfnfor on
FOR %%f in (*.shn) DO shortn32 -s %%f %%f.shn
goto end

:end
lfnfor off
echo ÿ
echo Seek (.skt) files successfully created and saved
echo in the same directory as your Shorten files.
echo ÿ
pause
cls
md5check.bat
@echo off
lfnfor on
@echo on
for %%f in (*.md5) do md5sum.exe --check %%f
@echo off
pause
lfnfor off
cls
md5gen.bat
@echo off
echo.
echo.
echo Generating MD5 for SHN files in the current folder
echo This could take a few minutes depending on file sizes
md5sum.exe --binary *.shn > ~NameMeShn~.md5
cls
echo.
echo.
echo Your new md5 file ~NameMeShn~.md5 is in the current folder
echo.
echo Please rename ~NameMeShn~.md5 correctly for your set of files
echo.
echo. Hit any key to close this dosbox
pause >c:\nul
cls
md5wav.bat
@echo off
echo.
echo.
echo Generating MD5 for wave files in the current folder
echo This could take a few minutes depending on file sizes
md5sum.exe --binary *.wav > ~NameMeWav~.md5
cls
echo.
echo.
echo Your new md5 file ~NameMeWav~.md5 is in the current folder
echo.
echo Please rename ~NameMeWav~.md5 correctly for your set of files
echo.
echo. Hit any key to close this dosbox
pause >c:\nul
cls
renshn.bat
cls
ren *.wav_s *.shn
cls
renwav.bat
cls
ren *.shn_w *.wav
cls
shorten.bat
@echo off
call c:\~_lasts.bat
cls
echo.
echo Enter DRIVE and FOLDER for SHN files EXAMPLE: C:\SHNFILES
echo DO NOT USE SPACES DO NOT END IN \
echo.
echo Just hit enter to use last entry which was: %_las%
echo OR
senvar.com /e n1_ Key in a DRIVE and FOLDER then hit enter:
If %n1_%!==! set n1_=%_las%
echo set _las=%n1_%>c:\~_lasts.bat
cls
echo.
echo You may put a SUBFOLDER inside %n1_% EXAMPLE: D1
echo DO NOT USE SPACES DO NOT END IN \
echo.
echo Just hit enter and files will go to %n1_%
echo OR
senvar.com /e n2_ Key in SUBFOLDER for %n1_% then hit enter:
set _sd=%n1_%\%n2_%
If %n2_%!==! set _sd=%n1_%
cls
lfnfor on
cls
echo.
echo SHN files will be placed in %_sd%
echo The line above Must Not END in \
echo.
echo The destination folder MUST NOT be the source folder
echo.
echo Hit Ctrl C to abort and start over
echo OR
echo Hit any key to begin compressing
pause >nul
md %n1_% >nul
cls
md %_sd% >nul
cls
@echo on
FOR %%f in (*.wav) DO shortn32.exe %%f %_sd%\%%f_s
@echo off
RENAME %_sd%\*.wav_s *.shn
cls
echo.
echo Wave files have been SHORTEN compressed
echo.
echo SHN files are in %_sd%
echo.
echo Hit any key to close this dosbox
pause >c:\nul
lfnfor off
cls

toolchks.bat
@echo off
cls
@echo on
shntool.exe len -u mb *.shn
pause
cls
toolchkw.bat
@echo off
cls
@echo on
shntool.exe len -u mb *.wav
pause
cls
toolfixs.bat
@echo off
call c:\~_lasts.bat
cls
echo.
echo Specify destination DRIVE and FOLDER for Fixed files
echo.
echo DO NOT USE SPACES DO NOT END IN \
echo EXAMPLE: C:\burning
echo DEFAULT: %_las%
senvar.com /e n1_ destination:
If %n1_%!==! set n1_=%_las%
echo set _las=%n1_%>c:\~_lasts.bat
cls
echo [%n1_%] specified.
echo.
echo *Optional: specify SUBFOLDER
echo DO NOT USE SPACES DO NOT END IN \
echo EXAMPLE: fixed
senvar.com /e n2_ %n1_%\
set _bd=%n1_%\%n2_%
If %n2_%!==! set _bd=%n1_%
cls
echo [%_bd%] specified.
echo.
echo *Optional: specify SPECIAL COMMAND SWITCHES
echo.
echo EXAMPLES: -nopad : will not add zero bytes to last track
echo -p : preview mode will not write new files
echo -noskip : processes all files regardless of need
echo -o ext : output type. Default is wav. (opt. SHN)
echo.
echo Hit enter to skip SPECIAL COMMAND SWITCHES
echo OR
senvar.com /e n3_ Specify SPECIAL COMMAND SWITCHES then hit enter:

cls
echo.
echo [shntool fix -d %_bd% %n3_% *.shn] specified
echo.
echo Hit [CTRL] + [C] to quit.
echo OR
echo Hit any key to begin sector boundary shift.
pause >nul
md %n1_% >nul
cls
md %_bd% >nul
cls
@echo on
shntool fix -d %_bd% %n3_% *.shn
@echo off
echo.
echo.
echo FIXED files are in %_bd%
echo.
echo Hit any key to close this dosbox
pause >c:\nul
cls
toolfixw.bat
@echo off
call c:\~_lastw.bat
cls
echo.
echo Specify destination DRIVE and FOLDER for Fixed files
echo.
echo DO NOT USE SPACES DO NOT END IN \
echo EXAMPLE: C:\burning
echo DEFAULT: %_las%
senvar.com /e n1_ destination:
If %n1_%!==! set n1_=%_las%
echo set _las=%n1_%>c:\~_lastw.bat
cls
echo [%n1_%] specified.
echo.
echo *Optional: specify SUBFOLDER
echo DO NOT USE SPACES DO NOT END IN \
echo EXAMPLE: fixed
senvar.com /e n2_ %n1_%\
set _bd=%n1_%\%n2_%
If %n2_%!==! set _bd=%n1_%
cls
echo [%_bd%] specified.
echo.
echo *Optional: specify SPECIAL COMMAND SWITCHES
echo.
echo EXAMPLES: -nopad : will not add zero bytes to last track
echo -p : preview mode will not write new files
echo -noskip : processes all files regardless of need
echo -o ext : output type. Default is wav. (opt. SHN)
echo.
echo Hit enter to skip SPECIAL COMMAND SWITCHES
echo OR
senvar.com /e n3_ Specify SPECIAL COMMAND SWITCHES then hit enter:

cls
echo.
echo [shntool fix -d %_bd% %n3_% *.shn] specified
echo.
echo Hit [CTRL] + [C] to quit.
echo OR
echo Hit any key to begin sector boundary shift.
pause >nul
md %n1_% >nul
cls
md %_bd% >nul
cls
@echo on
shntool fix -d %_bd% %n3_% *.wav
@echo off
echo.
echo.
echo FIXED files are in %_bd%
echo.
echo Hit any key to close this dosbox
pause >c:\nul
cls
toolinfo.bat
@echo off
cls
@echo on
shntool info "%1"
@echo off
echo -------------------------------------------------------------------------------
pause
cls
ushorten.bat
@echo off
call c:\~_lastw.bat
cls
echo Enter DRIVE and FOLDER for Wave files EXAMPLE: C:\BURNING
echo DO NOT USE SPACES DO NOT END IN \
echo.
echo Just hit enter to use last entry which was: %_las%
echo OR
senvar.com /e n1_ Key in a DRIVE and FOLDER then hit enter:
If %n1_%!==! set n1_=%_las%
echo set _las=%n1_%>c:\~_lastw.bat
cls
echo Now you can make a SUBFOLDER inside %n1_% EXAMPLE: D1
echo DO NOT USE SPACES DO NOT END IN \
echo.
echo Hit enter to skip SUBFOLDER... files will go to %n1_%
echo OR
senvar.com /e n2_ Key in SUBFOLDER for %n1_% then hit enter:
set _bd=%n1_%\%n2_%
If %n2_%!==! set _bd=%n1_%
cls
lfnfor on
cls
echo.
echo WAVE files will be placed in %_bd%
echo.
echo The line above Must Not END in \
echo.
echo The destination folder MUST NOT be the source folder
echo.
echo Hit Ctrl C to abort and start over
echo.
echo OR
echo.
echo Hit any key to begin expanding
pause >nul
md %n1_% >nul
cls
md %_bd% >nul
cls
@echo on
FOR %%f in (*.shn) DO shortn32.exe -x %%f %_bd%\%%f_w
@echo off
RENAME %_bd%\*.shn_w *.wav
echo.
echo.
echo WAVE files are in %_bd%
echo.
echo Hit any key to close this dosbox
pause >c:\nul
lfnfor off
cls

Five
2020-02-20, 02:39 PM
this is pretty much all the information concerning shorten (.shn) available from softsound.com page, which was barely updated and was last seen online 2003-12-12

early 'ten years' license
SHORTEN SOFTWARE LICENSE
...

This software may not be sold or incorporated into any product which is
sold without prior permission from SoftSound. When no charge is made,
this software may be copied and distributed freely.

Permission is granted to use this software for decoding and
non-commercial encoding (e.g. private or research use). Please email
xxxxxxxxsoftsound.com for commercial encoding terms.

...

SoftSound was founded in 1995 and is backed by over ten years of research from Cambridge University. In May 2000 SoftSound received substantial investment from Autonomy and it is now a leading provider and developer of speech technology.

SoftSound homepage, 1999-03-17
Shorten is an established low complexity audio coder.

Shorten has two basic modes of operation:

lossless: The decompressed file is exactly the same as the original. Typically a factor of two compression is obtained for 16 bit audio.
lossy: The compression may be specified either in terms of an average number of bits per sample, or in terms of an acceptable (perceptually weighted) signal to noise ratio. Good quality is obtained at compression rates from 3:1 to 5:1 and thus it can be a good alternative to ADPCM.

Technical documentation is available.

Shorten for Windows and MSDOS may be purchased from Buyonet.com

Two evaluation versions are also available:

Shorten for Windows 16 bit evaluation
Shorten for Windows 32 bit evaluation

1999-12-02
We understand the audio signal, from perceptual models through practical acoustic features, acoustic models and language models. From this basis we can derive new applications in speech and audio processing, for example speaker recognition and speech enhancement, enabling new products and new ways of interaction with machines.

services page, 2000-03-06
SoftSound undertakes:

integration work to incorporate Shorten and ATELP derived audio coders into commercial products;
bespoke development of special purpose coders and related audio processing;
bespoke development of the Abbot speech recognition system for specific applications, such as key word spotting, languages in addition to British English, and also the use of structured commands and phrases and other small vocabularies.

Details of our services can be obtained by sending an outline of your specific application and requirements to: xxxxxxxxxsoftsound.com

Five
2020-02-20, 04:54 PM
cdwave is freeware (http://milosoftware.com/en/index.php?body=cdwave.php) as of 2019-12-25

still perfectly useful, there's nothing better right now that I know of. thanks, Mike Looijmans you rule

additional revision history taken from archive.org capture of old etree.org pages. some links on archive can still download old versions so if you need that it can be found there.
Download and install

Note that CD Wave is now freeware. This means you can use it in any non-commercial way, and you do not need to register or pay for it.

In any case, you'll need to start by downloading CD Wave first. Use one of the following links to download and install the latest version of CD Wave. The latest version is usually also the recommended version (bold):

Latest version
Version Posted Size Download
1.98 7 Feb 2009 1280k Download CDWAV198.EXE

Older versions
1.97 10 Mar 2008 1200k Download [u]CDWAV197.EXE
1.96.1 21 Jul 2007 1208k Download CDWAV1961.EXE
1.96 8 Jul 2007 1200k Download CDWAV196.EXE
1.95.1 15 Oct 2006 1200k Download CDWAV1951.EXE
1.95 26 Jul 2006 1200k Download CDWAV195.EXE
1.94.4 27 Dec 2005 1215k Download CDWAV1944.EXE
1.94.1 23 Oct 2005 1219k Download CDWAV1941.EXE
1.94 11 Mai 2005 1223k Download CDWAV194.EXE
1.93.3 29 Apr 2004 866k Download CDWAV193.EXE
1.92 28 Dec 2003 939k Download CDWAV192.EXE
1.91 02 Okt 2003 650k Download CDWAV191.EXE
1.9 18 Jul 2003 615k Download CDWAV190.EXE
1.82 10 Jun 2003 615k Download CDWAV182.EXE

cdwav173.exe v1.73 with auto-installer - 672KB
Released 12/21/02

cdwav172.exe v1.72 with auto-installer - 608KB
Released 4/26/02

cdwav171.exe v1.71 with auto-installer - 607KB
Released 2/14/02 4119 Downloads since 2/14/02

cdwav162.exe v1.62 with auto-installer - 588KB
Released 7/25/01 4591 Downloads since 7/25/01

cdwav160.exe v1.60 with auto-installer - 587KB
Released 2/14/01 2820 Downloads since 2/14/01

cdwav160beta.exe v1.60 beta with auto-installer - 584KB
Released 1/29/01 408 Downloads since 1/29/01

cdwav157beta2.exe v1.57 beta 2 with auto-installer - 583KB
Released 1/8/01 556 Downloads since 1/8/01

cdwav157beta.exe v1.57 beta with auto-installer - 581KB
Released 11/16/00 573 Downloads since 11/16/00

cdwav156.exe v1.56 with auto-installer - 562KB
Released 11/16/00 7927 Downloads since 11/16/00

cdwav154.zip v1.54 - 324KB
Added 10/1/00 325 Downloads since 10/1/00

Installation instructions

Download the Self-Installer distribution. Just click on the download, and choose "Run from current location". After that, the program will download, and when complete, the installer will guide you through the simple process, and let you choose destination directories and program groups.
No virus, no spyware, no adware, no malware, ...

CD Wave is totally free of any form of adware or malware. Some antispyware, antivirus or antitrojan programs can detect CD Wave as being infected, although the application runs perfectly safe and does not pose a threat to your system. This type of reading is called a "false positive" and it occurs when antivirus software wrongly classifies an inoffensive (safe) file as a virus. The incorrect report may be caused by heuristics or by an incorrect virus signature in a database.

OGG Vorbis, FLAC

An OGG Vorbis encoder and FLAC encoder are included in the 1.92 and later distributions. You can create ogg and flac files straightaway with CD Wave.

Monkey's Audio

In 1.94 beta 4, the APE encoder/decoder is included. This is still in an experimental stage - use at your own risk! (feedback is welcome)

Uninstall

The installer will add CD Wave to the installed programs in Control Panel (Add/Remove programs). You can uninstall the application from there.
etree tutorial, circa 2003-02-01
etree.org | cd wave introduction

CD Wave was designed to aid in tracking CD audio discs. CD Wave is simply the easiest way for Windows users to track CD audio discs because it automatically splits each track on sector boundaries. It also does a very nice job as a recording application, when performing DAT > hard drive transfers.

CD Wave is used mostly by seeders (people who perform DAT > SHN conversions). For full installation, instructions, and for the most recent software updates, check out the official CD Wave website at www.cdwave.com (http://www.cdwave.com/).

etree.org | cd wave download

CD Wave is shareware. This means you can use it in any non-commercial way. You can try it for a period of one month (31 days). If you wish to continue to use it after that period, the author asks that you register. Instructions on how to register are in the help file.

cdwav173.exe v1.73 with auto-installer - 672KB
Released 12/21/02

cdwav172.exe v1.72 with auto-installer - 608KB
Released 4/26/02

cdwav171.exe v1.71 with auto-installer - 607KB
Released 2/14/02 4119 Downloads since 2/14/02

cdwav162.exe v1.62 with auto-installer - 588KB
Released 7/25/01 4591 Downloads since 7/25/01

etree.org | cd wave docs

For CD Wave documentation, please visit the CD Wave home page (http://www.cdwave.com/).

etree.org | cd wave tutorial

It's a good idea to read the Help file on splitting, the process of dividing the WAV file into smaller sections. On the menu choose Help > Help contents and under Topics click on "Splitting the file." What you probably want is the Do it yourself section. This is the favoured option if you want to be in complete control of the operation. (Alternatively you can experiment with Auto-split, which splits a WAV file based on gaps of silence in the file.)

Open your WAV file in CD Wave. The top band of the screen shows the wave form for the complete file. The bottom band (larger) shows an enlarged section (which section? - the green indicator between the two bands marks the selected section against the top band). You can change the section displayed in the lower band by clicking anywhere in the top band (complete file).

Essentially you click in the bottom section at the place where you want to split the file. This puts in a vertical white line showing where the split will take place. You can move this to the left or right with the arrow keys, or change your mind and click somewhere else. Play the WAV to make sure you are in exactly the proper place for a track split, usually at the very beginning of each song. When you have decided on the correct place, click on the Split icon near the bottom left of the screen. That's it - you have split the WAV formation into two separate sections. You can go on to add other splits - e.g. in a WAV file of one set of a show you would probably be putting anywhere from 5 to 15 Splits before each song to divide them into individual tracks. You might also want to split off the end of each set after the band is completely finished.

The next step is saving the Split WAV tracks. Go to File > Save and choose a location to save the files, maybe in the same directory as the original. CD Wave will save all the sections in one go. If your original WAV file was ph2002-10-14d1t.wav and you have divided it into 6 sections, they will be saved as ph2002-10-14d1t01.wav, ph2002-10-14d1t02.wav, etc up to ph2002-10-14d1t06.wav. These WAVs will be cut properly on sector boundaries, and besides possibly needing renaming, are ready to be SHN'ed and seeded (along with proper MD5sums and info file).

It is also recomended to split a tiny bit before the end of the WAV file to ensure that every single track is cut on a sector boundary. And if you are seeding shows, you really should be using shntool to check your WAV files for any problems. shntool is available here.

FYI - CD Wave leaves your original parent WAV file intact - the smaller files are copies of sections - so if you make any errors in splitting you still have the original WAV file.

etree.org | cd wave etcetera

If you plan to use CD Wave after the 31 day trial period, please register it. Registering will encourage the author, Mike Looijmans, to release future updates to this fantastic utility!

For the most recent software and documentation updates, please go to the Official CD Wave website at www.cdwave.com.

etree.org | cd wave credits

Thanks to Mike Looijmans, the author of CD Wave, for creating such a fantastic piece of software!

Thanks to John Baldry for help with the tutuorial.

Five
2020-02-20, 08:18 PM
some previous discussion about using batchenc as a shntool frontend here (http://www.thetradersden.org/forums/showthread.php?t=3859). I was running it just the other day on windows 10, no problems with visual basic 6 or whatever at all. :thumbsup

batchenc by speek, 2005-02-02
BATCHENC

Batchenc is a free and very flexible Windows front-end for all console encoders and decoders. It's not for newbies because the user has to know the command line syntax of the back-end programs. But a configuration file with a lot of examples is included to make it a bit easier.

Download Batchenc v1.5.1 (https://web.archive.org/web/20111129005633/http://members.home.nl/w.speek/batchenc.htm) (it's only 29 kb and freeware)

[image below]

If you're in Windows 95/98 and get an error when you try to run the front-end, you probably need to install the Visual Basic 6 Runtime files.

What's new in v1.5.1:

The order of adding the application directory to the Path when using <allfiles> has changed (first the app.dir. and then the rest of the Path).
What's new in v1.5:

Batchenc can now also be used with replaygain programs like mp3gain, wavegain, replaygain (for Musepack), vorbisgain and aacgain. More info in the readme file under "Hints".
Longer Presets dropdown list (shows max. 15 instead of max. 8 items).
Simple spelling check for the keywords: <infile>, <allfiles> and <outfile.xxx>.
What's new in v1.4:

It's now possible to run several batch processes simultaneous. In previous versions the go.bat file would get overwritten. But now the batchfiles are numbered (up to 20 and then it starts at 1 again). And they are in their own subdirectory.
New icon.
What's new in v1.3:

Removed the Edit button.
Made the command line presets sort alphabetically.
Added an 'Always on top' button.
What's new in v1.2:

Support for XP Visual Styles.
Tahoma font if OS is Win2000 or newer.
Replaced the listview with a listbox (because the listview didn't behave well with XP Visual Styles).
What's new in v1.1:

Add Files dialog remembers last directory. And if that doesn't exist anymore it tries one, two or three directories higher. Same goes for Browse output directory.
An Edit button. If you hit it, the presets file will be opened in your favourite text editor.
Check out my other frontends
Batchenc readme.txt
What's new in v1.5.1:
- The order of adding the application directory to the Path when using <allfiles> has changed (first the app.dir. and then the rest of the Path).

What's new in v1.5:
- Can now also be used with replaygain programs like mp3gain, wavegain, replaygain (for Musepack), vorbisgain and aacgain. (more info below under "Hints")
- Longer Presets dropdown list (shows max. 15 instead of max. 8 items).
- Simple spell check for the keywords: <infile>, <allfiles> and <outfile.xxx>.

What's new in v1.4:
- It's now possible to run several batch processes simultaneous. In previous versions the go.bat file would get overwritten. But now the batchfiles are numbered (up to 20 and then it starts at 1 again). And they are in their own subdirectory.
- New icon.

What's new in v1.3:
- Removed the Edit button.
- Made the command line presets sort alphabetically.
- Added an 'Always on top' button.

What's new in v1.2:
- Support for XP Visual Styles.
- Tahoma font if OS is Win2000 or higher.
- Replaced the listview with a listbox (because the listview didn't behave well with XP Visual Styles).

What's new in v1.1:
- Add Files dialog remembers last directory. And if that doesn't exist anymore it tries one, two or three directories higher.
- An Edit button. If you hit it, the presets file will be opened in your favourite text editor. The command line combobox reloads the presets file everytime it is clicked, so changes in the presets file are immediately available.

Installation:

- Unzip into a new directory.
- win2dos.exe is not needed when using Windows 2000 or newer.
- The encoders and decoders must be either in the same directory as Batchenc or in the Path. Another posibilty is to specify the location of the encoder on the command line. Example:
"c:\program files\encoders\lame\lame.exe" --alt-preset standard <infile> <outfile.mp3> (the quotes are required when there are spaces in the path). But this last method gets messy soon. I prefer to have all codecs in one directory and add this directory to the search Path. In Windows XP this can be done in: Control Panel -> System -> Advanced -> Environment Variables -> Path -> Edit.
- Run "Batchenc.exe".

If you're in Windows 95/98 and get an error when you try to run the front-end, you probably need to install the Visual Basic 6 Runtime files. Get it here: http://download.microsoft.com/download/5/a/d/5ad868a0-8ecd-4bb0-a882-fe53eb7ef348/VB6.0-KB290887-X86.exe


Usage:

- Drag and drop wave files from Windows Explorer into the Batchenc file list or press the "Add files" button and put files on the list with the "Add Files" dialog.
- Enter the command line you want to use, or select one of the presets. <infile> represents the file on the the list. <outfile.extension> is the base filename of the input file, prepended with the selected output directory and appended with the desired extension.
- Optional: Select an output directory. If the output directory doesn't exist it will automatically be created.
- Hit "Start"
- Note that all that Batchenc does is create and launch a batch file. This is done on the moment you hit the "Start" button. So after that you can safely start the next job or even close Batchenc.

Hints:

- The command line presets are in a file named Batchenc_presets.cfg. This is a normal text file. Presets can be added and removed by hitting the + and the - button.

- To transcode from one compressed format to another pipes can be used if the decoder has standard output and the encoder has standard input (check this in the help of the encoder and decoder you want to use). There's one example in the Batchenc_presets.example file:
flac -dc <infile> | lame --alt-preset standard - <outfile.mp3>
If the decoder doesn't have standard output or the encoder doesn't have standard input you can always use the method with an intermediate wav file. See this example:
ttaenc -d <infile> -o <outfile.wav> && mppenc <outfile.wav> <outfile.mpc> && del <outfile.wav>

- If you want to tag your files directly after encoding without clearing the list of wav files and loading the encoded files, you can use:
tag.exe --auto <outfile.mp3>
Or even easier, you can encode and tag in one run. For example:
lame --preset standard <infile> <outfile.mp3> && tag --auto <outfile.mp3>

- The normal behaviour of Batchenc is to create a new command line for every file on the list. Replaygain programs have to scan all tracks on an album for calculating the album gain. Therefore all files must be on one command line. This can be done by using <allfiles> instead of <infile>. For example:
mp3gain /a <allfiles>
replaygain --auto <allfiles>
All files that are in the same directory will be put on one command line. So if each album is in it's own directory all will go fine. You can put more than one album (directory) on the list. Each album will get it's own command line.
If you just want to apply radio gain then it's safe to use <infile>. For example:
mp3gain /r <infile>

----------------

win2dos is for converting Windows ANSI characters in the batch file to Windows OEM codepage. It is only needed in Win9x. win2dos is made by Case: www.saunalahti.fi/cse/

----------------

Batchenc is based on the source code of vbLamer by Chetan Sarva.

Special thanks to Enrico Palmeri, Chetan Sarva, Case and Volker Jung.

----------------

Batchenc is made by Speek.

Visit my website at: http://members.home.nl/w.speek

Send comments to [email protected]

batchenc.presets.example
faac -h
faac -q 100 -c 16000 <infile> <outfile.aac>
faad -h
faad <infile> -o <outfile.wav>
flac -dc <infile> | lame --alt-preset standard - <outfile.mp3>
flac --decode <infile> -o <outfile.wav>
flac --explain | more
flac <infile> -o <outfile.flac>
lame -?
lame --alt-preset standard <infile> <outfile.mp3>
lame --alt-preset standard <infile> <outfile.mp3> && tag --auto <outfile.mp3>
lame --decode <infile> <outfile.wav>
mac <infile> <outfile.ape> -c2000
mac <infile> <outfile.wav> -d
mac -h
madplay -h | more
madplay -v -d -a -1 <infile> -o wave:<outfile.wav>
mp3gain /?
mp3gain /a <allfiles>
mp3gain /r <infile>
mp4creator60 -aac-profile=2 -extract=1 <infile> <outfile.aac>
mp4creator60 -aac-profile=4 -optimize -create=<infile> <outfile.mp4>
mp4creator60 -help
mppdec <infile> <outfile.wav>
mppdec --help
mppenc --longhelp | more
mppenc --xlevel <infile> <outfile.mpc>
ofr --decode <infile> --output <outfile.wav>
ofr --encode <infile> --output <outfile.ofr>
ofr --help | more
oggdec <infile>
oggdec -h
oggenc2 -h | more
oggenc2 -q 4 <infile> -o <outfile.ogg>
replaygain
replaygain --auto <allfiles>
tag --auto <infile>
tag --help | more
ttaenc -d <infile> -o <outfile.wav>
ttaenc -d <infile> -o <outfile.wav> && mppenc <outfile.wav> <outfile.mpc> && del <outfile.wav>
ttaenc -e <infile> -o <outfile.tta>
ttaenc -h
wavegain --apply --album <allfiles>
wavegain --apply --radio <infile>
wavegain -h
wavpack <infile> <outfile.wv>
wavpack
wvunpack <infile> <outfile.wav>
wvunpack

batchenc v1.5.1 md5 checksums
9df3b3a648dfcd239a27f768c157ebaa *Batchenc.zip

63d21c5ab51048c7f8a3a2c2c67421e1 *Batchenc readme.txt
fc3637a380159a81b18676eed14b67e4 *Batchenc.exe
96c1de390617219f591f0cca42f779f5 *Batchenc_presets.example
73b08a17d7372e2d441fd74caa627b40 *win2dos.exe

Five
2020-02-21, 11:34 PM
Tangerine Tree Verifying and Duplicating SHNs Quick Reference Guide (excerpt), 2003-05-29

here is another nice description of the problems with audio cdr trading in the 90s. complete guide (http://www.feldoncentral.com/tdtree/shnguide/) amazingly still online with mkwACT tutorial and everything. of course we use st5 instead of md5 for audio files since 2005.
Updated May 29th, 2003 12:38AM


What is SHN?

The purpose of the Shorten (SHN) format is not only to reduce the number of discs which have to be mailed or downloaded (6 instead of 10 for TT1, 8 instead of 14 for TT2), but more importantly to safeguard or "package" each music file in such a way that you can be 100% certain that what you have received is identical to the original.

People trust their standalone or computer-based CD-ROM or CD-RW drives to read and write CDs with no errors, especially at very high speeds. But I cannot count the number of times I have received CDs with pops, clicks, jumps, and entire sections missing due to errors in the reading or writing of CDs. For a time, there was a movement to ask everyone to record their CD-Rs slowly, at 4x or 2x, claiming that higher speeds were the cause of all the problems. Although reading and writing CDs at high speeds, especially on marginal equipment certainly does reduce the likelihood of producing perfect discs, speed alone is not the problem.

So what do we do? Do we all copy our CDs at 1x or 2x, sitting there for 40-80 minutes watching a progress indicator creep across the screen on our high-speed CD recorders that we blew $200 on? There is another solution.


First, the original (or close to it) CDs must be read into a computer with maximum accuracy. The concert trading community uses a music CD reading program called Exact Audio Copy (http://www.exactaudiocopy.de/) which is explained further down this page.

Second, we "package" the audio into the SHN computer format. SHN is a lossless compression format, meaning that not one bit of sound quality is lost in the conversion. Think of it as "WinZip" for your music. Also, SHN packages contain an MD5 checksum which is a 'signature' that can be used to verify if the disc has been corrupted in any way.

Just having the music in a data rather than audio format lets us benefit from the fact that:
2-3% of an audio CD is used for error checking.
17% of a data CD is used for error checking.

Third, each person who receives an SHN disc or download should always confirm the integrity of the SHN files by comparing them to the MD5 checksum files before they start making copies or producing regular audio CDs from them.


I have heard people say "Maybe SHN is not ready for prime time?"

...

Five
2020-02-23, 05:30 PM
EAC v1.4 released 2020-02-06 (http://www.exactaudiocopy.de)

THANKS André Wiethoff for 20 years of EAC :wave:

earliest EAC pages from archive.org, back when André used to type all caps sometimes and wanted you to send him a postcard for registration.

some 1999-07-30 updates..
Introduction

EAC is a new audio grabber for CD-ROM drives. The main differences towards most other audio grabbers :

Low registration costs (just a postcard and a stamp)
It works with a new technology, reading audio CDs almost perfectly. If there are any errors that can't be corrected, it will tell you on which time position the (possible) distortion occurred, so you could easily control it with e.g. the media player

I am writing this software, because I am fed up with these other audio grabbers. I always had to listen to all grabbed waves, because other audio grabbers will do only jitter correction but CD-ROM drives reading scratched CDs often produce distortions. Listen to all waves would be a waste of time. So in march I decided to write my own audio grabber, mainly for my and my friends private usage. So if you don't like this software - don't use it! I don't want to make any profit with it, I just want to use (and share) the best grabber (that's in my eyes the most exact grabber) ever programmed. Most important for me is feedback from the users, more about that later at registration chapter.

...
Original banner

Five
2020-02-23, 05:35 PM
earliest EAC pages from archive.org, 1999

some 1999-07-30 updates..
About Me

I am a student of computer science and mathematics here at the University of Dortmund. At the moment I have some preparations on aural examinations and the start of an one year project group. Beside the usual work at the university as a student, I started work for VOB (CDWizard) on Jukebox driver.
In my spare time I like spending time with my friends and playing computer and board games. Of course I also work on some computer projects like this one. Further I do a lot of sports like cycling, walking, inline skating and some martial arts.
I am using now a Pentium II 400, total of 2.5 GB IDE harddisks, 4.3 GB SCSI harddisk, 128 MB RAM, Plextor 14/32 CD-ROM drives, Teac R56S-600 CD-R drive, Asus V3400 TNT 16 MB video card, Creative SB Live! soundcard, Windows 98 and Stony Brook Modula 2.
earliest archive.org capture of eac documentation page, 1999-11-27
Documentation

This is only a prerelease, so no work on the user documentation has been done yet. A complete user guide and documentation will be done as soon as a stable version has been published.
If you encounter any further bugs, please report them by mail or e-mail. Also report any drives that work or don't work, to complete the list below. If you want to report anything, please don't forget these important informations

Operating system
Hardware configuration (CPU, memory, CD-ROM drive, etc.)
CD-ROM drives working / not working, drive caches audio data / don't caches audio data, accurate streaming / non-accurate streaming
Any bugs that occurred

Please do not bother me with simple questions like "How could I save my wave file with 22.050 Hz, 8 bit, mono ?". I will try to answer all reports / questions but I don't know how long it will take. I am a student and I also have to work to earn some money, so I have not much time for these things, so please be patient.
this next partis from 2000, when the all-important secure mode was added
Extraction Technology

In secure mode, this program reads every audio sector at least twice. That is one reason why the program is so slow. But by using this technique non-identical sectors are detected. If an error occurs (read or sync error), the program keeps on reading this sector, until eight of 16 retries are identical, but at maximum one, three or five times (according to the error recovery quality) these 16 retries are read. So, in the worst case, bad sectors are read up to 82 times! But this will help the program to obtain best result by comparing all of the retries. If it is not sure that the stream is correct (at least it can be said at approx. 99.5%) the program will tell the user where the (possible) read error occurred. The program also tries to adjust the jitter artefacts that occur on the first block of a track, so that each extraction should be exactly the same. On drives found to have the "accurate stream" feature, this is guaranteed. Of course, this is a little bit more complex, especially with some CD drives which have caching. When these drives cache audio data, every sector read will be read from cache and is identical. I initially implemented two ways of dealing with the caching problem. First there is an extra option for resetting the cache for use the the old secure mode (the one being kept for compatibility reasons). In the current beta version, the cache will still be reset by resetting the drive completely. You might imagine that this would slow down the reading process very badly.
That is why I implemented three new read modes in version 0.85beta. One really fast mode (up to half of maximum speed) is only for non-caching, accurate stream cdrom drives. The second one could be used for caching, accurate stream drives and the last one will work with drives that don't have accurate streams, or do caching. The last two will be much slower, when no read errors occur it will usually something around a third to a fourth of the drives maximum speed.
For my testing, I am using a Plextor 14/32 drive that does no caching and a Teac R56S-600 drive that does caching. Furthermore the Plextor 14/32 supports the "accurate stream" feature, so it produces no jitter artifacts on any stream. For more information on this have a look at the table at the end of this document.
This program is really damn slow in secure mode in comparison with other grabbers, but the program checks every sector over and over to get the correct data with high certainty. If you don't like this feature of EAC and prefer fast copies instead of secure copies, you should use the fast or burst extraction option in the options menu. But of course in fast mode, the program will no longer be able to find read errors. Only if a read error occurs in a sector synchronization area, will a sync error will still be displayed. Fast mode is sector synchronized with 2 blocks of 23 as synchronization blocks. Burst copy is even worse, no synchronization is done, enabling extraction at maximum speed of the drive. No error checking of any kind can be performed. At least I implemented a small help. If the stream ever breaks, it will tell the user in the status report by showing up suspicous positions. Of course this is only heuristic; there needn't be any errors on that positions; moreover there could be errors that are not found at all.
A new option for selecting the error recovery quality will determine how often these blocks of 16 reads will be done before giving up and working with the results obtained so far. For bad CDs, low error recovery quality will be fastest, but high recover quality should give best results.

Gap Technology

In the new versions of EAC it is possible to detect pre-track gaps. These are the pauses between two tracks. Usually they are two seconds long and a cd player will display a negative time during this pause. By enabling the option 'Detect Pre-Track Gaps' it will be possible to detect all gap-lengths by reading the sub-channel informations. Because this information is not stored on the cd directly retrievable, EAC has to search for the position a track ends. This search is quite fast, but it still takes on average a second per track. That's why I made it possible to diable it in the options. Besides that option you can choose to add the gaps to the previous track nevertheless. Otherwise you can choose either to append the gap to the correct track or to leave it out . A benefit of performing the detection and getting the gap times is the selection of a range to copy. There the correct times will be displayed. A last word on this topic: because these pre-track gaps are found out by testing positions, it could occur that not 100% exact values are calculated, but in most cases it will be correct.

Automatic Feature Detection Technology

From version 0.8 beta on it is possible to autodetect cd-rom drive features. For each drive the program builds a separate drive options page. On this option page this function can be called.
There are two different features that will be checked by EAC, first if the stream is accurate and second if the drive caches audio(!) data. Even if the drive has a cache (drive specifications), it does not automatically means that the drive uses that cache also for audio extractions.
The test for the accurate stream feature should be always correct, but testing on cache will give some problems with drives that extracts audio very slowly (under 4X speed). If results are uncertain (given e.g. two different results on different tests), you should assume that the drive does caching. The new secure mode for non-accurate and/or caching drives should work for all drives. The other new read modes are only something faster. If testing on accurate stream will give only sometimes a negative result, then you could nevertheless try to use the accurate secure mode.

Track Synchronization Technology

Usually cd audio extraction programs will extract one track after another. This could make some problems on CD-ROM drives that are not accurate on a CD which has no gaps. When this option is enabled in the EAC options, EAC will synchronize a track with a preceeding track if there is no silence at the track junction, so track transitions will be free from jitter artefacts (e.g. on live recordings).

Offset Technology

'Sample Offset' is another new feature of EAC. Because most drives lack the 'accurate stream' feature, it will help to get always the same wavs as another reader. Some drives can not position the head correctly. That means if the program tells the drive to read block 10000 it will probably read data somewhere in block 9998 instead. But this is not visible to the reading program, it won't know if it is really the data it wanted. Usually the head will be set always to a fixed offset before or after the correct read position. So it is possible to detect this offset once and use it for all CDs coming afterwards. Because it is a hard task to determine the exact absolute offset for each drive, I determined it once on my Plextor 14/32. To find out the offset of any other drive the offset is calculated relative to that absolute offset. To implement an offset detection for other drives I took some bytes from some common CDs I and my friends own. These are the reference each CD-ROM drive has to compare with. Of course I have implemented only a limited selection of CDs that can be used to detect this offset, a list follows below. Sometimes there are different versions (releases) of the same CD, but only the same press like the one I used will work. That is why in the table below show also a code, that is written on the inner ring of the music CD, that should identify the release of a CD. The red codes are from CDs that does not work with this test. In time I will add more CDs to test this offset. Drives that have jitter are furthermore not able to position their heads correctly. So you should activate the secure or fast extraction method and moreover if your drive does caching, activate no-caching emulation. The 'Searching Track Start' algorithm tries to find the correct start position even if jitter occurs. But this is not always possible, mainly if the drive jitters too much. But it can be shown that nearly 80% of the reads will get the same results. A drive's characteristic offset can be found automatically from the CD from on the list of reference CDs. Because of the mentioned jitter error the value given back is also not 100% sure. You should start the test several times and remember to activate emulate no-caching if necessary. Then you should get one value that occurs more often than other values. YOU SHOULD USE THIS TEST ON TWO DIFFERENT CDS AT LEAST! BOTH TESTS SHOULD GIVE BACK THE SAME VALUE! My Plextor 14/32 has an offset value of +679 samples, that means that 679 samples usually are missing at the end of a wav file.
As different modells of common CD-R writer usually do not add the same offset on writing, it seems that also big CD manufactures also do not always press the same offset on their CDs. So I determined the most common offset of pressed CDs and integrated it into the offset detection routines.
Sound Editor

From version 0.8 on EAC includes a small wave editor that will have some neat functions that could be handy when handling extracted audio files. At the moment only uncompressed 16 bit 44.1 kHz stero samples files could be used. Following some functions are described more in detail.

Glitch Removal

From version 0.6beta on it is possible to remove glitches from extracted wave files. This will work only on uncompressed files.
What are glitches? Glitches are single samples that are completly out of the wave stream. Best to see on these pictures, which is a really extreme example that probably won't occur with EAC.

Before: Afterwards:

Only these glitches are removed. When hearing a wave file with glitches it is usually a high frequent 'tick'. Linear interpolation is used for removal of these glitches. Pops and other artefacts are more deep in the sample structure and are not removed yet, but is also planned for future releases. Pops occurs mainly in a lost of sync, where two parts of a wavefile are joined that does not fit correctly at these points of change of parts.
Interpolation
At first I want to note that this feature is not fully correctly implemented and would create not always clean replacements of the selected wav range. The selected range has to be pretty small, otherwise the menu entry will be disabled.
This function will work on the frequency spectrum of the wave. The spectrum of the selected range will be interpolated from spectra of ranges left and right of the selected one. This function should be used to remove detected pops.
Linear Interpolation will create a linear connection between the points of the wave in the selected range. This should only be used for very small ranges.

Automatic Detection Of Pops

This function tries to find automatically pops in the selected range. This is something slow, so you shouldn't select the complete file, but a smaller area. This algorithmus is also not very good yet, it will find some pops where no are and also not found all real pops... In the next version improvements are planned that will add user defineable parameters to nearly all these edit functions.
After EAC ended the search it will display a dialog with all found positions. With a double click on such a position it will select the matching range.

Noise Reduction

To reduce noise from a wave it is necessary to have a noise profile. This could either be loaded from disk (or saved after created), or created from a selected range. This range should at least something around half a second. This range used for the creation of the profile should consist of pure noise, no other sound/music should be found in the selected range.
After having a noise profile this could be used on any range of the wav (usually the complete file) to reduce the kind of in the profile analyzed noise.

Spectral Display

If the Spectral button is selected, it takes some seconds to calculate a frequency spectrum for the displayed range. This kind of display has some advantages. E.g. pops are easily be recognized, as example you should have a look at the top of the page.
The Y axis will be used for different frequencies, at the bottom low frequencies are displayed and at the top high frequencies (up to 22.5 kHz). Further the color of a point describe the amplitude of each frequency band. If there are discontinuties in this view, there is sometimes something wrong in the wave.

Smooth Samples

This function will smooth the amplitude of a sound. This is usefull for LP recordings or other pops/clicks. The amplitude is smoothed, what means that high frequent parts are filtered out. So this function will perform a kind of low pass filtering, but it won't cut of frequencies about a special limit, but lower the volume according to its frequency.
This function will also help on removing pops/clicks. This function could be called as often as needed for the same range.

Five
2020-02-23, 05:44 PM
EAC Glitch Removal Before:

Five
2020-02-23, 05:45 PM
EAC Glitch Removal After:

Five
2020-02-23, 06:03 PM
some 1999-07-30 updates..
Registration

As I mentioned before, this program is and will be Cardware. This means, using the program will cost you no money, but a nice picture postcard from your hometown or a beautiful countryside nearby (perhaps it will also be possible to use a nice stamp for sending the postcard). This support helps me developing the software to more and more functionality and safety. Please tell me what you like (or dislike) and please don't forget your e-mail address. If I ever decide that not enough users registrate (to my subjective decision), I will add nag screens which key codes will remove to registrated users. So if I have already your e-mail address, it will be much easier to send you your personal registration code. Of course, this will only be done if there isn't enough support. But I released until now also some other programs and so I am already disillusioned.
Of course I would greatly appreciate any donations made freely by you to help me to improve EAC by using the donations for compiler updates etc.
If you want to registrate in order to support me please use this address

...
1999-11-11 update
Caution ! Beta Version !

This is a only a beta version from the final program that will be distributed later in this year, at least I hope so. This version should only be used by experienced users.
I will not take responsibility for any damage to your hard- and/or software that is caused directly or indirectly by this program. So download this beta version on your own risk.

Download Exact Audio Copy V0.85 beta 4 last changed on 2.9.99
(eac085b.zip - 494 kB ZIP file)

Please read also the What's New page!
If you experience any problems, have a look at the Tips & Specs page.

I put up a mailing list. If you want to be notified if a new version is out, then subscribe to the eac-announce list.

Older versions for download
eac.zip (0.1beta 49 kB)
eac02b.zip (0.2beta 56 kB)
eac03b.zip (0.3beta 66 kB)
eac04b.zip (0.4beta 74 kB)
eac05b.zip (0.5beta 104 kB)
eac06b.zip (0.6beta 135 kB)
eac07b.zip (0.7beta 157 kB)
eac081b.zip (0.81beta 281 kB)

Thanks

To Plextor for sending me a CD-Writer PX-W4220T for test purposes
To Mitsumi for lending me a CD-Writer CR-4802TE for some weeks for test purposes

At this place I want to thank Bertram Müller-Neuhöffer, Sotiris Papakostas and also Helge Böcker for helping me with informations and test runs. Thanks also to the following persons which registered EAC without giving me their email-addresses

...
1999-11-11 update
Planned For The Next Release

Bug fixes again...
Improvement of the audio editor
C1/C2 error correcting Secure Modes
Audio CD recording functions
Index based extraction
More features to come

EAC offical banner

Thanks to Pablo Aguiar, EAC has now an own banner! If you want to link to this page, you could use it.

Five
2020-02-23, 06:23 PM
personal homepage, 2000-06-03
This photo is rather old ;)

Five
2020-02-23, 07:00 PM
early archive.org capture of etree eac page, 2000-10-30, updated 2002-06-06
etree.org | EAC introduction

Exact Audio Copy (EAC) is a new digital audio extraction (DAE) tool for Windows. The main difference between EAC and other audio grabbers is that EAC uses a new technology that performs DAE almost perfectly. If there are any errors that canot be corrected, EAC will report the time position the possible flaw occurred, so you can easily correct the flaw.

For the most recent software and documentation updates, please visit the official EAC website (http://www.exactaudiocopy.de/).

etree.org | EAC download

eac09pb7.zip - 715KB v0.9 prebeta 7 Released: 10/11/00
v0.9 prebeta 7 should only be downloaded & used by experienced users! If you encounter problems with this version you should step back to the version below

eac085b.zip - 493KB v0.85 beta 4 Released: 2/9/99

etree.org | EAC documentation

To set up EAC to automatically create SHN's of an extracted disc:

Go to EAC > Compression Options > "External Compression" Tab
Check "use external program for compression," then pick Shorten from the dropdown list.
Browse to your shortn32.exe file (Should be c:\windows\command for Windows 95/98 users; c:\winnt\system32 for Windows NT/2000 users).
Check the "delete WAV after compression" if you want.

Now, when you extract tracks, they will each be encoded to Shorten. Make sure you review the EAC error log when making SHN's with DAE to make sure they don't contain errors.

Thanks to Jeremy Clark for this information!

Additional note for Windows XP users!

You will also need to go to the location of shortn32.exe, and follow these directions:

* Right-click on the shortn32.exe

* Click properties

* Click the Compatibility tab

* Click the checkbox for "Run this program in compatibility mode for:

* In the pulldown menu, choose "Windows 2000"

* Apply your changes

For additional tips on setting up EAC, please go to the Official EAC Documentation Page, Dick's EAC page, Elite DAE, or The Coaster Factory's EAC Pages.

etree.org | EAC credits

Thanks to André Wiethoff, the author of Exact Audio Copy. Please do not email the author for questions of usage, go to the EAC website (http://www.exactaudiocopy.de/) and read the documentation!

This page last updated by Michael Crow on 6/6/2002

Five
2020-03-02, 02:26 PM
eac came with spectral and frequency analysis (sa, fa) tools which the community found useful for spotting lossy sources. semi-useful, I should say. there is a terrible haze (http://www.thetradersden.org/forums/showthread.php?t=1331) from a mirroring effect of some kind that clouds everything. fa also not good. cool edit pro aka adobe audition was the best, but it is not free. these days spek (http://spek.cc/) is preferred for spectral analysis. I think audacity frequency analysis is fine, just that doesn't inform us enough to make a true judgement.

this ancient guide (https://web.archive.org/web/20030415152732/http://www.audiohub.org/get/fa/fa-eac.htm) we used to refer to in the stg days from audiohub.org is still on archive.org. check here to see more info about new software and methods we use (http://www.thetradersden.org/forums/forumdisplay.php?f=47).

eac spectral example, LPCM WAV lossless source

daddyray
2020-03-02, 02:32 PM
what you talking about Willis?

nerdgasm alert!

Five
2020-03-02, 03:00 PM
indeed!

sit back and I will tell you all about the good the bad and the ugly software we used to use. some of it is better than anything we have now, and largely forgotten. some of it was crap. :lol:

here's an excellent freeware from 2000, still works perfectly on win10 straight out of the box. now that's a software! :thumbsup

--------

back at sharingthegroove.org (RIP 2004) every "is this FLAC mp3-sourced?" thread was full of people looking for clues in frequency analysis graphs. "could you change x setting and post another screencap, please?" was the order of the day. in the end, fa helped a little, good sa solved the puzzle.

audacity (https://www.audacityteam.org/) can do a fine frequency analysis, sure, but there was another fa freeware soft that was strongly preferred by all: AnalFreq v1.8

find it here:
afreq18.zip 28-Aug-2000 09:24 59K (http://info.elf.stuba.sk/packages/pub/pc/sound/)

856aaf2edbf4b558c98d9f0e4a0e3c8f *afreq18.zip

4ba7897a89c00c77fb5bf343ce644bb0 *AnalFreq.exe
0128eb119dc595a393460fbceba71540 *FFT.DLL
e13fca2618fe5a1fa5268b4a2aae576c *readme.txt
9de840be66582ad2293fd48f19a7b20f *UserManual.rtf

dead original homepage (not on archive.org) (http://www.simtel.net/product.download.mirrors.php?id=17151)

I still laugh remembering U2Lynne telling ppl to download this prog, "yes, it's really called that!" :lol:

daddyray
2020-03-02, 04:57 PM
I still miss OS 9 on Mac. that shit worked so easily.

Five
2020-03-02, 05:25 PM
for me, win98se. once you've got all the drivers in place, it is snappy fast compared to win10. especially windows explorer, ugh, 2020 and my computer is more sluggish than 1998.

--------

2002-08-26 SpectraScope v2.7 shareware released for $30. Should have been called 'AnalScope' I would pay $30 for that.
https://web.archive.org/web/20050414102351/http://www.sharewaretools.com/audio/1145/
https://web.archive.org/web/20050404211453/http://www.spectrascope.com/

seriously, thx to Christopher Brown wherever he is for freeware AnalFreq. you can tell how amazing this program is when you try it.

856aaf2edbf4b558c98d9f0e4a0e3c8f *afreq18.zip

4ba7897a89c00c77fb5bf343ce644bb0 *AnalFreq.exe
0128eb119dc595a393460fbceba71540 *FFT.DLL
e13fca2618fe5a1fa5268b4a2aae576c *readme.txt
9de840be66582ad2293fd48f19a7b20f *UserManual.rtf
afreq18.zip 28-Aug-2000 09:24 59K
http://info.elf.stuba.sk/packages/pub/pc/sound/

brief guide to using AnalFreq:
http://dislocateu2trade.webcindario.com/Analfreq.html

Anal Audio.jpg

Five
2020-03-02, 05:26 PM
Anal Audio-Broadcast.jpg

Five
2020-03-02, 05:27 PM
AnalMp3.jpg

Five
2020-03-18, 11:32 AM
for those people who don't know what the gd elite were like in 1995.. well, this is it and boy they are the most high-tech group in our hobby. the depth and dedication is staggering. :clap:

the information about machines is still of value.

you can download plain txt 73kb on this page (https://www.cs.cmu.edu/~mleone/gdead/taping-guide/) for future reference. phish taping reference is gone with no image on archive.org :(

Guide to Cassette Decks and Tape Trading

by
Michael Bell

version 2.02
July 1995

Permission to copy this document or *complete* parts is freely granted. (Here is the original plain text.) Please do not break up sections.

The Phish Taping Reference is also a good source of information.
https://www.cs.cmu.edu/~mleone/gdead/taping-guide/

Five
2020-03-18, 07:10 PM
bittorrent guide by slyck, offline since early 2020.
Slyck's Guide To BitTorrent

BitTorrent Intro
BitTorrent is a P2P system that makes transfering large files (or groups of files) amongst a large group of people easy, fast and efficient. The BitTorrent network is set up in a way that is a little different than a normal P2P network. With this network, you really don't do any searching for files that the other users have using the client as you would with traditional clients. Rather, you go to websites that have lists of recently released files.
The websites listing the torrents are called indexing sites and have become very popular. Their popularity has come at a cost however, with the MPAA and law enforcement agencies shutting them down. There are no shortage of sites to go to so long as you know which are currently being used, as they come and go so quickly these days. The files that you get all come as a package called an archive, and to receive them you must first get a .torrent file (don't worry, that's what you went to these websites for). Once you have downloaded the .torrent file, your BitTorrent client will kick in and connect to a managing computer that then connects you to others who have the files.
BitTorrent is a P2P system that uses a central location to manage users' downloads. The central location is a tracker that is connected to when you download and launch a .torrent file. The tracker keeps track of all the people who have the file (both partially and completely) and connects users to each other for downloading and uploading.
The BitTorrent network is impressive mostly for the speed and reliability with which you get files that have been recently released. As long as a .torrent file has enough people sharing then you can be assured that it will start quickly and maintain a good download speed. Most indexing sites have a system of listing the number of Seeders and Leechers for a particular archive.

What is a seeder?
A seed(er) is a client on the BT network that has a complete copy of a particular archive. For any archive to work, there must be at least one seed to download from originally. Sometimes under certain circumstances, there may be no one seeder but enough people with all the parts to make up the whole archive, this is called a distributed copy. It is HIGHLY recommended that once you have gotten an archive you leave the BT client running for at least the amount of time that it took you to download the archive to help ensure that others will also be able to get it. Share and Share alike!

What is a leecher?
A leech(er) is a client on the BT network that does not have a complete copy of a particular archive yet. When any new client begins downloading an archive, they are a leecher until they have finished downloading the entire archive and then become a seeder. The name 'leecher' here is an unfortunate use that has become too commonly used even though it is really not applicable to what the meaning is. A leecher normally means someone who downloads without uploading (takes but does not give.) But here, a leecher is part of the network and is uploading as well, many times more KB than they download. But hey, it's worth the new meaning once you appreciate the vast resources that BT brings to you.

What is a .torrent file?
To download something with BitTorrent, you must have a .torrent file. This file contains in it a location that tells the BitTorrent client where to go to find the tracker that manages the uploading and downloading of the archive. An archive is a complete set for downloading which may include one file or many files. The one .torrent file contains the archive information also. To download on this network it is simply a matter of clicking on the .torrent file in your web browser, then the BitTorrent client kicks in and asks where you'd like to save the archive. That's it, from there you just sit back and watch the client work it's magic.

bt_banner.jpg, 2003-10-29

Five
2020-03-23, 11:39 AM
some countries have standards for stereo microphone placement, and if you violate these national policies you lose your job! there is NOS (Germany), RAI (Italy), some others probably, and then there is ORTF (France). Every taper in the world seems to prefer this calculable re-creation of the French airwaves.

while Alan Blumlein recommended only near-coincident techniques, here Michael Williams explores stereo pairs with alternative spacing and angles, presented at the 75th convention of the Audio Engineering Society at Nogent-sur-Marne (https://en.wikipedia.org/wiki/Nogent-sur-Marne), France 1984-03-27 -- 1984-30-30
https://microphone-data.com/media/filestore/articles/Stereo%20zoom-10.pdf

at Michael's retro 90s site you can still download many AES white papers free without the usual paywall. these are 'retro' 80s versions, made on a typewriter with hand-drawn graphs then copied on a machine that stinks of chemicals, including 'the stereoscopic zoom' first print. the upper-right link contains a nice online general purpose guide to stereo microphone theory. following Michael's advice you can hook up way too many microphones and get the mathematics straight.
http://www.mmad.info/

Five
2020-03-23, 12:10 PM
ORTF diagram

Five
2020-03-23, 12:19 PM
Blumlein pair (https://en.wikipedia.org/wiki/Blumlein_pair), used by Bruce Swedien on 'thriller'. Bruce positions them straight up and down, capsules head to head nearly touching.

Five
2020-03-23, 03:32 PM
an in-depth article about Blumlein M/S Stereo, 1986
https://www.audiosignal.co.uk/Resources/Stereo_shuffling_A4.pdf

I don't think it is realistic sound at all, this is used a lot in television and certain led zeppelin songs. not very useful to tapers, but worth a look as its Blumlein's 'other' stereo configuration, and its brilliant.

Five
2020-03-23, 06:58 PM
Hi-Fi & Record Review, July 1981 the original "Faulkner Array" article

downloadable as pdf in 4 parts here:
http://www.sengpielaudio.com/TonyFaulknerPhasedArray06.htm

Tony Faulkner reveals his approach to recording classical professionally with a pair of figure 8 microphones, spaced and facing forward. in recent years he has added two omni ouriggers at about 60-61cm and he wiggles everything a little bit until it sounds just right. he chooses to tape in a way very similar to ours as opposed to close-micing every last thing until it sounds like every member of the orchestra is only one inch from your face.

also, check out the front page of that site.. still with animated gifs everywhere! :cool:
there's more good articles to be found, especially if you read german
http://www.sengpielaudio.com/