- Notifications
You must be signed in to change notification settings - Fork1
A node-based audio-visual performance system built in Rust with real-time audio synthesis and GPU-accelerated visuals.
License
NotificationsYou must be signed in to change notification settings
compiling-org/nuwe-stripped
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
A node-based audio-visual performance system built in Rust with real-time audio synthesis and GPU-accelerated visuals.
- Glicol Live Coding: Real-time audio synthesis and live coding capabilities
- MIDI Support: Full MIDI input/output with device detection and routing
- Audio Analysis: Real-time FFT analysis, beat detection, and spectral analysis
- Audio Synthesis: Advanced synthesis capabilities with multiple oscillators and effects
- GPU-Accelerated Rendering: Using Bevy engine with Vulkan/DirectX support
- Shader Hot-Reload: Real-time shader development and testing
- Post-Processing Pipeline: Customizable visual effects and filters
- Asset Management: Efficient loading and caching of visual assets
- Visual Programming: Node editor for creating complex workflows
- Audio Nodes: Oscillators, filters, effects, analysis nodes
- Visual Nodes: Shaders, post-processing, generators
- Hybrid Workflows: Seamless integration between audio and visual processing
- Rust 1.75+ with Cargo
- Git
- A GPU with Vulkan/DirectX support
- Clone the repository:
git clone https://github.com/vdmo/nuwe-rust.gitcd nuwe-rust- Install Rust dependencies:
cargo build --release
- Run the application:
cargo run
The system starts with a rotating cube demo that demonstrates:
- Real-time 3D rendering
- Audio system initialization
- Visual shader effects
- Audio Input: Connect MIDI controllers or audio interfaces
- Live Coding: Use the Glicol syntax for real-time audio synthesis
- Visual Programming: Create node graphs for complex audio-visual mappings
// Example: Audio-reactive visual workflowAudioInput ->BeatDetector ->AudioToImage ->Display ↓ ↓ ↓MIDIControl ->Parameters ->VisualEffects
src/├── core/ # Core node graph system│ ├── graph.rs # Graph data structures│ ├── node.rs # Node trait and base types│ └── mod.rs # Core module exports├── audio/ # Audio processing system│ ├── glicol.rs # Glicol integration│ ├── midi.rs # MIDI handling│ ├── analysis.rs # Audio analysis│ └── mod.rs # Audio module├── visual/ # Visual rendering system│ ├── shaders/ # Shader management│ ├── effects.rs # Visual effects│ ├── post_processing.rs # Post-processing pipeline│ └── mod.rs # Visual module├── nodes/ # Node implementations│ ├── audio.rs # Audio processing nodes│ ├── visual.rs # Visual processing nodes│ ├── generators.rs # Signal generators│ └── mod.rs # Node exports├── compute/ # GPU compute shaders└── lib.rs # Main library fileusecrate::core::{Node,NodeId,InputPort,OutputPort,DataType};use std::collections::HashMap;use anyhow::Result;#[derive(Debug,Clone)]pubstructCustomAudioNode{pubid:NodeId,// Custom parameters}implNodeforCustomAudioNode{fnid(&self) ->NodeId{self.id.clone()}fnname(&self) ->&str{"CustomAudio"}fninputs(&self) ->Vec<InputPort>{vec![InputPort::new("audio_in",DataType::Audio)]}fnoutputs(&self) ->Vec<OutputPort>{vec![OutputPort::new("audio_out",DataType::Audio)]}fnprocess(&mutself,inputs:HashMap<String, serde_json::Value>) ->Result<HashMap<String, serde_json::Value>>{// Custom processing logicOk(HashMap::new())}}
# Run all testscargotest# Run specific test suitecargotest audio::testscargotest visual::tests
- bevy (0.17) - Game engine and app framework
- glicol (0.13) - Live coding audio synthesis
- petgraph (0.6) - Graph data structures
- serde (1.0) - Serialization framework
- cpal (0.15) - Cross-platform audio I/O
- rustfft (6.1) - Fast Fourier Transform
- midir (0.9) - MIDI input/output
- wgpu (26.0) - WebGPU implementation
- naga (26.0) - Shader translation
- image (0.25) - Image processing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow Rust naming conventions
- Add tests for new features
- Update documentation
- Ensure all tests pass
- Use
cargo fmtandcargo clippy
This project is licensed under the MIT License - see theLICENSE file for details.
- Bevy Engine - Rust game engine
- Glicol - Live coding audio synthesis
Built with ❤️ and Rust byKapil
About
A node-based audio-visual performance system built in Rust with real-time audio synthesis and GPU-accelerated visuals.
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Releases
No releases published
Packages0
No packages published
Contributors2
Uh oh!
There was an error while loading.Please reload this page.