Copyright: Vocal CD Copyright ® 1994 James Robert Ray


Contents
Vocal CD v1.41

by Robert Ray

Welcome to the Vocal CD Help file.  This file can be viewed from within Vocal CD by hitting the F1 key.

Overview

Legal Issues

Regular CD Player Functions

Additional CD Player Features

Lyric Functions

Miscellaneous

Troubleshooting

Contacting the Author

Registering

Bug Reports

Finding the Latest Version

Revision History \ What's New in Version ...

Up and Coming


Overview

Vocal CD is a typical Windows CD player in all but one respect: it allows you to enter the lyrics to the songs on your CDs, and then time the words to the singer.  As the CD plays, it will load the appropriate lyrics and then scroll the words by as the performer sings them.  In other words, it is the bouncing ball effect (without the ball).


Legal Issues

Vocal CD is Copyright © 1994 James Robert Ray
All right reserved.

Vocal CD is shareware.  You may use it for thirty (30) days before you need to register it.  After thirty (30) days, you must either register it or delete it.  The unregistered version of Vocal CD may be distributed freely.
You may not modify or disassemble Vocal CD, or distribute modified, disassembled, or registered versions of Vocal CD.
Under no circumstances will the author be liable for any damages resulting from the use of Vocal CD, nor from any copyright infringements from unauthorized reproduction of lyrics in the course of using Vocal CD.  The author has not distributed Vocal CD with copyrighted materials, and may not be distributed with copyrighted materials.


Regular CD Player Functions

Program - Normal - Shuffle Switch

Repeat Tracks Button

Previous Track Button

Play Button

Stop Button

Next Track Button


Shuffle - Normal - Program Switch
Program - Normal - Shuffle Switch

In the center position, the CD player is in normal mode: the playlist consists of all non-deleted tracks, in sequential order.
In the left position, the CD player is in program mode: the playlist consists of the programmed playlist.

In the right position, the CD player is in shuffle mode: the playlist consists of all non-deleted tracks, in non-repeating random order.

Clicking on the button when the switch is in program mode will re-open the Customize Playlist Window.

Clicking on the button when the switch is in shuffle mode will re-shuffle the tracks.


Playlist
Playlists

A Playlist is the order in which the tracks on the CD will play.  A playlist can be generated by Vocal CD, or customized by the user.

Shuffling the Tracks

Deleting Tracks

Programming Tracks


Repeat Button

The repeat button, when lit, will start the playlist over again once it has played through.


Previous Track Button

The Previous Track Button will begin playing the previous track, unless the current playing track's position is past 2 seconds, in which case the current track will restart.


Play Button

The Play Button will begin playing the playlist if the CD is stopped, will resume playing if the CD is paused, and will pause the CD if the CD is playing.


Stop Button

The Stop Button stops the CD.


Next Track Button

The Next Track Button will begin playing the next track on the playlist.


Additional CD Player Features

Elapsed / Remaining Time Button

Current Track Combo Box

CD Progress Scroll Bar

Track Progress Scroll Bar

Resume Play

CD Info Button

Programmable Play Lists


CD Time
CD Time Button

The CD Time Button shows the elapsed time of the playing track by default.  Click on the button to show the time remaining of the playing track.


Current Track Combo Box

The Current Track Combo Box shows, from left to right, the current track's Track Number, Track Name, and Track Length.
You can choose a new track to play by selecting a new track from the pull-down list.
The tracks shown in the Current Track Combo Box are limited to the current playlist.


CD Progress Scroll Bar

The CD Progress Scroll Bar shows the current play list.  The thumb shows the current location of the CD.
Clicking to the left of the thumb has the same effect as the Previous Track Button.
 	Clicking to the right of the thumb has the same effect as the Next Track Button.
Click on the thumb and drag it to select a new position on the playlist.

The CD Progress Scroll Bar may be resized by clicking inbetween it and the Track Progress Scroll Bar and dragging to the left or right.


Track Progress Scroll Bar

The Track Progress Scroll Bar show the currently playing track.  The thumb shows the current location of the CD.
Clicking to the left of the thumb will seek a short distance earlier in the song.
Clicking to the right of the thumb will seek a short distance later in the song.
Click on the thumb and drag it to select a new position on the track.

The Track Progress Scroll Bar may be resized by clicking inbetween it and the CD Progress Scroll Bar and dragging to the left or right.


Lyric Functions

To create a new song, you first enter the lyrics to the songs, then time them to the song.  The Lyrics Button and the Timing Button are used for these tasks, repectively.

Lyrics Button

Timing Button

To make fine-tuning adjustments to an already-timed song, use the Edit Button.

Edit Button

You can customize the way the lyrics look, as well as other things.

Configure Menu Item


CD Info Dialog

Use this dialog to enter the artist, title, and track names for the CD currently in the drive, as well as to delete tracks from the playlist.
Use the tab key to jump between fields.  Pressing return will save and close the dialog.

Artist Edit Box

Title Edit Box

Track Edit Box

Tracks List Box

Play Check Box

Access Database


Resume Play

If the CD is playing when the program is exited or when the CD is removed, when the program is restarted, or when that CD is reinserted, it will resume playing from where it was before the exit/removal.  The play list is also saved so Resume Play will only play the remaining unplayed tracks when the playlist is shuffled. This feature is always active.


Artist Edit Box

