SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
PyDrum: 開源軟硬體實做電子鼓
使用 Raspberry Pi + Python
洪任諭 (PCMan)@COSCUP 2016
E-mail: pcman.tw@gmail.com
2016-08-20
2
講者簡介
● Appier Backend Engineer
● 台大資訊工程研究所畢業
● 前榮總風濕免疫科醫師
● 陽明大學醫學系畢業
● 13 年自由軟體開發
– LXDE / LXQt 桌面環境
– PIME 輸入法平台
– 新酷音輸入法 windows port
– PCMan BBS client 全系列
– IE Tab Firefox 外掛
3
http://www.yamahamusic.com.tw/instrument/drums/drums%20manual/drums-manual-101.htm
YAMAHA Drumkit
4
學音樂的孩子不會變壞
只是 ...
5
夢想是昂貴的 ...
http://tw.yamaha.com/zh/products/musical-instruments/drums/el-
drums/drumsets/dtx900_series/dtx900k/?mode=model
YAMAHA DTX series
官網售價 NTD: 225,000 元
6
學音樂程式的孩子不會變壞
Maker 魂發作!
7
初代 PyDrum!
8
這才是完全體 !
9
沒圖沒真相 ...
1: https://youtu.be/ZGUp40ab1Dk
2: https://youtu.be/yVq7tDUDeAA
Demo: 台大吉他社 汪汪
10
硬體材料
● Raspberry Pi 2 (~NT.1300↓)
● ADC: Microchip MCP 3008 (~NT.90)
● RS SMD Diaphragm External Piezo Buzzer, 3700 → 4700
Hz (NT.18) x 7
● 2W 1MΩ 電阻 (NT. 2) x 7
● Linear Hall effect sensor (~NT. 80)
● 強力磁鐵 (~NT.40)
● 麵包板 : (~NT.80) 、各種線材…
● 很多洋芋片 (~NT. 65) x 6
11
軟體環境
● 程式部份:
– Python3
– Spidev ( 透過 Serial Peripheral Interface 讀取 ADC)
– Pygame ( 播放音效 )
● 鼓音色檔案
– 取自 Hydrogen 軟體 (GPL’d)
– http://www.hydrogen-music.org/hcms/
– 轉檔成 ogg
12
Piezo Element
● 壓電材質
– 輸入電訊號,產生形變 / 振動 → 蜂鳴器
– 輸入聲音 / 振動,產生電壓 → sensor
● 類比訊號 (Raspberry Pi 無法讀取 )
● 類似電容放電
13
Analogue to Digital Converter (ADC)
● 類比訊號 ( 電壓值 ) 轉數位訊號
● Microchip MCP3008 (10-bit, SPI 界面 )
類比
輸入
數位接地
電源供應 (RPi: 5V)
參考電壓 (ADC=VCHx
/ VREF
* 1024)
類比接地
SPI clock
SPI chip select ( 接 RPi SPI_CE0)
SPI 輸入 ( 來自 RPi MOSI 的輸入 )
SPI 輸出 ( 轉換結果送到 RPi MISO)
14
RaspberryPiModel2v1.1
©RaspberryPi2014
http://www.raspberrypi.org
Power
HDMI
Audio
USB 2x USB 2x
ETHERNET
DSI (DISPLAY)
CSI(CAMERA)
GPIO
11
55
1010
1515
2020
2525
3030
3535
4040
4545
5050
5555
6060
A
A
B
B
C
C
D
D
E
E
F
F
G
G
H
H
I
I
J
J
MCP3008
SC70
1
25
34
crash
Hihat padel
bass drum
ride
floor tomhihat
snare
tom
Pydrum - https://github.com/PCMan/pydrum
Copyright (C) 2016 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
動手接線 !
15
訊號分析
● 用 busy loop 連續讀取 ADC
– 平均 sampling rate 約 4000-5000 Hz
● 頻譜分析
– 5-order moving average ( 減低雜訊 )
– 傅立葉轉換 → 頻寬約 200Hz
– 根據 sampling theorem → 取樣率至少 400 Hz
● 嘗試下修 sampling rate
– 省電
– 200 Hz 會破壞波形,但偵測敲擊仍堪用
– 副作用:減少高頻雜訊 ?
16
訊號分析
原始訊號波形 傅立葉轉換 ( 頻譜 )
時間 (sec) 頻率 (Hz)
200Hz
17
取樣率 : 200Hz
Threshold: 100
18
( 近似 ) 固定時間取樣
SAMPLING_RATE = 200 # 目標 : 一秒讀 ADC 200 次
sampling_period = 1.0 / SAMPLING_RATE # 每次取樣時間間隔
wait_adjust = 0.0
next_read_time = time.time() # 下次讀取 spi 的時間
while True:
read_time = time.time() # 這次讀取的時間
read_adc_value() # 從 ADC 讀取數值
wait_adjust = next_read_time – read_time # 修正誤差
# 估計下一次應該讀取的時間
next_read_time = read_time + sampling_period + wait_adjust
# 計算現在時間距離下一次讀取還有多久
wait_time = next_read_time - time.time()
if wait_time > 0:
time.sleep(wait_time) # 等待下一次讀取
● RPi 無 realtime clock ,取樣速度忽快忽慢 ...
RPi2 實驗結果:平均取樣率 199.99 Hz
19
進化了 !
20
進化了 !
21
LIVE!
By: 餘弦杯 cos(☕) 樂團
22
23
特別致謝
● 勸世宗親會 ( 授權使用喵電感應 )
● 台大吉他社 汪汪 ( 測試及錄製 demo)
● 鼓手 : Jessie Mi
● 烏克麗麗 : penk (http://ukulele.design/)
– 下午 14:15 R1 議程 : 自己的樂器自己做
● Vocal: Dona
● COSCUP 全體人員
GitHub
https://github.com/PCMan/pydrum

Weitere ähnliche Inhalte

Was ist angesagt?

Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農 Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農 Shoichi Chou
 
使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式Kenson Chiang
 
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...IttrainingIttraining
 
嵌入式作業系統設計與實作 - 電吉他調音器
嵌入式作業系統設計與實作 - 電吉他調音器嵌入式作業系統設計與實作 - 電吉他調音器
嵌入式作業系統設計與實作 - 電吉他調音器聖文 鄭
 
認識 RoBoard 硬體
認識 RoBoard 硬體認識 RoBoard 硬體
認識 RoBoard 硬體roboard
 
瞻營全電子_六足機器人(二)
瞻營全電子_六足機器人(二)瞻營全電子_六足機器人(二)
瞻營全電子_六足機器人(二)CAVEDU Education
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面roboard
 
视频编码原理简介
视频编码原理简介视频编码原理简介
视频编码原理简介pluschen
 
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人艾鍗科技
 
11 share experience on porting 3 kingdoms td legned of shu
11   share experience on porting 3 kingdoms td legned of shu11   share experience on porting 3 kingdoms td legned of shu
11 share experience on porting 3 kingdoms td legned of shu乐费 胡
 
86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材roboard
 
Raspberry pi 基本操作
Raspberry pi 基本操作Raspberry pi 基本操作
Raspberry pi 基本操作艾鍗科技
 
MicroPython簡介
MicroPython簡介 MicroPython簡介
MicroPython簡介 Max Lai
 
六足機器人超入門簡介
六足機器人超入門簡介六足機器人超入門簡介
六足機器人超入門簡介roboard
 
王團 03-19 考題
王團  03-19 考題王團  03-19 考題
王團 03-19 考題T客邦
 
Raspberry Pi專題製作四旋翼飛行器
Raspberry Pi專題製作四旋翼飛行器Raspberry Pi專題製作四旋翼飛行器
Raspberry Pi專題製作四旋翼飛行器艾鍗科技
 

Was ist angesagt? (19)

Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農 Musicha 音創筆電試玩坊-在新竹碼農
Musicha 音創筆電試玩坊-在新竹碼農
 
使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式使用 Arduino 控制 ESP8266 的各種方式
使用 Arduino 控制 ESP8266 的各種方式
 
S4A
S4AS4A
S4A
 
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...實作 Linux Driver 移植在樹莓 Pi 上:Linux  One wire sensor & I2C framebuffer Driver Po...
實作 Linux Driver 移植在樹莓 Pi 上:Linux One wire sensor & I2C framebuffer Driver Po...
 
嵌入式作業系統設計與實作 - 電吉他調音器
嵌入式作業系統設計與實作 - 電吉他調音器嵌入式作業系統設計與實作 - 電吉他調音器
嵌入式作業系統設計與實作 - 電吉他調音器
 
Arduino導讀
Arduino導讀Arduino導讀
Arduino導讀
 
認識 RoBoard 硬體
認識 RoBoard 硬體認識 RoBoard 硬體
認識 RoBoard 硬體
 
瞻營全電子_六足機器人(二)
瞻營全電子_六足機器人(二)瞻營全電子_六足機器人(二)
瞻營全電子_六足機器人(二)
 
Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面Robotis Servo 與 RoBoard 之連接介面
Robotis Servo 與 RoBoard 之連接介面
 
视频编码原理简介
视频编码原理简介视频编码原理简介
视频编码原理简介
 
用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人用Raspberry Pi 完成一個智慧型六足機器人
用Raspberry Pi 完成一個智慧型六足機器人
 
11 share experience on porting 3 kingdoms td legned of shu
11   share experience on porting 3 kingdoms td legned of shu11   share experience on porting 3 kingdoms td legned of shu
11 share experience on porting 3 kingdoms td legned of shu
 
86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材86Duino 小六足機器人 DIY 課程教材
86Duino 小六足機器人 DIY 課程教材
 
Raspberry pi 基本操作
Raspberry pi 基本操作Raspberry pi 基本操作
Raspberry pi 基本操作
 
MicroPython簡介
MicroPython簡介 MicroPython簡介
MicroPython簡介
 
六足機器人超入門簡介
六足機器人超入門簡介六足機器人超入門簡介
六足機器人超入門簡介
 
王團 03-19 考題
王團  03-19 考題王團  03-19 考題
王團 03-19 考題
 
nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論nodeMCU IOT教學03 - NodeMCU導論
nodeMCU IOT教學03 - NodeMCU導論
 
Raspberry Pi專題製作四旋翼飛行器
Raspberry Pi專題製作四旋翼飛行器Raspberry Pi專題製作四旋翼飛行器
Raspberry Pi專題製作四旋翼飛行器
 

Andere mochten auch

PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)
PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)
PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)Jen Yee Hong
 
