找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 38|回复: 3

中A project: Piano

[复制链接]

27

主题

71

回帖

2976

积分

超级版主

积分
2976
发表于 8 小时前 | 显示全部楼层 |阅读模式
Pygame如何发声呢?
数字音乐模块Mixer初始化:  pygame.mixer.init( )
实际上:pygame.init()里会自动初始化子模块mixer,所以通常pygame.init()即可
如果不需要pygame的windows窗口,只是需要发声,就使用pygame.mixer.init( )

声音文件对象准备(必须先mixer模块init或pygame init())
  mySound = pygame.mixer.Sound('c4.ogg’' #得到声音对象mySound
  音效文件支持 .ogg, .wav, .mp3

播放声音
mySound.play( )
注意:播放声音的.play()是立即返回(后台发声),而不是等到声音播放完毕才返回。

piano.zip压缩包里有88个钢琴琴键对应的声音文件,命名规则:
  比如 a4.ogg, 就是中音的A也就是La
  比如 c5m.ogg, 就是高音的升A也就是升Do,m就是升半音的意思


先输入下面这个简单程序,就可以弹Do和Re,自己增加代码让程序可以弹更多音,并弹几句熟悉的旋律。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

15

主题

38

回帖

1306

积分

版主

积分
1306
发表于 8 小时前 | 显示全部楼层
同理,同学们可以用人声切片(可以是同学的,可以是自己的,可以是b站上的)替换钢琴音文件,然后让程序说一些话

27

主题

71

回帖

2976

积分

超级版主

积分
2976
 楼主| 发表于 8 小时前 | 显示全部楼层

27

主题

71

回帖

2976

积分

超级版主

积分
2976
 楼主| 发表于 7 小时前 | 显示全部楼层
作业:

课堂的Piano V1.1只能弹白键,请同学们增加黑键功能。
要增加黑键,就要有设计,因为显然电脑键盘不支持3个八度的黑键+白键
这里给出一个键盘分布设计参考

如图所示,支持两个半八度,并且每一个白键和黑键的对应位置接近钢琴习惯。
从程序实现角度,首先要理解:
soundList, keyList, keyFlagList,同一个下标指向同一件事。
程序是在init的时候,保证soundList和keyList的同一个下标指向同一个音。
那么对于新的键盘分布,也要通过init的流程来实现下标同步。
文件名角度,每个CDEFGAB的升半音,文件名加了m,也就是说CDFGA有m
只要解决了init,弹奏黑键就实现了。
那么下一个难点是”音符显示“。V1.1程序只有21个白键,排成一排,那么用下标*琴键宽度就可以得到对应音符的x坐标。但是加了黑键之后,就复杂了。可以先实现上一步”弹奏“,新版本的”考虑黑白键的音符显示“,需要你认真再想办法,加油!

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 8-16-2025 18:55 , Processed in 0.063852 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表