索尼 toio™ 应用创意开发征文|音乐小魔方

2023-12-01 00:10

本文主要是介绍索尼 toio™ 应用创意开发征文|音乐小魔方,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

索尼 toio™ 应用创意开发征文|音乐小魔方

  • 前言
  • 索尼 toio™—寓教于乐的音乐小魔方
    • 应用概要
    • 应用特色
  • 索尼 toio™两种模式,不一样的沉浸式操作体验
    • 学习模式
    • 玩乐模式
  • 音阶猜猜猜
  • 索尼 toio™的DIY音乐
    • 播放一个MIDI音符
    • 实现MIDI编曲
    • 通过音乐编排实现复杂的音乐效果
  • 索尼 toio™实现合作演奏
    • 音乐编排实现多声道


前言

在这里插入图片描述
toio™是一款支持用户自定义编程的小机器人,我在想,也许我们可以通过toio实现一些简单的音乐应用,比如通过使用多个toio绑定不同的音阶,然后玩家通过顺序的组合,让小孩子可以自己实现一些简单的小旋律。不仅仅可以DIY音乐,也可以通过外置图谱的方式,让小孩子可以学会简单的儿歌,造就一个 toio™音乐小魔方,寓教于乐。
说干就干,接下来我们来一起体验下如何实现一个音乐小魔方。

索尼 toio™—寓教于乐的音乐小魔方

索尼 toio™音乐小魔方是一款针对儿童学习音乐的应用,在操作垫上,通过可视化界面和手动移动核心Q宝的位置,操作和控制索尼 toio™完成一个个挑战,提高孩子的动手能力、反应力,帮助儿童培养节奏感和音乐感,提高音乐造诣的同时开发智力。

应用概要

索尼 toio™音乐小魔方是一款儿童音乐学习应用,主要分为学习模式和玩乐模式两种。学习模式包括基础乐理、节奏训练、音阶和曲目练习等功能;玩乐模式包括音乐游戏、DIY音乐、合作演奏等功能。

应用特色

1.适合不同学龄的孩子,提高孩子的动手能力、反应力、节奏感、音乐感。
2.以钢琴为基础,对于高阶段的玩家可以自定义MINI对于多种乐器进行模拟演奏。
3.丰富的学习内容和趣味性的玩乐模式,让儿童更容易喜欢音乐。
4.索尼 toio™良好的互动性和社交性,可以和朋友分别控制不同的Q宝进行合作演奏。

索尼 toio™两种模式,不一样的沉浸式操作体验

学习模式

基础乐理:介绍乐理知识,结合核心Q宝,可以设计出多种多样的教学教案,不仅仅是枯燥的知识学习,通过动手去匹配操作垫上的指示内容,完成一系列的挑战,为孩子提供升级打怪一般的学习体验。
节奏训练:通过和声、敲击等方式训练儿童的节奏感。
音阶和曲目练习:提供多种音阶和练习曲目,让儿童更加熟练掌握乐器演奏。

玩乐模式

音乐游戏:包括节奏打击、乐器闯关等多种音乐游戏模式,增加乐器学习的趣味性。
DIY音乐:儿童可以根据自己的喜好排列音符,创作出自己的音乐作品,通过核心Q宝作为媒介,加入乐高等拼装,化身一个灯光、音乐结合的小玩具。
合作演奏:可以和其他儿童一起演奏乐曲,通过多个核心Q宝实现单、多种乐器的和音演奏。

音阶猜猜猜

为了实现学习模式和玩乐模式,我们需要对应用的功能进行拆解。做一个简单的应用架构设计
音阶猜猜猜是学习模式的一个功能,屏幕出现随机的音阶,玩家要通过将索尼 toio™Q宝放到操作垫正确的答案上,完成闯关,如果闯关成功,进行动作及声音的交互,如果错误则振动。
开发的交互流程如下:
绑定魔方ID->操作垫位置绑定->位置识别->索尼 toio™Q宝旋转并播放通关音乐。
我们可以先打印Q宝的位置信息,如果位置信息与答案对应的位置信息一致,则代表答题成功

     while LOOP:pos = cube.get_current_position()x = cube.get_x()y = cube.get_y()orientation = cube.get_orientation()grid = cube.get_grid()grid_x = cube.get_grid_x()grid_y = cube.get_grid_y()battery_level = cube.get_battery_level()button_state = cube.is_button_pressed()print("POSITION:",pos,x,y,orientation,"GRID:",grid,grid_x,grid_y,"BATTERY",battery_level,"BUTTON",button_state,)