開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府
開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府
開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府Jason Cheng
 
TPET8演講: 非典型程式教育
TPET8演講: 非典型程式教育TPET8演講: 非典型程式教育
TPET8演講: 非典型程式教育Jen Yee Hong
 
2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享Jen Yee Hong
 
COSCUP 2014 - 自動化骨密度報告系統
COSCUP 2014 - 自動化骨密度報告系統COSCUP 2014 - 自動化骨密度報告系統
COSCUP 2014 - 自動化骨密度報告系統I-Ta Tsai
 
開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會Jason Cheng
 
Observium 開源SNMP主機監控平台 [2016/01/28]
Observium 開源SNMP主機監控平台 [2016/01/28]Observium 開源SNMP主機監控平台 [2016/01/28]
Observium 開源SNMP主機監控平台 [2016/01/28]Jason Cheng
 
開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會Jason Cheng
 

Andere mochten auch (9)

PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)
PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)
PIME - 用 Python 快速開發 Windows 的中文輸入法 (COSCUP 2015)
 
開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府
開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府
開源x節流:企業應用經驗分享 (一)+(二) [2017/02/03] @臺中市政府
 
TPET8演講: 非典型程式教育
TPET8演講: 非典型程式教育TPET8演講: 非典型程式教育
TPET8演講: 非典型程式教育
 
