Browse Source

remove unneeded dependency + reworked readme

Noah Vogt 4 years ago
parent
commit
b43030086c
2 changed files with 77 additions and 8 deletions
  1. 77 7
      README.md
  2. 0 1
      src/final-converter

+ 77 - 7
README.md

@@ -1,5 +1,5 @@
 # gizmo
 # gizmo
-**gizmo** is a simple toolbox to create some simple melodies using python. The beauty about is, that you only need *a single motive* to create a little song.
+**gizmo** is a simple toolbox to create some simple melodies using python. The beauty about is, that you only need *a single motif* to create a little song. As this toolkit is designed to be used in a terminal, it is very easy to extend and automate.
 
 
 *Note:* This program uses the [music21](https://github.com/cuthbertLab/music21) library.
 *Note:* This program uses the [music21](https://github.com/cuthbertLab/music21) library.
 
 
@@ -7,13 +7,73 @@
 
 
 Gizmo is a free (as in “free speech” and also as in “free beer”) Software. It is distributed under the GNU General Public License v3 (or any later version) - see the accompanying LICENSE file for more details.
 Gizmo is a free (as in “free speech” and also as in “free beer”) Software. It is distributed under the GNU General Public License v3 (or any later version) - see the accompanying LICENSE file for more details.
 
 
-## Dependencies
-First of all you need [python3](https://www.python.org/downloads/) including the standard librarys. Now install the only needed additional module using pip:
+## Installation
 
 
-	pip install music21
+Concerning Dependencies: First of all you need [python3](https://www.python.org/downloads/) including the standard librarys. Then install the needed additional modules using pip:
 
 
-## the 'gizmo notation'
-For a simple toolkit you need a simple notation that abides to the unix philsphoy. So we made a new one that consists simply of *lines in a plain text file*.
+	pip install music21 beautifulsoup4
+
+Now, the easiest way to use gizmo right away without bothering run any installation scripts is to clone this git repository and cd into it:
+
+    git clone https://github.com/noahvogt/gizmo
+    cd gizmo
+
+When you are in this basic environment, you can just call all the source files using *src/[file]*. This way, you dont even have to add it to your `path`.
+
+*Note:* It is planned to create a installer to you can call gizmo from your path as this could be better for maintaining a directory structure when just executing the programs provided by this toolkit.
+
+## Usage
+
+### Concept
+
+The concept of our toolkit follows the principles of basic music theory:
+
+- At first you create a motif - the smallest unit in the structure of the composition - on which the final composition is based on.
+- Next you create a subject based on the motif and various permutations - and similar sorts of transforming functions - of it.
+- Finally you concatenate a song using different variated forms of a subject to form a basic song structure (e.g. the ABBA form).
+
+### Tool Descriptions
+
+This toolkit consists of *three types* of different programs:
+
+- file type converters
+- (random) generators for specific parts in the composing process
+- short musical converters (e.g. ``half`` halfs the durations off all notes)
+
+Now a description of each single programm/library in ``src/``:
+
+**chordify**: convert a stream of single notes into chords
+
+**clean**: this cleans the working directory of temporary files generated by *thema-gen*. This may be deprecated.
+
+**double**: doubles the duration of all notes
+
+**final-converter**: converts the gizmo notation to MusicXML
+
+**gizmo_funtions.py**: this is a library for basic file operations
+
+**gizmo_transforming_functions.py**: this is a library for musical functions and transformations
+
+**half**: halfs the duration of all notes
+
+**higher-octave**: highes all notes by one octave
+
+**lower-octave**: lowers all notes by one octave
+
+**motiv_gen**: generates a random motif, but accepts optional flags
+
+**song-gen**: composes a little song using basic song structure
+
+**template**: this is a template for a future gizmo tool
+
+**thema-extender**: extends a subject
+
+**thema-gen**: generates a random subject based on input, but accepts different flags
+
+**xml-parser**: converts from MusicXML to the gizmo notation
+
+### The 'gizmo notation'
+The usual critique is that programmers always reinvent the wheel unnecessarily. But because we think that most conventional filetypes are too complex for our toolkit, so we made a more unix-friendly alternative that consists simply of *lines in a plain text file*.
 
 
 Every line contains the information about *one note*. Seperated by commas there are different attributes specified for each note. Every attribute seperated like this is called a **'part'**:
 Every line contains the information about *one note*. Seperated by commas there are different attributes specified for each note. Every attribute seperated like this is called a **'part'**:
 
 
@@ -31,5 +91,15 @@ Now the same example in *sheet music*:
 
 
 ![](media/readme-example.png)
 ![](media/readme-example.png)
 
 
-## Rendering
+### Filetype Conversions
+
+The beauty about the simplicity of the gizmo notation is that it can be easily converted from and to established open standards such as MusicXML.
+ 
+![a visualisation on how gizmo handles filetype conversions](media/filetype-conversions.png)
+
+### Basic Usage Examples
+
+[insert BASIC opertions]
+
+### Rendering
 After you fully processed your music in the gizmo notation you can run it through the script called *final-converter* to export your work as a **.musicXML** file. This file can be viewed and further edited/processed in other free software like [MuseScore](https://github.com/musescore/MuseScore).
 After you fully processed your music in the gizmo notation you can run it through the script called *final-converter* to export your work as a **.musicXML** file. This file can be viewed and further edited/processed in other free software like [MuseScore](https://github.com/musescore/MuseScore).

+ 0 - 1
src/final-converter

@@ -2,7 +2,6 @@
 
 
 # music21 settings
 # music21 settings
 from music21 import *
 from music21 import *
-from matplotlib import *
 import sys
 import sys
 if sys.platform == 'linux':
 if sys.platform == 'linux':
     environment.set('musicxmlPath', '/usr/bin/musescore')
     environment.set('musicxmlPath', '/usr/bin/musescore')