Put the artist of the album here.  If there is no artist (e.g. a movie soundtrack CD), clear this box.


Title Edit Box

Put the title of the album here.


Track Edit Box

Put the track name of the currently selected track here.


Tracks List Box

Select the track number to change from this list.  Once selected, the track name can be changed in the Track Edit Box, or, the track can be added or deleted by using the Play Check Box.


Play Check Box

If you would like the currently selected track to not play, uncheck this box.  If this box is not checked, Vocal CD will act as though the track does not exist.  It will not show up in the Current Track Combo Box, nor on the CD Progress Scroll Bar.  To allow the track to play again, choose it from the CD Info Tracks List Box and check the Play Check Box.


Lyrics Button
Lyrics Window

The Lyrics Window is used to enter the words to the currently playing song.  The upper half of the window consists of an Edit box, where the words are places.  At the bottom of the window there are buttons that allow you to control the CD, among other things.

Lyrics Edit Box

"<<" Button

Pause Button

"<", ">" Buttons

Save Button


Lyrics Edit Box

Show the current lyrics, if any.  Type in the lyrics here.  The CD will continue playing to allow you to dictate from the CD.

Separate words into syllables with the caret (^) symbol.  Example: if the performer is singing "the sky is pur.....ple" you would type "the sky is pur^ple."  This is very important if you want words with multiple syllables to scroll by at the correct time.
Separating lines with a carriage return has no effect on the final output of the program, but is recommended for timing purposes.  A carriage return should be placed after every logical line sung by the performer.  Take care not to add any extra spaces at the end of each line.  The parser does not week them out at present.

Standard editing functions such as cut and paste are available from the Edit menu.


"<<" Button

This button causes the CD to seek back a few seconds, to allow you to hear what was just sung over again.


Pause Button

You can temporarly stop the CD to give you time to type in the words you just heard by hitting this button.  Press it again to resume play.  You do not have to unpause the CD before pressing the Lyric "<<" Button.


"<", ">" Buttons

Use these buttons to choose what Duet you are currently working on.


Duets
Duet

A duet is a separate line of words for a particular song.

When you go through the process of entering a song, and then are watching the lyrics, the words you typed in a timed all scroll across the screen along the same line.
If you define multiple duets for the same song, each duet will scroll on its own line.
Duets are useful if you have background singers singing different words at the same time as the lead singer, or, a song where there is a "duet": two people singing different verses.

Duets are limited to 10.  If there is a need for more, I can change this value very easily.


Save Button

Commits the lyrics to disk.  Caution: if you have timed the lyrics, but need to correct spelling or make minor changes to the words, do not make them from this window.  Changing and then saving the lyrics here will wipe out all timing data, resetting the values to 0.  To correct typos and insert or delete words or syllalbes, use the Edit Button on the main window.


Timing Button
Timing Window

This is the second and final step of finishing a song.  You must first input the lyrics before you can time them using the Lyrics Window.

  Timing a song consists of listening to the singer, and pressing a button or hitting a key each time a syllable is sung.

First Text Line

Second Text Line

Start Button

Oops Button

Hit Me

"<", ">" Buttons

Keep


Syllable

A syllable is the smallest division of a word.  In regards to Vocal CD, an entire word such as "tree" is considered to be a syllable.  Parts of a word, separated by the caret (^), are also called syllables.


First Text Line

This text line shows you the upcoming line about to be sung.


Second Text Line

This text line shows the progress of your timing.  It copies what is on the First Text Line, only it doesn't show the words that haven't been timed yet.


Start Button

Pressing this button will reset you current timing position to the beginning of the song, and begin playing the track.  Be prepared to hit Hit Me immediately if the singing starts right up.  Don't be afraid to hit the Start Button multiple times to get the timing of the first syllable correct.


Oops Button

This will set you current location back to the beginning of the line, and restart the music at the previous line, to alow you to regain your berings.  The oops button can be his as often as you like.

If you hit Oops at the beginning of a new line, it will set the position back to the beginning of the previous line, to allow you to correct mistakes made at the end of a line.

Don't worry if you can't get a particular phase dead-on.  Try to get as close as possible, and edit it later using the Edit Button.  If you leave out words, for find extra words, they can through you off too.  You do not need to leave the Timing Window to go back to the Lyrics Window to delete or add words.  They can be removed or added later using the Edit Button.


Hit Me

This button is the button to press when the current syllable you are on is sung by the performer.  This button always has focus, meaning you can press the button with the mouse, or hit the space bar, or hit the enter key, even after you pressed a different button, such as Oops.

I recommend leaving the mouse pointer over the Oops Button, and hitting the space bar as input.  This allows you to quickly hit the mouse button if you make a mistake.


Keep

Press this button after you've timing the whole song.  You will know you've gotten all the words when "End" appears on the First Text Line.


Edit Button
Edit Dialog

After you have timed the song, and are watching the words scroll by, the Edit Button will allow you to make fine adjustments to the timing, as well as fix typographical errors, and even add and delete syllables.  When you hit the Edit button, the syllable that will be brought up in the Edit dialog window is the next syllable (of the first Duet) to be played.  All other syllables are accessable from the Edit dialog window once it is open.

Prev Button

Next Button

Syllable Edit Box

Time Text Box

Sample Button

"<", ">" Buttons

"<<", ">>" Buttons

Syllable, Endword, Endline Radio Buttons

