Top Banner
μRock
39

uRock @ SITCON 2015

Jul 18, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: uRock @ SITCON 2015

µRock

Page 2: uRock @ SITCON 2015

⾃自我介紹•本名:楊宗凡 •綽號:浪打、sonicyang •來⾃自:成⼤大電機⼆二年級 •成⼤大C4Labs成員

• sonicyang.me • github.com/sonicyang

Page 3: uRock @ SITCON 2015
Page 4: uRock @ SITCON 2015
Page 5: uRock @ SITCON 2015
Page 6: uRock @ SITCON 2015
Page 7: uRock @ SITCON 2015
Page 8: uRock @ SITCON 2015

MicrocontrollerARM Cortex M4F

ARMv7 180 Mhz FPU SIMD

IEEE754

10100010101011010001010

1010001010101100101010101

101000101010110100010101100101

Page 9: uRock @ SITCON 2015

FirmwaresThe fundamental of Everything

ARM DSP Library

FatFs Library

Page 10: uRock @ SITCON 2015

STM32F429

CMSIS

STM32 Cube

FreeRTOS

DSP Library FATFS uGFX

Page 11: uRock @ SITCON 2015
Page 12: uRock @ SITCON 2015

f(x) d(x) g(x)X = ADCf(x) g(x)Analog Digital Converter

Page 13: uRock @ SITCON 2015

DAC F(x)g(x)Digital Analog Converter

Page 14: uRock @ SITCON 2015

Let’s say it’s 3 bits

Page 15: uRock @ SITCON 2015

Data Pipe

ADC

DAC

Buffer (12bits unsigned)

Q12.20 (Fix-Point Signed)

Effect 1 (Configurable)

Effect 2 (Configurable)

Effect 3 (Configurable)

Effect 4 (Configurable)

Wave Audio (SD Card)

Q12.20 (Fix-Point Signed)

Buffer (12bits unsigned)

Page 16: uRock @ SITCON 2015
Page 17: uRock @ SITCON 2015
Page 18: uRock @ SITCON 2015

Q NumbersIEEE 754

Page 19: uRock @ SITCON 2015

加法

6.253.125+———————9.375

0110.0100011.001+————————1001.011

Page 20: uRock @ SITCON 2015

乘法

6.253.125✕—————————————————

19.53125

00110.01000011.001✕

————————————————————————————

10011.100010

同理⼀一共6位⼤大家都知道是五位⼩小數

010

過多的要捨去 保留MSB

Page 21: uRock @ SITCON 2015

SIMD

BA

✕ ✕HIGH LOW-

Result

Page 22: uRock @ SITCON 2015

BranchesFunctions

Page 23: uRock @ SITCON 2015
Page 24: uRock @ SITCON 2015

The Aid of Python•內建⼤大數 •無浮點誤差 • Matplotlib

Page 25: uRock @ SITCON 2015
Page 26: uRock @ SITCON 2015

Distortion & Overdrive• Distortion是⽤用 If 或是飽和來 Clip

• Overdrive是再把結果 乘上Sine函數來圓滑

Page 27: uRock @ SITCON 2015

Saturation Arithmetic

• Distortion除了⽤用判斷的Clip還可以⽤用飽和運算達成 •⼀一般 Signed 16bits 運算

• 16384 * 2 > 32767 所以會是 - 32768 •飽和 Signed 16bits 運算

• 16384 * 2 > 32767 會鎖在 32767

Page 28: uRock @ SITCON 2015

Compressor

Input

Out

put

Level Relationship

Time

Leve

l

聽不到

Audio Signal

聽的到惹!

Page 29: uRock @ SITCON 2015

Compressor

• 使⽤用Envolope來偵測聲⾳音⼤大⼩小,也就是計算RMS

• 超過額定⼤大⼩小就壓縮⼀一定⽐比例

• 漸進壓縮

Page 30: uRock @ SITCON 2015

Delay & Reverb

• 500 ms進⼊入實⽤用範圍

• 由於內部的記憶體不夠⼤大,所以使⽤用外部的記憶體

• 外部 I/O 成為速度瓶頸

Data (t) In Data (t) Out+

Data (t - 1) Data (t - 2) Data (t - 3)

Page 31: uRock @ SITCON 2015

EQ

• IIR 濾波器

• MATLAB設計、DSP Library實作

Data (t) In Data (t) Out

High

Mid

Low

Gain

Gain

Gain

Page 32: uRock @ SITCON 2015

IIR濾波器

•離散系統下⾯面, 等校於類⽐比濾波器設計 •將不同Delay後的資料,

衰減後疊加達到濾波的效果

IN OUT+

Delay

Delay

Page 33: uRock @ SITCON 2015

Wave 錄⾳音、回放、伴奏功能

Page 34: uRock @ SITCON 2015

uGfx based UI

Page 35: uRock @ SITCON 2015
Page 36: uRock @ SITCON 2015
Page 37: uRock @ SITCON 2015

Live Demo

Page 38: uRock @ SITCON 2015

Further InformationGithub : github.com/sonicyang/urock

Hackpad : uRock.hackpad.com

Page 39: uRock @ SITCON 2015

Thank You for Listening任何問題歡迎提出