SYLT Lyrics Plugin for Winamp 1.3.0

2003-2004 Patrick Giasson
portions (c) 2003 Tony Cebzanov
using mp3tool (c) 2000-2002 Mark Lord
and using vbid3lib 2002 theFrogPrince

Latest changes are in BLUE

What it's all about?

SYLT Lyrics plugin is a plugin that enables winamp users to view, edit and save songs lyrics directly into SYLT frames. I think it's the first and only program that does so (beside command-prompt lrctool from Tony Cebzanov)


Installation

Simply run the install (.exe) and specify your winamp folder.


If you have trouble starting the plugin (missing dll error), be sure to install the Dependencies, and if it still fails, you might give the vbrun6sp6 a try too. The links to all these felies is on the homepage, under "download"

Usage

First, let's check the settings (Menu Options/Settings):

File Format Priority
Put the format in which you would like to save your timestamped lyrics at the top of the list, using the arrow buttons. The order in which the different formats appear also set the order in which they will be looked for when you play a file. Lyrics3 is in the list, but is currently not implemented. Do not put it first: Lyrics won't be saved. Read from lyrics3 does work though, and is performed by the library I use to read SYLT frames. The dashed line is the cut: The sources listed above the cut are used, those under are not. Useful if you don't want to use internet: Move the cut above "Sing365", "All The Lyrics" and "lrcDB" and it won't try to connect.
Erase other format when found
If checked, the plugin will erase all the formats of lyrics it founds, except the one at the top of the list, of course. This option is useful if, for exemple, you have all your collection of lyrics saved to lrc files and you want to transfer them to SYLT frames. Simply check this option, then play all your songs, and press Ctrl-L then Ctrl-T. This will enter "Edit Mode" and immediatly save lyrics to SYLT. Then, it will erase the .lrc file.
Show in taskbar
Check this option if you want to see the SYLT plugin in the taskbar. If you uncheck this option, you must restart winamp to see the change.
Hide Scrollbar if lyrics are sinced
Hide the vertical scrollbar in "Sing mode" if lyrics are timestaped. You can still move around with the mouse wheel. If no timestamps are found, scrollbar will be visible.
Snap to Act like a Winamp Plugin
With this option checked, the plugin will follow Winamp window. Move the plugin around by dragging it as you want it in relation with winamp, the move winamp and the plugin will follow. If you minimize or restore winamp, the plugin will do the same. Finally, with this option checked, the plugin won't show in the taskbar.
Automatic Hide
If checked, the lyrics plugin will only show if it finds lyrics. If not, it will hide itself. Bring back the plugin, select it from the winamp menu "SYLT Lyrics Plugin", or press Ctrl-Y in winamp.If you're in the process of tagging a number of songs, you should not enable "Automatic Mode" as the plugin will disappear each time a new song is selected. This option is useful if you're listening to songs in winamp, and dont want to see an empty window if there are no lyrics.
Automatically adjust window width
Use this option to make the plugin window adjust itself to the lyrics it displays.
Trim Lyrics Lines
Use this option to make the plugin remove the leading and trailing spaces and trailing punctuation.
Mouse down for timestamp sync
If checked, the timing of the insert timestamp when mouse button is clicked is on the press of the mouse button. Otherwise, it's on the release. The insertion is always done on mouse release; this option only changes the timing.
Start with Winamp
If checked, the plugin will start whenever winamp is launched. Otherwise, it'll wait for user input (Ctrl-Y or winamp menu).
Auto "Click-as-you-Sing"
When in Edit Mode, the plugin will go into "Click-as-you-Sing" mode automatically, depending of Winamp Status. If winamp is playing, it will enter that mode and return to Normal Mode when winamp will stop. You can bypass this all the time by pressing CTRL-D.
Allow selecting when in "Click-as-you-Sing"
When you are in the "Click-as-you-Sing" mode, timestamps are inserted when you release the mouse button. If you select this option, you can select text (by pressing the button and moving the mouse), and a timestamp won't be inserted on release of the button. This way, you can still correct typo when you timestamp a song, without leaving the "Click-and-Sing" mode.
Show Incorrect Timestamp Error Message
If checked, the plugin will try to correct any bad timestamped line and will add an error message on the lines these lines. Error that it can catch are: timestamp larger than song running time, smaller than 0.
Create backup
This plugin is still in developpement, and if you're paranoid (or careful ;-), you can check this. When asked to save, the plugin will make a backup copy of the original mp3, untouched as "OriginalName_SYLT_backup.mp3"
Check for new version at startup
If checked, the plugin will check once a week for a new plugin version. If a new version is released, a popup will inform the user. The popup will only reappear if another new version is released. It's possible to check manually for a new version with the menu "Help / Check for New Version"
Allow saving even if not in edit mode
Pressing Ctrl-S, or using the menu "Save" will save the lyrics, even if the user wasn't in Edit Mode. It allow users on dial-up connection to seek through a bunch of mp3, saving rapidly the lyrics retrieved from the net to minimize online time, without going to edit mode for each. I don't recommend turning this option On otherwise.
Use lrcDB
lrcDB is a central repository for time-tagged song lyrics. To be able to retrieve lyrics from this site, you must first register there, then select this option and then enter you login/password in the following fields.
AutoSave when lyrics found
The lyrics found at lrcDB are already timestamped by other users: You should not have edit them. Normally, the plugin only saves lyrics when you "Enter Edit Mode" and then "Save". With this option, if the lyrics retrieved from lrcDB are a perfect match (Exact Artist, Title AND Album as id3 info in your mp3), the plugin assumes the lyrics are OK to be saved and do so immediatly after getting them from the site.
Use Proxy
If you need to use a proxy, enter the settings here. This is not thoroughly tested. There could be a lot of bugs introduced with this option. Keep me informed of how it works for you
Timestamp format
This option is there for compatibility issue if you use other programs which read timestamp. If it's not the case, simply let this option to "Long". It will increase accuracy.
Timestamp adjustment
Use this field to "compensate" your reaction time in "Click-as-you-Sing" mode. The time placed here will be added to playing time when the timestamp is inserted. If you always click half a second too late, type -0.5 here and that half second will be compensated.