2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享2016-04-07-清大-國際化開源專案技術實務與經驗分享
2016-04-07-清大-國際化開源專案技術實務與經驗分享
 
COSCUP 2014 - 自動化骨密度報告系統
COSCUP 2014 - 自動化骨密度報告系統COSCUP 2014 - 自動化骨密度報告系統
COSCUP 2014 - 自動化骨密度報告系統
 
Gtk to qt
Gtk to qtGtk to qt
Gtk to qt
 
開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (一) [2016/03/31] 文件自由日研討會
 
Observium 開源SNMP主機監控平台 [2016/01/28]
Observium 開源SNMP主機監控平台 [2016/01/28]Observium 開源SNMP主機監控平台 [2016/01/28]
Observium 開源SNMP主機監控平台 [2016/01/28]
 
開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會
開源 x 節流:企業導入實例分享 (二) [2016/03/31] 文件自由日研討會
 

Ähnlich wie COSCUP 2016: 開源軟硬體實做全套電子鼓(python + RPi)

讓 Asp.net 在 raspberry pi 上飛
讓 Asp.net 在 raspberry pi 上飛讓 Asp.net 在 raspberry pi 上飛
讓 Asp.net 在 raspberry pi 上飛dplayerd
 
Linux Pro audio development 2017
Linux Pro audio development 2017Linux Pro audio development 2017
Linux Pro audio development 2017Shoichi Chou
 
Arduino Yun 物聯網 Lesson 1
Arduino Yun 物聯網 Lesson 1Arduino Yun 物聯網 Lesson 1
Arduino Yun 物聯網 Lesson 1CAVEDU Education
 
S3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cnS3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cnVidur Garg
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流bj
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流jondynet
 

Ähnlich wie COSCUP 2016: 開源軟硬體實做全套電子鼓(python + RPi) (7)

讓 Asp.net 在 raspberry pi 上飛
讓 Asp.net 在 raspberry pi 上飛讓 Asp.net 在 raspberry pi 上飛
讓 Asp.net 在 raspberry pi 上飛
 
Linux Pro audio development 2017
Linux Pro audio development 2017Linux Pro audio development 2017
Linux Pro audio development 2017
 
Arduino Yun 物聯網 Lesson 1
Arduino Yun 物聯網 Lesson 1Arduino Yun 物聯網 Lesson 1
Arduino Yun 物聯網 Lesson 1
 
S3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cnS3 cev40getting startv2.1 cn
S3 cev40getting startv2.1 cn
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流
 
搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流搜狐Pv insight(py)技术交流
搜狐Pv insight(py)技术交流
 
AMA 中級術科實作II
AMA 中級術科實作IIAMA 中級術科實作II
AMA 中級術科實作II
 

COSCUP 2016: 開源軟硬體實做全套電子鼓(python + RPi)