你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于堆栈的synth & livecoding STM32 平台

[复制链接]
丿灬幸灬 发布时间:2018-11-14 19:34
9643971455571936324.jpg / S/ K- m5 L; [0 V) a$ p
描述
: g$ p/ p# n. m. l: x+ i8 q9 ~5 B: R( ?  M
具有悠久历史的声音玩具(更多,一些不太严重的)和受极端demoscene的限制,去年我终于开始回到底层编码和探索 ARM / STM32 平台的可能性。连同我的正在进行的研究和其他stack-oriented语言,我很快到达的想法来创建一个可编程(最终活codeable)合成器环境对于这些廉价,嵌入式ARM设备。
5 t" [# c0 a4 k: M# r* s, k9 l" k- u, M
) G; c+ o  u, q0 Y+ j7 @/ W
宏伟计划不是建立一个经典VSTi类型synth UI,但音频引擎&像DSL来定义DSP栈和选择性地生成触摸屏GUI元素(如图片所示)甚至GPIO /传感器对各种参数的映射。DSL还允许集成传感器更好地利用平台提供了外围的可能性……' F4 c5 O6 b4 T; A
* W4 N3 S4 b4 h
8 G( ]0 y: X; `/ c* B* h
到目前为止,synth架构是接近完成,已经重写几次。DSL实现仍处于早期阶段4 Z/ T4 C* [& G. }
1 m, o- T6 p$ {
% {8 C! Q+ _$ Z6 Z8 D+ j
组件
, a+ v6 `) [3 L9 Y+ ^- Y. K
( ]( W" c% _$ z1×STM32F401-DISCOVERY4 z, S; x0 G% I$ T# ?5 v

6 N" D, d* j' n9 g! LDevboard用于早期的原型1 g1 I  Z  K1 {( c) G
) }( n  O& m, w
1×STM32F746-DISCOVERY
3 `5 k: a3 z3 p; m5 p
; D) h$ _' B9 @# \* r
) W! }, x$ V& d7 g0 _* a9 f 4654461454010400468.jpg & |/ I' c6 s1 F" h- \. n$ H+ S, u
原始synth代码& 8月workshop; r) X; q% S: h6 j# z
* T3 a; H( f# K  `, b8 ]$ X- O

3 B& w6 ~( H3 m) k, q* m作为临时解决方案&因为工作的方式在最近几个月,造成这个项目的发展慢下来(不停止!),我决定把一些早期的和更稳定的版本先放出来, B  i: @9 r3 w4 U
请见这里
- P  H( N3 F( o) f& z# J# c' E! l6 w7 L
现在这个回购包括基于迭代的节点图,但功能更丰富的synth引擎(包括8例)和早期版本的VM & REPL。注意尽管这回购只包含便携式synth代码和没有STM32细节。相反,为更多的人使实验更容易,所有演示使用Portaudio允许运行OSX / Linux (Windows主要,但未测试)。
5 j; b- P& n- q* n
6 I5 X( W4 z: X9 l2 p2 _3 d8 Y
" n) X4 k. n- B- b" }# y1 F& c* A下次我将运行的另一个迭代STM32 synth车间,这可能会产生更多的更新在这方面……" A  m: }$ a3 f/ C1 }, i- T- Q

. h  `2 e8 ^; q8 S- Q
; W# i+ p& }$ }6 g% \正确的项目名称和100%的例子3 ^8 B7 w# Y6 w6 a! a. i  L

' q* |7 r( F* H: K- x9 T( i/ J& W& R' y

1 ]4 m8 {! x2 U+ H由于所有最近修订的这个项目已经围绕Forth-style堆栈VM的概念定义音频操作和产生的synth的声音,我决定最后项目名称:Synstack。
; v7 I! [9 m7 ^9 J8 ], g4 e) _7 B' n- }3 f- g0 s% e
9 M* ~! j  o4 W+ @& f9 C$ C, J
堆栈VM相当功能现在也严重受经典JonesForth的线程代码实现,尽管到目前为止仍然用c语言编写更有用指导来自@phaendal很棒documentation-forth(即使它是日本)——这两个可能是最可读的实现我所知道的。到目前为止没有被考虑的目标ANS兼容性。
4 X7 c3 {0 e( r2 K9 O% r* N9 D, L3 I

$ @$ P1 G" H) `在24-27KB Synstack VM当前时钟。这包括一些音频相关的东西:振荡器、ADSR, IIR滤波器,监听失真,所有这些都实现为本地话。VM还包括浮点支持,基本的字符串操作,用户可定制的内联的话(例如加快var查找)。控制结构、var和一个基本的反汇编程序实现为单词。7 H3 Q  q- g# K' n$ d
7 j& e1 b' a1 l- y* I7 V

3 _! V, w) X4 |/ T' I2 f几个不同的版本的音频结果下面的单声道synth代码可以在这里4 M9 x3 q  ~5 E& |

