APP下载

Scratch做出跳跃的音符

2019-09-10

电脑报 2019年42期
关键词:音量音符音频

Scratch作為图形化的编程工具,除了制作故事情节的程序,还可以利用键盘事件模块触发相应音符弹奏,通过更改演奏乐器,调整演奏速度与音量来完成自定义音乐,今天我们来学习一下。

学习目标

1.学习如何控制音频文件的播放

2.掌握键盘事件,能够通过按键播放声音

3.了解拓展积木的选择方法

4.理解音量与演奏速度

Scratch中每个角色的音频文件是相互独立的,我们需要将音频上传到需要的角色中去,这里我们需要先选择“电子琴”角色,再在声音标签中上传音频。

可以看到电子琴角色中已经准备好了八个音符的音频(图1),不需要我们再次上传,如果需要其他音频,上传方式类似于上传角色。

上传好音频后,我们在声音模块中可以看到“播放声音”程序块,将其拖往程序区预备(图2)。

在之前的学习中,我们使用了“当绿旗被点击”执行程序,相应的,事件模块中的“当按下空格键”表示空格键被按下时,执行之后的程序,其中空格键可以换成其他任何键。这里我们将两个程序块组合,当按下1键,播放声音“哆”,以此类推,程序如图3所示:

其中的 “C”、“D”、“E”、“F”、“G”、“A”、“B”、“C2”分别代表“哆瑞咪发嗦啦西”以及高音“哆”。完成后,点击相应按钮即可发出相应声音。

除了声音组常规积木外,Scratch3.0还提供了音乐模块,音乐模块属于额外附加模块,通过点击左下角的拓展按钮添加,如图4:

四、音乐模块的添加与说明

点击拓展按钮进入拓展界面,选择音乐模块即可完成添加(图5),音乐模块有七个专属程序块。

其中“小军鼓”和“钢琴”旁边的三角形按钮(图6)可以帮助我们更换乐器。

“休止0.25拍”表示弹奏间隔0.25拍(“拍”是音乐演奏中的时间单位)。

点击“演奏音符60  0.25拍”中的“60”可以更改演奏的音符,计算机用数字指代具体音符。

音乐模块的最后三个程序块都是关于演奏速度的程序块,其中“将演奏速度设定或增加”是用来修改演奏速度的,最后的“演奏速度”是用来记录当前演奏速度的变量,可以通过勾选前面的小方格来显示或隐藏变量“演奏速度”(图7)。

通过音乐模块中的“将乐器设为……”可以调整演奏的乐器,通过“演奏音符60  0.25拍”可以调整演奏的音符,通过在音乐模块中改变演奏速度,在声音模块中改变音量,我们可以自行编写一整首曲子,通过按下某个键触发命令即可播放,效果如图8:

其中的音量设定,休止设定、演奏速度设定、乐器设定可根据需要放置,也可同时弹奏多种乐器实现合奏效果,程序如图9:

我们这里提供一份简谱,通过转化为编程语言,即可在程序中运行播放(图10)。

Python 是机器学习最广泛采用的编程语言,它最重要的优势在于编程的易用性。如果读者对基本的 Python 语法已经有一些了解,那么这篇文章可能会给你一些启发。本文简单概括了 10 段代码,它们都是平常非常实用的技巧哦。

可以检查给定列表是不是存在重复元素,它会使用 set() 函数来移除所有重复元素。

def all_unique(lst):

return len(lst) == len(set(lst))

x = [1,1,2,2,3,2,3,4,5,6]

y = [1,2,3,4,5]

all_unique(x) # False

all_unique(y) # True

检查两个字符串的组成元素是不是一样的。

from collections import Counter

def anagram(first, second):

return Counter(first) == Counter(second)

anagram("abcd3", "3acdb") # True

下面的代码块可以检查变量 variable 所占用的内存。

import sys

variable = 30

print(sys.getsizeof(variable)) # 24

以下方法将统计字符串中的元音 ('a','e', 'i','o', 'u') 的个数,它是通过正则表达式做的。

import re

def count_vowels(str):

return len(len(re.findall(r

'[aeiou]', str, re.IGNORECASE)))

count_vowels('foobar') # 3

count_vowels('gym') # 0

该代码块不需要循环语句就能打印 N 次字符串。

n = 2;

s ="Programming";

print(s * n);

# ProgrammingProgramming

以下代码块会使用 title() 方法,从而大写字符串中每一个单词的首字母。

s = "programming is awesome"

print(s.title())

# Programming Is Awesome

给定具体的大小,定义一个函数以按照这个大小切割列表。

from math import ceil

def chunk(lst, size):

return list(

map(lambda x: lst[x *  size:x *  size + size],

list(range(0, ceil(len(lst) / size)))))

chunk([1,2,3,4,5],2)

# [[1,2],[3,4],5]

这个方法可以将布尔型的值去掉,例如(False,None,0,“”),它使用 filter() 函数。

def compact(lst):

return list(filter(bool, lst))

compact([0, 1, False, 2, '', 3, 'a','s', 34])

# [ 1, 2, 3, 'a','s', 34 ]

如下代码段可以将打包好的成对列表解开成两组不同的元组。

array = [[a', 'b'], ['c', 'd'], ['e', 'f']]

transposed = zip(*array)

print(transposed)

# [('a', 'c', 'e'), ('b','d', 'f')]

我们可以在一行代码中使用不同的运算符对比多个不同的元素。

a = 3

print( 2 < a < 8) # True

print(1 == a < 2) # False

猜你喜欢

音量音符音频
实用小技巧Windows 10音量调整更智能
解放手机的音量键
一串快乐的音符
全面管理应用程序音量
车载电子系统中多路音频控制的研究与实现
美妙音符
“摇一摇”你摇对了吗?
音符草
细火慢炖增加音量调节级数
变脸