Complete guide for building Paddle Decoder on Windows.
Download and run the installer from: https://rustup.rs
Or use PowerShell:
# Download rustup-init.exe and run it
# Follow the on-screen instructionsAfter installation, open a new PowerShell/Command Prompt and verify:
rustc --version
cargo --versionRust on Windows requires the Microsoft C++ build tools.
Option A: Visual Studio 2022 (Recommended)
- Download from: https://visualstudio.microsoft.com/downloads/
- Install "Desktop development with C++" workload
- Includes all required components
Option B: Build Tools Only (Minimal)
- Download "Build Tools for Visual Studio 2022"
- Install "C++ build tools" workload
- Smaller download, command-line only
Windows includes everything else needed:
- ✅ Audio support (Windows Audio Session API)
- ✅ GUI support (built into Windows)
- ✅ MIDI support (Windows MIDI API)
Navigate to project directory:
cd C:\path\to\paddle_decoder_cross_platformcargo build --releaseFirst build takes 3-5 minutes. Subsequent builds are instant.
target\release\paddle_decoder.execargo run --release.\target\release\paddle_decoder.exe- Navigate to
target\release\in File Explorer - Double-click
paddle_decoder.exe
Check Device Manager:
- Open Device Manager (Win+X → Device Manager)
- Look under "Sound, video and game controllers"
- Should see "USB Audio Device" or similar when Digispark is plugged in
Install Digispark Drivers (Windows 10/11):
Modern Windows usually auto-installs, but if needed:
- Download Digispark driver installer
- Run as Administrator
- Plug in Digispark
- Wait for driver installation
Check MIDI device:
# In PowerShell:
Get-PnpDevice | Where-Object {$_.FriendlyName -like "*MIDI*"}Cause: Missing Visual C++ Redistributable
Solution: Download and install:
- Microsoft Visual C++ 2015-2022 Redistributable (x64)
- From: https://aka.ms/vs/17/release/vc_redist.x64.exe
Check Windows Sound Settings:
- Right-click speaker icon in taskbar
- Open Sound Settings
- Verify output device is selected
- Test with other applications
Check Volume Mixer:
- Right-click speaker icon
- Open Volume Mixer
- Verify application isn't muted
If SmartScreen blocks:
- Click "More info"
- Click "Run anyway"
If Defender quarantines:
- Open Windows Security
- Virus & threat protection
- Protection history
- Restore the file
- Add to exclusions if needed
Application automatically scales on high-DPI displays.
Follows Windows dark/light theme automatically.
Automatically uses Windows default audio output device.
Create test_windows.ps1:
# Windows System Test
Write-Host "=== Windows System Test ===" -ForegroundColor Cyan
Write-Host ""
# 1. Check Rust
Write-Host "1. Checking Rust..." -ForegroundColor Yellow
if (Get-Command rustc -ErrorAction SilentlyContinue) {
$version = rustc --version
Write-Host " ✓ Rust installed: $version" -ForegroundColor Green
} else {
Write-Host " ✗ Rust not found" -ForegroundColor Red
Write-Host " Install from: https://rustup.rs" -ForegroundColor Yellow
exit 1
}
# 2. Check Build Tools
Write-Host "2. Checking Visual C++ Build Tools..." -ForegroundColor Yellow
if (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\") {
Write-Host " ✓ Visual Studio found" -ForegroundColor Green
} else {
Write-Host " ⚠ Visual Studio not detected" -ForegroundColor Yellow
Write-Host " May need C++ build tools" -ForegroundColor Yellow
}
# 3. Check Digispark
Write-Host "3. Checking USB devices..." -ForegroundColor Yellow
$devices = Get-PnpDevice | Where-Object {$_.InstanceId -like "*VID_16C0*"}
if ($devices) {
Write-Host " ✓ Digispark device found" -ForegroundColor Green
} else {
Write-Host " ⚠ Digispark not found - plug it in" -ForegroundColor Yellow
}
# 4. Check Audio
Write-Host "4. Checking audio devices..." -ForegroundColor Yellow
$audio = Get-CimInstance Win32_SoundDevice
if ($audio) {
Write-Host " ✓ Audio devices found" -ForegroundColor Green
} else {
Write-Host " ✗ No audio devices" -ForegroundColor Red
}
Write-Host ""
Write-Host "=== Test complete ===" -ForegroundColor CyanRun in PowerShell:
.\test_windows.ps1- Navigate to
target\release\ - Right-click
paddle_decoder.exe - Send to → Desktop (create shortcut)
Create create_shortcut.ps1:
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut("$Home\Desktop\Paddle Decoder.lnk")
$Shortcut.TargetPath = "$PWD\target\release\paddle_decoder.exe"
$Shortcut.WorkingDirectory = "$PWD\target\release"
$Shortcut.Save()
Write-Host "Shortcut created on Desktop!"Run:
.\create_shortcut.ps1Build a portable version:
# Build release
cargo build --release
# Create package folder
mkdir paddle_decoder_portable
cd paddle_decoder_portable
# Copy executable
copy ..\target\release\paddle_decoder.exe .
# Create README
echo "Paddle Decoder - Portable Windows Version" > README.txt
echo "Double-click paddle_decoder.exe to run" >> README.txt
echo "Make sure Digispark is plugged in!" >> README.txt
# Zip it
Compress-Archive -Path * -DestinationPath ..\paddle_decoder_windows.zipNow you have paddle_decoder_windows.zip ready to share!
cd C:\path\to\paddle_decoder_cross_platform
cargo run --releaseOr just double-click paddle_decoder.exe in target\release\!
73! 📻