SlideShare a Scribd company logo
1 of 37
Download to read offline
LIVE PERFORMANCE EFFECTS
Tom Chen a.k.a 湯姆 / yychen	

ctchen@gmail.com
WHO AM I?
• Full Stack Engineer	

• Piano /Vocal	

• 有點腦殘
其實事情是這樣的...
Full Stack + Music = !!!!!!
Back End Programming / Python
Front EndTechnologies (javascript, CSS, HTML…)
Piano Playing
其實...
也可以找⼈人⽤用⼈人⼯工控制啦 XD
但這樣就不屌了
當然
可以⽤用偵測的⽅方式做同步化也很棒!!
BUT HOW?
#1 偵測
透過 MIDI, 接到數位訊號
偵測特定和弦 / ⾳音
D#3,A4
G3, C5, D5, G5
D#3, G4, C5, D5
偵測拍⼦子
根據每個⼩小節都只會出現的⾳音,	

⽤用 timedelta 算出⼀一個⼩小節有多少 milliseconds
偵測結束
紀錄最後⼀一次 MIDI signal 的 timestamp,	

並在 while loop 偵測每次 timeout 沒有回應的時間是否過⻑⾧長
每⼀一⾸首歌彈奏的⽅方式都不太相同	

依據彈奏特性找出 Pattern 來做偵測
#2 傳輸
後端傳到前端
⽤用 tornado 的 websocket push signal 到 browser
⾃自製 protocol (WebSocket)
*notes 按的⾳音符	

!signal 事件訊號	

@timestamp 時間相關訊號
*G3, F5	

!clock	

!RESET	

!silence	

@1.1.1	

@2.3.4
前端傳到後端
對 server 做⼀一般的 POST or GET
Tornado MIDI Listener
MIDI Controller
Web Socket
HTTP
Version 1 (PyCon 2014 APAC)
Tornado MIDI Listener
MIDI Controller
Web SocketThreading
Version 2 (Taipei.py meetup)
Tornado MIDI Listener
MIDI Controller
Web SocketThreading
Version 2 (Taipei.py meetup)
Admin
Web Socket
如果你們喜歡我們的表演
https://www.facebook.com/21band.tw
Back to the 21
9/27, 10/18 20:00 @ A house
http://www.walkieticket.com/product.aspx?P1=0000003240
Any Questions?
Back to the 21
9/27, 10/18 20:00 @ A house
http://www.walkieticket.com/product.aspx?P1=0000003240

More Related Content

Viewers also liked

Working with the django admin
Working with the django admin Working with the django admin
Working with the django admin flywindy
 
愛樂工程師
愛樂工程師愛樂工程師
愛樂工程師Tom Chen
 
Django 實戰 - 自己的購物網站自己做
Django 實戰 - 自己的購物網站自己做Django 實戰 - 自己的購物網站自己做
Django 實戰 - 自己的購物網站自己做flywindy
 
Integrating tornado and webpack
Integrating tornado and webpackIntegrating tornado and webpack
Integrating tornado and webpackTom Chen
 
那些年,我用 Django Admin 接的案子
那些年,我用 Django Admin 接的案子那些年,我用 Django Admin 接的案子
那些年,我用 Django Admin 接的案子flywindy
 
Learning django step 1
Learning django step 1Learning django step 1
Learning django step 1永昇 陳
 
Django workshop homework 3
Django workshop homework 3Django workshop homework 3
Django workshop homework 3flywindy
 
解密解密
解密解密解密解密
解密解密Tom Chen
 
Django sharing
Django sharingDjango sharing
Django sharingTom Chen
 
Django best practices for logging and signals
Django best practices for logging and signals Django best practices for logging and signals
Django best practices for logging and signals flywindy
 

Viewers also liked (12)

Django step0
Django step0Django step0
Django step0
 
Gitlab
GitlabGitlab
Gitlab
 
Working with the django admin
Working with the django admin Working with the django admin
Working with the django admin
 
愛樂工程師
愛樂工程師愛樂工程師
愛樂工程師
 
Django 實戰 - 自己的購物網站自己做
Django 實戰 - 自己的購物網站自己做Django 實戰 - 自己的購物網站自己做
Django 實戰 - 自己的購物網站自己做
 
Integrating tornado and webpack
Integrating tornado and webpackIntegrating tornado and webpack
Integrating tornado and webpack
 
那些年,我用 Django Admin 接的案子
那些年,我用 Django Admin 接的案子那些年,我用 Django Admin 接的案子
那些年,我用 Django Admin 接的案子
 
Learning django step 1
Learning django step 1Learning django step 1
Learning django step 1
 
Django workshop homework 3
Django workshop homework 3Django workshop homework 3
Django workshop homework 3
 
解密解密
解密解密解密解密
解密解密
 
Django sharing
Django sharingDjango sharing
Django sharing
 
Django best practices for logging and signals
Django best practices for logging and signals Django best practices for logging and signals
Django best practices for logging and signals
 

Live Performance Effects