本文转自:Python的爬虫与数据分析之路

最近看到朋友圈有人在手机app上弹《菊花台》,简直太好听了。于是乎我也开始蠢蠢欲动,迅速下载app,对着谱子弹了起来。

等等,我怎么感觉我的手速跟不上我的脑子,好怕邻居说我扰民啊

算了,我还是放弃吧,毕竟我没有这个艺术细胞。突然我灵机一动,咱也是算玩Keyboard(打字的键盘和乐器的琴键都是同一个单词)的,不行就用python来操作吧!

刚开始我想的很简单,只需要下载个弹琴软件(我用的FreePiano),然后用python操控键盘就OK了,但是马上就被打脸了,因为python的pyautogui、pynput等操控键盘鼠标的库根本无法弹出来声音,需要用python操控驱动级键盘才有用!这可难倒老夫了……

我开始疯狂搜索,终于找到了解决办法,可以先下载1个虚拟键盘,然后用python来操控虚拟键盘,那么这个问题就迎刃而解了。

我找了个叫做DD虚拟键盘的软件,这是一款开源的虚拟键盘,可以通过程序来操控,软件压缩包可以在官方qq群里可以下载,内含python、Java、c等多种示例程序。

打开压缩包,有以下文件

记住压缩包存在的位置,后续有用。

下面开始介绍如何用python操控DD虚拟键盘:

1. 调用dll文件

#改成你自己的路径dddd_dll = windll.LoadLibrary('DD94396官方公版\DD94687.64.dll')

源代码括号内只有‘DD64.dll’,刚开始运行老是出错,自己折腾了一番发现是路径不对。这里也可以用绝对路径。

2. 操控键盘

虚拟键盘的虚拟码对应关系为

按键函数为:

DD_key(参数1,参数2)

其中,参数1为DD键码,参数2中1表示按下,2表示放开

例子:模拟TAB按键,只需连写

DD_key(15, 1)DD_key(15, 2)

如果需要模拟特殊符号或者大写字母按键,只需先按住shift,再按相应按键,例如模拟按@键的代码为:

dd_dll.DD_key(500, 1)dd_dll.DD_key(201, 1)dd_dll.DD_key(201, 2)dd_dll.DD_key(500, 2)

其中500是shift键的模拟码,201是数字2的模拟码

3. 准备《菊花台》键盘谱子

在网上找了一个谱子,它长这样:

这是个简化版的,主要由字母和空格组成,现在要做的就是在按键和按键、按键和空格控制好时间间隔,这样才能才能让弹奏出来的音乐更好听,下面是根据我自己的爱好设置的时间间隔:

lists = list(lists)for i in lists:    if i == '\n':        time.sleep(0.5)    elif i == ' ':        time.sleep(0.5)    else:        single(i)  # 按键        time.sleep(0.5)

4. 效果展示

拍子有点不准,主要是因为我五音不全,把握不住节奏,请大家莫怪

感兴趣的话你可以在此基础上做进一步调整。

文中使用的代码、曲谱、软件已打包上传,扫码回复:弹钢琴 即可获得