Here is a typical workflow to put lyrics in mp3

Without Internet

  1. Open the mp3 in winamp
  2. Stop it, if it's already playing
  3. Enter "Edit Mode" by pressing Ctrl+L . If the popup "Open Location" appears, it's because the plugin didn't was not selected. Press cancel and then click on the plugin to select it, the try again.
  4. Paste the lyrics you previously found from the web, or type them in. (As guideline, insert a blank line at the top, at bottom and between verses. You'll use them to tag respectively the time [00:00], the time at wish the silence between two verses begin and the time at which the last lyrics finish. This will be helpful when you'll sing back and it will help if you use emphatic for those with an empeg)
  5. Enter "Click-As-You-Sing Mode" by pressing Ctrl+D
  6. Click on the first line. Depending of the type of timestamp you choose (short or long), you'll see either [00:00] or [00:00.000] appear. Begin to understand what we'll do next?
  7. Press play in Winamp. Then as soon as you sing each line, click on it. The time in the song at which you release the button will appear at the beginning of the line.
  8. Empty lines should also be timestamped. Use this to indicate the beginning of silences in the song. It's important to do so if you use multiple timestamps per line: When sorting the lines in correct order, the ones without timestamp are remove. If you don't timestamp empty lines, all the lyrics will appear as a single long paragraph.
  9. Select menu "Reformat Lyrics" to recalculate the "Token" timing (on the left). Press "Play" in winamp. When you're all done with timestamping your song, press Ctrl+T to save the lyrics.
  10. Watch the "token" on the left part of the window. It scrolls exactly like the real lyrics would do in "Sing Mode". If you notice any lag/lead, adjust the time accordinly with CTRL-Up and CTRL-Down. You can repeat those two steps as long as you're not entirly satisfied by the timing. When you're all done with timestamping and adjusting your song, press Ctrl+T to save the lyrics. Return to "Edit Mode" and listen to the song once again. Watch the "token" and the left part of the window. It scrolls exactly like the real lyrics would do in "Sing Mode". If you notice any lag/lead, adjust the time accordinly with CTRL-A and CTRL-B. When you're done, save again. Note that the timing of the token is updated only when you save the lyrics. If you want to check if the adjustements you made are ok, save the lyrics, then come back again in "Edit Mode"
  11. That's all! Lyrics are now saved and will come up every time the song is played.

