问题标签 [libsndfile]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
382 浏览

c - C Pitchshifter 使用 libsamplerate

第一篇文章,我正在尝试使用 libsamplerate 和 libsndfile 制作一个简单的音高移位器。我通过制作一个简单的采样率转换器然后破解它以最基本的形式实现了这一点,我通过改变比率浮点值来改变音高。pitchshifter 移位 - 在正弦音上听起来非常好 - 如果您将它用于音频,您可以听到声音块之间的间隙 - 特别是如果您将文件调高。我想知道是否有一种方法可以使代码更有效地应对这种情况或某种插值函数或库,我可以毫不费力地实现它们。我对 C 很陌生——以前只通过 PD 处理声音,这是我的第一个项目——据我所知 libsamplerate 不是

谢谢

这是我的代码

0 投票
1 回答
711 浏览

c++ - 设置 libsndfile 库生成的 ogg 文件的比特率

我使用下面的代码将声音文件转换为 ogg vorbis,但我在 libsndfile 的文档中没有找到如何设置输出文件的比特率,它始终设置为 128 kb/s。是否可以更改 libsndfile 生成的输出文件的比特率?

0 投票
3 回答
1397 浏览

c - 音频延迟使其工作

我正在尝试在 C 中实现一个简单的音频延迟。我之前制作了一个测试延迟程序,该程序在打印的正弦波上运行并有效地工作。我尝试将我的延迟合并为 SFProcess - libsndfile 中的过程 - 用我的音频“数据”输入替换正弦波输入。

我几乎拥有它,但我得到的不是干净的采样延迟,而是各种故障和失真。

关于如何纠正这个问题的任何想法?

0 投票
1 回答
841 浏览

c - sndfile.h C 代码块 Windows 7

我正在 Windows 7(64 位)上开发 CodeBlocks 12.11。我正在用 C 编程,我正在使用库:libsndfile ( http://www.mega-nerd.com/libsndfile/api.html ) 轻松读取 .wav 并将其转换为双数组。

我运行了 libsndfile 的向导(对于 Windows 64 位),也在 Codeblocks 的编译器设置中,我添加了编译器和链接器的搜索目录。但是,当我编译程序时,唯一的错误是:

"对 sf_open_fd 的未定义引用"

这是代码:

有任何想法吗?谢谢你!

0 投票
1 回答
412 浏览

c - 如何使用 libsndfile 在音频文件中打印静音?

我正在使用 libsndfile 做一些简单的简单程序,目前并试图找到一种在音频文件中打印静音的方法——而不是从另一个文件中静音。从表面上看,我正在制作鼓机。在给定的时刻,如果我愿意,我只能写入输入音频文件的长度并将它们附加到彼此上。很想对这个看似超级简单的任务有更多的了解……或者如果它实际上如此简单,那就是一记耳光。

谢谢!

0 投票
2 回答
786 浏览

c++ - libsndfile sf_readf_short 最大帧数

我需要尽可能快地读入波形文件。我目前正在做的事情如下:

到目前为止,此代码运行良好。

问题:当我将 readBlockSize 的值增加 10 倍,然后尝试读取 115212164 字节的波形文件时,我在执行sf_readf_short.

帮助我得到“sf_readf_XXXX 函数返回读取的帧数。除非在读取过程中到达文件末尾,否则返回值应等于请求的帧数。尝试读取超出文件末尾不会导致错误,但将导致 sf_readf_XXXX 函数返回少于请求的帧数,如果已经在文件末尾,则返回 0。”

所以我希望这也适用于 10MB。

感谢您的任何提示。

0 投票
1 回答
257 浏览

c - 为什么不使用 sf_read_double 读取此音频文件?

我正在尝试将鼓序列的每个细分分成二维数组内的单独数组(细分的行,每个细分中的数据列)。我根据用户对速度和所需细分的规范,在代码的前面确定每个细分有多少样本。我觉得我有一种比较合理的方法来计算样本中输入文件的大小(显示的第一部分)。我的问题是:按原样,sf_read_double while 循环不会运行。只有当我将“buflen”乘以 2(可能是通道数)时,循环才会运行。当它运行时,循环会超过计算的样本总数并导致 sug 错误。我在这段代码中做错了什么?

0 投票
1 回答
2659 浏览

c++ - Using the libsndfile library to read a WAV file in C++

I am using libsndfile in C++ to read a WAV file. There are two points I don't understand:

  1. How can I get the "Bits per sample" value for the WAV file in question? I read the documentation at the website http://www.mega-nerd.com/libsndfile/api.html, but I didn't find a member for "Bits per sample" in the SF_INFO struct.
  2. Using the WAV file, how can I create the data to use to draw vectors for describing the sound data, read by function sf_readf_float() in library sndfile.h? Is there any method to do this?
0 投票
1 回答
669 浏览

c++ - 库“sndfile.h”的函数“sf_readf_float”的问题

我有一个关于语音识别的项目。虽然我使用了库“sndfile.h”,但我一直在阅读输入声音。我有一个问题:函数读取的数据sf_readf_float()是时域信号,不是吗?如果不是,那是什么?是否有任何公式可以将其转换为时域信号?

0 投票
1 回答
244 浏览

c - 如何找到正确的 RAW 格式

我有这个代码

它的目的是读取“test.raw”,将其转换为数组并将其写入“test.txt”。“test.raw”是由

来自 pulseaudio 录音样本(下载)。

事情是,我得到类似的东西

在 test.txt 中。我添加了标题,以获得

并作为 ascii 文件导入 adobe audition。我在那里使用 44100、16 位和立体声以及英特尔(也尝试过摩托罗拉)。

每次我只得到“条”,即恒量周期。在试听中阅读“test.raw”时,我看到了应该使用英特尔属性的数据。

我需要调整什么才能使其正常工作?