Copyright: MP3ext Help file V2.2


MP3ext V2.3 Contents

Contents of this help-file:

About this extension

MP3Ext is an extension for the explorer. It adds a new page to the properties-menu of MP3-files. It shows all info about the mp3-file, e.g. the playlength, bitrate, sample-frequency, and the ID3-Tag if the file has got one. You can even edit the ID3-Tag, and scan whole directories.

New in V2.3?

Installation

Usage of MP3ext

License and Registration

Translations

FAQ

Programmer Info

Addition to the ID3-Tag: The Track-field

Author

The latest version will always be available at:

http://tick.informatik.uni-stuttgart.de/~mutschml/MP3ext/MP3ext.html


New in V2.3
What’s new in V2.3?

Version 2.3 has only one big enhancement compared to V2.2:

The definition of a track for a MP3. See the section New Track for more information of how this is handled.


Track Specification
Specification of the new track-field in the ID3-Tag

I always missed the feature of specifying the track of the module from the album it originally comes from. Or how to obtain the original order of all MP3s of an Album.

Now I found a solution, which is compatible to the ID3-Tag, and let’s you add a track-number: This is done due to the cost of the comment field beeing reduced to 28 characters, or leaving the full 30 characters to the comment, and having no track-info. I use the comment-field, because a) it is rarely used, b) comment is too short to be useful, so it doesn’t matter if it’s 30 or 28 chars long.

For all of you programmers, this is my method of doing it:

First, it is not defined on how to fill a field in the ID3-Tag. Some do it with spaces; I prefer padding with the null-character (better for C). So, if there is a null-char, then the rest of the field is unused. So you simply need to check if character 28 in the field is null, then character 29 contains the track- number, which is unsigned. Here is some pseudo code to do this:

Comment: Array [0..29] of unsigned byte;

Track: unsigned byte;

if (Comment[28] = 0) then

Track := Comment[29];

else Track := 0;

This will get a track of zero even if the track cannot be read. And a track of zero should be treated as the “unknown” Track. It even works correct, if the comment is 30 chars long!


Installation