对于获取位置的方法需要特别注意一下,X和Y坐标表示立方体在位置ID处的位置。它们由toio ID唯一定义,不以毫米表示。角度是位置ID顶部立方体的方向。在下图中,X轴方向为0度,顺时针方向为正方向。值的范围为0到360度。下面是部分Q宝旋转的代码

    with SimpleCube() as cube:print("** CONNECTED")print("** ZERO")cube.set_orientation(30, 0)cube.sleep(2)print("** SET DIRECTION (POSITIVE ANGLE)")cube.set_orientation(30, 0)cube.sleep(0.7)cube.set_orientation(30, 45)cube.sleep(0.7)cube.set_orientation(30, 90)cube.sleep(0.7)cube.set_orientation(30, 180)cube.sleep(0.7)cube.set_orientation(30, 270)cube.sleep(0.7)cube.set_orientation(30, 360)cube.sleep(0.7)print("** SET DIRECTION (NEGATIVE ANGLE)")cube.set_orientation(30, -315)cube.sleep(0.7)cube.set_orientation(30, -270)cube.sleep(0.7)cube.set_orientation(30, -180)cube.sleep(0.7)cube.set_orientation(30, -90)cube.sleep(0.7)cube.set_orientation(30, -1)cube.sleep(0.7)print("** TURN (POSITIVE ANGLE)")for _ in range(8):cube.turn(30, 45)cube.sleep(0.7)print("** TURN (NEGATIVE ANGLE)")for _ in range(8):cube.turn(30, -45)cube.sleep(0.7)print("** SET ORIENTATION 90")cube.set_orientation(30, 90)print("** STOP MOTOR")cube.sleep(0.5)cube.stop_motor()print("** DISCONNECTED")print("** END")

音乐猜猜猜1

索尼 toio™的DIY音乐

播放一个MIDI音符

在这里插入图片描述
在音乐创作中会需要很多乐器和各种设备,那么把他们连接在一起就会省去很多麻烦,这个时候就需要MIDI了
音乐数字接口(Musical Instrument Digital Interface,简称:MIDI)
通过MIDI可以使电子乐器、电脑、编曲机、声卡、合成器等设备可以相互连接和控制,模拟乐器的声音甚至可以控制包括录音设备的硬件,如舞台灯、效果器踏板等设备。

许多音乐的文件格式,都建构于MIDI之上。这些格式是电子乐器在看的电子乐谱,一个文件只需几十KB。
MIDI这么强大,我们实现DIY音乐自然少不了它。
上面是核心Q宝MIDI音符编号和音符名称之间的相关性:
其中,中央C的序号是60,标准音A440的标号是69,钢琴的音域对应音符应是21~108,MIDI音符编号=128不产生声音。了解了以上的基本知识,那么我们就可以播放一个MIDI音符了。
cube里已经内置了很多方法,播放声音我们只需传递note序号,比如中央C60持续50毫秒。

        cube.play_sound(note=60, duration=50, wait_to_complete=False)print("pp--")cube.sleep(1)print("stop")cube.stop_sound()print("wait 10 sec")cube.sleep(10)print("disconnecting")

可以修改上面的代码播放其他的MIDI音符:

实现MIDI编曲

在这里插入图片描述
上面我们已经成功播放了一个MIDI音符,但是从音符到编曲就不是一个简单的过程了。
核心Q宝里带了播放、停止、音调、音量四个基本的API,但是只通过这些API我们不能直观的进行编曲,或者进行弹奏,这个时候就需要一些GUI页面,时间原因我们使用H5+CSS实现一个简单的钢琴组,通过监听键盘事件、发送MIDI指令给核心Q宝实现实施弹奏,

    <style type="text/css">*{margin:0px;padding:0px;list-style:none;}#all{width:800px;height:300px;border:solid 0px #333;margin:100px auto;position:relative;}li{width:5%;height:100%;background:#fff;float:left;border-right:solid 2px black;border-radius:0px 0px 10px 10px;text-align:center;line-height:35em;}.black{width:4%;height:60%;background:#111;border-radius:0px 0px 10px 10px;left:10px;top:0px;position:absolute;}</style>

