Skip to content

Latest commit

 

History

History
93 lines (72 loc) · 3.77 KB

File metadata and controls

93 lines (72 loc) · 3.77 KB

Aether DAW

Overview

Aether DAW is a Digital Audio Workstation (DAW) written in Rust. It features:

  • Desktop GUI built with Iced framework
  • Audio synthesis and playback using Phonic and DASP libraries
  • Track management with volume control, mute, and solo functions
  • Support for WAV file playback and sine wave synthesis
  • Real-time audio effects including low-pass filters

Project Structure

This is a Rust workspace with two main components:

aether_core

Core audio engine library containing:

  • engine.rs: Main audio engine with playback control
  • synth.rs: Audio synthesis (sine wave generation)
  • effects.rs: Audio effects (filters)
  • mixer.rs: Track mixing and management
  • utils.rs: Utility functions

aether_ui

Desktop GUI application built with Iced:

  • main.rs: Application entry point
  • app.rs: Main application state and logic
  • components/: UI components (track list, transport controls)

Technologies

  • Language: Rust (Edition 2021)
  • GUI Framework: Iced 0.12
  • Audio Engine: Phonic 0.13 with cpal-output
  • DSP: DASP 0.11

Building

The project is configured to build in release mode for optimal performance:

cargo build --release

The compiled binary will be located at: ./target/release/aether_ui

Running in Replit Environment

Environment Configuration

The application runs in a cloud environment without physical audio hardware. The audio engine has been modified to support a "dummy mode" that allows the UI to function without actual audio output.

The workflow is configured with special environment variables for headless operation:

  • XDG_RUNTIME_DIR=/tmp: Required for Wayland/X11 display
  • WGPU_BACKEND=gl: Forces OpenGL backend for graphics
  • LIBGL_ALWAYS_SOFTWARE=1: Enables software rendering (no GPU required)

Viewing the Application

The application runs as a desktop GUI displayed through VNC. Click the VNC preview in Replit to see the application window.

Expected Behavior

  • ALSA warnings in the console are normal and expected (no audio hardware available)
  • The message "Running in dummy mode. The UI will work but no audio will be played." confirms the app is running correctly
  • All UI controls work, but actual audio playback is simulated

Recent Changes (2025-11-29)

Replit Environment Setup

  1. Audio Engine Modification: Modified aether_core/src/engine.rs to support optional audio device initialization. When no audio device is available, the engine runs in "dummy mode" with all UI functionality intact but audio playback simulated.

  2. System Dependencies Installed:

    • Rust stable toolchain
    • ALSA libraries (alsa-lib)
    • X11 libraries (libX11, libXcursor, libXrandr, libXi)
    • Graphics libraries (mesa, vulkan-loader, libglvnd)
    • XKB common (libxkbcommon)
    • JACK audio (libjack2)
    • pkg-config
  3. VNC Workflow: Configured to run the GUI application through VNC display with software rendering enabled.

Architecture Decisions

Dummy Mode Implementation

The audio engine was refactored to gracefully handle missing audio devices by:

  • Making the phonic::Player optional (Option<phonic::Player>)
  • Adding a dummy_mode flag to track initialization state
  • Wrapping all audio operations in conditional checks
  • Providing informative console messages about dummy mode operation

This allows developers to work on UI and track management features without requiring actual audio hardware.

User Preferences

None specified yet.

Development Notes

  • The project includes several compiler warnings about unused code (imports, variables, functions) that don't affect functionality
  • The UI components include placeholder features (solo, transport controls) that are not fully implemented
  • Audio file playback expects WAV files and uses the Phonic library's built-in file source