用Python弹奏周董的《菊花台》是什么效果相关推荐

  1. 520到了! 我用Python拜托周董为我和女友送上祝福!

    大家好,我是菜鸟哥!这是我第482篇原创! 今天是5月20号,520意为"我爱你"的谐音,5月20日也被认为是网络情人节.在这一天,情侣们都要为彼此送上礼物,来度过美好的一天.作为 ...

  2. python获取按键状态_谁在用 python 弹奏一曲菊花台

    转自:Crossin的编程教室 想必各位在家已经闲得快发疯了吧,鄙人现在的状态如下: 但是我不想这么萎靡下去,我想做点高雅的事情,看到朋友圈有人在手机app上弹<菊花台>,简直太好听了.于 ...

  3. DL之RNN:人工智能为你写周董歌词——基于TF利用RNN算法实现【机器为你作词】、训练测试过程全记录

    DL之RNN:人工智能为你写周董歌词--基于TF利用RNN算法实现~机器为你作词~.训练&测试过程全记录 目录 输出结果 模型监控 训练.测试过程全记录 训练的数据集 输出结果 1.test0 ...

  4. 周董下次发新歌,可以请 AI 来作词吗?

    By 超神经 场景描述:周董终于发了新歌,立刻在各个平台刷屏.这首新歌<说好不哭>,上线两小时,销售额就破了两千万.方文山回归.阿信助唱等因素都让这首歌火爆的一塌糊涂.方文山的作词水平一般 ...

  5. 二十万评论告诉你,周董的『说好不哭』有多火

    2019 年 9 月 10 日,周杰伦在 Instagram 上传九宫格照片宣布新歌歌名为<说好不哭>,并且表示新歌公开时间为 9 月 16 日 23:00.他还配文「16 号晚上 11 ...

  6. 周董新歌搞崩QQ,透过20W评论,看看歌迷在说啥

    9 月 16 日晚间,周董在朋友圈发布了最新单曲<说好不哭> 发布后,真的让一波人哭了 一群想抢鲜听的小伙伴直接泪奔 因为 QQ 音乐直接被搞崩了 没想到干翻 QQ 音乐的不是网易云音乐 ...

  7. Python基于周立功盒子的二次开发的封装和调用

    Python基于周立功盒子的二次开发的封装和调用 一.介绍     前面我们介绍如何拿到官网给的例程并使用起来,但在使用的过程中,我们发现官网给的例子非常的冗长,可读性不好,于是我进行分解和封装,使得 ...

  8. 菊花台-中国朝代歌[摘]

    为什么80%的码农都做不了架构师?>>>    菊花台--历史书 (模仿周杰伦<菊花台>) 你的课堂,历史中流淌:夏商的事悠悠,开来继往. 周朝太长,一分成了双:春秋在竹 ...

  9. python第二周day3

    python第二周day3(9.24) 1.day7字典作业更改版 # 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名.年龄.成绩(单科).电话.性别(男.女.不明) ) stude ...

  10. python第二周day2

    python第二周day2(9.23) 1.day6列表作业更改版 import random # 随机操作 # random.randint(0, 100) # **1.创建一个列表,列表中有10个 ...

最新文章

  1. 基于easyui开发Web版Activiti流程定制器详解(四)——页面结构(下)
  2. 28-Interview-面试
  3. Java之关于面向对象
  4. css响应式网格布局生成器_如何使用网格布局模块使用纯CSS创建响应表
  5. ffmpeg图片缩放
  6. linux做 tar,linux的tar命令
  7. 贺州计算机学院,贺州学院
  8. git revert 回滚代码至上一版本
  9. 数据加密以及国密基础知识
  10. 微信小程序豆瓣电影实例源码下载
  11. java foxpro,在Visual FoxPro中更新顶部
  12. android 活动生命,Android 活动生命周期
  13. 【Web前端】HTML与HTML5 知识点梳理总结(自用笔记版)
  14. 【知识图谱】Neo4j Cypher查询语言详解
  15. 360 android系统 流量,警惕天价流量费 360手机卫士Android版增流量监控
  16. 【Java面试】Linux
  17. Neural Ordinary Differential Equations(NIPS2018)
  18. 各种常用计算机视觉库 2
  19. Gos ——BIOS与继承者MBR
  20. spring赌上未来的一击:WebFlux性能实测

热门文章

  1. 苹果怎么分享无线密码_无线路由器密码怎么破解 无线路由器密码破解方法【介绍】...
  2. php 递归函数返回数组,php递归函数 PHP中Array相关函数简介
  3. opengl 4.5离线文档下载
  4. 杀软EAV/ESS不用“用户名密码”就能更新的方法【各版、6.0.308依然可用】
  5. jQuery lightbox插件(相册全屏效果)
  6. vijos 1602
  7. Android 电子市场
  8. linux动态鼠标光标,自定义鼠标光标---Linux Mint 18.2 Sonya系统
  9. java解析魔兽争霸3录像_Java解析魔兽争霸3录像W3G文件(五):Action和APM计算
  10. mysql的inndob引擎崩溃