Quite simple: Extract all the files of the zip archive in a temporary folder (which you probably have already done; otherwise you can't read this file), then right click on the file MP3ext.inf and choose "Install". There is no need to configure the language; it is chosen automatically, depending on the language of the operating system. finished!

Update: If you want to update the program, there is no need to do an uninstall of the previous version. Simply install the new version; the old entries will be replaced!

If there is a request for a disk, or something like that, then the directory from which you install contains long filenames. Just copy the files to a directory with short names (e.g. C:\TEMP\) and do the installation from there. After installation, you can delete the files from the Temp-Directory.

In the case you want to change the player: first uninstall MP3extension, so the property-page of the old player get’s removed, then change the player. After this install MP3ext again, so the new association with the mp3-extension gets the MP3-Info page.


Usage

V2.2 has got a completely rewritten interface. Even if you have used this extension before, you should read this section carefully.

The upper fields are general MP3-information which are read-only. The lower part is the ID3-Tag, which can be changed. The strings are limited due to the specification to a maximum of 30 characters. Except the year, which is 4 chars long. Input is rejected, if you want to type more. Click on the buttons in the screenshot, to see the appropriate information for the specific fields.

Further usage:

Searching

Multiple files

Analyzing (the scan button)

Using the actions

Overwriting the default language (NT only)

Configuration


Searching

This is the function, which I let all of you search for.

If you select a bunch of MP3s (e.g. recursive on a whole Harddisk), and you want to know where a special file is, you can search in the list MP3ext curently has got: simply hold down the shift-key while selecting something in the drop-down list of the fields. The next file with this field will get the current one.


Configuration

The configuration is used for setting global settings (the section below) and for managing the actions (above)

Actions:

The 4 fields of an action can be edited. Then you can save it to a specific file. You can load them too, and undo all the action to the point, where you started from when opening the configuration window. What you can enter in the fields is described in the section edit actions.

Global Settings

Here you can enter the path to the actions (or select it via the directory-requester on the right of the input field). Below is a button, which adds the Page to all known extensions. See the FAQ, on how to extend the list of extension. This is useful, if for some reason (e.g. new player) the MP3-association has changed, and you only get this extension on the folder-propertypage.


Language
Overwriting the default language

This is a NT-specific feature only. Win95 doesn’t support changing the language of a single process. Perhaps this will change in Win98.

 If you do not like the default language, you can specify a new one by your own. All you have to do is change the following key in the registry:

HKEY_CURRENT_USER\Software\MM\MP3ext\Language

Possible values are:

•	default

•	german

•	croatian

•	czech

•	dutch

•	english

•	finnish

•	french

•	hebrew

•	hungarian

•	norwegian

•	polish

•	portuguese

•	romanian

•	serbian

•	spanish

•	swedish

•	russian

•	turkish

•	indonesian

The recognition is case insensitive, so it doesn’t matter if you write “english” or “English”. If a language isn’t recognized, the user-default-language is used.


Multiple files

New in V2.2:

If you do any changes to the MP3s, everything is done in memory. Only if you click on Apply, the changes are written to the files. This is true for all actions, even for scan & remove.

Since V2.1 multiple files are supported. Therefore there are some things, which need to be explained: You are given the total time, and the average time of all MP3 files. The number of read files is given too (including the number of files which actually have an ID3-Tag). If the MP3-files have different properties, i.e. you have selected a file with a bitrate of 128000 and 56000 the bitrate field displays "128k, 56k". The same applies to the other fields too (Mode, Layer, Freq, Version). Since this multi-info-feature uses much space, I am using abbreviations, such as 128k for 128000 or 44k1 instead of 44100. The mode field has the following abbreviations:

JS=Joint-Stereo, S=Stereo, DC=Dual-Channel, SC=Single-Channel

Editing multiple files:

The first file, which is being scanned is displayed. In fact it's the file which is the selected one (the one you right-clicked on). You can click through the files by using the ‘>‘ and ‘<‘ buttons.

On the left side of the edit-fields you have a check-mark. If this is checked, the associated field will be copied to the next MP3 you are going to edit. This way you can set defaults for the rest of the files.

The next feature is the drop-down list, which contains the strings of all scanned files which have a valid string in this field. The only exception is the genre, which has a predefinied list.


Analyze
Analyzing MP3

Pressing the scan-button analyzes the filename of the MP3 and, and tries to figure out the title, artist, track and genre. If they are found, and the corresponding field is empty, they are filled in.

The function is quite complex, and tries to do the things as good as possible. You probably want to try it out, and it hopefully will get everything right. But since there is no standardized way to call your files, this is just a try. Here are some hints for the scanning-process:

•	If there aren’t any spaces in the filename I am searching for a character, which will be replaced by spaces. The character which occures most often from the following set will be the one being replaced: “-“, ”.”, “_”.

•	The seperation character is searched from the same set of characters as above. That’s the one with the least occurences.

•	Strings surrounded by brackets or quotes will stay together. Brackets inside of brackets are skipped.

•	The track is a number consisting of 1 or 2 digits. If there are more digits in a row this number isn’t a track anymore.

•	After doing the things above, the filename, and current directory are splitted in fields. If there is a track-field anywhere the one is used, and removed from the array.

•	If the directory-name is a genre, then the genre is filled in.

•	At least, the fields are scanned this way:
a) file has 1 field: file: TITLE, directoy: [ARTIST-]ALBUM
b) file has 2 fields: file: ARTIST-TITLE, directory: [ALBUM]
c) file has >2 fields: file: ARTIST-ALBUM-TITLE

OK, now for a few examples, which are recognized:

(artist)-title.mp3, C:\Pink Floyd – The division bell\High hopes.mp3, ACDC - 02 -T.N.T..mp3

I hope the analyzer satisfies your needs. If not, send me an email with the filenameand complete path, then I will try to add a recognition of the format.


Action
Using the Action-functions

The actions are the main enhancement over the previous versions. The actions are used for exporting the MP3-data you can see into a file or a clipboard. If you specify a file, the file will be executed, after it has been generated, just like a double-click on the explorer. Therefore you can even treat them as a kind of macro. You can for example make your own renaming of the MP3s by creating a batch-file, or create a html-file which will be shown immediately, or simply copy an album to the clipboard. The clipboard has the advantage of being able to use the data directly in another program such as a word-processor of graphic program. It helps a lot when you create covers for CDs...

