DJ48 is a web-based DJ application that allows users to upload and play tracks, add live effects, and produce recordings of their mixes.
- User can upload up to two audio files from their local filesystem
- System prepares the track(s) for playing, mixing, and recording
- Utilizes Fourier Transform to decompose tracks into its frequencies
- Using the above decomposition, displays a spectrogram
- Using a drop-down box, can change visualization to a sine wave
- Sine wave visualization shows amplitudes of combined frequencies across time
- Play and pause in one button, switches functions on press
- Volume control
- Live playback of tracks with their effects and filters
- Seekbar that shows progress of track, and allows position to be changed
- Averages the BPM of the two tracks
- Sets the BPM of both tracks to the above calculated average
- Switch to enable/disable recording
- Records audio output from the web-page
- Record macros that log your inputs on the webpage
- Replay these macros back in time with your original inputs
- Import or write macros manually in Ace editor
- Shifts frequencies higher or lower
- Percentage-based
- Increases or decreases tempo, or beats-per-minute
- Percentage-based
- Plays back sound in defined intervals
- Echo effect
- Similar to regular Delay
- On each feedback loop, output is swapped between left and right channels
- Similar to regular Delay
- On each feedback loop, output is routed through a biquad filter
- Biquad filter "dubs" (swirling, psychedelic effect) successive echoes
- Alters sound by increasing gain, producing "fuzzy", "growling", or "gritty" tone
- aka Overdrive
- Divides sound into separate bands
- Applies distortion effects to each band independently
- Swirling effect
- Delays a copy of the sound by a small, gradually changing period
- Blends the copy back into the original signal
- Produces "comb filtering", constructive and destructive interference
- Squashes an audio signal's dynamic range, ratio between largest and smallest values
- Reduces volume of loud sounds
- Amplifies quiet sounds
- Passes signals with frequencies lower than cutoff
- Attenuates signals with frequencies higher than the cutoff
- Passes signals with frequencies higher than cutoff
- Attenuates signals with frequencies lower than cutoff
- Adjusts the distribution of the sound signal between the left and right channels
- Simulates particular physical environments
- Simulates the resonance or repercussion of sound in that environment
- Multiplies the track signal with a sine wave modulating the track
- Recreates the distortion applied to audio signals as it travels through diode nodes
- Cybermen and The Daleks from Dr Who
- Changes volume of the sound over time
- Similar outcome to changing volume up and down periodically
Note: Recorder feature requires web workers; some browsers may not allow this functionality on local files.
In this case, see the below section '[Server Access]'(https://github.com/coolstar/dj48#server-access).
- Clone repo.
- Checkout 'finalproject' branch.
- Open the top-level index.html file.
- Load songs by clicking either upload button, and choosing mp3 files of your choice.
Samples are provided for convenience in 'samples' folder of repo. - Click the sync button (tooltip: 'Sync') at the top of the page to set the BPMs of both tracks to the average of the two, if necessary.
- Click respective play buttons to play individual tracks, or click the play button (tooltip: 'Play All') at the top to play both at once.
- Add and modify effects using their respective sliders.
- The visualizer setting can be changed by selecting your choice from the dropdown menu next to 'Visualizer setting'.
- Create a macro that copies user inputs on the transport and effects controls by clicking on the record button (tooltip: 'Record Macro').
- Replay a macro by clicking on the play button (tooltip: 'Play Macro').
- To import a macro, click on the button with tooltip: 'Upload Macro'.
To more conveniently view the application, visit http://cs48-vps.coolstar.org/finalproject/dj48/.
The recording feature works on this server-hosted application.
- Load songs by clicking either upload button, and choosing mp3 files of your choice.
Samples are provided for convenience in 'samples' folder of repo. - Turn on the 'Record' switch to record your output.
- Click the sync button (tooltip: 'Sync') at the top of the page to set the BPMs of both tracks to the average of the two, if necessary.
- Click respective play buttons to play individual tracks, or click the play button (tooltip: 'Play All') at the top to play both at once.
- Add and modify effects using their respective sliders.
- The visualizer setting can be changed by selecting your choice from the dropdown menu next to 'Visualizer setting'.
- Recorded output is available by clicking 'Recordings'.
- Create a macro that copies user inputs on the transport and effects controls by clicking on the record button (tooltip: 'Record Macro').
- Replay a macro by clicking on the play button (tooltip: 'Play Macro').
- To import a macro, click on the button with tooltip: 'Upload Macro'.
Testing details can be found in the 'tests' directory.
- Race condition between playback update and user drag event on seekbar
- Sometimes prevents proper dragging of seeker
All libraries below are included in the repo under 'lib'.
- ace
- jquery
- nouislider
- pizzicato
- recorder
- soundtouch