C++ 演奏《起风了》

2023-05-16

来源:https://www.bilibili.com/video/BV1tv4y1D7iW/?is_story_h5=false&p=1&share_from=ugc&share_medium=iphone&share_plat=ios&share_session_id=EDAABD98-E14E-403D-A0A4-BF38619462DC&share_source=WEIXIN&share_tag=s_i&timestamp=1668093415&unique_k=PkeitaO

源码

#include <iostream>

#include <Windows.h>

// #pragma comment(lib,"winmm.lib")   //因为使用vs code运行,所以更改链接方式

using namespace std;



enum Scale

{

  Rest = 0, C8 = 108, B7 = 107, A7s = 106, A7 = 105, G7s = 104, G7 = 103, F7s = 102, F7 = 101, E7 = 100,

  D7s = 99, D7 = 98, C7s = 97, C7 = 96, B6 = 95, A6s = 94, A6 = 93, G6s = 92, G6 = 91, F6s = 90, F6 = 89,

  E6 = 88, D6s = 87, D6 = 86, C6s = 85, C6 = 84, B5 = 83, A5s = 82, A5 = 81, G5s = 80, G5 = 79, F5s = 78,

  F5 = 77, E5 = 76, D5s = 75, D5 = 74, C5s = 73, C5 = 72, B4 = 71, A4s = 70, A4 = 69, G4s = 68, G4 = 67,

  F4s = 66, F4 = 65, E4 = 64, D4s = 63, D4 = 62, C4s = 61, C4 = 60, B3 = 59, A3s = 58, A3 = 57, G3s = 56,

  G3 = 55, F3s = 54, F3 = 53, E3 = 52, D3s = 51, D3 = 50, C3s = 49, C3 = 48, B2 = 47, A2s = 46, A2 = 45,

  G2s = 44, G2 = 43, F2s = 42, F2 = 41, E2 = 40, D2s = 39, D2 = 38, C2s = 37, C2 = 36, B1 = 35, A1s = 34,

  A1 = 33, G1s = 32, G1 = 31, F1s = 30, F1 = 29, E1 = 28, D1s = 27, D1 = 26, C1s = 25, C1 = 24, B0 = 23,

  A0s = 22, A0 = 21

};

enum Voice

{

  X1 = C2, X2 = D2, X3 = E2, X4 = F2, X5 = G2, X6 = A2, X7 = B2,

  L1 = C3, L2 = D3, L3 = E3, L4 = F3, L5 = G3, L6 = A3, L7 = B3,

  M1 = C4, M2 = D4, M3 = E4, M4 = F4, M5 = G4, M6 = A4, M7 = B4,

  H1 = C5, H2 = D5, H3 = E5, H4 = F5, H5 = G5, H6 = A5, H7 = B5,

  LOW_SPEED = 500, MIDDLE_SPEED = 400, HIGH_SPEED = 300,

  _ = 0XFF

};

void Wind()