Add Button

Remove Button

Update Button


Prev Button

Selects the previous syllable.  If you are at the beginning of the song, pressing this button will allow you to insert a new word at the beginning of the song.  this is the only instance where a new syllable is inserted before the current syllable.  Usually, the new syllable is inserted after the current syllable.


Next Button

This selects the next syllable.


Syllable Edit Box

Make changes to the syllable here.  Usually you'll only use this to fix spelling mistakes.


Time Text Box

This displays the current syllable's time.  The number is the number of milliseconds it would take to play from the very beginning of the CD to that point.  The actual value shown here isn't very useful to you, but it is nice to have to see it increase and decrease.


Sample Button

This will play the syllable off the CD at the time currently displayed in the Time Text Box.

This is the second best way to tell if your time is correct.  The first best way is to play the previous syllable and listen to hear if the next syllable is heard.  If you have two words: "the tree," and you think "tree" is off, play the "the" and listen for the 'tah' sound in tree.  If you hear the 'tah' sound, move the "tree" time up a few 1/100ths of a second.  Then play the "the" syllable again until you don't hear the 'tah.'  Even though this is the more accurate way of timing the syllables, I had the Sample Button play the current syllable to avoid confusion, plus it is the logical thing for it to do.


"<", ">" Buttons

These buttons decrease and increase the current syllable time by 1/100ths of a second, respectively.

Setting the time to a time less than the previous syllable, or more than the next syllable, is not recommended.


Syllable, Endword, Endline Radio Buttons

This defines the type of syllable the current syllable is.  When you add or delete syllables, you need to check the states of the radio buttons for the new or remaining syllables.

Example:

this is a dem^on^stra^tion.

this, is, a, and tion should be set to "Endword."
dem, on, and stra should be set to "Syllable."

If you were to delete "tion," would would need to change "stra" to "Endword."
If you changed "is" to "is^n't," you would need to change "is" to "syllable," and "n't" to "Endword."


Add Button

To add a syllable after the current syllable, press this button.  You'll find yourself using this button when you forgot to break a word up into two syllables.  This is the recommended method for fixing such areas, as fixing them in the lyrics dialog window will cause your timing to be lost.

To add a syllable at the beginning of the song, press the Prev Button.


Remove Button

Deletes the current syllable.  Not a heavly used feature under normal circumstances, but necessary to compliment the Add Button.


Update Button

Commits the changes to disk.  The CD will resume play from the location you were at when the Edit dialog was opened, and any changed made will immediately take effect.


"<<", ">>" Buttons

Use these buttons to choose what Duet you are currently working on.


Miscellaneous

Current Syllable Line

Improving Text Speed

File Manifest


File Manifest

The files that come with Vocal CD are:

..\.
VOCALCD.EXE	- Vocal CD - Required
CD.DLL	- How Vocal CD talks to the CD drive - Required
VOCALCD.HLP	- this file

The files that are created by Vocal CD are:

..\windows
VOCAL.INI	- contains information about each CD you place in the drive while Vocal CD is running.  Starting with v1.41, this file is no longer created, and it is being phased out.  Information contained in VOCAL.INI is transfered into the following files.  This file will eventually be empty and can then be deleted, but it should not be deleted if it still contains CD information.

VOCAL.CDI	- contains CD-specific information
CD ID code
Last known CD playing position
Artist name
Title of CD
Playlist
Programmed Playlist
Play Mode (shuffle, prg, normal)

VOCAL.TRI	- contains Track-specific information
Parent CD ID code
Track number
Track name
Assigned song filename
Playing status (is deleted?)

VOCAL.DAT	- contains configuration information such as window sizing, colors, fonts, etc...

..\windows\songs
*.SNG	- old song file format; are converted to *.VCD and the old *.SNG is deleted when song is played.
*.VCD	- song file; contains words and timing information for each song you enter.


Troubleshooting

Problems starting the program / CD driver problems

Installing the [MCI] CD Audio driver

Video driver problems


CD Problems

The most common reason for CD driver problems is the lack of appropriate drivers running.  Vocal CD communicates to the CD-ROM using the Media Control Interface Services (MCI) of Windows 3.1 and later.  If you were to open the MAIN group from Program Manager, open the Control Panel, and select "Drivers," you would see a list of driveres you have installed for your sound card(s), video drivers, MIDI stuff, etc., depending on what hardware you have installed on your computer.

The driver that Vocal CD requires is called "[MCI] CD Audio."

If you don't see that driver listed in the installed devices box, then you need to install it.  See installing [MCI] CD Audio for instructions on how to install the driver.

If you do see the driver, make sure that you've started your CD-ROM drivers when booting the computer (such as MSCDEX.EXE).


Installing MCI CD Audio
Installing [MCI] CD Audio

1.	From the Program Manager, open the Main Group.
2.	Open Control Panel.
3.	Open Drivers.
4.	Select "Add..."
5.	Choose "[MCI] CD Audio" from the list and select "Ok."
6.	Insert the indicated disk.

After the driver is copied, you should receive a message saying "...CDROM drive was detected.  Installation is complete."  Once you see this message, Vocal CD should work find.  If you do not see that message, consult your CD-ROM drive documentation.


Video Driver Problems

