发布 CodeLab Adapter 4.6

今天的一点小小裂痕,将如用针尖在一棵小栋树的嫩皮上刻出一个名字一样,这道伤痕将随着树木生长而扩大。 -- 托马斯·潘恩《常识》

以下是自 4.5 版本以来的主要改进。 具体细节参考changelog

内核(core)更新

自动迁移用户数据

升级软件/重置主目录时,自动迁移用户数据(~/codelab_adapter/)。

旧的主目录(~/codelab_adapter/)将自动备份,形如: codelab_adapter_2021-03-29__14-49-04_219298/, 后缀的数字是时间信息。

notebooks/extensions/nodes 里的自定义子目录和文件将自动迁移。 user_settings.toml里的自定义信息将自动迁移。

webUI 更新

更新扩展 重命名为 重置主目录 ,置于 环境 目录下

添加 正在运行的nodes UI , 置于 环境 目录下

更新Adapter ssl证书

支持到 2022-03-29。

Adapter 4.5 及之前的版本支持到 2021-06-03

此外,在user_settings中支持添加证书过期时间配置项。

弃用 app_settings.py

处于安全性的考虑, 定制与分发时,关于默认配置项的调整,可通过修改 src 目录里的 user_settings.toml 实现。

尝试提供 user_settings web editor api 接口

目前是 alpha 版本,试图提供 jupyter 风格的 api。

当然你也可以在 jupyterlab 中编辑 user_settings。

编辑完之后,记得重启Adapter。

codelab_adapter_client 升级到 4.1.8

添加 send_message, receive_message api: from codelab_adapter_client.message import send_message, receive_message . 我们4月份即将发布的 CodeLab交互计算 课程将比较多使用它。

修复 AdapterNodeAio 启动消息遗漏的bug(time sleep等待zmq通道连接)

插件更新

修复 悟空机器人 插件启动超时的bug

这是个长期影响演示流畅度的bug,是 AdapterNodeAio 启动消息遗漏引起的。

优化 overdrive 插件

支持 ble实时 扫描,避免用户长时间等待。

修复连接后的头5s消息阻塞问题。

优化 Lego Mario 插件

Lego Mario 支持 ble 实时扫描,避免用户长时间等待

其他更新

box2d(物理引擎)

1.0 版本已经同步上线到 CodeLab社区,当前版本的汉化,达到了令我们比较满意的程度。

我们正在规划 2.0 版本,该版本计划将编程猫平台上对物理引擎中的一些易用性改进,吸纳过来。

我们将一些好玩的入门项目整理到了这个工作室里,你可以从这儿起步。

以下是社区用户分享的基于物理引擎的合成大西瓜项目

CodeLab Scratch & Scratch Addons

我们正试着将CodeLab Adapter相关扩展构建在Scratch addons/TurboWarp之上,这个项目汇集了这些年来用户社区对Scratch的所有深度改进。

构建在此之上的 CodeLab Scratch 预览版

目前已经将一些 CodeLab成员 常用的扩展迁移过去了,如果你有其他的建议,欢迎在此讨论

Scratch addons/TurboWarp 有一些惊人的改进,诸如中断/恢复程序、消息跟踪、浏览代码,这些改进极大提高Scratch深度项目的可理解性,也使debug更为轻松,在这些改进下,Scratch的环境更接近smalltalk的“活体”环境。这些重大改进几乎可以和Scratch第一代作者的工作相提并论,而不同于之后的渐进式改进。

于此相关的话题,欢迎在 这个帖子下讨论

NeverlandBeats: 使用 Python,Adapter EIM 插件和 Scratch 实时绘制音乐频谱

CodeLab NeverlandBeats 已开源在Github。

这部分目前有以下两个项目,原理都是用 python 对音频数据做实时分析,同时经 Adapter EIM 插件将分析结果发给 Scratch,再使用画笔功能动态绘制图形。可以直接利用 Python 代码在浏览器新窗口中自动打开对应的 Scratch 项目并运行,也可以手动打开 Scratch 项目后再运行 Python 代码。(Python 还有 Scratch 对应代码库内都有备份,但如果要自动打开并运行 Scratch 对应项目,需使用线上社区版,地址见下面链接)

音频流的配置与数据提取依赖 pyaudio 实现,音频数据分析就是将信号从时域经傅立叶转换到频域。P1 与 P2 的区别在于,P2 只是对每次从音频流中提取的数据做 FFT(Fast Fourier transform)分析,然后将 0-22050Hz 的频率按对数关系分为 10 个频段呈现对应的振幅强度,在 Scratch 中类似 bar 图效果;P1 相比 P2 多了时间的维度,做的是 STFT(Short-time Fourier transform) 分析,依赖 madmom 包获取 spectrogram 结果,对应 Scratch 中 12 * 10 的圆点矩阵,每 1 列是一个时间点,12 行数据分别对应 12 个频段的振幅强度。

运行 python 代码前,需要先选择音源的输入设备,是来自电脑内置的麦克风、还是耳机等,当前代码不包含选择输入设备这一项功能(但依赖 pyaudio 其实可以做到),pyaudio 会使用默认的输入设备,而输入设备间的切换是通过 pavucontrol(ubuntu 系统)手动实现的。如果发现没有数据很可能就是音源输入设备的选择问题。因为 madmom 也是依赖 pyaudio,所以 P1、P2 都是如此。

使用 Scratch Addon,选择 fps=60、高清画笔模式,自定义舞台大小,视觉效果明显更好。

P1:Python 代码在此,(自启动)Scratch 代码在此,(手动启动)Scratch 代码在此