Skip to content

Commit 9def590

Browse files
committed
Minor changes to README
1 parent c2b0bf6 commit 9def590

File tree

4 files changed

+38
-15
lines changed

4 files changed

+38
-15
lines changed

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
### Get started
44

55
This is the source code for the "SongGenerator" project from the lecture SoftwareEngineering I. \
6-
To run the SongGenerator, download the repository and run the `build.bat` file. \
7-
This will create a new `dist` folder, in which you find an `SongGenerator.bat` file. Running that file will execute the program.
6+
To build the SongGenerator yourself, you need to use Windows and have [Java](https://www.oracle.com/java/technologies/downloads/) and [JavaFX](https://gluonhq.com/products/javafx/) 19 or higher downloaded. \
7+
Then open the `build.bat` file and update the `java-path` and `javafx-path` variables if necessary. \
8+
They should point to your Java and JavaFX SDK-Paths respectively. \
9+
You can now run the `build.bat` file. \
10+
This will create a new `dist` folder, in which you can find the `SongGenerator.bat` file. Running that file will execute the program.
811

9-
### Dive in the code
12+
### Dive into the code
1013

1114
For a highlevel overview > consult the architecture document (not included in this repository). \
1215
For an overview at package level > consult the readme inside each of the packages (music, text-analysis, text-generation, etc.) \

dictionary-creation/README.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<!--
2+
* @author Val Richter
3+
-->
4+
5+
# Dictionary Creation
6+
7+
The Resource Files for the Dictionary class of the SongGenerator are created here. \
8+
The `nouns.csv` and `verbs.csv` files are lists of german nouns and verbs. \
9+
These files were created via XML-Dumps from Wikipedia. \
10+
The `generateDict.py` script preprocesses these lists into more useful resource files, which are then used by the program.
11+
12+
The python script doesn't need to be run anymore, since the resource files are already created. \
Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,35 @@
1-
2-
<!--
1+
<!--
32
* @author Benjamin Frahm
43
* @reviewer Malte Richert
5-
-->
4+
-->
65

76
# Music
87

9-
This package deals with generating music, adding the text that was generated in the text component at the correct positions and persisting it in a midi file.
8+
This package deals with generating music, adding the text that was generated in the text component at the correct positions and persisting it in a midi file.
109
The generation is divided into 3 steps:
1110

1211
## 1. Template and text selection
12+
1313
In the first step a structure-template is selected from the genre's structure-templates (stored in yml-file).
1414
The structure is then passed to the TextGeneration component, where fitting texts are selected.
1515
Thereafter, some set-up work is done, like determining the number of midi tracks needed, calculating the length of the whole song, setting the tempo, etc.
16+
1617
## 2. Part-filling
18+
1719
After the structure and the texts have been selected, the actual music generation starts.
1820
This is done by iterating over the parts of the structure (intro, chorus, verse, etc.) and generating the notes that are to be played by the instruments specified in the part.
1921
The different instruments are treated as follows:
20-
- Chords: play the chord progression of the part in the right hand, play root note of the current chord in the left hand.
21-
- Bass: play a bass line that contains transitions between the chords of the part's progression
22-
- Drum: play a drumbeat selected from the drumBeat-templates
23-
- Melody: Every part has a 4- or 12-bar theme, which is then varied and applied in slightly different versions
22+
23+
- Chords: play the chord progression of the part in the right hand, play root note of the current chord in the left hand.
24+
- Bass: play a bass line that contains transitions between the chords of the part's progression
25+
- Drum: play a drumbeat selected from the drumBeat-templates
26+
- Melody: Every part has a 4- or 12-bar theme, which is then varied and applied in slightly different versions
2427

2528
Since some parts of the music are being reused (equal parts) or varied (theme variations), the music is not directly written as midi, but abstracted and stored as instances of the MidiPlayable class.
2629

2730
The specific midi instrument number to be associated with the abstract instruments (like chords, bass, etc.) is specified in a config file (instrument_mapping.yml).
31+
2832
## 3. Midi-File creation
33+
2934
After all MidiPlayables have been created, the conversion to actual midi begins, by iterating over the parts of the song in order, as specified in structure template, and writing the MidiPlayables' content into one Midi-Sequence-Object.
3035
After this is done, the text is added at the required positions (indicated by "vocals" instrument in the structure).
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,24 @@
1-
2-
<!--
1+
<!--
32
* @author Olivier Stenzel
4-
-->
3+
-->
54

65
# Text-Generation
6+
77
This package deals with the generation of a song text based on a `Structure`, a `MoodType`, a `TermCollection` and several templates. The structure is generated in the music package and the MoodType, as well as the TermCollection, based on the text given by the user.
88

99
## How the generation works
1010

11-
### Get an overview of the requirements
11+
### Get an overview of the requirements
12+
1213
First, the order, the naming of the parts (intro, chorus, verse, etc.) and the number of bars of the song are saved on the basis of the passed structure.
1314
Based on these, one part after the other is created and added to the song text.
1415

1516
### Create a strophe based on the part-requirements
17+
1618
A random strophe-template that has not yet been used is loaded from a collection of templates, written in several YAML-files.
1719
This strophe-template contains placeholders with requirements, which are analyzed and replaced by a matching word, stored in the TermCollaction.
1820

1921
### Passing the song text
22+
2023
For further processing, the song text is split and provided with additional information.
2124
At the end the TextGenerator returns a list for each part which assigns the generated song text and its number of syllables to each bar of the part.

0 commit comments

Comments
 (0)