在这里插入图片描述
通过增加开始、结束按钮,可以录制整个过程的键盘Key,转换成MIDI数组进行播放。

通过音乐编排实现复杂的音乐效果

通过功能更加完善的MIDI编辑器,我们可以实现一个MIDI文件的制作,通过音符播放时长、MIDI音符编号、音量的控制,最终生成一个MIDI文件。
在这里插入图片描述
除了对于MIDI文件或者是其他文件,也可以使用play_sound_effect进行播放音效,比如水流的声音、木鱼的声音等等。

    async def play_sound_effect(self, sound_id: SoundId, volume: int):"""Send play sound effect commandArgs:sound_id (SoundId): Sound IDvolume (int): Volume"""sound_effect = PlaySoundEffect(sound_id, volume)await self._write(bytes(sound_effect))

可以使用循环语句对于文件进行控制,播放MIDI文件完后,播放音效,循环3次。

索尼 toio™实现合作演奏

音乐编排实现多声道

我们通过绑定2个核心Q宝,各自执行不同的声音文件。加上灯光特效就实现了Q宝的合作演奏,Q宝开发中,Indicator里Color是一个重要的类,通过三原色实现灯光。

print("connect cube_1")
await cube_1.connect()
print("connect cube_2")
await cube_2.connect()red = IndicatorParam(duration_ms = 0,color = Color(r = 255, g = 0, b = 0)
)green = IndicatorParam(duration_ms = 0,color = Color(r = 0, g = 255, b = 0)
)
await cube_1.api.indicator.turn_on(green)
await cube_2.api.indicator.turn_on(red)

最终我们整合了上面的程序,实现了两个核心Q宝合作演奏了一段音乐。

到此我们使用python和H5实现了一个创意小应用-音乐魔方。整体的体验过程是非常友好并且顺畅的。因为时间原因,并没有配套开发很多的音乐教学案例,但是实际上,在9x9大尺寸趣味操作垫上,我们可以自由创作“原创舞台”。不仅仅是题目、答案这样的教学科普。还可通过Q宝的移动放置实现更新颖的“节奏大师”、趣味闯关等音乐游戏,来真正实现儿童的趣味性音乐开发。
小Q宝还有大魔力,快来一起实现它。

这篇关于索尼 toio™ 应用创意开发征文|音乐小魔方的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/439063

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop企业开发案例调优场景

需求 (1)需求:从1G数据中,统计每个单词出现次数。服务器3台,每台配置4G内存,4核CPU,4线程。 (2)需求分析: 1G / 128m = 8个MapTask;1个ReduceTask;1个mrAppMaster 平均每个节点运行10个 / 3台 ≈ 3个任务(4    3    3) HDFS参数调优 (1)修改:hadoop-env.sh export HDFS_NAMENOD

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu1394(线段树点更新的应用)

题意:求一个序列经过一定的操作得到的序列的最小逆序数 这题会用到逆序数的一个性质,在0到n-1这些数字组成的乱序排列,将第一个数字A移到最后一位,得到的逆序数为res-a+(n-a-1) 知道上面的知识点后,可以用暴力来解 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#in

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

OpenHarmony鸿蒙开发( Beta5.0)无感配网详解

1、简介 无感配网是指在设备联网过程中无需输入热点相关账号信息,即可快速实现设备配网,是一种兼顾高效性、可靠性和安全性的配网方式。 2、配网原理 2.1 通信原理 手机和智能设备之间的信息传递,利用特有的NAN协议实现。利用手机和智能设备之间的WiFi 感知订阅、发布能力,实现了数字管家应用和设备之间的发现。在完成设备间的认证和响应后,即可发送相关配网数据。同时还支持与常规Sof

zoj3820(树的直径的应用)

题意:在一颗树上找两个点,使得所有点到选择与其更近的一个点的距离的最大值最小。 思路:如果是选择一个点的话,那么点就是直径的中点。现在考虑两个点的情况,先求树的直径,再把直径最中间的边去掉,再求剩下的两个子树中直径的中点。 代码如下: #include <stdio.h>#include <string.h>#include <algorithm>#include <map>#

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来