ActiveX Software for Visual Basic 6/.NET, C++ 6/.NET, Delphi, Borland C++ Builder: Matrix Maths, Time Series
 Home   |   Products   |   Testimonials   |   Prices   |   Support   |   Contact   |   Publications   |   About   |   Buy Now
Quick Links   Home   Purchase   Support
Products   Product Home   ActiveX/COM Components   .NET Components   Version History
Support   Support Home   Installation Help
About Us   Company Info   Clients   Testimonials   Publications   Contact Us

   Data Input-Output Software

    DataIO/X 4.0
Data Input-Output ActiveX Control and COM Object

Product Features  Download  Product FAQ  Screen Shots!   Prices Buy Now

  DataIO/X ActiveX Control implements a number of methods that can be used for reading and writing audio WAV files. This gives application developers the ability to develop software for various purposes such as analyzing speech data. In particular, the control provides methods for:

  • Opening and Closing WAV files
  • Testing to determine whether a binary file is a valid WAV file or not
  • Obtaining WAV summary information (Audio Format, Bits Per Channel, Bytes Per Second, Number of Channels, Sample Rate, Number of Samples, Time Length, Data Length, Bytes Per Sample)
  • Reading WAV audio data into arrays
  • Creating WAV audio files from arrays and specified parameters including output normalization
  • Combine with other controls to create larger applications, eg use it with SpeechAnalysis/X to process data for a speech analysis applications.

Features of DataIO/X

With just a few lines of code, it is now possible to read in audio data for further manipulation by your own application. Conversely, DataIO/X provides a simple means of creating WAV audio files from your data samples. These data samples could be obtained from any source, even other recordings or data sources.

DataIO/X is both an ActiveX Control and a COM object, implemented in a single DLL, yet it can be used in a wide range of programming languages that support these standards. The methods can be called in just one line of code from within Excel, Visual Basic 6, Visual Basic .NET, Visual C#, Visual C++ 6, Visual C++ .NET, Delphi and Borland C++ Builder. 

Source Code Examples

DataIO/X includes sample applications - with full source code, in the following programming languages: 
  • Visual C#
  • Visual Basic .NET
  • Visual Basic 6
  • Excel (VBA)

The control can also be used to quickly create Windows applications for analyzing speech using a range of well known methods. These methods can form the basis of more sophisticated applications. Contact us if you need assistance in creating your application using this component or any others we provide.

Sample Visual Basic .NET application created using DataIO/X. 
A similar application with full source code in Visual C# is also included with the software.

DataIO/X ActiveX Control

The control is written as a lightweight ATL C/C++ object, and does not require bulky MFC DLLs. Because the control is written in ATL it is efficient and small in size. The numerical processing is written in C for speed, and integrated into the lightweight ATL/C++ framework. Using our controls is very easy! Enjoy the speed and robustness of industrial-strength C/C++ in your application, with only a single line of code.

If you can use any of the existing components in Visual Basic or whatever language environment you program in, then you will have absolutely no problem in using Windale Technologies components and controls.

Trial Version

The trial version of DataIO/X Trial Version is fully functional, however you will not be able to create standalone applications with the trial version. In addition, the trial version is time-limited and displays a pop-up nag screen each time it is called. The licensed version also includes special runtime DLLs.

Sample Visual Basic 6 application created using DataIO/X. 
Other sample applications with full source code are also included.

If you do have any questions or concerns about using our controls - all you need to do is email us and we will assist you in learning how to use our controls. Just take a look at our testimonials page to see some of the comments we have received from happy customers. we receive many emails from people who have questions about our products or who need a little assistance to get started using an ActiveX control in their program - don't hesitate to contact us and we will be pleased to help you.

Do you require some function that we don't already have? Contact us and we may be able to extend our controls to do what you require.

In the next section, we provide more technical information on the binary file format used for WAV audio files.

WAV Audio Data Format

A brief introduction to binary audio files

Digital audio information consists of sampled data. This means that raw sound waves which vary continuously in time and in magnitude of intensity, are sampled at regular intervals of time, for example, 44100 samples per second is one standard used for audio data. This information is generally sampled with a number of bits of resolution using an analog to digital converter and then stored in a computer file.

To process digital audio information, it is necessary to use a defined standard file format in which to store the data. While it would be feasible to use a text file to do this, there are many reasons why text files are not generally used for this purpose. Primarily, these reasons are concerned with speed and efficiency of the data storage. Text files, while mostly using the ASCII standard, are in a sense, not well defined. There can be different languages used, different end of line characters used, line feeds in some cases and not others limits used in the length of lines and overall of this, require computationally expensive parsing in order to extract information from the file.

Binary files on the other hand, while not in a convenient human readable form, ensure that data can be stored and retrieved in a very precise manner. Information can be stored and retrieved without having ambiguities of text files or the complex processing of string handling. Moreover, since the data is stored in a precise byte-wise arrangement, it is possible to read and write information in a manner not unlike random access memory (RAM).

The binary file format requires that each sampled data point uses a fixed number of bytes. The number of bytes determines the magnitude resolution. For example if we choose an 8-bit or 1-byte storage resolution, this means that there are 255 possible levels of the signal data. If we use a 16 bit audio format, then 2 bytes per sample per channel are used with a given resolution of 32768 levels. Higher quality sound definition requires that a sufficiently high sample rate is used and a sufficient number of bits are used. However the area of sound quality is complex and we will not discuss this issue here.

There are binary many audio file standards and in the next section, we discuss the WAV standard, which is handled by DataIO/X.

WAV Binary File

The WAV audio standard actually has many variations. Not all of these are in widespread use, and DataIO/X is not designed to be able to process all of them. The WAV audio standard that is able to be processed by DataIO/X is defined in the table below. This WAV file format is sometimes called the Canonical WAV or WAVE file format.





Contains the letters RIFF in ASCII form.




Size of the entire file in bytes less 8 bytes for the first part of the header. Be warned however, that this file size may not accurate since not all vendors appear to set the file sizes correctly.




Contains the letters WAVE in ASCII.




Contains the letters "fmt " (ie fmt followed by a space.)




PCM = 16. The size of the subchunk that follows this number.




For PCM, this value = 1. PCM for linear quantization is used by simple Windows WAV audio files and is currently the only format handled by DataIO/X.




Number of channels. 2 channels indicates stereo.




Typical values are 44100, 11025 etc.




Number of bytes per second that are used for all data. This value equals SampleRate x NumChannels * BitsPerSample/8.




Also known as BytesPerSample and equals NumChannels * BitsPerSample/8.




Typical values are 8, 16




Contains the letters "data"




This equals NumSamples x NumChannels * BitsPerSample/8




This is where the actual sound data begins. If the BitsPerSample is 8 and there is only 1 channel, then each byte following is one sample or data point. However if there16 bits per channel, then each 2 byte set is one data point and so on. Multiple channels are handlded in turn. Thus for 2 channels of data, we have Ch1, Ch2, Ch1, Ch2, Ch1, Ch2 etc for the sequence of data points.


There are numerous variations on this theme, and the DataIO/X component provides some methods which enables the user to determine if the binary file is valid in terms of the above format. It is possible that the file may be a WAV format which uses a different format and in this case, DataIO/X will still report the format as being invalid, that is not able to be processed by DataIO/X.