Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 459
  • Last Modified:

How to Generate CDDB DISC ID in VB5

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
fury
Asked:
fury
  • 5
  • 4
1 Solution
 
msimanCommented:
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
 
furyAuthor Commented:
This is not what I asked. I am not asking how to get a Disc ID, but a CDDB ID.

0
 
msimanCommented:
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
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
furyAuthor Commented:
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
 
msimanCommented:
sorry i posted it twice... my mistake...
sorry
0
 
msimanCommented:
0
 
furyAuthor Commented:
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
 
furyAuthor Commented:
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
 
msimanCommented:
i'll check this out
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 5
  • 4
Tackle projects and never again get stuck behind a technical roadblock.
Join Now