GUI for controlling a drum sample generator.
Clone this repo locally and install the dependencies in requirements.txt in a new environment with Python 3.6.10
Please download the pre-trained model checkpoints from the following link. Unzip the folder and store it in the "output" folder.
Use python run_gui.py to begin using the generation GUI.
This project utilsies a style-based generative adversarial network trained on collection of drum samples containing kick, snare, and cymbals.
The GUI contains the following features:
- Drum type selection: kick, snare, cymbal - achieved by conditioning the generative model on class labels during training
- Drum space: a 2D pad used for exploring drum sounds, with similar sounds presented closer together - created by applying UMAP to the latent distribution
- Morphing parameters: a set of synthesiser parameters for fine tuning and making variations - identified using PCA to find directions in the latent space
- Layer select: enables further fine tuning by selecting which layers of the network will be affected by Drum space and Morphing parameters - low [first three layers], mid [second three layers], high [final three layers] if the buttons are deselected, the current latent variable will be frozen for those layers until selected again for more focused control
- Amplitude: adjust the global ampltiude level
- Pitch: change the drum pitches - alters the sample rate for playback, plotting and saving
- Noise: introduces subtle variations each time a sound is generated - when maxed out (1.0), it emulates an analog synthesiser, in a drum will have subtle differences each time it is generated, when minimised (0.0), generations will be precise
- Rand seed : generates a random drum sound that can be manipulated with the Morphing parameters - randomly samples the latent space
- Blend Seed: enables blending between the random seed and the UMAP space - interpolates between the random latent vector and the UMAP vector
- Play: audio playback
- Save: saves audio to the generations folder