I developed a basic DJ application called Oto Decks. I want to develop the application further by
adding a custom deck control Component and a music library Component, then integrating them
into a new GUI layout of your own design.
The custom deck control Component should have custom graphics, implemented in the paint
function and it should offer a means to control a deck in some interesting way of your own design.
The music library component should allow the user to manage a library of music within the
application. They should be able to search the music library and load music from it into the decks. It
should also persist between application loads, so it will need to store its state in a data file.
IMPORTANT: EVERY SINGLE SUB REQUIREMENT MUST BE MET
Requirement 1: The application should contain all the basic functionality:
A. can load audio files into audio players.
B. can play two or more tracks.
C. can mix the tracks by varying each of their volumes.
D. can speed up and slow down the tracks.
Requirement 2: Implementation of a custom deck control Component with custom
graphics which allows the user to control deck playback in some way that is more
advanced than stop/ start.
A. Component has custom graphics implemented in a paint function.
B. Component enables the user to control the playback of a deck somehow.Requirement 4: Implementation of a complete custom GUI.
A. GUI layout is significantly different from the basic DeckGUI I provided, with extra controls.
B. GUI layout includes the custom Component from Requirement 2.
C. GUI layout includes the music library component from Requirement 3.
Requirement 3: Implementation of a music library component which allows the user
to manage their music library.
A. Component allows the user to add files to their library.
B. Component parses and displays meta data such as filename and song length.
C. Component allows the user to search for files.
D. Component allows the user to load files from the library into a deck.
E. The music library persists so that it’s restored when the user exits then restarts the application.
Code style and technique
IMPORTANT: Please make sure your code follows these styles
Your code should be written according to the following style and technique guidelines:
1. Code is organized into header (.h or .hpp) files and implementation files (.cpp). Header files
contain class interface definitions, cpp files contain implementations of class function members.
2. Class interfaces in header files have comments for each public function describing purpose,
inputs and outputs.
3. Code is laid out clearly with consistent indenting.
4. Code is organized into functions with clear inputs and outputs and a clear, limited purpose.
5. Code is stateless wherever possible – functions make use of data passing in preference to
global or class scope data.
6. Functions, classes and variables have meaningful names, with a consistent naming style.
7. Functions do not change the state of class or global scope variables unless that is the explicit
purpose of a function (e.g. a setter).
IMPORTANT: EVERY SINGLE SUB REQUIREMENT MUST BE
shortly described using this format:
For each sub requirement (R1A → R4C) state how this was achieved. Explain where it can be
found in the code. Use focused, short code extracts if they make your explanation clearer. Use
annotated screenshots to describe your GUI components.