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

基于堆栈的synth & livecoding STM32 平台

[复制链接]
丿灬幸灬 发布时间:2018-11-14 19:34
9643971455571936324.jpg
描述

具有悠久历史的声音玩具(更多,一些不太严重的)和受极端demoscene的限制,去年我终于开始回到底层编码和探索 ARM / STM32 平台的可能性。连同我的正在进行的研究和其他stack-oriented语言,我很快到达的想法来创建一个可编程(最终活codeable)合成器环境对于这些廉价,嵌入式ARM设备。


宏伟计划不是建立一个经典VSTi类型synth UI,但音频引擎&像DSL来定义DSP栈和选择性地生成触摸屏GUI元素(如图片所示)甚至GPIO /传感器对各种参数的映射。DSL还允许集成传感器更好地利用平台提供了外围的可能性……


到目前为止,synth架构是接近完成,已经重写几次。DSL实现仍处于早期阶段


组件

1×STM32F401-DISCOVERY

Devboard用于早期的原型

1×STM32F746-DISCOVERY


4654461454010400468.jpg
原始synth代码& 8月workshop


作为临时解决方案&因为工作的方式在最近几个月,造成这个项目的发展慢下来(不停止!),我决定把一些早期的和更稳定的版本先放出来
请见这里

现在这个回购包括基于迭代的节点图,但功能更丰富的synth引擎(包括8例)和早期版本的VM & REPL。注意尽管这回购只包含便携式synth代码和没有STM32细节。相反,为更多的人使实验更容易,所有演示使用Portaudio允许运行OSX / Linux (Windows主要,但未测试)。


下次我将运行的另一个迭代STM32 synth车间,这可能会产生更多的更新在这方面……


正确的项目名称和100%的例子



由于所有最近修订的这个项目已经围绕Forth-style堆栈VM的概念定义音频操作和产生的synth的声音,我决定最后项目名称:Synstack。


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


在24-27KB Synstack VM当前时钟。这包括一些音频相关的东西:振荡器、ADSR, IIR滤波器,监听失真,所有这些都实现为本地话。VM还包括浮点支持,基本的字符串操作,用户可定制的内联的话(例如加快var查找)。控制结构、var和一个基本的反汇编程序实现为单词。


几个不同的版本的音频结果下面的单声道synth代码可以在这里



最后的“更新”字是反复调用音频管理器提供了下一个时间片的32个样本。到目前为止,我发现这是潜在的内存使用情况之间的甜蜜点几十个运营商(尤其是在复调)和满足皮层M-7的高速缓存线路,然而缓冲区的大小是可定制的。在这个例子中“更新”字还充当简单的概率音序器,引发新的notes每150 w女士/ 60%的几率。STM32这所有通过DMA ISR触发回调,OSX上我用Portaudio作为测试音频后端,它使用一个v。类似的方法……


1.png


没什么超级令人兴奋的声音,但我很兴奋的可能性这打开…第一次公开发布的这个项目的目的是在4月中旬…


MIDI支持& 2 x从音序器演示


只是移植和扩展MIDI音序器演示从先前的STM32F401迭代步STM32F746和更新回购。

视频

Korg Nanokontrol配置如下:


——第一行的按钮(“S”)作为轨道1 8步音序器

——按钮的第二行(“M”)= >跟踪2

- 2左边的滑块控制滤波器截止频率音序器跟踪1 & 2

每个过滤器- 2左边的刻度盘控制共振

——第三拨= >延迟反馈

- 4 & 5拨= >攻击时间跟踪1 & 2

——左/右= >标记变化波形振荡器1(所有跟踪)

-跟踪左/右= > '当前序列到-12年,5 0,+ 7 + 12个半音来

倒带,Stop &玩像预期的那样做(在应用程序启动时,它是在暂停模式——你需要媒体播放和激活至少一个“S”或“M”按钮)


讲义在每个音序器跟踪随机选择从一个音阶中定义的源代码。如果你不喜欢一份报告,只需取消,然后按下“S”或“M”按钮再次得到另一个半随机注意……


伦敦研讨会


仅仅一周后教学研讨会在光州的行为艺术节,我们重复和扩展经验和例子在伦敦建立了一个从/ 2-track音序器使用Korg上的按键NanoKontrol MIDI控制器及其控制各种滤波器和振荡器参数的投篮。有一些伟大的参与者的反馈,然后专注于发展使用更通用的DSP运算符。还下令STM32F7与更快的CPU和触摸屏。


第一个workshop  / STM32F746

synth的第一车间使用最新的迭代发生上周末。结果是一个新的轻量级GUI模块(很快发布作为单独的库),这也是第一次结合synth的触摸屏设置STM32F7迪斯科。原来轮询touchevents相当昂贵(CPU周期的)操作,迫使高优先级的使用计时器(每2 ms)保持DMA half-buffers充满新鲜的音频数据。我记录生活会话上车间的例子和上传:

视频

相关资料请见GitHub




原文请见hackaday





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
翻译有点生硬啊喂

有点忙,有时间慢慢改

所属标签

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