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

2024-01-05 20:12

本文主要是介绍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格式的音频修改后缀名即可。

 

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

这篇关于python快速实现简易电子音乐盒(电子钢琴)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Flutter实现文字镂空效果的详细步骤

《Flutter实现文字镂空效果的详细步骤》:本文主要介绍如何使用Flutter实现文字镂空效果,包括创建基础应用结构、实现自定义绘制器、构建UI界面以及实现颜色选择按钮等步骤,并详细解析了混合模... 目录引言实现原理开始实现步骤1:创建基础应用结构步骤2:创建主屏幕步骤3:实现自定义绘制器步骤4:构建U

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Android实现定时任务的几种方式汇总(附源码)

《Android实现定时任务的几种方式汇总(附源码)》在Android应用中,定时任务(ScheduledTask)的需求几乎无处不在:从定时刷新数据、定时备份、定时推送通知,到夜间静默下载、循环执行... 目录一、项目介绍1. 背景与意义二、相关基础知识与系统约束三、方案一:Handler.postDel

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指