Solved

How to Generate CDDB DISC ID in VB5

Posted on 1997-08-14
9
391 Views
Last Modified: 2012-06-27
To generate a CDDB Disc ID, I need to sum up the starting offset of each track. How do I get the Offset from the start of the CD for each track? For example, Track 3 may start from 20:45 from the start of the CD.

Also I need to add up the length of each tracks as described in the CDDB doc. Can I just use this?

lRes = mmSend("status cd_1 length track " & _  Format$(iTrackNumber))

If u know how to generate the disc ID in VB, please give me the code
0
Comment
Question by:fury
  • 5
  • 4
9 Comments
 
LVL 2

Expert Comment

by:msiman
Comment Utility
check this up:
How to Get or Create a Unique Audio CD Volume Label

Article ID: Q112768

---------------------------------------------------------------------
The information in this article applies to:

- Standard and Professional Editions of Microsoft Visual Basic for
  Windows, version 3.0
---------------------------------------------------------------------

SUMMARY
=======

Part of the Multimedia standard calls for all Audio CDs to have a unique
volume identifier following a specific (suggested) format of:

   XXXX-#####

XXXX is the alpha vendor code, and ##### is a five-digit unique number

for the CD. This information is stored on the inner track of the CD and
is also usually etched on the inner edge of the inside ring of the CD.
Not all manufacturers have a unique volume identifier, nor do all follow
this standard volume label format. Although this is a standard, at this
time the MultiMedia Application Programming Interface (API) does not have
a built-in function that will retrieve this information. This article
shows you how to retrieve or create this information programmatically.


MORE INFORMATION
================

In order to retrieve the unique volume identifier from the CD, you need to
call MSCDEX directly. The information on how to do this is contained within
the MSCDEX 2.20 specification.

Because some manufacturers aren't including this unique identifier on their
CDs, Microsoft recommends that you create a unique volume identifying
number based on the track information already included on the CD. The
following example shows you how.


Step-by-Step Example
--------------------

This example shows a method for creating a unique number to identify an
audio CD based on track information. The purpose of this number is to make
it possible for Visual Basic programs to recognize a loaded CD and retrieve
information from it.

1. Start a new project in Visual Basic. Form1 is created by default.

2. Add a text box (Text1) and an MCI control (MMControl1) to Form1.

3. Place the following code in the Form_Load event of Form1:


   Sub Form_Load ()
      Dim DiskID As Long
      Dim Track As Integer
      ' Initialize CD:
      mmcontrol1.DeviceType = "CDAudio"
      mmcontrol1.Command = "open"
      ' Make unique number based on tracks and tracklength:
      DiskID = mmcontrol1.Tracks
      For Track = 1 To mmcontrol1.Tracks
         mmcontrol1.Track = Track
         DiskID = DiskID + mmcontrol1.TrackLength  ' Add 4-byte TrackLength
         DiskID = DiskID + mmcontrol1.Length       ' Add 4-byte CD Length

      Next Track
      ' Set text to unique value:
      Text1.Text = DiskID
   End Sub

4. Load a CD.

5. Start the program, or press the F5 key.

6. The Text1 box should have a unique identifying number for the CD.

NOTE: Before starting the program, a CD must be inserted and ready to play.
Therefore, you should add code to detect when a CD has been inserted and
then run the above code.

REFERENCES
==========

For more information, see the MultiMedia Programmer's Reference, CDAudio


Additional reference words: 3.00
KBCategory: kbprg kbcode
KBSubcategory: PrgOther

Copyright (c) Microsoft Corporation. All rights reserved.
0
 

Author Comment

by:fury
Comment Utility
This is not what I asked. I am not asking how to get a Disc ID, but a CDDB ID.

0
 
LVL 2

Expert Comment

by:msiman
Comment Utility
check this out:
How to Get or Create a Unique Audio CD Volume Label

Article ID: Q112768

---------------------------------------------------------------------
The information in this article applies to:

- Standard and Professional Editions of Microsoft Visual Basic for
  Windows, version 3.0
---------------------------------------------------------------------

SUMMARY
=======

Part of the Multimedia standard calls for all Audio CDs to have a unique
volume identifier following a specific (suggested) format of:

   XXXX-#####