How are they used?

How do I manage them?

Creating your own ones

Format of the action-files


Action Usage
How are they used?

The action-button changes ist name each time you select a different action. If you left-click on the button the last action will be executed on the current file. If you hold down the shift-key, all files will be used.

When pressing the right button over the action-button, you get a list of all available actions, and the selected one will be executed. The trick with the shift-key works here too.


Action Management
How do I manage them?

The first thing about them is, they are pure ascii-files, which can be edited with any text-editor, such as notepad. They are stored in a directory which can be set on the config page. The directory is scanned when you get the action-menu the first time (and after clicking OK, on the config-page).

On the config page you can load and save them. When you click on the load button you automatically get a requester pointing to the current ActionPath. The same is done for the saving too. When clicking OK, the current edited is not set automatically; you have to select a new one with the right button.

The Actions of MP3ext have the extension “.mp3a”


Action Editing
Editing the actions

An action consists of four entries:

1.	ActionFilename: This is the filename you wish to write to. You can use environment-variables too like %TEMP%; they will be expanded automatically. After the environment-variables are expanded, the keywords are replaced. So you can e.g. use the album-name as a part of the filename. A special meaning has got the filename called “Clipboard”. If you use this, no file is generated, but the data is copied into the clipboard. Be sure that the resulting size does not exceed 64kb! This is a limit of Windows! Future versions of windows might not have this limit.

2.	ActionHeaderFormat: Here you specify the format of the header. The header will be written once before the files are written. If you use MP3-specific data here, then the data of the first MP3 will be used.

3.	ActionFileFormat: Here you specify the format of the files. This is written for all the files.

4.	ActionFooterFormat: Here you specify the format of the footer. The footer will be written once after the files are written. If you use MP3-specific data here, then the data of the first MP3 will be used.

The syntax is the same for all three entries. Keywords are entered as "$(keyword)" and if you want a "$" you have to enter "$$". In addition I added some special characters too for more flexibility:

\a -> Bell

\b -> Backspace

\f -> Formfeed

\n -> New line

\r -> Carriage return

\t -> Horizontal tab

\v -> Vertical Tab

\\ -> single '\'

Some information, you can use is specific to an MP3. In order to have some useful values in the header and footer, this info is taken from the first selected MP3. This way you can for example make a list for a complete album if you use the following template, when you select all the files from the album:

ClipHeaderFormat:	"Artist: "$(artist)" Album: "$(album)" Total Time: $(tottime)"

ClipFileFormat:	"$(number): $(time) - $(title)"

ClipFooterFormat:	""

When the Filenames are sorted in the order of the tracks, and you right-clicked on the first one, you get a quite useful listing of a complete album.

e.g. the files: love1.mp3, love2.mp3, love3.mp3, love4.mp3, love5.mp3

would result in:

Artist: "Dire Straits" Album: "Love over gold" Total Time: 40:54

1: 14:13 - Telegraph road

2: 06:43 - Private investigations

3: 05:48 - Industrial disease

4: 06:15 - Love over gold

5: 07:55 - It never rains

Now the list of keywords:

(some entries can be retrieved in two types: abbreviated and normal. The abbreviated version returns a short version of the info. i.e. 128k instead of 128000.)

album	-> album from ID3

artist	-> artist from ID3

avgtime	-> average time

bitrate	-> bitrate

br	-> bitrate abbrev

comment	-> comment from ID3

count	-> # files

curdate	-> current date with the format mm/dd/yy

curtime	-> current time with the format hh:mm:ss

file	-> file with path (the same as $(path)\$(filename) )

filename	-> filename without path

filesize	-> size of the file in bytes

genre	-> genre-string from ID3

layer	-> layer-string

mod	-> mode abbrev

mode	-> mode

mpegver	-> MPEG version

number	-> current number of the file

path	-> path without filename

samplefrequency	-> sample frequency

secavgtime	-> average time in seconds

sectime	-> length in seconds

