Advanced Metronome
Name | Date | Version | Edits |
---|---|---|---|
Bart Kessels | 27 sept 2018 | 0.1 | First Draft |
Bart Kessels | 28 sept 2018 | 0.2 | Fix incorrect markdown table for brief use-case descriptions |
- 1. Introduction
- 2. Use-case Descriptions
The goal of this application is providing bands, and musicians for that matter, with an easy to use and adjustable metronome. Advanced Metronome aims to provide the niche that other metronomes don't support by letting the user decide on a per-measure basis what the tempo should be and in what time signature the measure should be in contrary to only allowing this on song level.
Thus making this application an all-round metronome for the 'easy'1 songs, which have a constant BPM and time signature, and the 'non-easy'1 songs, which have multiple BPM's and time signatures in the song.
1: This applies to the implementation of the metronome, not the song itself.
This paragraph will layout the users that will use the system and what functions they can perform by using the application.
Musician : Create a new song with the various measures and play, save share the metronome.
Advanced Metronome is supposed to run on all major desktop operating systems, Linux; MacOS and Windows, by using the Qt framework. To be able to compile, and/or run, Advanced Metronome the required Qt packages should be present on the host system. To make the compiling on all major platforms an easy experience only built-in Qt functions and libraries will be used.
Because Advanced Metronome is suppose to run on all major desktop platforms no platform-specific modules, be it third-party or C++-built-in, are supposed be merged into the code-base.
This paragraph will provide a small, global, overview of the functions that are supported by Advanced Metronome and which actor can invoke specific actions. The use-cases are briefly described in table 1.5.1 and an use-case diagram can be seen in figure 1.5.1.
Figure 1.5.1: Use-case Diagram
Use-case number | Use-case name | Brief Description |
---|---|---|
UC01 | Add measure | The actor can add a measure to a song |
UC02 | Move measure up | The actor can move a measure one place up in the measures list |
UC03 | Move measure down | The actor can move a measure one place down in the measures list |
UC04 | Delete measure | The actor can delete a measure from the measures list |
UC05 | Start metronome | The actor can start the metronome |
UC06 | Stop metronome | The actor can stop the metronome |
UC07 | Save file | The actor can save the metronome song to a file |
UC08 | Open file | The actor can load a metronome song from a file |
UC09 | New song | The actor can load a new song; the old song contents are removed |
Table 1.5.1: Brief Descriptions Use-cases
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description
- Before the actor can play a metronome a measure must be added to the measures list
- Pre-conditions:
- [None]
- Post conditions:
- A new measure is added to the measures list in the metronome
- A new measure is displayed on the screen
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Add a measure to the measures | |
2. Add measure to the metronome measures list | |
3. Display the new measure on the screen | |
Extensions (Alternative Flow): | |
- | - |
Figure 2.1.2.1: System Sequence Diagram for UC01 - Add measure
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- If the actor has many measures in the measures list the actor has the ability to move a measure one position up the list
- Pre-conditions:
- There are more than one measures
- The measure that is being moved up isn't at the top of the list
- Post-conditions:
- The measure is moved one place up the metronome measures list
- The measure is moved on place up in the window
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Move measure one place up | |
2. Move measure one place up in the metronome measures list | |
3. Move measure one place up on the screen | |
Extensions (Alternative Flow): | |
- | - |
Figure 2.2.2.1: System Sequence Diagram for UC02 - Move measure up
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- If the actor has multiple measures in the measures list the actor has the ability to move a measure one position down in the list
- Pre-conditions:
- There are more than one measures
- The measure that is being moved down isn't at the bottom of the list
- Post-conditions:
- The measure is moved one place down the metronome measures list
- The measure is moved one place down in the window
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Move measure one place down | |
2. Move measure one place down in the metronome measures list | |
3. Move measure one place down on the screen | |
Extension (Alternative Flow): | |
- | - |
Figure 2.3.2.1: System Sequence Diagram for UC03 - Move measure down
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- If the actor has one or more measures in the measures list the actor can delete a measure from the measures list
- Pre-conditions:
- There is at least one measure
- Post-conditions:
- One measure is deleted from the metronome measures list
- One measure is deleted from the window
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Delete measure | |
2. Remove measure from metronome measures list | |
3. Remove measure from the window | |
Extension (Alternative Flow): | |
- | - |
Figure 2.4.1.1: System Sequence Diagram for UC04 - Delete measure
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- If the actor has setup all the measures the actor can start the metronome
- Pre-conditions:
- There are one or more measures added
- Post-conditions:
- The metronome is playing the measures
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Start metronome | |
2. Play first measure in measures list | |
3. Update UI to display current measure title and repetitions left | |
4. [Go back to step 2 until there are no more measures in the list] | |
5. Stop the metronome | |
6. Update UI to display default values for measure title and repetitions left | |
Extensions (Alternative Flow): | |
- | - |
Figure 2.5.2.1: System Sequence Diagram for UC05 - Start metronome
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- Once the metronome is playing the actor can stop the metronome
- Pre-conditions:
- The metronome is playing
- Post-conditions:
- The metronome isn't playing anymore
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Stop metronome | |
2. Stop metronome | |
3. Update UI to show default values for measure title and repetitions left | |
Extensions (Alternative Flow): | |
- | - |
Figure 2.6.2.1: System Sequence Diagram for UC06 - Stop metronome
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- The actor can save a metronome to a file
- Pre-conditions:
- [None]
- Post-conditions:
- The values of the metronome are saved to a, by the actor, specified file
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Save file | |
2. Check if a file is already saved | |
[File is not already saved] | |
3. Prompt actor to select a file | |
4. Select a file | |
5. Save the metronome to the file | |
Extensions (Alternative Flow): | |
[File is already saved] | |
Go to step 5 | |
[Cancels selection] | |
4a. Stops saving of the file | |
4b. Return to default application state | |
[File already exists] | |
5a. Ask actor to overwrite file | |
5b. Agrees to overwrite file | |
5c. Save the file |
Figure 2.7.2.1: System Sequence Diagram for UC07 - Save file
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- The actor can open a metronome from a file
- Pre-conditions:
- [None]
- Post-conditions:
- The values of the file are displayed in the UI
Main Success Scenario | |
---|---|
Actor Action | System Responsibility |
1. Open file | |
2. Display open file dialog | |
3. Select file | |
4. Check if file is a valid JSON file | |
[File is valid JSON] | |
5. Parse the JSON and show in the UI | |
Extensions (Alternative Flow): | |
[Cancels selection] | |
3a. Return to default application state | |
[File isn't valid JSON] | |
4a. Display error dialog | |
4b. Return to default application state | |
[File doesn't contain correct JSON for application] | |
5a. Stop parsing JSON | |
5b. Return to default application state |
Figure 2.8.2.1: System Sequence Diagram for UC08 - Open file
- Primary Actor: Musician
- Stakeholders and Interests:
- [None]
- Brief Description:
- The actor can clear the UI and metronome by starting a new song
- Pre-conditions:
- [None]
- Post-conditions:
- The application state has been reset to it's default state
Main Success Scenario | |
---|---|
Actor Actions | System Responsibility |
1. Start new song | |
[If a song is loaded from a file] | |
2. Ask if actor wants to clear the current song | |
3. Allow clearing the song | |
4. Return to default application state | |
Extensions (Alternative Flow): | |
[User cancels creation of new song] | |
3a. Return to default application state |
Figure 2.9.2.1: System Sequence Diagram for UC09 - New song