James Gentes
jgentes@gmail.com
github.com/jgentes/mixpoint
# INTRO
Remix
MUI
SSR
Deployment
IndexedDb
Teaful
Web File System API
Web Audio API
WaveSurfer
Demucs
LameMp3
# AGENDA
# REMIX
# REMIX
# REMIX
# REMIX
# REMIX
# MATERIAL UI
# MATERIAL UI
# REMIX
# REMIX
# REMIX
# REMIX
Teaful.js
Data Lost on Browser Reload
Component State
Notifications
Smart Re-renders
Dexie.js (IndexedDb)
Browser Storage Holds Data
User Preferences
FS Handles & Cache
Sync with Cloud?
Web File System API
Your Local File System
Music Library
Downloaded Stems
Requires User Input
# APP STATE
# SESSION STATE
https://github.com/teafuljs/teaful
# SESSION STATE
https://github.com/teafuljs/teaful
# SESSION STATE
# PERSISTANT STATE
https://dexie.org/
# PERSISTANT STATE
https://dexie.org/
# PERSISTANT STATE
https://dexie.org/
# PERSISTANT STATE
https://dexie.org/
# LOCAL STORAGE
# LOCAL STORAGE
# LOCAL STORAGE
# LOCAL STORAGE
# LOCAL STORAGE
TS trick
# WEB AUDIO
# WEB AUDIO
for garbage collection
# WEB AUDIO
# WEB AUDIO
Convert MP3 file to Base64 and upload to Banana.dev
Spin up container, run Demucs audio separation, return stems as WAV files in Base64
Poll Banana.dev every 50s and download files when ready
Store MP3 files in cache for future access without requiring user intervention
Launch Web Worker to run LameMP3 to convert WAV files back to MP3 (320kbps)
# WEB AUDIO
# https://hub.docker.com/r/nvidia/cuda
FROM nvidia/cuda:12.0.0-base-ubuntu20.04
# Install demucs
RUN pip3 install --upgrade pip
RUN pip3 install -U demucs
# Trigger model download
RUN python3 -m demucs -n htdemucs test.mp3
RUN python3 -m demucs -n htdemucs_ft test.mp3
RUN rm -r separated # cleanup
# We add the banana boilerplate here
ADD server.py .
# Add your model weight files
# (in this case we have a python script)
ADD download.py .
RUN python3 download.py
# Add your custom app code, init() and inference()
ADD app.py .
EXPOSE 8000
CMD python3 -u server.py
# BANANA.DEV
# LAMEMP3
# LAMEMP3
# NEXT