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

基于堆栈的synth & livecoding STM32 平台

[复制链接]
丿灬幸灬 发布时间:2018-11-14 19:34
9643971455571936324.jpg 0 q$ }2 G, j! {
描述( H; y: j0 m" v! e9 y( Q. }
* [+ i' H: y$ A0 S1 B8 S( n. b
具有悠久历史的声音玩具(更多,一些不太严重的)和受极端demoscene的限制,去年我终于开始回到底层编码和探索 ARM / STM32 平台的可能性。连同我的正在进行的研究和其他stack-oriented语言,我很快到达的想法来创建一个可编程(最终活codeable)合成器环境对于这些廉价,嵌入式ARM设备。  q6 R% `; f# }

" j3 R( H5 B2 \1 z. F9 M
4 b- B% R0 R! _2 Y5 P/ ~7 v宏伟计划不是建立一个经典VSTi类型synth UI,但音频引擎&像DSL来定义DSP栈和选择性地生成触摸屏GUI元素(如图片所示)甚至GPIO /传感器对各种参数的映射。DSL还允许集成传感器更好地利用平台提供了外围的可能性……
& Q* _) H( I4 o( V; Y1 d
5 T5 N( g% I0 r# {7 r3 l3 @
$ I# S0 ?9 }& p9 E7 V( @) V& W$ Z到目前为止,synth架构是接近完成,已经重写几次。DSL实现仍处于早期阶段$ b9 ]: |4 _! {" p5 ?
1 K5 \5 h) w8 R  n
' f1 R) d2 f+ Y% D9 e
组件
; {* ~4 V4 Q3 r5 d: r% K- [  _; {: ]' j, X8 {3 M% f- U
1×STM32F401-DISCOVERY
# n6 L# p! `, {5 U0 S1 u; t8 Z3 f3 }9 F% m! [2 ^
Devboard用于早期的原型
  U/ q! c0 E; z1 Y. l$ S8 V
3 T: x8 T) Y2 w6 x$ O( I+ C  F* z1×STM32F746-DISCOVERY
: v5 T$ c1 [2 }! R: L4 R" n  @: u% `# C& W! l" [- W( x
1 Z( V( K9 ]) P- _+ K5 W
4654461454010400468.jpg
3 s4 t7 e( d% S# V原始synth代码& 8月workshop) m* P6 w0 p/ ^  F: A
1 v# Y  P# L. @: W4 _
3 M6 |' h" P* m( O' M$ R
作为临时解决方案&因为工作的方式在最近几个月,造成这个项目的发展慢下来(不停止!),我决定把一些早期的和更稳定的版本先放出来
7 w9 E& I0 `! n+ i$ L/ g" A请见这里5 x9 G" X. H1 W

* C- T: V' B7 E现在这个回购包括基于迭代的节点图,但功能更丰富的synth引擎(包括8例)和早期版本的VM & REPL。注意尽管这回购只包含便携式synth代码和没有STM32细节。相反,为更多的人使实验更容易,所有演示使用Portaudio允许运行OSX / Linux (Windows主要,但未测试)。$ u# o) ?9 I" a* f6 p, {5 @' B
8 ]+ j( Q  |- U
9 c( p, R0 W- V! ~- b1 a$ j
下次我将运行的另一个迭代STM32 synth车间,这可能会产生更多的更新在这方面……& R# o) e. c* e7 c* `* S! g
: l9 `6 g; ]* T4 k1 R- P
: I& W- r6 e, j" O
正确的项目名称和100%的例子3 A: ]' t* |5 T2 |* `; f- W
* h0 N/ K7 s1 E$ ~

; }6 P. x+ h2 w9 K" I2 A) [- T  k/ m0 L0 y' m
由于所有最近修订的这个项目已经围绕Forth-style堆栈VM的概念定义音频操作和产生的synth的声音,我决定最后项目名称:Synstack。4 m% v3 h* k! Z/ I
3 F+ ~( v6 o6 d+ r

! X3 {; k5 V$ H/ y堆栈VM相当功能现在也严重受经典JonesForth的线程代码实现,尽管到目前为止仍然用c语言编写更有用指导来自@phaendal很棒documentation-forth(即使它是日本)——这两个可能是最可读的实现我所知道的。到目前为止没有被考虑的目标ANS兼容性。2 P3 {3 n- L9 D0 \9 r3 I

6 p/ h+ W: [, {; V! c  ~" z* L  x6 f( c# O- h/ I- ^, e3 s. t
在24-27KB Synstack VM当前时钟。这包括一些音频相关的东西:振荡器、ADSR, IIR滤波器,监听失真,所有这些都实现为本地话。VM还包括浮点支持,基本的字符串操作,用户可定制的内联的话(例如加快var查找)。控制结构、var和一个基本的反汇编程序实现为单词。
; Q5 l" B3 X; r  }, e0 H, ]" N' N5 M1 K4 g5 }7 M1 Z; e2 ?4 t

5 X+ E$ Y. T& H5 I& U$ K几个不同的版本的音频结果下面的单声道synth代码可以在这里听
, M* V# ]7 c! s6 d& h2 s0 e) \& @2 ?* }& Q+ g. S- k, ]: H

3 w1 ~: k: U9 u0 Z- t5 H4 l( r1 O# Q" C! A! k
最后的“更新”字是反复调用音频管理器提供了下一个时间片的32个样本。到目前为止,我发现这是潜在的内存使用情况之间的甜蜜点几十个运营商(尤其是在复调)和满足皮层M-7的高速缓存线路,然而缓冲区的大小是可定制的。在这个例子中“更新”字还充当简单的概率音序器,引发新的notes每150 w女士/ 60%的几率。STM32这所有通过DMA ISR触发回调,OSX上我用Portaudio作为测试音频后端,它使用一个v。类似的方法……6 L2 @) R' d& R3 {
' I6 I5 r0 Y2 {1 @- V

8 j/ u) G4 V2 Z& f" p$ E: @ 1.png
- K- P9 h+ @* h+ }7 @  e% U1 b* b6 s. M9 a) x5 Z! a) E

0 f9 c5 n( K6 n, e% t没什么超级令人兴奋的声音,但我很兴奋的可能性这打开…第一次公开发布的这个项目的目的是在4月中旬…" K& |. p. h* `2 a  ^# t& |  I
, A, ~/ K8 G$ G% g

* H& M; ]: \9 S7 FMIDI支持& 2 x从音序器演示
2 [0 r5 c) q% G- v8 b* H: f2 x) I: O6 W( g- O5 ~8 ?9 S6 b
2 V; y% {1 ?; G2 U6 s
只是移植和扩展MIDI音序器演示从先前的STM32F401迭代步STM32F746和更新回购。6 ]9 {5 G+ q, h' v; x6 G
. M  o/ a5 C! f( C8 A/ f
视频" b9 n) _3 {* V
! A. {) n% o6 y" c
Korg Nanokontrol配置如下:" s8 }% F& {1 {; z, V5 i1 ?8 w$ r
" K9 ^; q, d8 `
' Y3 t4 b! ~. o) B8 p/ q1 x
——第一行的按钮(“S”)作为轨道1 8步音序器6 Y+ _  u$ @# }' R1 V! t
( M' u! R0 I- j/ J/ n
——按钮的第二行(“M”)= >跟踪2, Q* x' \5 W# g7 C& ^

- F) C& g) z5 C8 J3 Z- 2左边的滑块控制滤波器截止频率音序器跟踪1 & 2
" c$ s( v3 q2 t8 p& Z* a' d% u. O
3 [' [* a5 l% N) o# z% `每个过滤器- 2左边的刻度盘控制共振9 b: ~& v" d5 f5 x$ ~

8 d! O4 [* Z! ?" \& k——第三拨= >延迟反馈
4 R; F4 `# B4 ]; [  q6 I- @+ n& L7 K- ]; n. i! R  R
- 4 & 5拨= >攻击时间跟踪1 & 2
0 \$ T6 E1 z! \0 [0 o0 b  P) R& h, [
——左/右= >标记变化波形振荡器1(所有跟踪)
9 f3 x* ?4 j* W2 Q. [, E8 W" V( D% Q9 H2 `8 A
-跟踪左/右= > '当前序列到-12年,5 0,+ 7 + 12个半音来; c$ W7 T9 y/ u" k

3 T" t4 I' v. q( N% p6 S) w倒带,Stop &玩像预期的那样做(在应用程序启动时,它是在暂停模式——你需要媒体播放和激活至少一个“S”或“M”按钮)
% t8 E/ t4 k6 \- \- v# _2 P" Y: {: m  [3 x8 _" y2 ^

1 ~3 S! E, D# _) _7 v! C& Y讲义在每个音序器跟踪随机选择从一个音阶中定义的源代码。如果你不喜欢一份报告,只需取消,然后按下“S”或“M”按钮再次得到另一个半随机注意……6 `5 y7 z; G" L+ f4 I
4 A$ E  ]8 U3 c( X0 t. N4 k1 k) A' Z

. z5 Y+ L0 ~/ t, U& J0 ]: ^伦敦研讨会
6 R$ t' z8 z5 y' W
+ y( R3 h" C$ e! Q' E) Y* ]$ @, ?4 D) p0 h2 O
仅仅一周后教学研讨会在光州的行为艺术节,我们重复和扩展经验和例子在伦敦建立了一个从/ 2-track音序器使用Korg上的按键NanoKontrol MIDI控制器及其控制各种滤波器和振荡器参数的投篮。有一些伟大的参与者的反馈,然后专注于发展使用更通用的DSP运算符。还下令STM32F7与更快的CPU和触摸屏。3 K/ `" v7 }3 }+ D6 h' V
+ ^1 v( l& z, t3 M  f  b0 r, X: p' o
8 t' e+ [4 K+ s8 k9 d( x( M
第一个workshop  / STM32F746
9 Q: D0 h# b6 A# M) L3 Q0 }( s5 \/ j' T) V# \8 D
synth的第一车间使用最新的迭代发生上周末。结果是一个新的轻量级GUI模块(很快发布作为单独的库),这也是第一次结合synth的触摸屏设置STM32F7迪斯科。原来轮询touchevents相当昂贵(CPU周期的)操作,迫使高优先级的使用计时器(每2 ms)保持DMA half-buffers充满新鲜的音频数据。我记录生活会话上车间的例子和上传:
; R! m& \; ~* p) p/ c# v4 v7 r$ V' M6 W
  i+ t5 v( P& r1 h8 Q视频; {) [5 A6 v  f7 {, V- J

$ V8 F/ F# g$ G0 F相关资料请见GitHub+ V* v' B9 ]* I, l

% k$ W8 D0 f) n% }" h9 z9 m0 E4 y$ F5 J+ d/ e

8 |. U: k& D# j( u% o: o4 v+ b/ D4 t) d' V% f0 P
原文请见hackaday
% ?  P) s1 q/ n) h3 \# k$ R( A) s2 s3 v1 {1 v, E1 T6 t2 Y
& ]5 X! E+ ]6 L6 B
. i' L4 y+ L6 e5 I5 `9 ^3 c
, |6 J% ]+ m# o' W' Z

: [2 }$ m$ i- r9 Y, O. n/ Z9 D
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
" i( W6 Z# h- [! f" r. C  Q翻译有点生硬啊喂
; O% {& A9 z! d' g! J) p" E% Z. I
有点忙,有时间慢慢改
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版