- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
最近,我一直在将歌曲写成波形文件。然而,我决定尝试一些新的东西:使用二维数组。然而,当我运行程序时,波形文件没有播放任何内容。我的目的是创建一个由音符组成的数组,并将该数组存储到波形文件的数据部分中,以便随着时间的推移,播放不同的音符(即我分配的音符):
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define A 440.00
#define As 466.16
#define B 493.88
#define C 523.25
#define Cs 554.37
#define D 587.33
#define Ds 622.25
#define E 659.25
#define F 698.46
#define Fs 739.99
#define G 783.99
#define Gs 830.61
int main() {
FILE* fp;
fp = fopen("song.wav", "wb");
if (fp == NULL) {
printf("File does not exist.\n");
return EXIT_FAILURE;
}
char ChunkID[4] = "RIFF", Format[4] = "WAVE", Subchunk1ID[4] = "fmt ", Subchunk2ID[4] = "data";
unsigned int ChunkSize, Subchunk1Size, Subchunk2Size;
unsigned short int AudioFormat, NumChannels, BlockAlign, BitsPerSample;
int SampleRate, ByteRate;
ChunkSize = 12 + 24 + 8 - 8 + 5 * 44100 * 2;
Subchunk1Size = 16;
AudioFormat = 1;
NumChannels = 1;
SampleRate = 44100;
ByteRate = 2 * SampleRate;
BitsPerSample = 16;
BlockAlign = NumChannels * BitsPerSample / 8;
Subchunk2Size = 9 * ByteRate;
int i, j;
short int audio[9][9] = {A, B, Cs, D, E, D, Cs, B, A};
float freq, amplitude = 32700;
for (i = 0; i < 9 * SampleRate; i++){
for (j = 0; j == i; j++)
freq = audio[i][j] * 2.0 * M_PI;
*audio[i] = amplitude * sin(freq * i / SampleRate);
}
fwrite(ChunkID, 4, 1, fp);
fwrite(&ChunkSize, 4, 1, fp);
fwrite(Format, 4, 1, fp);
fwrite(Subchunk1ID, 4, 1, fp);
fwrite(&Subchunk1Size, 4, 1, fp);
fwrite(&AudioFormat, 2, 1, fp);
fwrite(&NumChannels, 2, 1, fp);
fwrite(&SampleRate, 4, 1, fp);
fwrite(&ByteRate, 4, 1, fp);
fwrite(&BlockAlign, 2, 1, fp);
fwrite(&BitsPerSample, 2, 1, fp);
fwrite(Subchunk2ID, 4, 1, fp);
fwrite(&Subchunk2Size, 4, 1, fp);
fwrite(audio, 2, 1, fp);
fclose(fp);
return EXIT_SUCCESS;
}
最佳答案
不太确定您要向 wav 写入什么曲调。文件,但有一些初始错误:
short int audio[9][9] = {A, B, Cs, D, E, D, Cs, B, A};
这会创建一个 9x9 数组,其中 A、B 等存储在 audio[0] 中,所有其他值都初始化为 0。所以稍后,您尝试计算频率,而大多数音频值都是 0。
for (i = 0; i < 9 * SampleRate; i++){
由于 SampleRate = 44100
,您将很快超出 audio
数组的范围。
*audio[i] = amplitude * sin(freq * i / SampleRate);
这行代码的作用是,在完成所有操作后,它将计算值作为 int 存储在 audio[i][0]
中。我不知道为什么当你不尝试用它做任何事情时你有一个二维数组。
调试愉快!
关于c - 使用二维数组创建和存储波形文件数据时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31282564/
我正在尝试实现一系列音频文件,这些文件是三星语音记录功能的一部分。 像这样 enter image description here 但是,没有显示实时频谱的信息,但是没有显示上传的音频文件的波形的信
希望从输入中获取特定金色#ad9557(173/255、149/255、87/255)的波形,并具有透明背景/或黑色(如果不可能)。 我目前正在使用此脚本来生成它: command = new Str
这个问题是关于用于回答 this 的代码的线。我使用的是 Nicholas DiPiazza 发布的代码,后来是 Andrew Thompson 的变体。我在这段代码中添加了第二个 AudioWave
这就是我要达到的结果 这是我所做的:https://codepen.io/demedos/pen/gjQNOM HTML 结构: .container .header .page-1
我想在未来用 C# .NET 4.0 中的音频做一些项目,所以我收集了一些用于录音、处理 WAVE 文件等的代码示例。但我没能找到的是: 如何实时(ish)绘制音频波形/频谱图?显然,创建内存位图并将
我已经搜索了很多东西,但是找不到我想要的东西。 有没有办法从一个非常短的音频文件(在我的情况下为1秒mp3)生成简化或平坦的声波图像? 简化可能是错误的术语,但是我的意思是我想要这种输出: 而不是这样
我在使用 MS-s 波形 API 的程序中遇到某种链接错误。我正在使用的代码可以在这里找到:http://www.planet-source-code.com/vb/scripts/ShowCode.
我正在使用 Android 2.3.1 上的 Visualizer 类进行一些音乐分析。我发现 FFT 和波形幅度受设备体积的影响。这意味着,如果用户调低音量,我会收到很少或收不到 FFT 数据。 我
我有两张 png,一张白色,一张红色。 当歌曲不播放时,它应该是白色的,当歌曲播放时,它应该随着歌曲的进行而填充红色,并且当分别向后和向前滑动时,它应该填充红色。 我已经能
像soundcloud和zippyshare1,如何用java生成音频波形图?是否有任何框架或开源库可用于这种情况? 我想生成一个音频波形作为图像,加载轨道后,将加载波形图像。 最佳答案 以 this
是否有一种仅 Java 的方法可以在 JScrollPane 中显示更大的图片?我不想重新发明轮子,而且我已经在 JLabel 技巧中使用 ImageIcon 来显示 32768x400 图像而苦
是否有(某处)用于 Windows 的命令行程序,可以从 MP3/WAV 创建 PNG/JPEG 视觉效果? 编辑: 这是图像应该是什么样子的一个很好的例子。 最佳答案 Sox ,“音频处理的瑞士军刀
我正在开发一个 WebGL 应用程序,它使用来自 soundcloud API 的数据。 我正在尝试使用 ThreeJS 将轨道图稿和波形 PNG 加载到纹理中以放入 Sprite 上。 但是我在 c
我是一名优秀的程序员,十分优秀!