{

  HMIDIOUT handle;

  midiOutOpen(&handle, 0, 0, 0, CALLBACK_NULL);

  midiOutShortMsg(handle, 34<< 8 | 0xC0);

  int volume = 0x7f;

  int voice = 0x0;

  int sleep = 1000;

  int wind[] =

  {

    400,0,L7,M1,M2,M3,300,L3,0,M5,M3,300,L2,L5,2,_,0,L7,M1,M2,M3,300,L2,0,M5,M3,M2,M3,M1,M2,L7,M1,300,L5,0,L7,M1,M2,M3,300,L3,0,M5,M3,300,L2,L5,2,_,0,L7,M1,M2,M3,300,L2,0,M5,M3,M2,M3,M1,M2,L7,M1,300,L5,

    0,L7,M1,M2,M3,300,L3,0,M5,M3,300,L2,L5,2,_,0,L7,M1,M2,M3,300,L2,0,M5,M3,M2,M3,M1,M2,L7,M1,300,L5,0,L7,M1,M2,M3,300,L3,0,M5,M3,300,L2,L5,2,_,

    0,M6,M3,M2,L6,M3,L6,M2,M3,L6,_,_,_,

    M2,700,0,M1,300,M2,700,0,M1,300,M2,M3,M5,0,M3,700,300,M2,700,0,M1,300,M2,700,0,M1,M2,M3,M2,M1,300,L5,_,

    M2,700,0,M1,300,M2,700,0,M1,300,M2,M3,M5,0,M3,700,300,M2,700,0,M3,300,M2,0,M1,700,300,M2,_,_,_,

    M2,700,0,M1,300,M2,700,0,M1,300,M2,M3,M5,0,M3,700,300,M2,700,0,M3,300,M2,0,M1,700,300,L6,_,

    0,M3,M2,M1,M2,300,M1,_,0,M3,M2,M1,M2,300,M1,700,0,L5,M3,M2,M1,M2,300,M1,_,_,_,

    M1,M2,M3,M1,M6,0,M5,M6,300,_,700,0,M1,300,M7,0,M6,M7,300,_,_,M7,0,M6,M7,300,_,M3,0,H1,H2,H1,M7,300,M6,M5,M6,0,M5,M6,_,M5,M6,M5,300,M6,0,M5,M2,300,_,0,M5,700,300,M3,_,_,_,

    M1,M2,M3,M1,M6,0,M5,M6,300,_,700,0,M1,300,M7,0,M6,M7,300,_,_,M7,0,M6,M7,300,_,M3,0,H1,H2,H1,M7,300,M6,M5,M6,0,H3,H3,300,_,M5,M6,0,H3,H3,300,_,0,M5,700,300,M6,_,_,_,_,_,

    H1,H2,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H2,0,H1,M6,300,_,0,H1,H1,300,H2,0,H1,300,M6,700,0,_,300,H1,700,H3,_,0,H3,H4,H3,H2,H3,300,H2,700,

    H1,H2,H3,0,H6,H5,_,H6,H5,_,H6,H5,300,_,H3,H3,0,H6,H5,_,H6,H5,_,H6,H5,700,300,H3,700,H2,0,H1,M6,700,300,

    H3,700,H2,0,H1,300,M6,700,H1,H1,_,_,_,_,_,

    0,M6,300,H3,700,H2,0,H1,M6,700,300,H3,H2,700,300,0,H1,M6,300,700,H1,H1,_,_,

    0,L7,M1,M2,M3,300,L3,0,M5,M3,300,L2,L5,2,_,0,L7,M1,M2,M3,300,L2,0,M5,M3,M2,M3,M1,M2,L7,M1,300,L5,0,L7,M1,M2,M3,300,L3,0,M5,M3,300,L2,L5,2,_,

    0,M6,M3,M2,L6,M3,L6,M2,M3,L6,_,_,_,

    

    M2,700,0,M1,300,M2,700,0,M1,300,M2,M3,M5,0,M3,700,300,M2,700,0,M1,300,M2,700,0,M1,M2,M3,M2,M1,300,L5,_,

    M2,700,0,M1,300,M2,700,0,M1,300,M2,M3,M5,0,M3,700,300,M2,700,0,M3,300,M2,0,M1,700,300,M2,_,_,_,

    M2,700,0,M1,300,M2,700,0,M1,300,M2,M3,M5,0,M3,700,300,M2,700,0,M3,300,M2,0,M1,700,300,L6,_,

    0,M3,M2,M1,M2,300,M1,_,0,M3,M2,M1,M2,300,M1,700,0,L5,M3,M2,M1,M2,300,M1,_,_,_,

    M1,M2,M3,M1,M6,0,M5,M6,300,_,700,0,M1,300,M7,0,M6,M7,300,_,_,M7,0,M6,M7,300,_,M3,0,H1,H2,H1,M7,300,M6,M5,M6,0,M5,M6,_,M5,M6,M5,300,M6,0,M5,M2,300,_,0,M5,700,300,M3,_,_,_,

    M1,M2,M3,M1,M6,0,M5,M6,300,_,700,0,M1,300,M7,0,M6,M7,300,_,_,M7,0,M6,M7,300,_,M3,0,H1,H2,H1,M7,300,M6,M5,M6,0,H3,H3,300,_,M5,M6,0,H3,H3,300,_,0,M5,700,300,M6,_,_,_,_,_,



    H1,H2,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H2,0,H1,M6,300,_,0,H1,H1,300,H2,0,H1,300,M6,700,0,_,300,H1,700,H3,_,0,H3,H4,H3,H2,H3,300,H2,700,

    H1,H2,H3,0,H6,H5,_,H6,H5,_,H6,H5,300,_,H3,H3,0,H6,H5,_,H6,H5,_,H6,H5,700,300,H3,700,H2,0,H1,M6,700,300,

    H3,700,H2,0,H1,300,M6,700,H1,H1,_,_,_,_,_,



    H1,H2,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H2,0,H1,M6,300,_,0,H1,H1,300,H2,0,H1,300,M6,700,0,_,300,H1,700,H3,_,0,H3,H4,H3,H2,H3,300,H2,700,

    H1,H2,H3,0,H6,H5,_,H6,H5,_,H6,H5,300,_,H3,H3,0,H6,H5,_,H6,H5,_,H6,H5,700,300,H3,700,H2,0,H1,M6,700,300,

    H3,700,H2,0,H1,300,M6,700,H1,H1,_,_,_,_,_,



    H1,H2,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H3,0,H6,H5,300,_,0,H6,H5,300,_,0,H6,H5,300,_,0,H2,H3,300,H2,0,H1,M6,300,_,0,H1,H1,300,H2,0,H1,300,M6,700,0,_,300,H1,700,H3,_,0,H3,H4,H3,H2,H3,300,H2,700,

    H1,H2,H3,0,H6,H5,_,H6,H5,_,H6,H5,300,_,H3,H3,0,H6,H5,_,H6,H5,_,H6,H5,700,300,H3,700,H2,0,H1,M6,700,300,

    H3,700,H2,0,H1,300,M6,700,H1,H1,_,_,_,_,_,



    0,M6,300,H3,700,H2,0,H1,M6,700,300,H3,H2,700,300,0,H1,M6,300,700,H1,H1,_,_,_,_,_,_,_,

  };

  for (auto i : wind) {

    if (i == LOW_SPEED || i == HIGH_SPEED || i == MIDDLE_SPEED) {

      sleep = i;//Sleep(i/2);

      continue;

    }

    if (i == 0) { sleep = 175;continue; }

    if (i == 700) { Sleep(175);continue; }

    if (i == _) {

      Sleep(500);

      continue;

    }

    // if (i == 900) volume += 100;

    voice = (volume << 16) + ((i) << 8) + 0x90;

    

    

    midiOutShortMsg(handle, voice);

    cout << voice << endl;

    Sleep(sleep);

  }

  midiOutClose(handle);

}



