创意编程语言——Processing:声控音量管理程序

作者: 张宁

创意编程语言——Processing:声控音量管理程序0

摘要:本文通过梳理Processing编程语言的历史发展脉络,深入了解该语言的起源和发展过程,并通过声控音量课堂管理程序案例,了解其丰富的类库资源,如利用声音相关的sound库实现获取周围环境的音量并可视化展示,了解其编程环境,并根据需要创建类和方法,实现声控音量管理程序。

关键词:创意编程;计算思维;人机交互

中图分类号:G434  文献标识码:A  论文编号:1674-2117(2023)05-0101-03

Processing简要介绍

Processing是一个FLOSS项目(免费/自由/开源软件),可以免费下载,甚至根据需要修改源代码以满足个性化的需要。它是在Java基础上进一步开发的语言,这两种语言的语法几乎相同,但Processing又添加了一些与可视图形和交互相关的自定义功能,其中与图形相关的功能是继承了PostScript(PDF的基础)和OpenGL(一个3D图形规范)。

历史发展

MIT媒体实验室在可视化编程和创意编程领域具有举足轻重的作用。1967年,西蒙·帕佩特(Seymour Papert)等人开发了Logo编程语言,开启了图形化编程的历史进程。通过简单指令指挥小乌龟运动,生成几何图形和设计图案,深受中小学生的喜爱。1990年,MIT媒体实验室的约翰·马尔德亚(John Maeda)教授发起了一个非常有影响力的编程教学试验—Design BY Numbers,该项目通过简洁易用的编程语言,把计算和编程介绍给视觉设计者和艺术家们。他和学生们设计和开发的一款软件,致力于帮助设计者、艺术家和其他非编码专业人员学习编程,虽然这款软件随着技术的发展,逐渐被遗忘,也不再被使用,但其影响深远,后续很多相关项目都是在其基础上生根发芽。其中比较成功的是凯西·瑞尔(Casey Reas)和本·弗莱Ben Fry发起创建的Processing语言。

程序案例

笔者以可视化声控课堂音量管理程序为例,进一步讲解如何使用Processing实现可视化交互的设计和开发。

1.项目情境

营造安静的学习环境是高效课堂的必要条件,同时对应《普通高中信息技术课程标准(2017年版)》中“模块1:数据与计算”的要求(如表1),用Processing开发一款声控管理可视化程序,引导学生在短时间内达到课堂音量管理要求。通过Processing编程环境,可以让学生动手实验,调用相关的sound库和方法,探究学习声音的可视化过程。

2.程序用户界面

程序应用界面如图1所示,窗口右边为音量等级,颜色越浅,音量等级越低,教师可以根据教学活动的需求,选择合适的音量等级。窗口下面黄色矩形为实时可视化的音量高低,代表音量等级的蓝色方块被触发后,就会自动从右向左移动。

3.程序功能

输入:通过调用sound库,自动获取电脑自带麦克风输入音量。通过鼠标悬浮在音量等级上面触发方块运动。

输出:通过条形图的高度可视化显示音量大小。当右侧小方块连续完成5次成功移动后,就会在屏幕左侧显示笑脸,以庆祝学生们完成了课堂音量要求。

处理:代表音量等级的小方块被触发后(鼠标放在小方块上方,每次仅触发一个方块),就会自动从右向左移动。当没有噪音干扰时,会完成一次成功移动,同时左边的圆脸会变大。当有噪音干扰,并且超过了选取的音量等级时,小方块就会重新回到起始位置,重新开始移动,同时成功移动次数也会被清零。

4.程序代码解析

Processing程序中的void setup()方法仅运行一次,目的是完成程序变量初始化。void draw()方法会一直循环执行里面的方法。笔者根据程序功能,把程序拆分为三个模块,分别为周围环境音量可视化、音量等级方块和绘制笑脸。

(1)周围环境音量的实时可视化

首先需要通过调用processing. sound库里面的方法,来获取电脑麦克风的输入,并通过analyze方法转化为0~1.0的音量范围。然后,应用内置的Map方法,把音量大小映射为矩形的高度,进而可以通过绘制矩形,实时获得音量高低的可视化展示。关键程序片段如上页表2所示,完整程序见文末链接。

(2)音量等级方块

用5个方块来可视化5个音量等级。考虑到后续对每个音量等级的操作,为了使程序简洁和易于维护,可以定义一个SoundLevelButton类,细化完成相应的类属性和方法。其中,overRect方法来判定鼠标选定的是哪个音量等级;move方法在选定音量方块触发后,并且在成功移动完成次数小于5时,保持自右向左的移动。具体如表3所示。

(3)笑脸生成

要使代码结构清晰,可以把笑脸生成单独封装为一个方法模块,这样也方便后续维护及代码再次利用。如图2所示代码,形式参数x和y控制笑脸的大小,count获取连续成功搬运的次数,当次数超过5次时,会绘制笑脸,表示声音音量满足教学要求。

对中小学编程教学的意义

Processing作为一款最初面向艺术家和设计人员的编程语言,先天继承了可视化编程和创意编程的基因。可视化实时反馈,降低了学习编程的门槛,提高了在给定技能水平下完成任务的趣味性和复杂性。实时可视化反馈和反复调试,促使学生自我思考的过程成为可能,提升了元认知能力水平。程序运行一旦成功会让学生充满成就感,使学生获得学习动力,而如果运行失败则会训练学生解决问题的能力,通过把问题拆分为易于解决的小问题,反复测试,进而解决问题。这个过程也培养了学生的耐心和韧性。(本文所有代码参见网址:https://gitee.com/edumaker/china-information-technology)

经典小说推荐

杂志订阅