Besides CD driver problems, some people are experiencing problems with their video drivers.  If you get a General Protection Fault in a module such as 'VIPER.DRV" or "ATI.DRV" or somesuch, try obtaining the latest video drivers from your video card manufacturer.  At times, Vocal CD makes up and over 100 rectangle fills, line draws, and BITBLTs each second, and so the chance of a video driver fault is much greater than with the average Windows application.


Contacting the Author

I would be glad to hear and comments or questions you have.  I always appreciate correspondance, be it good or bad.  Vocal CD is written for you.  If it doesn't do something you would like it to, write me and let me know.

To date, I've received many suggestions.  Since Vocal CD has been steadily growing in functionality since it was released, the suggestions for new features I have received all have coincidentally already been added before they were suggested to me.  ESP?

My postal address is as follows:

2775 Mesa Verde Dr. East #F101
Costa Mesa, CA	92626

I can be reached on the Internet using this address:

particle@ix.netcom.com

Email is certainly the preferred choice for contacting me.


Registering

Registering costs $15 US, or $10 US if you include a stamped, self-addressed envelope with your payment.  If you choose to pay the $15, include a return address so I can send you the validation code.  You may also give an internet address, but a postal address is required (in case I can't reach you via the internet).

Once you receive your validation code, type it in the appropriate edit box when the registration box comes up.  To cause the registration box to open, insert a new CD, or restart the program.

Please do not distribute the validation code, or a validated copy of this program.  It would defeat the purpose of shareware entirely.  If you were honorable enough to pay the registration fee yourself, why releave others of that responsibility?

If you have a validated version of Vocal CD, or have receieved a validation code without paying, you are still required to register the program with the author.  Unless you personally have registered, regardless if the software is registered, after the 30 day trial period, you are using the software illegally.

Note that your validation code will be good for the version you have and the up until the next major revision.  Reregistering, if necessary, will be at a to-be-determined rate.


Bug
Bug Reporting

Bug reports can be sent to me via snail-mail or at my internet address.  A detailed bug report describing a bug that I have no knowledge about will earn you a free validation code.  I have already given out one validation code for a particulary descriptive bug report I have received.


Finding the Latest Version

I post updates regularly on the internet.

FTP

ftp.cica.indiana.edu /pub/pc/win3/sounds
oak.oakland.edu /oak/SimTel/win3/cdrom

USENET

comp.binaries.ms-windows

If you know of other good sites to upload shareware software, please contact me.


Revision History

This is a good place to find obscure features, and should be interesting if you are a software developer.  Or maybe not.

12-01-94	Version 1.41

11-27-94	Version 1.40

11-13-94	Version 1.31

11-12-94	Version 1.30a

11-10-94	Version 1.30

11-09-94	Version 1.24

11-06-94	Version 1.23

10-24-94	Version 1.22

10-13-94	Version 1.21

10-08-94	Version 1.20

10-08-94	Version 1.11

10-05-94	Version 1.10

10-03-94	Version 1.00


Revision 1.40
Revision v1.40

Changed the *.VCD file format to implement compression.  The new *.VCD format, on the average, is 57% smaller than the old *.VCD format.  Compression exeeds 65% in some cases.  The song files are converted automatically and transparently.
Changed the routines that create and maintain the VOCAL.INI file.  Fields containing defaults are not stored in the file (such as PLAY1=YES, or, FILE1=No File).  Over time, this will reduce the size of the VOCAL.INI fairly dramatically.

-- Vocal CD now will have a MUCH smaller footprint on your hard drive than before.  New files are created with the new storage techniques, but existing files are not converted until the songs they represent are played by Vocal CD.  To manually compress a particular file, follow this technique:  write down the name of the file (like 34342323.VCD), open the file VOCAL.INI and search for the name of the file ("34342323").  Look to see what song the file is assigned to, and on what CD that song is on, and then play that song using Vocal CD.  It may be interesting for you to note the size of the file before compression, and then the new size.  --

Added programmable playlists and a fit-to-tape function.
Removed the Shuffle button and replaced them with the Prog-Normal-Shuf Switch.
Changed the appearance of the Repeat button.
Created more room for the lyrics in the main window, and changed the appearance of the main window slightly.
Facilitated reshuffling the tracks.
Replaced the README.WRI file with this Help file.
Integrated this Help file with Vocal CD; just hit F1 folks.
I have moved every conceivable unnecessary statement out of the main idle loop of the program, calling them on demand, instead of checking a flag duing each loop to see if they need to be called.
The side of the bitmap being blitted has been trimmed to the largest visible part of the screen.  This would theoretically make the screen update faster for the lyrics, since Windows no longer clips the bitmap.
The space inbetween words now grows as the text side grows, instead of being fixed at 20 pixels.
Closing the CD Info, Lyrics, Timing, and Edit, windows by saving your changes still commits the changes to disk, but the changes are retained in memory instead of being flushed and reloaded from disk.
Erasing all the words from a song will now delete the associated song file.
The call to update the location of the thumb on the Track Progress Scroll Bar has been relocated back into the idle loop, in order to increase the accuracy on the thumb.  The thumb now is very accurate, and shouldn't skip any pixels, even with very short songs.  The text scroll speed may be affected slightly.
The marks on the CD and Track Progress Scroll Bars that indicate a major time division, but are not labeled with a time, and now as thick as the colored lines that do include a label, to make the amrks clearer to identify.
Program is now more intelligent when deciding when to resize the window, when entering new songs.  Simply having lyrics defined no longer qualifies as having a Duet.  The lyrics must be timed before the window will size itself to the 1 Duet size, instead of syaing at the 0 Duet size.
Window now resized to the 0 Duet size when the drive is open.
Pressing the Keep button in the Timing dialog immediately loads the new lyrics, instead of having to re-cue the song to see the words.
Fixed a bug where if you open the CD Info dialog box, change the name of the track currently selected, and save, when the CD Info dialog box is reopened, the track name hasn't been changed in the list box.   The name is saved correctly, however.  Bug introduced in v.1.22.
Fixed a preoblem with exiting the Lyrics dialog box without saving lyrics and the window changing to the 1 Duet size instead of remaining at the 0 Duet size.
Fixed a problem in rare cases where when restoring the window from being minimized the program wouldn't swap out a non-client device context for a regular clien-area device context, causing all pointed controls to be shifted up and drawn incorrectly.
Fixed a problem with the Edit dialog displaying the incorrect Duet number when it is first opened.
Fixed a GPF that would sometimes happen if you open the Lyrics window and delete all the words after they have been timed.


Revision 1.31
Revision v1.31

Changed the lyrics window to enlarge the edit box.  Increased the maximum characters per Duet to 10,000.
Lyrics window can now be resized.
Lyrics window's appearance is improved.
All child windows' controls are aligned, sized, and symmetric, where appropriate.
Duet buttons and static text in child windows are now grouped and labeled.
Fixed a range check error when opening the Edit dialog after the last word of the song had past the timing line.  Bug introduced in v1.30.


Revision 1.30a
Revision v1.30a (Quick bug fix release)

Fixed a bug where the CD Info dialog would not get filled when a new CD is entered.  Bug introduced in v1.30 after fixing a related problem.


Revision 1.30
Revision v1.30

Completely new file format.  Changed from file of record to using a buffered DOS stream; lighting quick song loads (the song is, and has been, reloaded from disk -- and now buffered memory -- when the track is played, and when a new location on the track is chosen using the thumb).
Completely new data format.  Changed from linked lists of syllables to an indexed Collection.  Traversing the old linked list, something that needs to be done a fast as possible for the text speed, required moving a pointer around in memory.  Traversing the new collection only required incrementing an integer value by 1, something which can be (and is) done with one assembler instruction.
Completely new time format.  Changed from 1/75ths of a second to 1/1000ths of a second.  Program now sets the CD player in a different mode which makes the CD-ROM report the current playing position on the disk at the resolution of one millisecond.  As the songs are converted to the new file format (see above), they are also converted to the new time format.  Words are now placed on the screen with 1333% more precision.
Added the ability to move the bar that marks where the words are at when they are sung.
Improved the routines that place the track numbers along the CD Progress Scroll Bar, and the time numbes along the Track Progress Scroll Bar.  Spacing between, and placement of, the numbers is now exact.
Fixed a runtime range check error when playing a song that has only been partially timed.  Untimed syllables now are not shown.
Fixed a bug that was introduced with the "improved the performance of track changes..." below.  While playing the CD in normal mode (non-Shuffle play), when the track ends, the CD may skip the next track.
Fixed a bug that placed the CD Progress thumb at the wrong spot on some tracks when changing tracks when the CD is paused.
Fixed a bug that made taking tracks off the playlist and then putting them back on a little unpredictable.  Bug was introduced with v1.22.
Fixed a bug where the CD Info window would not get filled if the Artist field is blank.  Also introduced with v1.22.


Revision 1.24
Revision v1.24

Improved the performance of track changes during Shuffle play.  Reduced the chance of hearing the beginning of the next song before the new track is cued and played.  Opening the Lyrics window no longer makes the CD "hiccup."
Improved slightly the update rate of the scrolling lyrics by preventing the placing of unneeded messages into the message queue, the processing of which took time away from the processing of the scrolling lyrics.
Move a text color change statement out of a loop where it was being called when the color never changed; minor text speed increase.
Made the CD remain paused after returning from a child window, if the child window is created while the CD is paused.
Made the pause button in the Lyrics window unpause the CD on the first try when the lyrics window is entered while the CD is puased.
Made the rewind button in the Lyrics window immediately play rom the rewound position, if pressed when the CD is paused.  (It used to unpause, then rewind.)
Made thumb on the CD Progress Scroll Bar more stable when switching tracks by moving the thumb.  This is a re-fix; changes made to seemingly totally unrelated code caused the thumb to "drop" at the wrong spot at the end of a 'drag-and-drop.'
Fixed a bug where if the playlist plays through and repeats while the program is minimized, the icon resizes to the restore window size, without restoring the window.


Revision 1.23
Revision v1.23

Added customization.  See documentation.
Program can now tell the difference between the CD drive bing open, and the drive having no CD in it.
Prevented the last word of a song (or the last word before a long pause) from creeping back onto the screen.  A (happy) side effect of this is it lessens the chance of the words piling up at the beginning of the next song.
Changed 'cannot open CD drive' message to an error-type-sensitive message that makes suggestions to remedy the problem.
Changed the maximum length of the CD information strings to accomidate longer track names.
Made the necessary changes to no longer require a fixed-width font for the lyrics.  The increased overhead of word-width and character-width computation may slow the text scrolling speed somewhat, but I haven't noticed any loss of speed on my machine.  This was never mentioned anywhere, but the font that I genereated was always a fixed width font, to make figuring hyphens between words and word spacing the fastest.  Now, since you can pick your own font, I had to make those routines a little slower.
Made adjacent syllables able to get close enough together to appear as one word.
Made the program not try to stop playing an already non-playing CD when switching duets in the Timing dialog.  Stopping an already stopped CD causes the disc to spin-up, and the program pauses as the CD does so.
Reformatted documentation and (get this) I actually PROOF READ it.  Wow.  I bet you were all starting to doubt my grasp of the English language.
Added a troubleshotting section to the documentation.
Fixed a problem with the CD Progress Scroll Bar where the thumb would not be drawn immediately when a new track is played, when the new track was the first track on the play list.
Fixed a problem with the CD Progress Scroll Bar where the thrumb would not be moved to the correct track if the next track or previous track buttons are pressed while the CD is paused.


Revision 1.22
Revision v1.22

Reduced the amount of BitBlting when scrolling lyrics, improving frame rate by almost 300% in some instances.
Separated the main loop of the program into two loops; the loop that draw the scrolling lyrics is called when Windows is idle (as before), but the updateing of the scroll bars, time, etc. are now called by a timer message twice per second.  This improves a couple of things.  The idle message process is now shorter and faster, so the lyrics will have a higher frame rate, plus, background execution of other Windows program will be more responsive.
Fixed icon...again.
Added disabling of Window's screen saver for the duration of the program.
Changed the main window's background to light gray.
Changed the markers to a dotted line.
Made separate duets overlap some so the overall text size increased.
Made the Current Time Button smaller.
Error trapped file I/O associated with song files.
Minor changes to some windows' behavior:
Main window is now byte-aligned to improve bitblt (text scroll) speed.
All child windows have proper parents.
CD Info dialog is now modeless and transfer enabled.
CD Info dialog now uses accelerators instead of trapping the defualt command process.
CD Info dialog now uses TAB to jump from field to field.
Registration window is now centered on the screen.


Version 1.21
Revision v1.21 (Internal Revision -- Not Released)

Added Track Progress Scroll Bar and the ability to resize the scroll bars.
Added auto-window-sizing according to the number of duets that the current track has.  Any window movement or sizing adjustments you make will be saved and later retrieved when appropriate.
Actually spent more than five minutes drawing a new icon.
Reduced a majority of the flicker associated with the window redrawing itself.
Made the edit box scroll down to make to last line of text visible in the Lyrics window when switching duets.
Made thumb on the Progress Scroll Bars more stable when switching tracks and moving thumb.
Made music restart closer to the actual position of the thumb, when moving the thumb.
Made duets' scroll speeds independant of one another.
Made song stop playing at end of track when writing lyrics or timing lyrics (if you are working on track 1 and it plays through track 1, it will stop playing instead of playing through into track 2).  Please note that when you open the lyrics window the CD will "hiccup" as the player is put into this mode.  Closing any child window will also cause the player to "hiccup" when the player is taken out of this mode.
Fixed a problem with certain CDs where some tracks return a wrong value causing the player to skip to the next track, because it believes it is playing the wrong track.
Fixed a bug where pressing the Start button multiple times when timing would clear the text box on the screen but not clear the contents, causing duplicate words to be displayed.
Fixed a bug when trying to move either thumb while the CD is paused.
Fixed a GPF that would sometimes occur when unpausing the CD at the very beginning of a track.
Fixed a problem with the CD changing tracks when the Registration Dialog Box is open where the player would not update itself and appear frozen.
Fixed a bug where you couldn't skip to the previous track if the CD was paused.
Fixed a minor inconsistancy when pressing the "<<" button in the Lyrics window.
Fixed a bug with the main window's title screen turning to garbage when the Shuffle button is pushed if there is not CD in the player.


Revision 1.20
Revision v1.20

Added duets.  See documentation.
Added self-sizing fonts (resize the window).
Changed time display to be hour friendly.  [70:12] is not displayed as [1'10:12].
Made text speed adjustments more reliable with larger fonts.
Trapped some integer overflows.
Fixed a bug where I forgot to reactivate the main window after returning from the Edit dialog; if the Timing dialog is "closed" (by picking close out of the upper left corner system menu) instead of pressing the Update button.


Revision 1.11
Revision v1.11

Added animated icon (words scroll on icon when window is minimized).
Added saved play list.
Added color to help match the track marking with the appropriate track number (on CDs with many tracks).
Added sub-divided time markings on the Progress Scroll Bar: quarter marks and half marks (when they'll fit).
Added a more intuitive interface to the CD Info dialog, where pressing return will jump frmo field to field.
Cleaned up Timing window so it doesn't require a Timer (a Windows resource) to run.
Fixed an inconsistant GDI GPF when the program first starts.
Fixed a bug where approximately 100k of system memory was consumed each time the window is resized.
Fixed a bug where a function was allocating memory and not returning it to the memory pool.
Fixed/resoved issue with releasing resources; program now releases all resources.
Fixed a bug where I forgot to reactivate the main window after returning from the Timing dialog, if the Timing dialog is "closed" (by picking close out of the upper left corner system menu) instead of pressing the Keep button.
Fixed Oops button bug where repeatative Oops button presses on the same line would cause the music to start playing back in the wrong spot.
Fixed bugs with Progress Scroll Bar not being redrawn correctly when the currently playing track is removed from play list.
Fixed bugs with Track Number Combo Box where selecting a track number after (greater) than a track that has been deleted would cause the wrong track to be played.
Fixed bug where CD would not stop after playing through play list on non-repeat mode.


Revision 1.10
Revision v1.10

Changed main window from a static dialog window to a standard window, to allow window resizing.
Fixed icon.
Fixed some bugs with Progress Scroll Bar when removing all tracks from playlist:
Removal of all tracks from playlist caused a GPF when Shuffle was enabled.
Removal of all tracks from playlist did not clear the Progress Scroll Bar.
Addition of a track to an empty playlist caused a track number indicator to appear on the right-most time mark.
Streamlined playlist creation/re-creation.
Next Track button would not begin playing the CD if the CD was not already playing and Repeat was not on.


Revision 1.00
Revision v1.00

First released version.  Scary.  Very scary.


Programming Playlists
Programming the Playlist

For special purposes, such as recording a CD onto a tape, a programmable playlist is desirable.  It allows you to choose what tracks to play and what tracks not to play, in any order.

Transfer tracks from the Tracks List Box to the Program List Box to put them on the playlist.  The order of the tracks in the Program List Box is the order that they will be played.

Tracks List Box

Program List Box

Add >> Button

<< Remove Button

Fit To Time

"<", ">" Buttons

Done

Multiple Sides


Program List Box

This shows the current programmed playlist.  Remove tracks from the playlist by double-clicking them, or highlighting them and pressing the << Remove Button.


Tracks List Box

This is simply a list of all the tracks on the CD.  You can put any track from this list onto the Program List Box by double-clicking the track, or selecting the track and pressing the Add >> Button.


Add >> Button

Press this to put the currently highlighted track in the Available Tracks List Box into the Program List Box.

Double-clicking a track in the Tracks List Box has the same effect.


<< Remove
<< Remove Button

Press this to remove the currently highlighted track in the Program List Box.

This has the same effect as double-clicking a track in the Program List Box.

If you remove all the tracks from the playlist, and there are more sides, the Program List Box is filled with the next side's playlist.


Fit To Time

Pressing the Fit To Time button will prompt you twice.  First it asks you for the number of minutes to fit to, then it asks for the number of sides (of the length you just stated).

If, for example, you have a 60 minute tape (30 minutes per side), answer 30 for the first question, and 2 for the second.

While Vocal CD searches for a playlist matching your query, (if it doesn't find one right away) it will open a dialog showing its progress.  As it searches, the most recent playlist it has considered is put in the Program List Box.  If the time shown in the "worst case time remain" section looks bleak, you can go with most recent playlist by pressing "Stop Here."

This is the most powerful Fit-To-Tape routine I have ever seen.  It takes every possible combination of every track on the CD, finding the combination that adds up the closest to the desired time.  More often than not, it will come up with a combination that matches the desired time.  For a CD with 10 tracks, it considers 1,023 different combinations.  For a CD with 20 tracks, it considers 1,048,575 combinations.  Yet, even with a CD of mine that has 27 tracks (134,217,727 combinations!), it finds a useable combination in less than 5 seconds.


"<", ">" Buttons

These buttons change the current working side.

You cannot select a side less than '1', and you cannot select a greater side if the current side's playlist is empty.


Size
Sides

A side, when programming a playlist, is a physical division in the playlist.  When the CD is playing a programmed playlist, and the end of a side is reached, Vocal CD will automatically pause the CD.
The end of a side simulates the end of one side of a cassette tape, if you were dubbing the CD to cassette.
The CD is paused to remind you that the side is finished, and to wait for you to flip the cassette and press record again.


Done

Pressing this will save your custom playlist and make it active.


Configure
Customizing Vocal CD

The system menu (the upper left corner button) has an extra menu option in it called Configure.  Beneath it are these options:

Colors

Fonts

Control

Please note that the format of the file used to store these settings, as well as the sizes of the window, is subject to change as more customization options are added.  Your previous settings may be lost when new features are added.


Custom Colors

The Custom Colors dialog gives you control over some of the colors used in Vocal CD.

Select the thing you would like to change the color of from the list box, and adjust the color using the three scroll bars.  R[ed], G[ed], and [B]lue can be set to 0 thru 255, and the mix of the three colors is shown in the square.  When changing the duets' color, the scrolling lyrics will change color as you adjust the scroll bars.

The first duet is duet 1, an odd number, and changing the "Odd Duets" color will change the color of the first scrolling line of lyrics.

"Scroll bars" let you change the text color of the Progress Scroll Bars.


Custom Fonts

This dialog lets you pick what font is used for the scrolling lyrics.  Choose a font from the list, and the font is changed on the fly.  Try choosing Symbol.

Line squeeze allows you to adjust the spacing between duets when a song has multiple duets.  Setting this to 1 will keep the duets from overlapping.


Custom Control

Reshuffle at end of playlist, when checked, will reshuffle the playlist after the playlist is finished playing, provided repeat is turned on.

Autoplay unrecognized CDs will begin playing a CD that has been entered into the drive for the first time, if checked.


Current Syllable Line

You may position this line by dragging and dropping it to a new position.

If the text seems blurry, stare at this line instead of trying to follow the words with your eyes.  Persistance of vision is causing you to believe you are seeing two images of the same word, where in reality there is only one.  Stare at the line, and the words will pass through your locus of focus in focus.


Improving Text Speed

The text speed self-adjusts to the speed that is the slowest without one word overlapping the word before it.

If the text is travelling too fast, reduce the height of the window to make the text smaller.  A smaller text width will allow the letters to get closer together without overlapping.  A thinner font will slow the overall speed of the text.

If the text is jumpy, reduce the size of the text.  Your video card is not fast enough keep the frame rate high enough for the motion of the text to look fluid.

If the text is fast and irratic, increase the size of the text.  Too fast of a frame rate will reveal the multitasking subtleties of Windows.  When the text is not being drawn at equal intervals, the text will not travel the same distance each time it is redrawn, and the text will appear to jump and shake.  Increasing the text size will slow the frame rate enough to average out the distance the text travels between updates.

If the text speeds up to an enormous speed at a particular part of a song, edit the song to put more time inbetween the offending syllables.  Syllables with times very close together will force Vocal CD to scroll the lyrics extremely fast to keep them from overlapping.  The offending syllables may be on the screen for less than a second, but there is a waiting period before Vocal CD will slow the words down again.  Under normal circumstances, this waiting period keeps the scrolling speed stable.


Revision 1.41
Revision v1.41

Migrated the CD Info and the Lyric Function buttons off of the main window and put them in that gimmicky magical opensasame pullout card thingy.  Other CD player authors bag on yet other CD player authers about how much desktop space their players take up, so, I did this so the window could be sized much smaller than before.  You can resize the window so the lyrics don't show up at all (not really new to this version, but the first time I've mentioned it).

Added said gimmicky magical opensasame pullout card thingy.  If anything, its got a catchy name.

Added Autoplay.

Added CD Database viewer and Track Finder.  Try this.

How was I to know the Windows INI API imposes a file size limitation of 64k?  This I discovered when I was entering info for a CD but for some reason it wasn't saving.  Not to be defeated, I wrote my own file I/O for the CD Info!  (Those .INI files are slooow anyway.)  CD info is now saved in two files, VOCAL.CDI and VOCAL.TRI, CD Info and Track Info, repectively.  I've always liked transparent file I/O, and so I haven't included any conversion programs; instead, the CD info is brought over as needed.  As CDs are entered into the player, the CD info is looked for in memory (the new routines maintain a copy of the database in memory), and if it is not found, the old VOCAL.INI is searched.  If found there, it is imported, and the entry is removed from the VOCAL.INI file.  Deleteing VOCAL.INI while it still has data in it is a BAD THING.  If you notice it has file size 0, then go ahead and delete it.

CD drive communication code has been moved out into CD.DLL.  'Code Segment Too Large' has been a bane to my existance.

CD Info dialog now says how many CDs are contained in the new database (see above).  This number only reflects CDs that have been entered since this version, v1.41, and CDs that have been migrated from the VOCAL.INI file (again, see above).

Changed the auto window resizing to something that is probably less aggravating.  The only element of the window's size that is changed automatically now is the height.  I couldn't think of a good reason to have the window save the different widths, so I removed that.  So, the width of the window is fixed until you change it, although the height of the window may vary from song to song.

Changing CDs while the program is iconic will no longer make the icon size bloat, paint controls on the background, or other such things.

Put a larger space inbetween time marks on the Track Progress Scroll Bar, so there usually won't be irregular spacing between time marks.

Cleared up a problem with converting some old .VCD song files to the new format.  I fixed the same problem with coverting the .SNG format as well, but that bug was never in a released version as far as I know.  When an object is read from the stream containing a null string as its syllable, it causes a GPF.  Null strings are now ignored when converting files.

Fixed a similar problem: Editing a song and clearing the syllable field for one of the syllables (creating a null string for the syllable) would cause a GPF under the new data structure.  Worse still, the string table would be saved containing that null-string entry, and a GPF would be caused whenever that song is played...and there would be no work around to save that file (unless it were sent to me).  There should now be no way to put a null-string in the string table.

Fixed yet another problem with the CD Info Dialog.  If you put in a few track names, saved, and then came back, the track names were saved, but the track list box had 'no name' stuck back in it.  I think this is the last of the CD Info bugs.

Realized the Lyrics Window and the Program Playlist Window were sharing the same window class, which was the reason if you open the Lyrics Window first, then the PP Window had a LT_GRAY background, or, if you open the PP Window first, the Lyrics Window had a WHITE background.  Gave each window its own class.  Grrr.


Up and Coming

I've thought about a volume knob.  If I don't get any encouragement this may never happen.

More CD database functions will be added.


Access Database
Database Viewer

The CDs listbox lists all known CDs.  Click on a CD to see the tracks of that CD.

Find Button


Track Finder

Want to know what CD a particular song is on?  Probably not; they're your CDs and you most likely know already.  But this is fun to play with.

The Track Finder implements a fuzzy search of all known tracks for the inputted string.

Type In . . .	. . . And You'll Get:

"intro also"
"also sprack"
"zarathrusta"	-->	Introduction to Also Sprach Zarathustra

"beatiful danub"
"on green danube"
"blue dan"	-->	On the Beautiful Blue Danube

Give it a try.  You don't need to enter the whole track name.  You can enter a word found in the middle of the track name.  You don't necessarily have to spell anything correctly.