File size: 3,551 Bytes
84ae57b
 
 
 
 
e59d8f6
84ae57b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4e48007
84ae57b
 
 
 
 
 
 
 
 
 
 
 
 
4e48007
84ae57b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4e48007
84ae57b
 
 
 
 
 
e59d8f6
84ae57b
 
 
 
 
4e48007
84ae57b
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
---
title: NeuroMusicLab
emoji: 🧠🎵
colorFrom: indigo
colorTo: red
sdk: gradio
pinned: false
license: mit
short_description: A demo for EEG-based music composition and manipulation.
---

Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference

# EEG Motor Imagery Music Composer

A user-friendly, accessible neuro-music studio for motor rehabilitation and creative exploration. Compose and remix music using EEG motor imagery signals—no musical experience required!

## Features

- **Automatic Composition:** Layer musical stems (bass, drums, instruments, vocals) by imagining left/right hand or leg movements. Each correct, high-confidence prediction adds a new sound.
- **DJ Mode:** After all four layers are added, apply real-time audio effects (Echo, Low Pass, Compressor, Fade In/Out) to remix your composition using new brain commands.
- **Seamless Playback:** All completed layers play continuously, with smooth transitions and effect toggling.
- **Manual Classifier:** Test the classifier on individual movements and visualize EEG data, class probabilities, and confusion matrix.
- **Accessible UI:** Built with Gradio for easy use in a browser or on Hugging Face Spaces.

## How It Works

1. **Compose:**
   - Click "Start Composing" and follow the on-screen prompts.
   - Imagine the prompted movement (left hand, right hand, left leg, right leg) to add musical layers.
   - Each correct, confident prediction adds a new instrument to the mix.
2. **DJ Mode:**
   - After all four layers are added, enter DJ mode.
   - Imagine movements in a specific order to toggle effects on each stem.
   - Effects are sticky and only toggle every 4th repetition for smoothness.
3. **Manual Classifier:**
   - Switch to the Manual Classifier tab to test the model on random epochs for each movement.
   - Visualize predictions, probabilities, and the confusion matrix.

## Project Structure

```
app.py                # Main Gradio app and UI logic
sound_control.py      # Audio processing and effect logic
classifier.py         # EEG classifier
config.py             # Configuration and constants
data_processor.py     # EEG data loading and preprocessing
requirements.txt      # Python dependencies
.gitignore            # Files/folders to ignore in git
SoundHelix-Song-6/    # Demo audio stems (bass, drums, instruments, vocals)
```

## Quick Start

1. **Install dependencies:**
   ```bash
   pip install -r requirements.txt
   ```
2. **Add required data:**
   - Ensure the `SoundHelix-Song-6/` folder with all audio stems (`bass.wav`, `drums.wav`, `instruments.wav` or `other.wav`, `vocals.wav`) is present and tracked in your repository.
   - Include at least one demo EEG `.mat` file (as referenced in your `DEMO_DATA_PATHS` in `config.py`) for the app to run out-of-the-box. Place it in the correct location and ensure it is tracked by git.
3. **Run the app:**
   ```bash
   python app.py
   ```
4. **Open in browser:**
   - Go to `http://localhost:7860` (or the port shown in the terminal)

## Deployment

- Ready for Hugging Face Spaces or any Gradio-compatible cloud platform.
- Minimal `.gitignore` and clean repo for easy deployment.
- Make sure to include all required audio stems and at least two demo `.mat` EEG files in your deployment for full functionality.

## Credits

- Developed by Sofia Fregni. Model training by Katarzyna Kuhlmann. Deployment by Hamed Koochaki Kelardeh.
- Audio stems: [SoundHelix](https://www.soundhelix.com/)

## License
MIT License - see LICENSE file for details.