XXXX is the alpha vendor code, and ##### is a five-digit unique number

for the CD. This information is stored on the inner track of the CD and
is also usually etched on the inner edge of the inside ring of the CD.
Not all manufacturers have a unique volume identifier, nor do all follow
this standard volume label format. Although this is a standard, at this
time the MultiMedia Application Programming Interface (API) does not have
a built-in function that will retrieve this information. This article
shows you how to retrieve or create this information programmatically.


MORE INFORMATION
================

In order to retrieve the unique volume identifier from the CD, you need to
call MSCDEX directly. The information on how to do this is contained within
the MSCDEX 2.20 specification.

Because some manufacturers aren't including this unique identifier on their
CDs, Microsoft recommends that you create a unique volume identifying
number based on the track information already included on the CD. The
following example shows you how.


Step-by-Step Example
--------------------

This example shows a method for creating a unique number to identify an
audio CD based on track information. The purpose of this number is to make
it possible for Visual Basic programs to recognize a loaded CD and retrieve
information from it.

1. Start a new project in Visual Basic. Form1 is created by default.

2. Add a text box (Text1) and an MCI control (MMControl1) to Form1.

3. Place the following code in the Form_Load event of Form1:


   Sub Form_Load ()
      Dim DiskID As Long
      Dim Track As Integer
      ' Initialize CD:
      mmcontrol1.DeviceType = "CDAudio"
      mmcontrol1.Command = "open"
      ' Make unique number based on tracks and tracklength:
      DiskID = mmcontrol1.Tracks
      For Track = 1 To mmcontrol1.Tracks
         mmcontrol1.Track = Track
         DiskID = DiskID + mmcontrol1.TrackLength  ' Add 4-byte TrackLength
         DiskID = DiskID + mmcontrol1.Length       ' Add 4-byte CD Length

      Next Track
      ' Set text to unique value:
      Text1.Text = DiskID
   End Sub

4. Load a CD.

5. Start the program, or press the F5 key.

6. The Text1 box should have a unique identifying number for the CD.

NOTE: Before starting the program, a CD must be inserted and ready to play.
Therefore, you should add code to detect when a CD has been inserted and
then run the above code.

REFERENCES
==========

For more information, see the MultiMedia Programmer's Reference, CDAudio


Additional reference words: 3.00
KBCategory: kbprg kbcode
KBSubcategory: PrgOther

Copyright (c) Microsoft Corporation. All rights reserved.
0
 

Author Comment

by:fury
Comment Utility
Again, I am not asking how to creat a disc ID.
Its CDDB ok? CDDB from Ti Kan. CDDB Disc ID. CDDB CDDB man, not a general disc ID.

0
How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

 
LVL 2

Expert Comment

by:msiman
Comment Utility
sorry i posted it twice... my mistake...
sorry
0
 
LVL 2

Accepted Solution

by:
msiman earned 200 total points
Comment Utility
0
 

Author Comment

by:fury
Comment Utility
I read already...however...VB does not support UNSIGNED 32 bit long which is what the id requires.

I tried the use Variant, but it won't work
I tried to do:

n = (n Mod &HFF) * (2 ^ 24) 'shift 24 bit according to CDDB doc
tlength = tlength * 2 ^ 8 'shift 8 bit
id = n Or tlength Or nt

(at that time, n=3623828656, tlength=981392m nt=16
broke on the last line , cannot generate id. All variables are variants.



0
 

Author Comment

by:fury
Comment Utility
I thought about writing a dll to do he mathematics part, however, i don't know how to write a dll using vc++4
0
 
LVL 2

Expert Comment

by:msiman
Comment Utility
i'll check this out
0

Featured Post

What Security Threats Are You Missing?

Enhance your security with threat intelligence from the web. Get trending threat insights on hackers, exploits, and suspicious IP addresses delivered to your inbox with our free Cyber Daily.

Join & Write a Comment

Most everyone who has done any programming in VB6 knows that you can do something in code like Debug.Print MyVar and that when the program runs from the IDE, the value of MyVar will be displayed in the Immediate Window. Less well known is Debug.Asse…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now