sectottime	-> total length in seconds

sfreq	-> sample frequency abbrev

time	-> length of mp3

title	-> title from ID3

tottime	-> total time

track	-> track number from ID3

track2	-> track number from ID3 formatted with 2 digits, and leading zero if necessary

volume	-> Name of the Partition, the MP3 is located; Volume-name of the disk

year	-> year from ID3


Action Format
Fileformat of the actions

For those, who want to create the files on their own, can do so with every text-editor, such as notepad. The files is constructed as follows:

[ActionFilename]

<file>

[ActionHeaderFormat]

<format>

[ActionFileFormat]

<format>

[ActionFooterFormat]

<format>

The Keywords must start at the beginning on a line; and the format can be several lines. The beginning of the file can contain anything; I start reading when I have found the first keyword.


License
Warranty

I am not responsible for any damage done by this prgram. You use it at your own risk.

Distribution:

Anywhere, as long as the following files stay together:

File_id.diz	actions\Clipalbum.mp3a

MP3ext.dll	actions\Clipdefault.mp3a

MP3ext.hlp	actions\ExecHTML.mp3a

MP3ext.inf	actions\ExecPlaylist.mp3a

Readme.txt	actions\ExecRename.mp3a

actions\Readme.txt

Registration:

This program is not crippled in any way. Since Version 2.2 I changed my opinion of freeware, and now it’s Giftware: this means, if you like it, send me a gift of which you think is appropiate for this program. If you want to send me money, please note that a money-order or any other kind of cheque from other countries than germany cost very much, so if you do so, please send it by cash.

My Address is:

email:

amiga2@info2.rus.uni-stuttgart.de

snail-mail:

Michael Mutschler

Somborer Weg 11

71067 Sindelfingen

Germany


Translations

If you want to do another translation, feel free to do so. But you should have an email-address, so you can send me the translated files. For more info about it, check out the following www-page:

http://tick.informatik.uni-stuttgart.de/~mutschml/MP3ext/Translation.html

Thanks must go to all people who helped me with the translations. Here are the guys which have done them:

Current Languages:

German	- myself

English	- myself

French	- Gilles Reichert	mailto:snark@ping.be,

WWW: http://www.ping.be/snark

Finnish	- Pasi Ruhanen	mailto: pasiru@dlc.fi

Dutch	- Maarten van der Meer	mailto:Webmaster@maarten.demon.nl

Polish	- Adam Lesieñ	mailto:ditalesi@pbg.pl

WWW:http://friko.onet.pl/ld/adlee

Czech	- Ales Berka	mailto:aberka@usa.net

WWW:http://jakub.naf.cz/~aberka

Romanian	- Mircea Galut	mailto:mircea@elcom.ro

WWW:http://www.elcom.ro/mircea

Russian	- Igor Muzykantov	mailto: rsr@the-lair.com

Turkish	- Orcun Atakan	mailto:oatakan@ibm.net

WWW:http://students.itu.edu.tr/~ee93676

Danish	- Jacob Nørgaard	mailto: jacob_tf@image.dk

Hungarian	- Nadasi Peter	mailto: nadasi@westel900.net

Indonesian	- Henry Taruna Wijaya	mailto: acs.i@usa.net

Portuguese	- Pedro Barreto	mailto: pedrobarreto@mail.telepac.pt

Norwegian	- Trond Aage Langtind	mailto: trondl@nonaim.com

Greek	- Konstantinos Sambanis	mailto: K.Sambanis@e-eng.hull.ac.uk

Serbian/Croatian	-Marko Ristic	mailto: markor@cyberdude.com

WWW: http://terra.elfak.ni.ac.yu/marko

Spanish	- Paco Romero	mailto: paco@subred.org

Swedish	- Martin Nilsson	mailto: martin.nilsson@bigfoot.com

Italy	- Prezioso!	mailto: sphx@hotmail.com

Hebrew	- Oren Chapo	mailto: oren_ch@inter.net.il


Author

If you have any further questions, here is my adress:

email:

amiga2@info2.rus.uni-stuttgart.de

snail-mail:

Michael Mutschler

Somborer Weg 11