With Internet

To use this method, you must have at least one of the following sources above the line (in the settings): lrcDB, AllTheLyrics, Sing365. You can also use this method by pressing CTRL-I (Search on Internet)

  1. Open the mp3 in winamp
  2. Stop it, if it's already playing
  3. Wait for the lyrics to appear. It could take a while (up to 20 seconds on certain occasions). If the message "No Lyrics Found" appears in the titlebar, then you'll have to use the "Without Internet" way of doing things!
  4. If lyrics were retrieved from lrcDB and you selected "AutoSave Lyrics" in the lrcDB settings, you're done! Otherwise, you just have to save them to your mp3, by pressing CTRL+L CTRL+T.
  5. If lyrics were retrieved from another Internet source, they are not timestamped. Enter "Edit Mode" by pressing Ctrl+L . If the popup "Open Location" appears, it's because the plugin didn't was not selected. Press cancel and then click on the plugin to select it, the try again.
  6. Continue from point 5 to 10 of above
  7. Submit the lyrics to lrcDB by pressing CTRL+U

You can now submit correction to lrcDB. The program automatically determines if your submission will be a first time submission or a correction request. The color dot next to the Submit menu will be green on new submission and yellow on correction.

Here are a few keyboard shortcuts:

CTRL+Y
Show or hide the SYLT Lyrics Plugin
CTRL+E CTRL+L
Switch to "Edit Mode" (where you type/paste lyrics and add timestamps)
CTRL+S CTRL-T
Save the lyrics and switch to Run mode (where the lyrics will scroll with the music)
Esc
Quit "Edit Mode" and discard any changes made
CTRL+D
Enter/Leave "Click-As-You-Sing Mode". For this to work, you most be in "Edit Mode" first (CTRL+L). Then, by pressing CTRL+D, the mouse cursor switch from the I beam to an arrow cursor. When in "Click-As-You-Sing Mode", a click on a line will insert current playing time of the song. This is the way to timestamp your songs: Simply paste lyrics (or wait the plugin to get them from you from internet) and then press CTRL+D, press Play in winamp, and when each line begin, simply click on it. A new feature for 1.1 is support for multiple tags on the same line. This is useful to tag the chorus of a song. Each time you click on the text of a line, a new timestamp will be inserted at the beginning of the line. If you click directly on a timestamp, it's value will be changed to current time.
CTRL-Up CTRL+A
Add 250 milliseconda to the timestamp of the current line (the one with the keyboard cursor). 1 sec will be added instead of 250 msec if you're using short timestamp. You can do the same with the mouse by pressing the left button, clicking with the right button and then releasing the left button. This must be done directly on the timestamp you want to adjust. Otherwise, the first one on the line will be adjusted.
CTRL-Down CTRL+B
Subtract 250 milliseconds to the timestamp of the current line (the one with the keyboard cursor). 1 sec will be substracted instead of 250 msec if you're using short timestamp. You can do the same with the mouse by pressing the right button, clicking with the left button and then releasing the right button. This must be done directly on the timestamp you want to adjust. Otherwise, the first one on the line will be adjusted.
Shift-CTRL-Up Shift+CTRL+A
Add 250 milliseconda to all timestamps. This is useful if the lyrics retrieved from lrcDB are offset for the whole song (Not exact same song version, different ripping settings). 1 sec will be added instead of 250 msec if you're using short timestamp.
Shift-CTRL-Down Shift+CTRL+B
Subtract 250 milliseconds to all timestamps. This is useful if the lyrics retrieved from lrcDB are offset for the whole song (Not exact same song version, different ripping settings). 1 sec will be subtracted instead of 250 msec if you're using short timestamp.
CTRL+R
Remove the timestamp of the current line, if there is only one on the line. If there is more than one, you must first place the keyboard cursor one to erase it. You can do the same with a middle mouse button click on a timestamp.
CTRL+Shift-R
Remove all timestamps from the current file
CTRL+M
Show/Hide Menu Bar
CTRL+I
Try/Retry to get lyrics from Internet (lrcDB and Sing365)
CTRL+U
Submit the lyrics to lrcDB
Insert
Place a timestamp on the current line, as if you had clicked on it.
CTRL
Toggle momentarly "Click-and-Sing, without having to go by the menus twice.

