MP3 Jukebox Assignments

In the assignments in this chapter, we will write, in stages, a program that serves as an MP3 playlist generator and database manager. It will generate and play selections of MP3 songs based on what it can find on our file system and it will permit filter-queries based on data stored in ID3v2 (meta) tag information.

25.1

Data Model: Mp3File

553

25.2

Visitor: Generating Playlists

555

25.3

Preference: An Enumerated Type

556

25.4

Reusing id3lib

559

25.5

PlayListModel Serialization

560

25.6

Testing Mp3File Related Classes

561

25.7

Simple Queries and Filters

561

25.8

Mp3PlayerView

563

25.9

Models and Views: PlayList

565

25.10

Source Selector

566

25.11

Persistent Settings

567

25.12

Edit Form View for FileTagger

568

25.13

Database View

569

The features we will implement are inspired by open-source programs such as amaroK and Juk (and commercial programs such as iTunes and MusicMatch Jukebox). These programs all provide similar features and similar styles of user interface.

The code that does the actual file-tagging is taken from an open-source library, id3lib[1] version 3.8.3. This is the same library that is used by MusicMatch Jukebox.

[1] http://sourceforge.net/projects/id3lib

The media player shown in Figure 25.1 has three major components.

1.

A player view that shows the user what is currently playing and provides some controls for changing volume or position of the song

2.

A selector that permits the user to choose (and create new) playlists for manipulating or playback

3.

A song list view, for displaying a list of songs in a tabular form

Figure 25.1. Example screenshot

Each of these major components has a view for displaying the data and a model for storing the data.

Figure 25.2 shows a high-level UML diagram of the major components of this project. We can see that the Controller class, derived from QApplication, owns all other objects.

Figure 25.2. The Controller and its managed objects

Категории