71067 Sindelfingen

Germany

The latest version will always be available at:

http://tick.informatik.uni-stuttgart.de/~mutschml/MP3ext/MP3ext.html


FAQ

"I don't see the page on my system?"

Make sure, that the .mp3-association has got the property-page set. This can be the case, when a new player uses a new link in the registry. You can update the link by executing the following command:

rundll32.exe MP3ext.dll,Install

If the folder-property-page still contains MP3ext, you can use the associate-button on the config-page to reassign MP3ext to the current supported files.

"I have a MP3 with different extension which isn’t recognized"

For better performance on the scanning of directories, I am filtering the files, and only files with a specific extension will be scanned. These are by default .mp3, .mp2, .msf, .l3p.

If you have for some reasons, MP3s which have another extension, you can extend the list in the following registry-key: HKEY_LOCAL_MACHINE\Software\MM\MP3ext\Extensions.

If you want to have the page registered with a new type, just update the links with the command shown above.

 "All the Registry entries are OK, but there is still no page displayed"

Check out if you have msvcrt.dll in your windows\system (NT: winnt\system32) directory. If not, get it at: (133kb) http://tick.informatik.uni-stuttgart.de/~mutschml/MP3ext/msvcrt.zip

"The tips above didn’t help”

Send me an email about your problem (amiga2@info2.rus.uni-stuttgart.de). Please don’t forget to tell me which OS you are using (NT4.0, or Win95 OSR2, ...) and which version of MP3ext you are using.

Due to the limitations of the "miserable" specification of the ID3-Tag, all the strings have a maximum of 30 characters; except the year, which is 4 chars long. The genre is a predefined list, not extendable. So don't ask me for further categories... Perhaps one should define a better specification....


Programmers
Programming support

Since so many people ask me for the information on how to read the MP3-Info, and the specification of the ID3-Tag, I have now exported a function, to read this information. I haven’t wrote much documentation for it, and support is currently only for C. If you want to use it in another programming language, you have to write your own interface-files. There is a small C-example, which shows how to use it. The stuff for programmers is in a seperate archive available at

ftp://ftp.uni-stuttgart.de/pub/systems/win95/tools/shell/mp3ext22progr.zip

But I would appreciate, if you send me the files, when you have done that, so I can make it available to all the others.

Attention: Call the function via it’s name, and not via it’s offset! The offset is likely to change in future versions!


Songname

Enter the title of the song here.

Holding down the shift-key while selecting

anything from the dropdown-list, will search

for this title.

This field has a maximum of 30 chars.


Artist

Enter the artist for this song here.

Holding down the shift-key while selecting

anything from the dropdown-list, will search

for this artist.

This field has a maximum of 30 chars.


Album

Enter the album-name on which this song

is found.

Holding down the shift-key while selecting

anything from the dropdown-list, will search

for this album.

This field has a maximum of 30 chars.


Year

Enter the year when this song was released, here.

Holding down the shift-key while selecting

anything from the dropdown-list, will search

for this year.

Enter it as a 4 decimal number, e.g. 1997.


Genre

Select the genre for this song here.

Holding down the shift-key while selecting

anything from the dropdown-list, will search

for this genre.

You get a list of all available genres,

if you klick on the drop-down menu.


Comment

Enter any comment for this song here.

Holding down the shift-key while selecting

anything from the dropdown-list, will search

for this comment.

This field has a maximum of 30 chars.


Track

Here you can specify the track of the original Album this song belongs to. You can choose one of the dropdown list, or enter a value 0<=value<=255. This is a new feature of the ID3-Tag, and it is only written, if the comment is smaller than 29 characters. There will be an option in the future to force writing the track, and cut the comment to a length of 28 characters, if a track is specified. The track “0” means there no specific track given.

Holding down the shift-key while selecting anything from the dropdown-list, will search for this track.


Copy Songname

Clicking here copies the songname

to all MP3s


Copy Artist

Clicking here copies the artist

to all MP3s


Copy Album

Clicking here copies the album

to all MP3s


Copy Year

Clicking here copies the year

to all MP3s


Copy Genre

Clicking here copies the genre

to all MP3s


Copy Comment

