PiDVS An all-in-one Raspberry Pi based embedded Digital Vinyl System (DVS) allowing DJs the ability to use DVS without the need for a separate laptop or sound card
Project by: Sam Spreadborough Supervised by: Dr Chris Nash Contact details Sam Spreadborough Email: Sam.Spreadborough@uwe.ac.uk LinkedIn: https://www.linkedin.com/in/sam-spreadborough-0a16049a/ Dr Chris Nash Email: Chris.Nash@uwe.ac.uk

Table of Contents _______________________________________________________________________________________
Table of Contents
3
1.0 Introduction
4
1.1 Project details
4
1.2 Feature list
4
2.0 Hardware Overview
5
2.1 Technical Details
5
3.0 Software Overview
6
3.1 Libraries
6
3.2 Performance
6
4.0 Getting Started
7
4.1 Connecting the equipment
7
4.2 Preparing your music
7
5.0 GUI Overview
8
5.1 Main Screen Overview
8
5.2 Play Screen Overview
10
5.3 File Browser Overview
12
5.4 App Settings Overview
14
6.0 Other Features
16
6.1 Ethernet Link
16
6.2 MIDI
16
7.0 Future Development
17
7.1 Case
17
7.2 Effects bank
17
7.2 Master Tempo
17
8.0 Further information
18
9.0 Appendix
19
1.0 Introduction _______________________________________________________________________________________
1.1 Project details This is a undergraduate final year project for the Broadcast Audio and Music Technology degree course at The University of the West of England (UWE Bristol). As well as producing a final product, the project also looks to examine the user experience of using DJ products, and using this research, looks to produce efficient user experience for the PiDVS. The project idea came from seeing how easy the Pioneer CDJ 2000 (and similar) range of CDJs are; you just bring a USB music, and then seeing how complicated a standard DVS setup is. This project would be perfect for any DJ who enjoys playing using vinyl and would like to simplify their setup, or, for the DJ who's interested in learning to use vinyl but is intimated by other DVS solutions. The PiDVS is able to be adapted to work with any turntable or CD player (basically anything that can output Timecode) so long as one of the supported Timecode types are used (see section 5.4).
1.2 Feature list • 0.7 ms latency • Scrolling waveform • BPM display • Cue points • Loops • Able to play music from USB drive • File browser search • Software phono preamp for turntables without line level output • Players linked via ethernet can share beat counter information
2.0 Hardware Overview _______________________________________________________________________________________
2.1 Technical Details Below is a list of the equipment used in this project: Raspberry Pi 3 Model B 1.2 GHz ARMv8, 1GB RAM Handles the computation.
Official Raspberry Pi 7� Touchscreen RGB 800x480 touch display Touch screen display and frame for all other hardware to attach.
Audio Injector sound card 96KHz, 32 bit. 0.54 ms latency Provides stereo audio in and out.
Teensy 3.2 72 MHz Cortex-M4 Converts the digital scroll wheel to MIDI.
Fully assembled product
3.0 Software Overview _______________________________________________________________________________________
3.1 Libraries • Written in C++ using the JUCE framework library. https://www.juce.com
• Timecode decoding by the open source software XWAX. http://xwax.org
• Metadata extraction by the open source library TagLib. http://taglib.org
• BPM detection by the open source SoundTouch Audio Processing Library. https://www.surina.net/soundtouch/
Operating system - Rapsbian Jessie (a Raspberry Pi optimised version of Debian Linux) https://www.raspbian.org
3.2 Performance The PiDVS runs at 48KHz sampling rate, using a 32 sample block size. This gives a total latency of 0.7 ms. The scrolling waveform has a refresh rate of 60 frames per second.
4.0 Getting Started _______________________________________________________________________________________
4.1 Connecting the equipment To begin, connect the RCA cable from the turntable to the audio input on the PiDVS (the bottom two RCA connectors). Connect an additional RCA lead from the audio output (right hand audio connectors) to the mixer. Make sure that the volume knobs for both audio sockets are turned up to full.
4.2 Preparing your music The PiDVS doesn't require any track analysis prior to use. To create playlists, simply create a folder in your USB’s root directory. Any music files in that folder will appear in the file browser in that playlist. The PiDVS will extract metadata from the music files if it is present. PiDVS currently supports AIFF, MP3 and WAV audio formats.
5.0 GUI Overview _______________________________________________________________________________________
5.1 Main Screen Overview 1
2
3
4
5
6 7 8 9
10
11
12
13
14
Function
Description
1 Play screen button
Tapping anywhere on the play screen button will take you to the play screen
2 Beatgrid marker
Marks the beginning of a new beat
3 Scrolling waveform
The waveform of the audio being played will scroll. Can be zoomed in/ out from play screen. Shows any cue point markers.
4 Playhead
Indicates where on the waveform the audio is currently playing
5 Cue marker
Displays a coloured marker that corresponds with the cue colour in the play screen
6 File browser button
Tapping anywhere on the file browser button will take you to the file browser
7 Song title
Displays the song title of the currently playing song
8 Artist name
Displays the artist name of the currently playing song
9 Album Artwork
Shows the embedded artwork for the music file that is loaded. Tapping the album artwork brings up detailed track information.
10 Static waveform playhead/ cue marker
Indicates where on the static waveform that the audio is currently playing. Also marks the placement of cue points that corresponds to the cue colour in the play screen
11 Static Waveform
Shows the complete overview of the loaded music file. Can be tapped or scrubbed to move to a different part of the track
12 Time remaining/elapsed
Tapping this button will switch between time remaining and time elapsed
13 BPM/pitch
Tapping this button will switch between displaying the current BPM and the current pitch percentage
14 App settings button
Tapping anywhere on this button will take you to the app settings screen. This button also displays the current settings of the system
_______________________________________________________________________________________
5.2 Play Screen Overview 1
2
3
4
5
6
8
7
12
9
13 10
11 14
15 17
16
Function
Description
1 Zoom in waveform
Tapping anywhere on this portion of the waveform will zoom in the waveform
2 Back
Returns you to the overview screen
3 BPM display
Displays the current BPM of the playing track
4 Beat counter for this deck
Displays a visual representation of the position of the track within the musical bar.
5 Beat counter of the linked PiDVS deck
If two players are linked via ethernet, this beat counter will display the position of the track within the musical bar of the linked PiDVS deck
6 Musical bar counter display
Displays the musical bar counter
7 Zoom out waveform
Tapping anywhere on this portion of the waveform will zoom out the waveform
8 Cues tab
Tapping this tab will bring up the cues tab
9 Loops tab
Tapping this tab will bring up the loops tab
10 Cue button
Tapping this will place a cue point in the track. The button text will change to show a timestamp and will change colour. Tapping it again will return the track to the cue point.
11 Static waveform
Shows a full waveform of the loaded audio file
12 Pitch Drift Correction button
Still in development: this function will correct for turntable wow and flutter when enabled.
13 Clear Cue
Once enabled, any cue you tap will be cleared.
14 Start of track cue
Tapping this restarts the track back to 00:00:00 time
15 Loop In
Places a loop in point. This point is quantised to the beat grid
16 Loop out
Places a loop out point. This point is quantised to the beat grid
17 Exit
Exits the loop
_______________________________________________________________________________________
5.3 File Browser Overview 1
2
3
4
5 6
7 8
9
Function
Description
1 Back
Returns to the overview screen
2 Load
Loads the selected track to the deck
3 Search
When tapped, brings up the on-screen keyboard. Displays the current search term. The file browser will update as you type
4 Clear
Will clear the search bar and the file browser will reset
5 Playlists
Displays the available playlists. Tapping on them will display the tracks in the file browser
6 File browser
Shows all the tracks in the chosen playlist. Each track will show the track title, artist name, time, BPM, and key. When a file has been loaded, the key section will highlight in green files that are in compatible keys. Also displays the artwork that is embedded in the file.
7 On-screen keyboard
Appears once the search bar has been tapped
8 Delete
Deletes the last character
9 Hide
Hides the on-screen keyboard
_______________________________________________________________________________________
5.4 App Settings Overview 1
2
3
12
4 5
6 7 8 9
10 Function
11 Description
1 Back
Returns to the overview screen
2 Audio device settings
For development purposes. Will be omitted from finished version
3 Exit app
For development purposes. Will be omitted from finished version
4 Timecode Model
Select from the following supported Timecode vinyl types: Serato 2nd Edition Side A Serato 2nd Edition Side B Serato CD Traktor Scratch Side A Traktor Scratch Side B Mixvibes V2 Mixvibes 7�
5 Playback Mode
Select from the following playback modes: Internal mode Relative mode Absolute mode (still in development) Through mode
6 Deck number
For development purposes. Will be omitted from finished version
7 Music Drive
Any connected music sources will be displayed here
8 Scanning label
During initial scanning of the drive, will display the found files
9 Software Preamp
If the turntable outputs phono level audio, you should enable this. Works fine during normal playback, however is less accurate at slower pitches. For best results use a turntable that outputs line level audio, or use a hardware phono preamp.
10 Static Waveform
Shows a full waveform of the loaded audio file
11 Noise Threshold
If the turntable has grounding issues, or the turntable is picking up feedback noise. Turn the turntable off and press this to calibrate the noise threshold
12 Beatgrid
Enables/disables the beat grid markers
6.0 Other Features _______________________________________________________________________________________
6.1 Ethernet Link The PiDVS system is able to send OSC messages to each deck when connected via ethernet. When connected, the connected deck’s beat counter will be displayed in the play screen. Features still in development: Network sharing of USB drives using SAMBA. BPM sync
6.2 MIDI The PiDVS is fully MIDI compatible. For the purposes of this project a MIDI scroll wheel was developed using the Teensy. When the scroll knob is turned, the file browser will automatically appear and will allow you to scroll up and down the file browser. When the scroll knob is pressed in, the selected file will be loaded. Because the PiDVS is fully MIDI compatible, it is entirely possible to MIDI map any MIDI compatible device to control the software. Possible hardware combinations for MIDI support could be: PiDVS and the Novation Dicer : The dicer could be used to execute cue points, loops, and track selection.
PiDVS and the Reloop RP 8000 : The RP 8000 is a MIDI compatible vinyl turntable, so would be the perfect choice to compliment the PiDVS. It is also line level output.
7.0 Future Development _______________________________________________________________________________________
7.1 Case A 3D printed case is currently being designed.
7.2 Effects bank Depending on whether the computing power of the Raspberry Pi will allow this, the project could have a small range of effects that can be manipulated either through multitouch or from scratching of the vinyl.
7.2 Master Tempo Having the ability to maintain the frequency pitch of the music file whilst the platter speed is changed. From early experiments with this feature, the Raspberry Pi struggles to perform this well. There would need to be experimentation with other algorithms in order to find a good balance between performance and audio quality.
8.0 Further information _______________________________________________________________________________________ If you are interested in the project and would like further information, please contact: Sam Spreadborough Email: Sam.Spreadborough@uwe.ac.uk LinkedIn: https://www.linkedin.com/in/sam-spreadborough-0a16049a/
There are currently no plans to release this commercially. 
9.0 Appendix _______________________________________________________________________________________
Project presentation poster - shows an overview of the project; shows an older version of the software