当前位置: 首页 > news >正文

python快速实现简易电子音乐盒(电子钢琴)

首先第一步附上完整源码(基于pygame库)

import pygame# 初始化pygame
pygame.init()# 设置窗口大小
window_size = (800, 600)
screen = pygame.display.set_mode(window_size)# 加载音频文件
C4 = pygame.mixer.Sound("test1/C4.wav")
D4 = pygame.mixer.Sound("test1/D4.wav")
E4 = pygame.mixer.Sound("test1/E4.wav")
F4 = pygame.mixer.Sound("test1/F4.wav")
G4 = pygame.mixer.Sound("test1/G4.wav")
A4 = pygame.mixer.Sound("test1/A4.wav")
B4 = pygame.mixer.Sound("test1/B4.wav")# 设置按键位置和大小
C4_rect = pygame.Rect(50, 50, 50, 200)
D4_rect = pygame.Rect(120, 50, 50, 200)
E4_rect = pygame.Rect(190, 50, 50, 200)
F4_rect = pygame.Rect(260, 50, 50, 200)
G4_rect = pygame.Rect(330, 50, 50, 200)
A4_rect = pygame.Rect(400, 50, 50, 200)
B4_rect = pygame.Rect(470, 50, 50, 200)# 绘制按键
pygame.draw.rect(screen, (255, 255, 255), C4_rect)
pygame.draw.rect(screen, (255, 255, 255), D4_rect)
pygame.draw.rect(screen, (255, 255, 255), E4_rect)
pygame.draw.rect(screen, (255, 255, 255), F4_rect)
pygame.draw.rect(screen, (255, 255, 255), G4_rect)
pygame.draw.rect(screen, (255, 255, 255), A4_rect)
pygame.draw.rect(screen, (255, 255, 255), B4_rect)# 设置按键文字
font = pygame.font.Font(None, 36)
C4_text = font.render("C4", True, (0, 0, 0))
D4_text = font.render("D4", True, (0, 0, 0))
E4_text = font.render("E4", True, (0, 0, 0))
F4_text = font.render("F4", True, (0, 0, 0))
G4_text = font.render("G4", True, (0, 0, 0))
A4_text = font.render("A4", True, (0, 0, 0))
B4_text = font.render("B4", True, (0, 0, 0))# 绘制按键文字
screen.blit(C4_text, (C4_rect.x + 10, C4_rect.y + 80))
screen.blit(D4_text, (D4_rect.x + 10, D4_rect.y + 80))
screen.blit(E4_text, (E4_rect.x + 10, E4_rect.y + 80))
screen.blit(F4_text, (F4_rect.x + 10, F4_rect.y + 80))
screen.blit(G4_text, (G4_rect.x + 10, G4_rect.y + 80))
screen.blit(A4_text, (A4_rect.x + 10, A4_rect.y + 80))
screen.blit(B4_text, (B4_rect.x + 10, B4_rect.y + 80))# 更新屏幕
pygame.display.flip()# 循环监听事件
while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()exit()elif event.type == pygame.MOUSEBUTTONDOWN:# 判断鼠标点击位置是否在按键内if C4_rect.collidepoint(event.pos):C4.play()elif D4_rect.collidepoint(event.pos):D4.play()elif E4_rect.collidepoint(event.pos):E4.play()elif F4_rect.collidepoint(event.pos):F4.play()elif G4_rect.collidepoint(event.pos):G4.play()elif A4_rect.collidepoint(event.pos):A4.play()elif B4_rect.collidepoint(event.pos):B4.play()

第二步直接展示运行效果

由于没有录视频,只能看一下运行截图,实际用鼠标点击琴键则会播放音乐/音效

当你点击每一个琴键时,就会产生音乐/音效。如果你把每个键都点一遍,则会7个对应的音频文件合起来产生混合音效(或者连续点击某一个琴键时也是如此)

 

可以根据需要修改自己的音频文件,以及相应的路径,wav格式可以直接把mp4格式的音频修改后缀名即可。

 

此版本为基础性雏形实现,后期如有需要可基于此进行扩展和优化,实现一个真正的完整的音乐盒或者电子琴 。音乐盒使用多个正常时长的音乐音频文件,电子琴使用多个特定的瞬时音效音频文件。

http://www.lryc.cn/news/274067.html

相关文章:

  • 详解bookkeeper AutoRecovery机制
  • 使用 Ubuntu 20.04 进行初始服务器设置
  • 【SpringCloud】6、Spring Cloud Gateway路由配置
  • pdf转换成word怎么转?一篇文章教你轻松搞定
  • 【中南林业科技大学】计算机组成原理复习包括题目讲解(超详细)
  • 恭喜 Databend 上榜 2023 开源创新榜「优秀开源项目 」
  • 网络连通性批量检测工具
  • 2023高级人工智能期末总结
  • Oracle数据库迁移所有文件到新挂载磁盘路径
  • 基于YOLOv7算法的高精度实时安全背心目标检测识别系统(PyTorch+Pyside6+YOLOv7)
  • Mac——VsCode使用格式化工具进行整理和格式化
  • 73.乐理基础-打拍子-还原号、临时变音记号在简谱中的规则
  • 一款超酷的一体化网站测试工具:Web-Check
  • MockServer简单使用记录
  • AI+金融:大模型引爆金融科技革命
  • 数据库(二)实验一:MySQL数据库的C/S模式部署
  • RLHF几大常用框架实践对比(trlx、deepspeedchat、colossalaichat)
  • Oracle/Myql批量操作
  • 关于一个web站点的欢迎页面
  • 1050. 鸣人的影分身(dp划分)
  • 51单片机点灯入门教程——2. 呼吸灯效果
  • shell脚本实现九九乘法表
  • CAAC无人机操作证考证报名流程及白底证件照片制作方法
  • RPC介绍
  • 23 导航栏
  • express框架搭建后台服务
  • 信息学奥赛一本通2067详解+代码
  • Java大数据hadoop2.9.2搭建伪分布式yarn资源管理器
  • 3D Gaussian Splatting复现
  • tf-idf +逻辑回归来识别垃圾文本