Clicking here copies the comment

to all MP3s


Total time

This field displays the total length

in seconds, of all MP3-files.


Average time

This field displays the average length

in seconds, of all MP3-files.


Layer

This field displays the layer-version

of the MP3(s). Currently, only layer II

and layer III are supported.


Bitrate

This field displays the bitrate

of the MP3(s).


MPEG-Version

This field displays the

MPEG-version of the MP3(s).

This can be 1, 2 or 2.5.


Count

This field displays the number

of MP3s, and how many of them

have an ID3-Tag. During the scan

the field is prefixed by a ‘s‘.


Mode

This field displays the mode

of the MP3(s). Possible values are:

   Single-Channel (SC)

   Joint-Stereo (JS)

   Dual-Channel (DC)

   Stereo (S)


Sample Frequency

This field displays the sample

frequency of the MP3(s).


Scan

This scans the current MP3, and tries to figure out

the artist and title from the filename. If successful,

the fields will be filled in, if they are empty.

See the help-file for more information about the

scanning.

Shift-Scan

All MP3s are scanned.


Undo

Rereads the information of the current MP3.

Shift-Undo

Holding down the shift-key while pressing

Undo rescans all MP3s.


Clean
Remove

Removes the ID3-Tag of the current MP3.

Shift-Remove

Holding down the shift-key while pressing

Remove removes the ID3-Tag of all MP3s


About

This field displays the current version of this shell-extension,

and some info where to get it.


Next

Displays the next MP3 for editing.

Shift-Next

Holding down the control-key while pressing

Next jumps to the last MP3.


Previous

Displays the previous MP3 for editing.

Shift-Previous

Holding down the shift-key while pressing

Previous jumps to the first MP3.


Clip
Actions

Executes the current action with the current MP3

Shift-Action

The action is performed with all MP3s


Filename

Here you see the filename of the current MP3.

Before the filename, the current position in the list

of the MP3s is shown. If it’s surrounded by

square brackets ‘[]‘, then the MP3 is unchanged.

If it’s surrounded by round brackets ‘()‘, then the

file has been changed, and will be saved when you

click on Apply. At least, if you see curly brackets ‘{}‘,

then the file is read-only and not changed, no matter

what you enter.


Config

It you press this button, a new window will

appear, where you can change the current

settings, and manage the actions.


Homepage

Klicking here starts your favorite Web-browser

and gets you to the homepage of MP3ext.


Force Track
Force ID3-Track

Clicking here will force writing the track-info,

and will truncate the comment field. Otherwise

the comment field will be written, if it has more

than 28 characters.


Scan directory
Scan directory name

If this field is selected, then the directory name

will be scanned to during the analyzation.


Action Path

The path will be used to scan for actions. All files with

the extension “.mp3a” are actions, and its filename is

displayed in the actions-popup.


Get Action Path

Here you get a requester to select

the path for the actions.


Language

Here you can change the language which will be

used, the next time you start MP3ext. This feature

only works on Windows NT.


Associate
Associate extensions

This will add the extensions to all known MP3 extensions.

The same is done when installing the extension. The button

is useful, if you have installed a new player, and the extension

is only accessible through the folder-properties. Then you

can re-associate the extension.


Help

Simply calls the Help-file


EmptyDefaults
Use empty default fields

If this option is checked, then the ID3-fields will be

empty, when there is no ID3-Tag. Otherwise they are

filled the string “none”


Action Filename

Here the filename Action-file is enetered. In this file,

the data is written. You can use environment-variables

here too. And keywords are too possible.

e.g. %TEMP%\$(album).txt

A special meaning has got the word “Clipboard”: If

You specify this, the data goes to the clipboard.


ActionFilename
Get Action Filename

A requester will pop up, so you can select an existing

File for the action-filename


Action Header

Enter here the data for the action-header.


ActionMain
Action File

The data here will be used on every MP3.


Action Footer

Enter here the data for the action-footer.


Action SaveAs
Save As

You will get a file-requester to save the

current edited action.


Action Load
Load

You will get a file-requester to load an action.


Action Undo
Undo

This will restore the action from the memory.

It is the last action used in the main window.