int main()

{



  Wind();

  return 0;

}

运行

1.粘贴代码到vs code中
2.修改task.json文件。在vscode的编译文件task.json中添加编译参数"-lwinmm"(别忘了上一行还要加个逗号)
在这里插入图片描述
3.Run code

运行方式参考自该用户笔记在这里插入图片描述
后续想法:代码自动生成乐谱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 演奏《起风了》 的相关文章

  • 嵌入式开发中断全解(2)Hard Fault的诊断

    承接上次的文章 xff0c 讲几个大家应该都看过下面的几个中断 xff0c 有的是在启动文件中或者是 c文件中 注意 xff1a 上述是ST公司的Stm32芯片 这里的GD32芯片是国产芯片 xff0c 和stm32类似的操作 xff0c
  • 梯度、Hessian矩阵、Jacobian矩阵的计算

    x表示为如下列向量 xff1a 一 f x 为一维 此时其一阶导数构成的向量为梯度向量g x xff0c 其二阶导数构成的矩阵为Hessian xff08 海森 黑塞 xff09 矩阵G x xff1b 导数可以表示为 xff1a 梯度向量
  • py基础之猜拳游戏的实现

    题目 xff1a 用所学的 py 基础实现猜拳游戏的 5 局 3 胜 xff08 面向对象之前的所有基础知识 xff09 要求 xff1a 5 局 3 胜 xff0c 平局时再加一局 人与电脑对局 思路 xff1a 用 0 表示剪刀 xff
  • 操作系统历史与设计理念

    操作系统的发展并不是一蹴而就的 xff0c 直到今天操作系统仍在不断发展中 xff0c 它与计算机硬件的发展息息相关 xff0c 例如内存 cpu等 以下是操作系统大致的演变过程 xff1a 到现如今 xff0c 计算机系统已经发生了翻天覆
  • 微软牵手大疆打造先进无人机技术

    2018微软人工智能大会正式开幕 xff0c 在大会上微软宣布 xff0c 全球最大的无人机制造商大疆创新 DJI 正在与微软合作 xff0c 打造面向企业市场的先进无人机技术 大疆创新首席科学家吴迪表示 xff0c 基于双方的战略合作 x
  • Linux环境使用VSCode调试简单C++代码

    本文将通过演示一个简单C 43 43 代码的编译调试过程 xff0c 介绍在VSCode中如何使用Linux环境下的GCC C 43 43 编译器 g 43 43 和GDB 调试器 gdb 关于GCC g 43 43 gcc gdb xff
  • layui date控件的使用

    最近项目多用layui xff0c 就总结一下 span class token tag span class token tag span class token punctuation lt span div span span cla
  • putty超时解决方案

    putty连续3分钟左右没有输入 就自动断开 然后必须重新登陆 很麻烦 在网上查了很多资料 发现原因有多种 环境变量TMOUT引起 ClientAliveCountMax和ClientAliveInterval设置问题或者甚至是防火墙的设置
  • 最好的黑客网站

    全国最早最大的黑客网站 黑客基地 xff1a http vip hackbase com 学黑客必去的网站 黑客基地 xff1a http www hackbase com 新手学黑客快速入门的好地方 xff1a http vip hack
  • mysql-connector-java-5.1.40-bin.jar包

    mysql connector java 5 1 40 bin jar 链接 xff1a https pan baidu com s 1G7 FsxkEJfZ4Cy6R s5j g 提取码 xff1a 5r5o
  • 利用spm12将dicom医学图像格式转成NII格式

    废话不多说 xff0c 直接上干货 xff0c 一 首先下载spm12 国外的下载源 xff0c 比较慢 xff0c 这里有百度网盘 xff0c 需要的直接下载 xff1a 链接 xff1a https pan baidu com s 1Z
  • securityCRT ssh远程开启mysql,断开连接后,mysql服务就停止服务

    问题描述 xff1a ssh远程连接服务器 xff0c 在服务器中开启mysql服务 xff0c 在正常断开ssh 连接后 xff0c 重新连接口查看mysql的状态发现 xff0c mysql的状态 xff1a 重新启动mysql xff
  • py基础之掷骰子游戏的实现

    掷骰子游戏 xff08 循环的使用及掌握 xff09 0 两个骰子都是1 6 1 玩游戏要有金币 xff0c 没有金币不能玩游戏 2 玩一局游戏赠金币一枚 xff0c 充值获得金币 3 充值为10元的倍数 xff0c 10元 20个金币 x
  • centOS 不能上外网怎么下载依赖 (通过挂载镜像)

    问题 我们在服务器上部署系统环境的时候 xff0c 常常会遇到找不到该命令 bash span class token operator span span class token punctuation span span class t
  • linux 搭建FTP服务器

    linux 搭建FTP服务器 网上对于ftp搭建有很多 xff0c 但是说的比较的麻烦 xff0c 而且十分容易出错 xff0c 并且在创建完成后存在一些配置的注意事项 废话不多说 xff0c 现在开始 1 安装 vsftpd 安装FTP服
  • 提取论文中公式神奇(写论文的福音)

    写论文还在愁怎么写复杂的公式吗 xff0c 想引用其他的论文的公式 xff0c 发现都是这样的 P X i
  • java中list.add添加元素覆盖之前的问题

    1 在码代码时 xff0c 发现一个问题 xff1a 使用 list lt object gt list 61 new Arraylist lt object gt list add object xff1b 出现之前添加的元素被最后的元素
  • 线性最优解java实现+Cplex java调用

    一 xff1a cplex的使用 xff1a 1 1 导入cplex jar 包的地址 xff1a https pan baidu com s 1Q0Bv24EQdelV2rY IrLoZQ 提取码 xff1a xn14 1 2 将cple
  • KNN算法(K临近算法)及使用KNN算法实现手写数字0-9识别

    首先感谢博主倔强的小彬雅 xff0c 本文使用的素材及部分代码来源其博文机器学习入门 用KNN实现手写数字图片识别 xff08 包含自己图片转化 xff09 xff0c 需要下载素材的可以到其博文最后进行下载 关于KNN算法 knn算法也叫
  • 如何学习开源飞控

    前言 有一段时间没有更新文章了 新的一年新气象 xff0c 因此还是要抽出时间 xff0c 写点总结与思考 xff0c 对自己的成长也是很有帮助 今天主要想聊一下开源飞控的学习 本人在5年前 xff0c 在知乎下写过一篇回答 xff0c 如