9 l/ ~: l$ [2 P5 T1 h; N( O& O; x# h( X6 Z3 N' w
% w+ C2 n9 z. F! r% _
最后的“更新”字是反复调用音频管理器提供了下一个时间片的32个样本。到目前为止,我发现这是潜在的内存使用情况之间的甜蜜点几十个运营商(尤其是在复调)和满足皮层M-7的高速缓存线路,然而缓冲区的大小是可定制的。在这个例子中“更新”字还充当简单的概率音序器,引发新的notes每150 w女士/ 60%的几率。STM32这所有通过DMA ISR触发回调,OSX上我用Portaudio作为测试音频后端,它使用一个v。类似的方法……- L9 v2 j' r& T5 u& g) N+ I

* @! [* |( l& r+ |: I+ V9 s6 {% ^; @$ x2 U" S5 J
1.png
( c: q! b  }+ ?$ P5 }& v/ e8 m( l! e( G. ~5 m- J; q4 g# S$ l8 W6 J
6 |, M/ R6 u# U3 f- m& d
没什么超级令人兴奋的声音,但我很兴奋的可能性这打开…第一次公开发布的这个项目的目的是在4月中旬…4 t; |: U0 w, a; @

1 J# T" B; w* m6 O* M( J& A1 ]8 Y6 [. N+ q: |+ ^  K
MIDI支持& 2 x从音序器演示
( Y, j  ]8 b# ^& `6 ?% \9 c' g

+ h7 |: h" d' [% J$ J  P( K只是移植和扩展MIDI音序器演示从先前的STM32F401迭代步STM32F746和更新回购。
6 n( n, D' z! z2 G: E; S3 U# W
" g+ c5 c' ^7 B; ^. G% C6 e, |! [/ K视频
& e$ r$ n9 c: A3 ]6 [8 e& G+ x- f; v1 {- E, o
Korg Nanokontrol配置如下:# y' N$ b- k  o/ O) N1 g

4 |2 M6 e6 W  v0 _# L; Z
$ m8 W. y3 S8 m0 k6 L——第一行的按钮(“S”)作为轨道1 8步音序器; [- o$ w2 f) U, A! J8 i+ g

5 D) q6 [9 C0 t' ?/ u' p——按钮的第二行(“M”)= >跟踪2) o& k4 n, V: f* T# `
) d& C' M: J0 M8 K) R) ~. ^8 W
- 2左边的滑块控制滤波器截止频率音序器跟踪1 & 26 M% o  w- g0 W  v+ [8 ~# d9 N! e

6 i3 E4 \4 c# F9 P. |6 f每个过滤器- 2左边的刻度盘控制共振
( i. C: n' C; e3 Q- M" C
" ^; n& P- z" N! s% w  k6 A0 G——第三拨= >延迟反馈) D6 l& f% z& [6 G. c/ B% y  j  O

' G$ |6 @8 ^3 h0 A3 }) b- 4 & 5拨= >攻击时间跟踪1 & 2- E" d1 X( Z! B. g: X8 b8 M1 O

) N$ T5 A$ e; ?——左/右= >标记变化波形振荡器1(所有跟踪)5 d+ O" p" H8 N' U7 ?/ b+ w- B; ?$ }

+ W: u7 J, G6 [9 p-跟踪左/右= > '当前序列到-12年,5 0,+ 7 + 12个半音来7 J$ T5 F. t/ A# ?& s4 @7 w" d

) z/ z; s( j0 |' ]& X/ N倒带,Stop &玩像预期的那样做(在应用程序启动时,它是在暂停模式——你需要媒体播放和激活至少一个“S”或“M”按钮)
+ i, [+ x4 Y+ O; C) h
! J' P' x2 H2 @6 g8 _+ [
* B- L* I, f& |9 q. Z0 M8 o讲义在每个音序器跟踪随机选择从一个音阶中定义的源代码。如果你不喜欢一份报告,只需取消,然后按下“S”或“M”按钮再次得到另一个半随机注意……
! i# C9 X% h& t0 ~
0 J7 l1 H& c- V  L, R4 p" _) G0 Q0 Y# v/ i
伦敦研讨会
  ^% ]* S) V1 t+ }5 ~) n. D" y" m3 [3 h1 Z

6 D) }- `4 N. P8 r; o, Y- v仅仅一周后教学研讨会在光州的行为艺术节,我们重复和扩展经验和例子在伦敦建立了一个从/ 2-track音序器使用Korg上的按键NanoKontrol MIDI控制器及其控制各种滤波器和振荡器参数的投篮。有一些伟大的参与者的反馈,然后专注于发展使用更通用的DSP运算符。还下令STM32F7与更快的CPU和触摸屏。/ p* Y' I: m( p% S
6 [1 K8 }, F- }9 V  y

; ~8 `0 y& Z& v3 `7 ~5 ~" ~第一个workshop  / STM32F746
5 G0 n4 ^+ b3 b# g% A$ v
7 ]! m) J- `1 @( N4 g% Psynth的第一车间使用最新的迭代发生上周末。结果是一个新的轻量级GUI模块(很快发布作为单独的库),这也是第一次结合synth的触摸屏设置STM32F7迪斯科。原来轮询touchevents相当昂贵(CPU周期的)操作,迫使高优先级的使用计时器(每2 ms)保持DMA half-buffers充满新鲜的音频数据。我记录生活会话上车间的例子和上传:! ]3 Z, f/ O5 z% V! t
; m2 x5 H' W5 ~9 |
视频$ F2 n& \( s2 ^

5 V( H" Z; |% T6 H5 P+ Q, U相关资料请见GitHub( a9 L7 U& X4 T. X
2 E4 Q3 }7 S; ]( o9 R
" H5 u1 N2 ]5 u& z7 O' ?$ B4 Z

# p/ X' A% D9 S: k" I
) {7 c$ ?: b+ y2 R8 q+ _4 w5 p原文请见hackaday
7 m% Y  ?: }% J/ F8 _2 s) Y3 k2 F4 b% Q
2 l! U8 i, p7 H

, J/ K* j' t2 y3 C# d6 X2 p
8 d7 r3 S# U* Y! f7 r
  z9 K( m) L4 d$ W6 n. ~
6965571454010415242.jpg

20160215-synstack.pdf

下载

463.3 KB, 下载次数: 2

收藏 评论3 发布时间:2018-11-14 19:34

举报

3个回答
程序员 回答时间:2018-11-15 09:02:53
厉害!!!!
STM1024 回答时间:2018-11-15 09:18:53
翻译有点生硬啊喂
丿灬幸灬 回答时间:2018-11-15 10:00:18
stm1024 发表于 2018-11-15 09:18
  |- ^6 ?$ Q3 Q+ G8 x3 ~2 a翻译有点生硬啊喂

4 W+ D. J) c$ X+ A/ t, U0 ?) i有点忙,有时间慢慢改

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版