
![]() 描述 + i8 q9 ~5 B: R( ? M 具有悠久历史的声音玩具(更多,一些不太严重的)和受极端demoscene的限制,去年我终于开始回到底层编码和探索 ARM / STM32 平台的可能性。连同我的正在进行的研究和其他stack-oriented语言,我很快到达的想法来创建一个可编程(最终活codeable)合成器环境对于这些廉价,嵌入式ARM设备。 * 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 组件 1×STM32F401-DISCOVERY4 z, S; x0 G% I$ T# ?5 v Devboard用于早期的原型1 g1 I Z K1 {( c) G ) }( n O& m, w 1×STM32F746-DISCOVERY ![]() 原始synth代码& 8月workshop; r) X; q% S: h6 j# z * T3 a; H( f# K `, b8 ]$ X- O 作为临时解决方案&因为工作的方式在最近几个月,造成这个项目的发展慢下来(不停止!),我决定把一些早期的和更稳定的版本先放出来, B i: @9 r3 w4 U 请见这里 # J# c' E! l6 w7 L 现在这个回购包括基于迭代的节点图,但功能更丰富的synth引擎(包括8例)和早期版本的VM & REPL。注意尽管这回购只包含便携式synth代码和没有STM32细节。相反,为更多的人使实验更容易,所有演示使用Portaudio允许运行OSX / Linux (Windows主要,但未测试)。 下次我将运行的另一个迭代STM32 synth车间,这可能会产生更多的更新在这方面……" A m: }$ a3 f/ C1 }, i- T- Q 正确的项目名称和100%的例子3 ^8 B7 w# Y6 w6 a! a. i L : K- x9 T( i/ J& W& R' y 由于所有最近修订的这个项目已经围绕Forth-style堆栈VM的概念定义音频操作和产生的synth的声音,我决定最后项目名称:Synstack。 ) _7 B' n- }3 f- g0 s% e 9 M* ~! j o4 W+ @& f9 C$ C, J 堆栈VM相当功能现在也严重受经典JonesForth的线程代码实现,尽管到目前为止仍然用c语言编写更有用指导来自@phaendal很棒documentation-forth(即使它是日本)——这两个可能是最可读的实现我所知道的。到目前为止没有被考虑的目标ANS兼容性。 9 O% r* N9 D, L3 I 在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 几个不同的版本的音频结果下面的单声道synth代码可以在这里听4 M9 x3 q ~5 E& | & 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 : I+ V9 s6 {% ^; @$ x2 U" S5 J ![]() 5 m- J; q4 g# S$ l8 W6 J 6 |, M/ R6 u# U3 f- m& d 没什么超级令人兴奋的声音,但我很兴奋的可能性这打开…第一次公开发布的这个项目的目的是在4月中旬…4 t; |: U0 w, a; @ ( J& A1 ]8 Y6 [. N+ q: |+ ^ K MIDI支持& 2 x从音序器演示 & `6 ?% \9 c' g 只是移植和扩展MIDI音序器演示从先前的STM32F401迭代步STM32F746和更新回购。 视频 8 e& G+ x- f; v1 {- E, o Korg Nanokontrol配置如下:# y' N$ b- k o/ O) N1 g ——第一行的按钮(“S”)作为轨道1 8步音序器; [- o$ w2 f) U, A! J8 i+ g ——按钮的第二行(“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 每个过滤器- 2左边的刻度盘控制共振 ——第三拨= >延迟反馈) D6 l& f% z& [6 G. c/ B% y j O - 4 & 5拨= >攻击时间跟踪1 & 2- E" d1 X( Z! B. g: X8 b8 M1 O ——左/右= >标记变化波形振荡器1(所有跟踪)5 d+ O" p" H8 N' U7 ?/ b+ w- B; ?$ } -跟踪左/右= > '当前序列到-12年,5 0,+ 7 + 12个半音来7 J$ T5 F. t/ A# ?& s4 @7 w" d 倒带,Stop &玩像预期的那样做(在应用程序启动时,它是在暂停模式——你需要媒体播放和激活至少一个“S”或“M”按钮) 讲义在每个音序器跟踪随机选择从一个音阶中定义的源代码。如果你不喜欢一份报告,只需取消,然后按下“S”或“M”按钮再次得到另一个半随机注意…… " _) G0 Q0 Y# v/ i 伦敦研讨会 ) n. D" y" m3 [3 h1 Z 仅仅一周后教学研讨会在光州的行为艺术节,我们重复和扩展经验和例子在伦敦建立了一个从/ 2-track音序器使用Korg上的按键NanoKontrol MIDI控制器及其控制各种滤波器和振荡器参数的投篮。有一些伟大的参与者的反馈,然后专注于发展使用更通用的DSP运算符。还下令STM32F7与更快的CPU和触摸屏。/ p* Y' I: m( p% S 6 [1 K8 }, F- }9 V y 第一个workshop / STM32F746 synth的第一车间使用最新的迭代发生上周末。结果是一个新的轻量级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 ^ 相关资料请见GitHub( a9 L7 U& X4 T. X 2 E4 Q3 }7 S; ]( o9 R " H5 u1 N2 ]5 u& z7 O' ?$ B4 Z 原文请见hackaday ) Y3 k2 F4 b% Q 2 l! U8 i, p7 H |
20160215-synstack.pdf
下载463.3 KB, 下载次数: 2
有点忙,有时间慢慢改