随机推荐

  • 控制系统的观测器基础知识

    1 为什么需要用到观测器 控制原理中的系统框图 xff0c 往往都是假设反馈状态为理想值 但在工程实践中 xff0c 这个是做不到的 一般我们采用传感器测量控制的反馈状态 xff0c 而传感器的测量值 xff0c 存在几个问题 xff1a
  • 浅谈飞控的软件设计

    写在前面 开这个专栏的目的主要是深感自己对飞控软件 算法的知识点过于杂乱 xff0c 很久没有进行系统的总结了 xff0c 因此决定写几篇文章记录一些飞控开发过程的知识点 主要是针对一些软件 算法部分进行讨论 xff0c 如内容有错误 xf
  • 飞控IMU数据进阶处理(FFT,滤波器)

    前面的文章 xff08 知乎专栏 https zhuanlan zhihu com c 60591778 xff09 曾简单讲过IMU数据 xff08 陀螺仪 加速度数据 xff09 的校准以及一阶低通滤波 本文在此基础上更进一步讲一下数据
  • (5)py接口自动化之配置文件&数据库连接详解

    目录 一 配置文件 ini amp yaml 1 作用 2 ini A 语法 B 特点 C 操作方法 3 yaml A 安装第三方库 B 支持的数据类型 C 特性 D 语法 E 数据读取 二 数据库连接与pytho配置文件 1 安装数据库
  • 再谈IMU数据处理(滤波器)

    本文开始前 xff0c 先回答一个问题 上一篇文章最后提到了卡尔曼滤波器用来做一维数据的数字滤波处理 xff0c 最终的实验结果说 xff1a 该模型下的卡尔曼滤波处理与二阶IIR低通滤波处理效果几乎一致 有网友指出是错误的 xff0c 卡
  • s3操作ceph 创建bucket 报错 命名 错误 botocore.exceptions.ClientError: An error occurred (InvalidBucketName)

    报错信息 Traceback span class token punctuation span most recent call last span class token punctuation span s3 create bucke
  • windows 10 上传文件夹到 Linux服务器 压缩文件夹 到tar.gz格式

    有时候需要把win10上的一个文件夹传到Linux服务器上 简洁的做法是先压缩成 tar gz 再用xftp上传 其中win端的压缩软件一般无法直接压缩成tar gz格式 可用在cmd中 用命令压缩 xff1a span class tok
  • NS3 socket 发送 packet因Tag值过大发送失败

    NS3使用中遇到一个问题 xff1a NS3中当Tag内值过大 xff08 没有超过数据结构可用大小 xff09 的时候 出现socket Send xff08 packet xff09 失败的情况 现在有三个节点 结构如下 span cl
  • 一行代码安装Tensorflow GPU Ubuntu20.04 Windows

    本文内容 xff1a Ubuntu20 04下使用Anaconda 配置Tensorflow GPU环境 Windows操作系统也可行 xff0c 换成Win下的anaconda安装方法即可 Why conda xff1f 使用conda安
  • python无法引用另一个python文件问题 文件名命名问题

    问题 xff1a python的from xxxx py import 语句无法获取另一个python文件 例子 xff1a 在A py的同级目录下有另一个文件xxx xxx py xff08 文件无错 xff0c 可运行 xff09 在A
  • Ubuntu20.04 安装显卡驱动 安装pytorch

    1 查看推荐的驱动 ubuntu span class token operator span drivers devices driver span class token operator span nvidia span class
  • Ubuntu LVM 逻辑卷操作 创建 删除

    先检查新硬盘是否插入 xff1a fdisk l 或者 df h 或者 lsblk 创建LVM 1 将物理磁盘设备初始化为物理卷 pvcreate dev sdb dev sdc 查看物理卷信息 xff1a pvdispaly 或者 pvs
  • Ubuntu20.04 Server 安装NS3 速通版

    官网内容 xff1a https www nsnam org wiki Installation 目录如下 xff1a 官网内容 第一章内容基本可以跳过在第二章中可以查看对应OS需要的安装环境 xff0c 当然我尝试过Ubuntu20 04
  • Ubuntu20 修改系统时区为 国内时间

    问题 xff1a 一般情况下 xff0c Ubuntu时间与实际时间相差8小时 xff0c 因为他的时区设置为0时区 xff0c 而我们想让他为北京时间 校正方法如下 xff1a 运行tzselect xff0c 选择Asia xff08
  • (7)http请求、https请求详解

    一 基础知识 1 OSI七层模型 xff1a 参考 xff1a OSI七层模型详解 小鹏 加油的博客 CSDN博客 osi七层模型 这个博主说的很详细 xff0c 感兴趣的可以去学习一下 如果不感兴趣的话记住tcp ip协议是在传输层就好了
  • 回归问题的评价指标 MAE MSE RMSE R2 score Adjusted R2 score 和 重要知识点总结

    除了MSE 和MAE外回归还有什么重要的指标吗 xff1f R2 score amp Adjusted R2 score 我们用一个回归问题来介绍这些指标 xff0c 我们的其中输入是工作经验 xff0c 输出是薪水 下图显示了为预测薪水而
  • Linux tar 压缩 解压

    tar 操作的参数 xff1a v xff1a 打印出命令执行过程 c xff1a 创建新归档 xff0c 即打包 x xff1a 提取归档文件 xff0c 即解包 z xff1a 使用 gzip 压缩格式 j xff1a 使用 bzip2
  • tmux 基础使用 xshell 远程连接服务器 断电 断网后保持程序运行

    应用场景 Xshell 远程连接服务器 xff0c 断电 or 断网等原因 xff0c 导致Xshell会话关闭 xff0c 然而 xff0c 此时如果有程序在运行也会被中断 xff0c 对于那些需要长时间运行的程序 xff0c 如何避免程
  • leetcode 3. 无重复字符的最长子串 优化代码效率

    标准解法 xff1a 滑动窗口 xff0c 可见官方题解 核心内容是使用一个set或者map维护当前窗口出现的字符 查看了一下别人运行速度最快的写法发现优化方法是 使用一个vector lt int gt cnt 128 来记录字符是否出现
  • C++ 演奏《起风了》

    来源 xff1a https www bilibili com video BV1tv4y1D7iW is story h5 61 false amp p 61 1 amp share from 61 ugc amp share mediu