I get a lot of queries from fellow developers who are looking to or are having difficulty developing there own application for digital radio. If you are one of the afore mentioned developers this page will hopefully answer some of those questions you may have, or at least let you know what I may be able to help with.

DAB Bar is written in Pascal using Delphi 5. Please remember that I am not a Visual Basic programmer and can not help with most VB related questions, only those relating to the WaveFinder, the Modular Technologies PCI card and DAB. The most common questions I get relating to VB are concerned with how to use the outgoing interface for recording, the only advice I can offer is to read up on using COM objects in VB.

The WaveFinder and PCI card  is controlled through the Windows COM interface. The specification for the interface, called VIADAB (or VIADAB2 for the PCI card and new WaveFinders) can be downloaded from the Digital Radio section of the RadioScape website.

You will need to understand the COM interface. Most programmers will be able to muddle through, get the receiver to tune to a multiplex and play a service, but to go any further you will need to understand the concepts behind COM. I recommend you do not search for example code and try to muddle through, it is unlikely to bare fruit. Instead getting a good book, or reading through a few online tutorials is the way to go. When you understand COM it will all fall in to place. Delphi users may find the tutorial at http://community.borland.com/article/0,1410,27126,00.html useful.

Many people starting out on a project have asked about any pitfalls that they should avoid. One significant pitfall I can remember is only relevant if developing under Delphi (and possibly C++ Builder). This advice being when importing the VIADAB type library do not let Delphi create a Component wrapper, instead use the command "CreateComObject(CLASS_ViadabRx) as IViadabRx;" to create the COM object.

If you are working with the new VIADAB2 compatible drivers you will need to make all the calls to the interface from a single thread. Despite guaranteeing mutual exclusivity commands to the receiver are often lost or only part executed if called from multiple threads. Remember that some commands from the operating system occur in a different thread and will need to be passed to the main application thread.

That is it for now, if you need some more words of wisdom get in touch.


2005 Alistair MacDonald