Here are a few random tips:

To seek in a song to a desired lyrics, press the right mouse button on it and then left-click. Winamp will seek (FF or RW) to that specific line.

Known Issues

VBR MP3
VBR MP3 is a tricky format. This plugin handle it as well as winamp can handle it: it uses data from winamp and if winamp has trouble seeking in a VBR files, lyrics will be displayed (timestamped offset). To minimize (or prevent) imprecision, do not seek (fast-forward, rewind), or pause when timestamping a file. The same apply to listening: if you seek through the song, lyrics can become unsync. To reset this, simply stop and restart the song.
Lyrics3
Because it isn't recommended to use lyrics3 format to save lyrics to mp3, it is implemented in this lyrics as a Read-Only to help translate from that format. Maybe the write capability will come someday, but it isn't a priority for now.
Windows NT4, 2000 and XP
If you're not the administrator, it's possible that the auto-startup of the plugin won't work and you will get an error message saying that the DLL could not initialize. There's not fix for this, as this plugin rely on a wrapper to work. This wrapper need to write in the registry and cannot do so if you don't have the privileges. The lyrics_plugin.exe can still work, but you will have to start it manually after starting winamp. Simply create a shortcut to it on your desktop or in the start menu. Also, be sure to select "Show in taskbar", as there would be no way to call the plugin back. Version 2.0 should be written in C++ and will fix this problem.
Winamp Info Editor
Don't use winamp to update id3 tags in your mp3. I don't know why, but Winamp erases the SYLT tag in the id3v2 every time it updates the tags. Maybe it's the plugin's fault (maybe the tags created aren't following the exact id3v2 specs, though I believe they do), but every other tools I tried doesn't destroy the SYLT frame. There are a lot of great tools to edit the tags. Tag & Rename, Tag Studio are a few examples.

Files

The following files will be installed in winamp\plugins folder:

sylt_lyrics.dll 				- The plugin-caller, appearing in "General Plugins" in winamp
gen_sylt_lyrics.Plugin.dll 			- The wrapper used to interface VB plugins in winamp
\SYLT_Lyrics_Plugin\lyrics_plugin.exe		- The plugin itself
\SYLT_Lyrics_Plugin\mp3tool.exe			- Tool to fix VBR files (by Mark Lord)
\SYLT_Lyrics_Plugin\vbid3lib.dll		- DLL used to read/write frames in mp3
\SYLT_Lyrics_Plugin\msflxgrd.ocx		- VB control used to display scrolling lyrics
\SYLT_Lyrics_Plugin\mswinsock.ocx		- VB control used to communicate over internet
\SYLT_Lyrics_Plugin\tabctl32.ocx		- VB control used to display settings window
\SYLT_Lyrics_Plugin\readme.html			- this file

Copying/Distributing

This program is a Freeware, feel free to use it as you want. You can share it with friends, but please, don't take credit of it. As you didn't pay for it, please don't complain: If you don't like it, don't use it. Constructive comments and suggestions are always welcome! Source code is available on request. I learnt a lot doing this project: winsock, winamp plugin/interface and I'm willing to give back.

Thanks

Thanks Tony Cebzanov for your help in this project. Without your code from lrctool, this couldn't have been possible.

Thanks Mark Lord for mp3tool. It saves me a lot of trouble!!

Thanks to "The Frog Prince" for the VB version of id3lib, vbid3lib.dll

Release Notes

Version 1.3.0 (Stable)

Date: 2004-10-16

Version 1.2.1 (Stable)

Date: 2004-08-24





Enjoy!

Patrick Giasson
Last update: 2004-08-24