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

中A projiect:Piano

[复制链接]

29

主题

86

回帖

3092

积分

超级版主

积分
3092
发表于 7-13-2025 21:30:50 | 显示全部楼层 |阅读模式
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,自己增加代码让程序可以弹更多音,并弹几句熟悉的旋律。

本帖子中包含更多资源

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

×

评分

参与人数 1威望 +5 收起 理由
Sevanger + 5 很给力!

查看全部评分

29

主题

86

回帖

3092

积分

超级版主

积分
3092
 楼主| 发表于 7-14-2025 10:51:59 | 显示全部楼层
本帖最后由 liuyi 于 7-14-2025 11:35 编辑


V1.1代码:



作业:

课堂的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, 7-24-2025 03:58 , Processed in 0.061205 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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