---
# System prepended metadata

title: Research project

---

# Research project

De onderzoeksvraag:

> Hoe kan een GAN model gebruikt worden bij het genereren van Jazz muziek?

Er is een GAN model gemaakt om jazz muziek te genereren. Deze bestaat uit een model dat enerzijds een melodie maakt. En anderzijds een model dat sounds creëert met behulp van Magenta.

In deze Hackmd staat de gebruikershandleiding en de installatiehandleiding hiervan.

# Gebruikerhandleiding

## Een melodie genereren
Clone de github link: [Githublink](https://github.com/EechauteAntje/GAN_Researchproject.git) 

Download de modellen via deze link: [download](https://drive.google.com/drive/folders/10-S0SNllrL2Fub-Zz8szH9hTkeFeLZGL?usp=share_link).

Open de map 'Easy_to_use' in de repository.

Plaats de files van de modellen (.h5) in de map ‘files’.

### Anaconda

- Maak een nieuwe environment in anaconda.

    ``` cmd
    conda create -n gan python=3.6
    ```

    ``` cmd
    conda activate gan 
    ```

- Installeer de packages

    ``` cmd
    conda install -c anaconda cudatoolkit
    ```

    ``` cmd
    conda install -c conda-forge cudnn
    ```

    ``` cmd
    pip install tensorflow==2.5
    ```

    ``` cmd
    pip install music21
    ```

    ``` cmd
    pip install imageio
    ```

    ``` cmd
    conda install matplotlib
    ```

    ``` cmd
    pip install scikit-learn 
    ```

### Notebook

Ga naar de file ‘Generator.ipynb’. Volg de notebook met uitleg and maak melodieën.

## Een sound maken

Dit Gebeurt met een magenta model, genaamd GANSynth. Dit is een GAN model dat met behulp van CNN sounds creëert.

> Creëer een nieuwe environment. De vorige 'gan' environment kan problemen geven om Magenta te installeren.

``` cmd
> conda create -n magenta python=3.8
> conda activate magenta
```

```cmd
> pip install magenta
> pip install tensorflow_gan
```



Download het model: [download](https://drive.google.com/drive/folders/1GuKiRUcL5T_WMbShHlaa58eVUF8HMu9P?usp=share_link)

Dit is een map met het model in. Plaats deze map lokaal op de computer bijvoorbeeld in de github repo.

Voer het volgende commando uit in cmd (pas de paths aan waar nodig):

``` cmd
gansynth_generate --ckpt_dir=mymodel --output_dir=generated_song --midi_file=compositions/composition.mid
```

Het GAN model dat ik heb getraind zou nog langer moeten trainen om betere resultaten te krijgen.

Met de code hieronder kan je het getrainde model gebruiken van magenta.

``` cmd
gansynth_generate --ckpt_dir='gs://magentadata/models/gansynth/acoustic_only' --output_dir=generated --midi_file=midi_files/composition.mid
```



# Installatiehandleiding

## Trainen van het musegan model

Clone deze github link: [Githublink](https://github.com/EechauteAntje/gan_researchproject.git)

En ga naar de map 'Developing' en vervolgens naar de map 'musegan'.

De dataset die je kan gebruiken is de weimar jazz database. Download de midifiles via deze link: [download](https://jazzomat.hfm-weimar.de/download/downloads/RELEASE2.0_mid_unquant.zip) 
Of de Jazz ml ready Kaggle database. [download](https://www.kaggle.com/datasets/saikayala/jazz-ml-ready-midi/download?datasetVersionNumber=2)

Plaats de midifiles in de map 'data'.

### Anaconda

- Maak een nieuwe environment in anaconda.

    ``` cmd
    conda create -n gan python=3.6
    ```

    ``` cmd
    conda activate gan 
    ```

- Installeer de packages

    ``` cmd
    conda install -c anaconda cudatoolkit
    ```

    ``` cmd
    conda install -c conda-forge cudnn
    ```

    ``` cmd
    pip install tensorflow==2.5
    ```

    ``` cmd
    pip install music21
    ```

    ``` cmd
    pip install imageio
    ```

    ``` cmd
    conda install matplotlib
    ```

    ``` cmd
    pip install scikit-learn 
    ```

### Notebook

Ga naar de file ‘musegan.ipynb’. Volg the notebook met uitleg en maak melodieën.

## Trainen van het magenta model

Magenta heeft een aantal verschillende modellen. Bij dit project wordt het GANSynth model gebruikt. Met dit model gaan we een sound creëeren. Ik heb dit gedaan in Azure zodat ik het andere model lokaal kon runnen.

### Azure 

1. Maak een nieuwe resource group aan.
2. Maak een machine learning service aan.
3. Open de azure machine learning studio.
4. Maak een compute instance aan.
5. Ga dan naar Notebooks.

Installeer eerst Magenta en tensorflow_gan
```cmd
> pip install magenta
> pip install tensorflow_gan
```
De files die je nodig hebt vind je in de github repository in de map 'magenta'.

Plaats de folders en files in Azure.
De structuur in azure ziet er dan als volgt uit:
![](https://i.imgur.com/v24mkmX.png)


> In de map 'data' kan je jouw eigen samples plaatsen van leuke sounds. Plaats ze in '.wav' format en niet langer dan 4 seconden. Het model reageert het beste op sounds die constant zijn.

Open de 'GAN.ipynb' file en volg de notebook met uitleg.

Als alles vlot is verlopen moet de stuctuur in Azure er als volgt uitzien:
![](https://i.imgur.com/B6mljaR.png)

In de map 'Generated' vind je jouw gegenereerde sounds of song.

> Het model trainen duurt wel een aantal dagen om toch wat goed resultaten te krijgen.

# Mijn Resultaten

## musegan

### dataset

- Weimar Jazz dataset 
- Jazz ml ready Kaggle dataset

Deze twee dataset heb ik gebruikt. De dataset van Kaggle is iets grote dus meer data om op te trainen. Ook bestaat die uit meerdere instrumenten en files met akkoorden. 
De weimar jazzdataset is enkel gefocust op jazz melodieën.



> Jammer genoeg kon ik met deze dataset niet aan de slag omdat ze te groot waren en het veel te lang zou duren om eerst en vooral de data te preproccesen en vervolgens ook te trainen. Nog andere reden was dat deze ook minder gefocust waren op het genre Jazz.
> - Lakh midi dataset
> - minor9 

### Grafieken


|| Weimar Jazz dataset | Jazz ml Ready dataset |
|------- | -------- | -------- |
|Model loss| ![](https://i.imgur.com/cqnztQ1.png)| ![](https://i.imgur.com/UheTDIw.png)| 
|Output images midi| ![](https://i.imgur.com/YdIYDfH.png)| ![](https://i.imgur.com/ye3UxZP.png)|
|Melodieën|[Klik hier](https://drive.google.com/drive/folders/1HfcQyKEzQhtPNa3vKADCPJKE0s5Wo5Nz?usp=share_link)|[Klik hier](https://drive.google.com/drive/folders/1AGiWJ-8ctyzhk8i-rqm82T3E2c0G_J9m?usp=share_link)|

## Magenta

Dit zijn sounds die gecreëerd zijn door een eigen getraind Gansynth model.

|  | Voor Training model | na training model |
| -------- | -------- | -------- |
| Sounds     | [Klik hier](https://drive.google.com/drive/folders/1cgWwlM1YyW7EKk0Bh--ATbBqhq2cxOTG?usp=share_link)    | [Klik hier](https://drive.google.com/drive/folders/1vWkhPbmjbDaEfkEsJD0ahJKfulfL05WT?usp=share_link)     |

Voor betere resultaten moest het model nog een aantal dagen langer trainen.

[Hier](https://drive.google.com/drive/folders/1i8ZFPmrzvtUNQk12ClSo6l1UEgeX-FX3?usp=share_link) vind je sounds die gemaakt zijn met een model dat getraind is met Magenta.







