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

基于堆栈的synth & livecoding STM32 平台

[复制链接]
丿灬幸灬 发布时间:2018-11-14 19:34
9643971455571936324.jpg
2 g& x2 w+ Q7 S7 I" W: A描述
+ [" d8 l) b8 ~4 }$ M
, u+ }8 T( l: e8 `* X0 u具有悠久历史的声音玩具(更多,一些不太严重的)和受极端demoscene的限制,去年我终于开始回到底层编码和探索 ARM / STM32 平台的可能性。连同我的正在进行的研究和其他stack-oriented语言,我很快到达的想法来创建一个可编程(最终活codeable)合成器环境对于这些廉价,嵌入式ARM设备。: m, W3 e) _3 G6 M! n  l$ f# y( I
* ^* Q% |) p% `- S  {

% v* t2 H. E7 Q# s+ D9 ?宏伟计划不是建立一个经典VSTi类型synth UI,但音频引擎&像DSL来定义DSP栈和选择性地生成触摸屏GUI元素(如图片所示)甚至GPIO /传感器对各种参数的映射。DSL还允许集成传感器更好地利用平台提供了外围的可能性……
( t  R( I) G4 X1 `0 q1 [3 P6 {3 e2 T- i7 @  ?3 R

) i* G) @; Q7 G! A1 F# B到目前为止,synth架构是接近完成,已经重写几次。DSL实现仍处于早期阶段
9 A: z5 `$ i: K( a# e
; P0 @/ i& [% x
) {5 b/ `) _, s$ u. u组件: Y/ t, S* s6 A: d- V( ^  L# A

6 c0 i- f* z* v8 s9 [$ P8 V: m1 h1×STM32F401-DISCOVERY7 V+ C3 j$ R7 s

$ e9 a9 G/ t" I; Z  s' h4 \Devboard用于早期的原型* E* m, _" g* S

# U3 H5 H+ U# q4 f( r: C1×STM32F746-DISCOVERY- ~" ?  A) o2 `! x
+ Q# H* J  n) n- b  l* S6 p2 a  |

: ]) n- N. s, C4 C9 m. D/ o 4654461454010400468.jpg ( B3 c( |4 ^) J9 a- c% H  C
原始synth代码& 8月workshop: v6 C7 J0 ?: z1 U6 C  ~. w- y7 L6 ~
8 @/ y) C. \4 c# q8 k9 F$ [

" m) e: ~' D" s- [' p2 A作为临时解决方案&因为工作的方式在最近几个月,造成这个项目的发展慢下来(不停止!),我决定把一些早期的和更稳定的版本先放出来" l+ h- N7 q4 N1 V% f
请见这里: B, d% @  A& U2 d; d2 g$ d
4 l: R- e2 K: x6 Z6 w
现在这个回购包括基于迭代的节点图,但功能更丰富的synth引擎(包括8例)和早期版本的VM & REPL。注意尽管这回购只包含便携式synth代码和没有STM32细节。相反,为更多的人使实验更容易,所有演示使用Portaudio允许运行OSX / Linux (Windows主要,但未测试)。9 d3 J+ \! _# h2 W3 A
, L2 i, w1 T  P* l4 D% R
+ c/ [+ {* C8 c( O) Z. v
下次我将运行的另一个迭代STM32 synth车间,这可能会产生更多的更新在这方面……
7 e- m, J# d! V. J- y
! c0 p" h+ O, u6 x- c! F; k8 c: x0 f: m& s# _3 j6 J: Z
正确的项目名称和100%的例子, E+ H( f7 Y5 P; H9 r3 c
- C# l+ W; T4 R% f# K. l

4 e) x" o5 n3 F9 f4 n3 U3 p/ Z
! S0 c3 U% @! c: b9 Z由于所有最近修订的这个项目已经围绕Forth-style堆栈VM的概念定义音频操作和产生的synth的声音,我决定最后项目名称:Synstack。$ c8 T" V3 U+ r8 s( ^6 M2 p; w
, i1 J) ^) y$ i, {' Z( e% U* L
/ S! c# u0 X, g
堆栈VM相当功能现在也严重受经典JonesForth的线程代码实现,尽管到目前为止仍然用c语言编写更有用指导来自@phaendal很棒documentation-forth(即使它是日本)——这两个可能是最可读的实现我所知道的。到目前为止没有被考虑的目标ANS兼容性。
4 ]& X" Z. T/ v1 z
9 f: r. q7 z) B$ m5 l
  x; s+ r7 s# v, n% x$ r, Z0 z在24-27KB Synstack VM当前时钟。这包括一些音频相关的东西:振荡器、ADSR, IIR滤波器,监听失真,所有这些都实现为本地话。VM还包括浮点支持,基本的字符串操作,用户可定制的内联的话(例如加快var查找)。控制结构、var和一个基本的反汇编程序实现为单词。* J' f& Y; _* H: Q; f! R) Q+ m0 F+ ^

# _+ N; N" R* L
; z$ ^1 E( |) e: t0 h2 K( d  @& o几个不同的版本的音频结果下面的单声道synth代码可以在这里1 R- ~8 t* {2 [* Z) y- c& @- Z' O

. y  B! y% D; q: K- U/ f/ @7 m
; j7 k* _4 A. B/ u' _6 u' ~8 {
) t3 ?* G# s" b' J' B( N% t最后的“更新”字是反复调用音频管理器提供了下一个时间片的32个样本。到目前为止,我发现这是潜在的内存使用情况之间的甜蜜点几十个运营商(尤其是在复调)和满足皮层M-7的高速缓存线路,然而缓冲区的大小是可定制的。在这个例子中“更新”字还充当简单的概率音序器,引发新的notes每150 w女士/ 60%的几率。STM32这所有通过DMA ISR触发回调,OSX上我用Portaudio作为测试音频后端,它使用一个v。类似的方法……: V3 F  C( {' O1 _2 D

/ R4 I# O' d: x6 D9 r7 b- y7 N" g1 L6 Q1 Z
1.png
' n* u: N4 A8 ?( C% m2 I4 d
4 v0 p: Q/ ^  y
8 B! T9 X4 G; {+ U没什么超级令人兴奋的声音,但我很兴奋的可能性这打开…第一次公开发布的这个项目的目的是在4月中旬…
) Q% H$ a  j: M$ a, H
3 V5 U6 o. f! E( S  C
. k& c1 c9 k" @* mMIDI支持& 2 x从音序器演示/ @$ s1 S3 t. D5 S3 d9 H' j
9 E- n6 W' f* e" _

( v% U7 `) e. j7 `( o* P& @只是移植和扩展MIDI音序器演示从先前的STM32F401迭代步STM32F746和更新回购。
, N& c5 ^  _4 H" O) o* N& ^2 O4 X, |3 s6 Y# p" d
视频2 Z. v& y6 S' C1 j5 p- Q; _- V

0 R! ?1 v/ F* a+ j1 yKorg Nanokontrol配置如下:
" X. O( i# j8 W/ n& O! Q$ v" e! E1 t) X+ h! V4 U

2 j5 Q7 m8 }0 i7 }3 q——第一行的按钮(“S”)作为轨道1 8步音序器' S# l0 Q, E, b' c8 V

$ D  |: e8 ?$ ~3 Z3 X$ C5 o——按钮的第二行(“M”)= >跟踪2' O# `6 Q' V, r

3 m/ L3 F# H3 J- u8 F- 2左边的滑块控制滤波器截止频率音序器跟踪1 & 2
9 l7 J$ N4 p4 M0 {* M; O& C
! a9 X8 }: k: i1 }5 D每个过滤器- 2左边的刻度盘控制共振
( W9 z) I( c: J% F
3 L* D& Z' Q8 O5 X3 U——第三拨= >延迟反馈8 S: ^4 t; n! B

; U8 t) N! c1 _) ~/ J2 Q/ Z3 O$ o- 4 & 5拨= >攻击时间跟踪1 & 21 X  O$ I7 R6 h

+ h* V; I9 h1 D- |9 `——左/右= >标记变化波形振荡器1(所有跟踪)# ]6 P7 |) J* G8 c# C* i. U
+ ?+ C& U3 ~# y% O5 N, c8 |# q
-跟踪左/右= > '当前序列到-12年,5 0,+ 7 + 12个半音来
5 c; K3 O3 L  a* z0 b3 C2 o
6 \9 Z4 R' }% c9 c倒带,Stop &玩像预期的那样做(在应用程序启动时,它是在暂停模式——你需要媒体播放和激活至少一个“S”或“M”按钮)
) F( U+ Q2 Q, m4 u6 A, L  d, l9 a# c
+ w7 T+ k) X! L! ~
讲义在每个音序器跟踪随机选择从一个音阶中定义的源代码。如果你不喜欢一份报告,只需取消,然后按下“S”或“M”按钮再次得到另一个半随机注意……6 G6 t0 d& c0 i, d. ]! [* b

, M7 X! v2 x2 n" g0 f/ h. N- p: R3 d: D8 _+ \7 g) v' Z3 n+ o
伦敦研讨会6 O8 [6 F8 b4 v. ~
8 _2 L) D2 x6 U' u% S: h# _7 z4 D
- _" h# B8 R+ u
仅仅一周后教学研讨会在光州的行为艺术节,我们重复和扩展经验和例子在伦敦建立了一个从/ 2-track音序器使用Korg上的按键NanoKontrol MIDI控制器及其控制各种滤波器和振荡器参数的投篮。有一些伟大的参与者的反馈,然后专注于发展使用更通用的DSP运算符。还下令STM32F7与更快的CPU和触摸屏。7 q4 p+ c: n6 h* ~

, N1 H) z7 @$ t0 \: S* E0 N" I5 t8 z* B8 D7 g3 D2 F
第一个workshop  / STM32F746
# R$ u0 n6 L. B4 f* Q
5 N) N3 N* g8 d# I. \2 B: i. Q6 asynth的第一车间使用最新的迭代发生上周末。结果是一个新的轻量级GUI模块(很快发布作为单独的库),这也是第一次结合synth的触摸屏设置STM32F7迪斯科。原来轮询touchevents相当昂贵(CPU周期的)操作,迫使高优先级的使用计时器(每2 ms)保持DMA half-buffers充满新鲜的音频数据。我记录生活会话上车间的例子和上传:
8 F( z5 S4 Z6 |0 z
6 d4 Y5 N9 \8 L' S) ~视频
* c! r$ L3 P$ C) q. K' R5 j& L4 O: S, |2 t( X
相关资料请见GitHub
: ^% e2 M7 ?* N2 p- x+ c9 i! h' @' _' l' }; `0 T

* H2 C! x& r4 L% O( W
0 T+ S& X# K/ A' M$ x
4 d$ T9 D. V% K; M4 {原文请见hackaday! T$ ^- V) O  J" r/ Z

' d  i  E- @. b& p4 d) }
7 [( x* N6 t- O% X6 g9 G- G$ W. ^7 ^" ~4 ?2 S7 r8 c  I+ ^

+ E6 F9 |+ ?. P) g9 y# E+ q5 O+ |5 v3 L6 b( L) ?
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
1 L; P" j. q6 F翻译有点生硬啊喂
0 i2 q3 W7 c6 w1 Y
有点忙,有时间慢慢改

所属标签

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