Hello netizens:
First of all, thank you for your support of my "Music World". You may not be able to make use of my work today. In order to allow everyone to use it well, and in order for it to grow quickly, I have opened the original code of the program from this version. I hope that all experts can better improve it. Here I'll walk through the various parts of my program.
1. Main window.
The functions of the main window include: dynamic display of audio wavetable, left and right channel adjustment, pause, continue, loop, next song, previous song, etc.
2. Song catalog.
This program of mine is written completely simulating Winamp. Whether it is the main window or a combination of three windows, the song catalog window supports double-clicking a song to play, supports multiple files to be opened at the same time, supports dragging and dropping files from the resource manager, and supports secondary opening of the song catalog. And save, through the main window you can selectively play a single file, play in sequence and shuffle files in the directory.
3. Author information.
The function of this window is to make up the complete layout of three Winamps, and has no practical significance.
The development environment of the program is Delphi6.0 and the operating system is Win98se. The technical points used are: (1) Api. The transparent window and left and right channel control during program login all use Windows API calls. (2) The call of Delphi's Mediaplay control is used when playing VCD files. (3) VC++, what everyone is most concerned about is definitely the issue of dynamic waveform tables. In fact, I have been reviewing information for this issue for a year. Sometimes everyone likes to write small tool software in their spare time at work, but sometimes our Knowledge is not enough. If you want to reach the level of Winamp, there must be a lot of differences. Of course, there may be experts among netizens. Well, I will solve everyone's problems.
At first, I thought that the waveform table was obtained by calling an API function, so I checked all the API manuals and found nothing. Later, I started researching on the decoding level. There was so little information about this on the Internet that I searched for several weeks and found nothing. One day I sold a VC++ information CD on the way to get off work, and there was an article about dynamic waveform tables in it. Through it, I learned that the generation of waveform tables is the result of decoding. It directly uses a huge 8000 member variables The array manually decodes the specific music file and finally outputs it directly through the sound card. The complexity is beyond my comprehension because the code amount exceeds 30,000 lines. And you also have music theory knowledge. The three-dimensional music effect simulation is also completed through decoding. My daily job is database programming, and my multimedia development is far from the level mentioned in the article, and each format of file must have different decoding standards. These standards are developed by the International MP3 Organization. Please read their technical documents for details. My multimedia programs have just been put down. My goal has turned to third-party controls. I want to use third-party controls to achieve the purpose of decoding and playing. But there is still no ready-made control. A few days ago, I accidentally discovered that a multimedia decoding company in Shanghai provided a waveform table dynamic connection library. Through it, I realized the waveform table display of multimedia files, but its reserved interfaces are not many, so my program cannot fast forward and rewind. If I want to complete the function, I have to spend money. Their dynamic link library only supports MP3 decoding and does not support MPG decoding.
If you have the perseverance to learn the technology of this decoding company in Shanghai, you will change your existing job. I am also constantly learning and hope that some netizens can solve this problem completely as soon as possible.
Expand