暂时记录。

  感觉想写个电子钢琴乐程序了,不过感觉音有点怪怪的。

#include <iostream>
#include <windows.h>
#include <Mmreg.h>
#include <mmeapi.h>
#include <Windows.h>
#include <math.h> #pragma comment(lib, "Winmm.lib") #define RATE 44100
#define PIPE 2
#define BUFF (RATE * 500)
#define PI 3.14159 void GenAudio(PBYTE pB, int freq)
{
double w = (2 * PI) / freq;
for (int i = 0; i < BUFF; i++)
{
pB[i] = 127 + 127 * std::sin(w * i);
}
} int main()
{
WAVEHDR wavehdr;
WAVEFORMATEX waveformat;
HWAVEOUT hWavO;
PBYTE aData = new BYTE[BUFF];
ZeroMemory(aData, BUFF); waveformat.wFormatTag = WAVE_FORMAT_PCM;
waveformat.nSamplesPerSec = RATE;
waveformat.nChannels = PIPE;
waveformat.wBitsPerSample = 16;
waveformat.nBlockAlign = PIPE * waveformat.wBitsPerSample / 8;
waveformat.nAvgBytesPerSec = waveformat.nSamplesPerSec * waveformat.nBlockAlign;
waveformat.cbSize = 0; wavehdr.lpData = (LPSTR)aData;
wavehdr.dwBufferLength = BUFF;
wavehdr.dwLoops = 1;
wavehdr.dwFlags = 0; if (waveOutOpen(&hWavO, WAVE_MAPPER, &waveformat, NULL, 0, CALLBACK_NULL) != MMSYSERR_NOERROR)
std::cout << "出错"; waveOutPrepareHeader(hWavO, &wavehdr, sizeof(wavehdr)); int scale[] = { 261, 293, 329, 349, 391, 440, 493, 523 }; for (;;)
{
for (int i = 0; i < 8; i++)
{
GenAudio(aData, scale[i]);
for (int j = 0; j < RATE; j++)
waveOutWrite(hWavO, &wavehdr, sizeof(wavehdr));
}
} waveOutClose(hWavO);
waveOutUnprepareHeader(hWavO, &wavehdr, sizeof(wavehdr)); delete[] aData; return 0;
}

  

win api + 基础乐理产生正弦波声音的更多相关文章

  1. 从头编写 asp.net core 2.0 web api 基础框架 (1)

    工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...

  2. 【转载】从头编写 asp.net core 2.0 web api 基础框架 (1)

    工具: 1.Visual Studio 2017 V15.3.5+ 2.Postman (Chrome的App) 3.Chrome (最好是) 关于.net core或者.net core 2.0的相 ...

  3. 从头编写asp.net core 2.0 web api 基础框架 (5) + 使用Identity Server 4建立Authorization Server (7) 可运行前后台源码

    前台使用angular 5, 后台是asp.net core 2.0 web api + identity server 4. 从头编写asp.net core 2.0 web api 基础框架: 第 ...

  4. 《Node.js高级编程》之Node 核心API基础

    Node 核心API基础 第三章 加载模块 第四章 应用缓冲区 第五章 事件发射器模式简化事件绑定 第六章 使用定时器制定函数执行计划 第三章 加载模块 本章提要 加载模块 创建模块 使用node_m ...

  5. C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie

    网上找到的可以完整获取Cookie的方法,转载一下希望能帮助更多人. 亲测可用 在Winform中使用WebBrowser控件获取网站的Cookie有时候是不完整的,默认调用Document.Cook ...

  6. 文件操作(CRT、C++、WIN API、MFC)

    一.使用CRT函数文件操作 二.使用标准C++库 std::fstream std::string 1)std::string对象内部存储了一个C的字符串,以'\0'结尾的. 2)std::strin ...

  7. 黑客编程教程(二)Win API编程简介

    第二节 Win API编程简介 下面介绍一下WIN API. 我们需要自己编写一个工具时,必然会用到很多操作windows和控制windows的函数,这些函数就是windows API. API是Ap ...

  8. C# 调用win api获取chrome浏览器中地址

    //FindWindow 查找窗口 //FindWindowEx查找子窗口 //EnumWindows列举屏幕上的所有顶层窗口,如果回调函数成功则返回非零,失败则返回零 //GetWindowText ...

  9. Win API:之GetCurrentThread、GetCurrentThreadId、GetCurrentProcess、GetCurrentProcessId

    Win API:之GetCurrentThread.GetCurrentThreadId.GetCurrentProcess.GetCurrentProcessId {返回当前线程的虚拟句柄} Get ...

随机推荐

  1. npx是什么

    npx是一个执行npm软件包的二进制文件,通俗的讲,他可以执行npm的一些指令 在npm>5.2.0 的时候npm里面就集成了npx 比如npx webpack 他会执行node_modules ...

  2. Nginx出现403 forbidden

    我装在linux上的nginx版本是1.16 当我在nginx/conf/nginx.conf文件里配置完代理 location /ds { root /home/nginx; index index ...

  3. 二叉堆(1)BinaryHeap

    封装一个简单二叉堆,亦可视为优先队列. 测试文件 main.cpp: #include <iostream> #include "BinaryHeap.h" using ...

  4. [tensorflow] tf.gather使用方法

    tf.gather:用一个一维的索引数组,将张量中对应索引的向量提取出来 import tensorflow as tf a = tf.Variable([[1,2,3,4,5], [6,7,8,9, ...

  5. numpy学习(二)

    练习篇(Part 2) 11. Create a 3x3 identity matrix (★☆☆) arr = np.eye(3) print(arr) 运行结果:[[1. 0. 0.] [0. 1 ...

  6. [ZJOI2011] 最小割 - 最小割树

    最小割树裸题 建树后,以每个点为根跑DFS求出距离矩阵,然后暴力回答询问即可 #include <bits/stdc++.h> using namespace std; #define i ...

  7. MySQL安装版安装过程

    步骤1 步骤2 步骤3 步骤4 步骤5 步骤6 步骤7 步骤8 步骤9 步骤10 步骤11 步骤12

  8. Github中进行fork后,原仓库更新了如何与原仓库同步

    我们经常在Github中Fork别人优秀的项目(在自己的GitHub下面生成一个repository),如果原仓库作者或组织更新仓库,此时你Fork的项目并不会更新,如果我们想要更新操作,该如何操作? ...

  9. vscode中LaTeX的编写

    前言 在学习\(\mathrm{\LaTeX}\)的时候尝试过很多编辑器,但都被其复古的外观或者复杂的配置劝退.并且因为本身就在使用VScode写其他的一些语言,正好借此机会也学习一下怎么用VScod ...

  10. 理解Login函数

    _LoginPartial.cshtml文件 其中 <li>@Html.ActionLink("Log in", "Login", "Ac ...