首页 > 编程语言 >Python“制作”midi音乐“两只老虎”

Python“制作”midi音乐“两只老虎”

时间:2023-06-09 20:32:08浏览次数:41  
标签:0FC 0FB 0FD 04 midi Python 08 老虎 0F9


从网上找了很多谱子,可惜没有音乐细胞看不太懂,根据自己的理解改了好几遍,还是听不出来“两只老虎”的感觉,于是在标题上加了双引号。这样的话就只能了解本文思路了,算是抛砖引玉吧,重点是Python标准库winsound的Beep()函数可以发出37到32767赫兹之间频率的声音,其第二个参数为发声时长。

from winsound import Beep
from random import randint#列表中偶数位置是频率,奇数位置是时长
freqs = ['0FB', '08', '0F9', '08', '0FC', '08', '066', '08', '0FC', '08', '0C7', '08', '0FB', '08', '0F9', '08',
         '0FB', '08', '0F9', '08', '0FC', '08', '066', '08', '0FC', '08', '0C7', '08', '0FB', '08', '0F9', '08',
         '0FC', '08', '0C7', '08', '0FC', '08', '0F3', '08', '0FD', '10', '0A4', '10',
         '0FC', '08', '0C7', '08', '0FC', '08', '0F3', '08', '0FD', '08', '04A', '08',
         '0FD', '04', '04A', '04', '0FD', '04', '095', '04', '0FD', '04', '04A', '04', '0FC', '04', '0F3', '04', '0FC', '08', '0C7', '08', '0FB', '08', '0F9', '08',
         '0FD', '04', '04A', '04', '0FD', '04', '095', '04', '0FD', '08', '4A',  '04', '0FC', '04', '0FC', '04', '0FC', '08', '0C7', '08', '0FB', '08', '0F9', '08',
         '0FC', '08', '066', '08', '0FA', '08', '093', '08', '0FB', '08', '0F9', '08', '0FC', '04', '66', '04', '0FA', '08', '093', '08', '0FB', '08', '0F9', '08',
         '0FF', '10', '0FF', '10']for i in range(0, len(freqs), 2):
    freq, d = map(lambda x: int(x, 16), freqs[i:i+2])
    d = d * 30
    #以指定的时长播放特定频率的声音
    Beep(freq, d)

标签:0FC,0FB,0FD,04,midi,Python,08,老虎,0F9
From: https://blog.51cto.com/u_9653244/6451100

相关文章

  • Python标准库zlib提供的数据压缩功能
    Python标准库zlib中提供的compress()和decompress()函数可以用于数据的压缩和解压缩,在压缩数据之前需要先想办法编码为字节串。>>>importzlib>>>x='Python程序设计系列图书,董付国编著,清华大学出版社'.encode()>>>len(x)72>>>y=zlib.compress(x)>>>len(y)#对于重......
  • Python使用Queue对象实现多线程同步小案例
    queue模块的Queue对象实现了多生产者/多消费者队列,尤其适合需要在多个线程之间进行信息交换的场合,实现了多线程编程所需要的所有锁语义。Queue对象主要实现了put()和get()方法,分别用来往队列尾部追加元素和在队列头部获取并删除元素。这两个方法都允许指定超时时间,其用法分别为put(......
  • Python统计多个Powerpoint文件中幻灯片总数量
    晚上吃饭时突然想知道自己做了多少页《Python程序设计》系列教材的配套PPT,于是就有了下面的代码,这套PPT综合了《Python程序设计基础》(ISBN:9787302410584)、《Python程序设计(第2版)》(ISBN:9787302436515)和《Python可以这样学》(ISBN:9787302456469)以及将要出版的《Python程序设计开发宝典......
  • Python计算序列中数字最大差值(美团2016校招笔试题)
    题目要求:给定一个包含若干数字的序列A(本文以列表为例),求满足0≤a≤b<n(其中n为序列长度)的A[b]-A[a]的最大值。编程要点:循环结构用法,切片,内置函数enumerate(),列表推导式。参考代码:fromrandomimportrandrangedefmaxDifference(lst):#负无穷大diff=-float('inf')......
  • Python使用Condition对象实现多线程同步
    使用Condition对象可以在某些事件触发后才处理数据或执行特定的功能代码,可以用于不同线程之间的通信或通知,以实现更高级别的同步。在内部实现上,Condition对象总是与某种锁对象相关联。Condition对象除了具有acquire()和release()方法之外,还有wait()、wait_for()、notify()、notify_......
  • 使用Python开发会聊天的智能小机器人
    本文重点演示使用socket实现TCP通信以及字典和集合的用法,客户端发来信息之后,服务端会尽量猜测客户端要表达的真正意思,然后选择合适的内容进行回复。服务端小机器人代码:importsocketfromos.pathimportcommonprefixwords={'howareyou?':'Fine,thankyou.','howo......
  • Python字符串处理小案例
    连续5天30个小时的Python培训圆满结束,明天早上5点半出发赶飞机回烟台,晚上收拾行李的时候突然想起来20年前做过的一个C语言题目:假设有一个字符串,里面有若干字母o。要求如下:从前到后扫描,把每个字符删除并追加至字符串尾部,如果遇到字母o就删除,直至字符串处理结束。本文代码主要演示字......
  • Python版归并排序算法(附Python程序__name__属性用法演示视频)
    importrandomdefmergeSort(seq,reverse=False):#把原列表分成两部分mid=len(seq)//2left,right=seq[:mid],seq[mid:]#根据需要进行递归iflen(left)>1:left=mergeSort(left)iflen(right)>1:right=mergeS......
  • 使用Python读写文本文件内容
    本文主要演示如何读写文本文件的内容,以及上下文管理语句with的用法。使用上下文管理语句with时,即使在操作文件内容时引发异常也能保证文件被正确关闭。#'w'表示写入文件,默认为文本文件#如果文件test1.txt不存在,就创建#如果文件test1.txt已存在,就覆盖withopen('test1.txt','w')......
  • Python+pillow计算椭圆图形几何中心
    本文所用测试图像文件位于当前文件夹的testimages子文件夹中,并且图像以白色为背景。fromPILimportImageimportosdefsearchLeft(width,height,im):#从左向右扫描forwinrange(width):#从下向上扫描forhinrange(height):#获......