Skip to content

jm0535/streamlit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

38 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎡 Streamlit - Audio Research Platform

A professional-grade audio transcription and analysis platform built for musicological research, featuring real-time audio processing, stem separation, and a complete mixing console powered by Web Audio API.

✨ Features

🎯 Core Audio Processing

  • 🎡 Real-time Audio Transcription - Convert audio to MIDI with advanced pitch detection
  • πŸŽ›οΈ Professional Audio Mixer - Multi-channel mixing with Web Audio API
  • πŸ”€ Stem Separation - Isolate individual instruments from audio files
  • πŸ“Š Batch Processing - Process up to 50 files simultaneously
  • 🎼 Musical Notation - Generate sheet music and piano roll views

🎨 Professional Interface

  • πŸŽ›οΈ Mixing Console - Professional DAW-style interface with level meters
  • πŸ“± Responsive Design - Works seamlessly on desktop and tablet
  • 🌈 Beautiful UI - Modern design with shadcn/ui components
  • 🎯 Real-time Visualization - Audio waveforms and frequency analysis

πŸ” Authentication & Collaboration

  • πŸ‘₯ Enterprise Auth - Complete login/signup flows via Supabase
  • 🀝 Team Collaboration - Invite members and manage roles (Viewer/Editor/Admin)
  • πŸ“« Email System - Professional branded email templates with Resend SMTP
  • πŸ›‘οΈ Role-Based Access - Granular permissions for project resources

πŸš€ Quick Start

# Install dependencies
npm install

# Setup Environment (.env.local)
NEXT_PUBLIC_SUPABASE_URL=your_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_key

# Start development server
npm run dev

Open http://localhost:3000 to see your application running or access production at Streamlit.

🎹 Piano Roll Editor

Experience the professional audio mixer by visiting /mixer-demo:

  • Multi-channel mixing with volume, pan, and effects controls
  • Real-time level meters with visual feedback
  • Mute/Solo/Record functionality per channel
  • Master volume control and effects routing
  • Export/import mixer settings

πŸ—οΈ Technology Stack

🎯 Core Framework

  • ⚑ Next.js 15 - React framework with App Router
  • πŸ“˜ TypeScript 5 - Type-safe development
  • 🎨 Tailwind CSS 4 - Modern utility-first styling

πŸ”₯ Backend & Database

  • ⚑ Supabase - Open source Firebase alternative
  • 🐘 PostgreSQL - Robust relational database
  • πŸ” Auth - Enterprise-grade authentication
  • πŸ“¨ Resend - Reliable SMTP email delivery

🎡 Audio Processing

  • 🎡 Web Audio API - Low-latency audio processing
  • πŸŽ›οΈ Audio Nodes - Gain, Panner, Analyser for professional mixing
  • πŸ“Š FFT Analysis - Real-time frequency and time-domain analysis
  • 🎼 MIDI Processing - Complete MIDI file generation and manipulation

🧩 UI Components

  • 🧩 shadcn/ui - High-quality accessible components
  • 🎯 Lucide React - Beautiful icon library
  • 🎨 Framer Motion - Smooth animations and transitions
  • 🌈 Next Themes - Dark/light mode support

πŸ“‹ Data Management

  • 🎣 React Hook Form - Performant forms with validation
  • βœ… Zod - TypeScript-first schema validation
  • 🐻 Zustand - Simple state management
  • πŸ”„ TanStack Query - Powerful data synchronization

πŸ“ Project Structure

src/
β”œβ”€β”€ app/                    # Next.js App Router pages
β”‚   β”œβ”€β”€ auth/              # Authentication pages (login, signup, etc.)
β”‚   β”œβ”€β”€ mixer-demo/        # Professional audio mixer demo
β”‚   β”œβ”€β”€ stem-demo/         # Stem separation features
β”‚   └── page.tsx          # Main transcription interface
β”œβ”€β”€ components/            # Reusable React components
β”‚   β”œβ”€β”€ audio-mixer.tsx   # Professional mixing console
β”‚   β”œβ”€β”€ enterprise-layout.tsx # App shell with auth context
β”‚   β”œβ”€β”€ collaboration.tsx # Team management UI
β”‚   └── ui/               # shadcn/ui components
β”œβ”€β”€ lib/                   # Audio processing utilities
β”‚   β”œβ”€β”€ supabase.ts       # Database client & auth logic
β”‚   β”œβ”€β”€ audio-analysis.ts # Core audio analysis algorithms
β”‚   β”œβ”€β”€ audio-processor.ts # Audio file processing
β”‚   β”œβ”€β”€ stem-separation.ts # Instrument separation
β”‚   └── midi-utils.ts     # MIDI file generation
└── hooks/                 # Custom React hooks

🎡 Audio Features

Real-time Transcription

  • Pitch Detection - Advanced autocorrelation algorithms
  • Note Extraction - Intelligent note onset detection
  • Rhythm Analysis - Tempo and timing extraction
  • Confidence Scoring - Quality metrics for transcription accuracy

Piano Roll Editor

  • Note Grid - DAW-style visual note display
  • Effects Processing - Reverb, delay, EQ simulation
  • Note Editing - Click to add, select, and delete notes
  • Automation Ready - Parameter automation framework

Stem Separation

  • Frequency Analysis - Band-based instrument separation
  • AI-ready Architecture - Prepared for TensorFlow.js integration
  • Instrument Detection - Automatic instrument identification
  • Export Options - Individual stem export

πŸ”§ Development

Audio Processing

// Analyze audio file
const audioBuffer = await decodeAudioFile(file);
const analysis = await analyzeAudio(audioBuffer, options);

// Process with mixer
const gainNode = audioContext.createGain();
const pannerNode = audioContext.createStereoPanner();
const analyserNode = audioContext.createAnalyser();

Mixer Integration

<AudioMixer
  channels={channels}
  onChannelUpdate={handleChannelUpdate}
  masterVolume={masterVolume}
  onMasterVolumeChange={setMasterVolume}
  isPlaying={isPlaying}
  onPlayPause={handlePlayPause}
/>

πŸš€ Production Features

  • πŸ”’ Security - Updated dependencies, vulnerability fixes
  • ⚑ Performance - Lazy loading, optimized audio processing
  • πŸ“± Responsive - Mobile-first design principles
  • 🎨 Accessibility - WCAG compliant components
  • 🌍 Internationalization - Multi-language support ready

πŸ“š Documentation

🎯 Use Cases

πŸŽ“ Academic Research

  • Ethnomusicological Studies - Field recording analysis
  • Music Theory Research - Pattern and structure analysis
  • Performance Analysis - Timing and expression study

🎡 Professional Audio

  • Music Production - Demo recording and arrangement
  • Audio Engineering - Mixing and processing tools
  • Sound Design - Audio effect and texture creation

πŸŽ“ Education

  • Music Theory - Visual learning tools
  • Audio Engineering - Hands-on mixing experience
  • Research Methods - Data collection and analysis

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸŽ‰ Acknowledgments

  • Web Audio API - For powerful browser-based audio processing
  • shadcn/ui - For beautiful and accessible UI components
  • Next.js Team - For the excellent React framework
  • Audio Research Community - For the algorithms and techniques that make this possible

Built with ❀️ for the audio and research communities. 🎡

Releases

No releases published

Packages

No packages published

Languages