SenchaCon: DJing with Sencha Touch

44
Stan Bershadskiy, Senior Engineer, Modus Create @stan229 [email protected] DJing with Sencha Touch Monday, July 22, 13
  • date post

    22-Oct-2014
  • Category

    Technology

  • view

    676
  • download

    3

description

 

Transcript of SenchaCon: DJing with Sencha Touch

Page 1: SenchaCon: DJing with Sencha Touch

Stan Bershadskiy, Senior Engineer, Modus Create

@[email protected]

DJing with Sencha Touch

Monday, July 22, 13

Page 2: SenchaCon: DJing with Sencha Touch

Agenda• Introduce the art form of DJing• Demonstrate Touch DJ• Dive into how the Touch DJ app was built

Monday, July 22, 13

Page 3: SenchaCon: DJing with Sencha Touch

About Me• Senior Engineer at Modus

Create• Started with Sencha GWT,

now focused on Touch• Author of Sencha Touch

DZone Refcard• DJ in my spare time

Monday, July 22, 13

Page 4: SenchaCon: DJing with Sencha Touch

What is DJing?

Monday, July 22, 13

Page 5: SenchaCon: DJing with Sencha Touch

“A truly great DJ, just for a moment, can make a whole room fall in love.” - Bill Brewster & Frank Broughton

Monday, July 22, 13

Page 6: SenchaCon: DJing with Sencha Touch

Monday, July 22, 13

Page 7: SenchaCon: DJing with Sencha Touch

Monday, July 22, 13

Page 8: SenchaCon: DJing with Sencha Touch

Touch DJ

Monday, July 22, 13

Page 9: SenchaCon: DJing with Sencha Touch

Demo

Monday, July 22, 13

Page 10: SenchaCon: DJing with Sencha Touch

Building the App

Monday, July 22, 13

Page 11: SenchaCon: DJing with Sencha Touch

Front-End• Sencha Touch 2.2• 3rd Party Libraries:

- WaveSurfer.js- Audio Visualization- http://katspaugh.github.io/wavesurfer.js/

- Dragdealer JS- Drag-based slider component- http://code.ovidiu.ch/dragdealer/

- JavaScript ID3 Reader- https://github.com/aadsm/JavaScript-ID3-Reader

• Flat UI design

Monday, July 22, 13

Page 12: SenchaCon: DJing with Sencha Touch

Developing the UI• Components:

- Browser- Deck- Mixer

• Controllers:- Main- Deck- MIDI

Monday, July 22, 13

Page 13: SenchaCon: DJing with Sencha Touch

Deck

Looping

Real Time Waveform

Pitch Bend

Pitch ControlCue PointTrack Info

Monday, July 22, 13

Page 14: SenchaCon: DJing with Sencha Touch

Deck Component

Monday, July 22, 13

Page 15: SenchaCon: DJing with Sencha Touch

Deck Component

Monday, July 22, 13

Page 16: SenchaCon: DJing with Sencha Touch

Mixer

3 Band Equalizer

Volume Control

Volume Meters

Crossfader

Transport Buttons

Monday, July 22, 13

Page 17: SenchaCon: DJing with Sencha Touch

Mixer Component

Monday, July 22, 13

Page 18: SenchaCon: DJing with Sencha Touch

Mixer Fader Event Handlers

Monday, July 22, 13

Page 19: SenchaCon: DJing with Sencha Touch

Track Browser

Deck Load Buttons

Track Metadata

Monday, July 22, 13

Page 20: SenchaCon: DJing with Sencha Touch

Browser Component

Monday, July 22, 13

Page 21: SenchaCon: DJing with Sencha Touch

Deck Controller

Monday, July 22, 13

Page 22: SenchaCon: DJing with Sencha Touch

Deck Play/Pause Support

Monday, July 22, 13

Page 23: SenchaCon: DJing with Sencha Touch

Web Audio API• JavaScript API for processing

and synthesizing audio• Built on Audio Routing Graph

paradigm• Allows for real time audio

analysis and manipulation• Used in Games, Music

players, Musical Instrument emulators and more...

Monday, July 22, 13

Page 24: SenchaCon: DJing with Sencha Touch

Touch DJ Audio Graph

Monday, July 22, 13

Page 25: SenchaCon: DJing with Sencha Touch

Touch DJ Audio Graph

Audio Bu!er

Monday, July 22, 13

Page 26: SenchaCon: DJing with Sencha Touch

Touch DJ Audio Graph

Audio Bu!er

Analyser Script Processor

Context Destination

Filter (High EQ)

Filter (Mid EQ)

Filter (Low EQ)

Gain (XFader)

Gain (Master)

Monday, July 22, 13

Page 27: SenchaCon: DJing with Sencha Touch

Initializing Gains & EQs

Monday, July 22, 13

Page 28: SenchaCon: DJing with Sencha Touch

Implementing Looping

Monday, July 22, 13

Page 29: SenchaCon: DJing with Sencha Touch

Implementing Looping

Monday, July 22, 13

Page 30: SenchaCon: DJing with Sencha Touch

Crossfading

Monday, July 22, 13

Page 31: SenchaCon: DJing with Sencha Touch

Crossfading

Monday, July 22, 13

Page 32: SenchaCon: DJing with Sencha Touch

Node.js Backend• Serve static Touch app • Support Track Browser

- Track Listing JSON- Serve Cover Art for each track

• Serve audio files• Modules:

- Express- Socket.io- Async, Music-metadata, and node-midi

Monday, July 22, 13

Page 33: SenchaCon: DJing with Sencha Touch

Why Node.js?• JavaScript on both ends• Asynchronous event-driven model• Extraordinary amount of well written third party modules

Monday, July 22, 13

Page 34: SenchaCon: DJing with Sencha Touch

Load Track Metadata

Monday, July 22, 13

Page 35: SenchaCon: DJing with Sencha Touch

Serve Track Metadata

Monday, July 22, 13

Page 36: SenchaCon: DJing with Sencha Touch

External MIDI Support• Allow external devices to control

Touch DJ- iPhone / iPad via TouchOSC or any

other device/software that sends MIDI• MIDI messages communicated to the

client via WebSockets• Client uses a MIDI Mapping JSON file

- MIDI Control ID App Event Name

Monday, July 22, 13

Page 37: SenchaCon: DJing with Sencha Touch

Server MIDI Support

Monday, July 22, 13

Page 38: SenchaCon: DJing with Sencha Touch

Client MIDI Support

Monday, July 22, 13

Page 39: SenchaCon: DJing with Sencha Touch

Client MIDI Support

Monday, July 22, 13

Page 40: SenchaCon: DJing with Sencha Touch

Sencha Touch Resources

Monday, July 22, 13

Page 42: SenchaCon: DJing with Sencha Touch

Lessons Learned• Mobile Tablet Performance is poor• Implementing simple audio operations can be complicated

Monday, July 22, 13

Page 43: SenchaCon: DJing with Sencha Touch

Conclusion• Web Audio API is extremely

flexible, powerful and performant

• Sencha Touch plays well with external libraries via Custom Components

• Node.js has a rich module ecosystem that allows quick ramp up

Monday, July 22, 13

Page 44: SenchaCon: DJing with Sencha Touch

Take the Survey!• Session Survey

- Available on the SenchaCon mobile app

- http://app.senchacon.com

• Be Social!- @SenchaCon- #SenchaCon- Add your speaker handle here

or delete this bullet

Monday, July 22, 13