- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 C# 编写一个程序,它使用 libpd 库与纯数据进行通信(更多信息:http://libpd.cc/)
我的纯数据补丁只是创建一个正弦波。
我写了一些测试代码来看看我是否从我的纯数据补丁中得到任何数据。 LibPD.Process 方法将样本写入 outbuffer 数组,内容为 -1 和 1 之间的连续值:
// Initialise Pd with 0 input and 2 output channels and a samplerate of 44100. Project dependent.
int pdOpen = -1;
pdOpen = LibPD.OpenAudio(0, 2, 44100);
if (pdOpen != 0)
{
Console.WriteLine("Error opening audio... exiting");
return;
}
string patchFile = @"..\..\..\test.pd";
int patch = LibPD.OpenPatch(patchFile);
LibPD.ComputeAudio(true);
//Read from Process Function...
// The size of each buffer must be the product of the number of channels, the number of ticks,
// and the number of samples per tick. (The number of samples per tick is the value
// returned by libpd_blocksize(), i.e., 64.)
int ret;
float[] outbuffer = new float[2 * 1 * LibPD.BlockSize]; // Size = 128
for (int i = 0; i < 10; i++)
{
ret = LibPD.Process(1, new float[0], outbuffer);
Thread.Sleep(1000);
}
LibPD.ClosePatch(patch);
LibPD.Release();
...
public PureDataSource()
{
_WaveFormat = new WaveFormat(44100, 16, 2);
int pdOpen = -1;
pdOpen = LibPD.OpenAudio(0, 2, 44100);
if (pdOpen != 0)
{
Console.WriteLine("Error opening audio... exiting");
return;
}
string patch = @"..\..\..\test.pd";
_Patch = LibPD.OpenPatch(patch);
LibPD.ComputeAudio(true);
}
...
public int Read(float[] buffer, int offset, int count)
{
LibPD.Process(1, new float[0], buffer);
return count;
}
The size of each buffer must be the product of the number of channels, the number of ticks,
and the number of samples per tick. (The number of samples per tick is the value
returned by libpd_blocksize(), i.e., 64.)
class Program
{
static void Main(string[] args)
{
PureDataSource pdSource = new PureDataSource();
WasapiOut soundOut = new WasapiOut();
soundOut.Initialize(pdSource.ToWaveSource());
soundOut.Play();
Thread.Sleep(5000);
soundOut.Stop();
}
}
class PureDataSource : ISampleSource
{
public long Length
{
get
{
return 0;
}
}
public long Position
{
get
{
return 0;
}
set
{
throw new NotImplementedException();
}
}
private WaveFormat _WaveFormat;
public WaveFormat WaveFormat
{
get
{
return _WaveFormat;
}
}
private int _Patch;
public int Patch
{
get { return _Patch; }
//set { _Patch = value; }
}
public PureDataSource()
{
_WaveFormat = new WaveFormat(44100, 16, 2);
// Initialise Pd with 2 ins and outs and a samplerate of 44100. Project dependent.
int pdOpen = -1;
pdOpen = LibPD.OpenAudio(0, 2, 44100);
if (pdOpen != 0)
{
Console.WriteLine("Error opening audio... exiting");
return;
}
string patch = @"..\..\..\test.pd";
_Patch = LibPD.OpenPatch(patch);
LibPD.ComputeAudio(true);
}
public void Dispose()
{
LibPD.ClosePatch(_Patch);
LibPD.Release();
}
public int Read(float[] buffer, int offset, int count)
{
int ticks = 1;
int pdBufferPos = 0;
float[] pdBuffer = new float[2 * ticks * LibPD.BlockSize];
LibPD.Process(ticks, new float[0], pdBuffer);
for (int i = offset; i < count; i++)
{
if (pdBufferPos >= pdBuffer.Length)
{
pdBufferPos = 0;
LibPD.Process(ticks, new float[0], pdBuffer);
}
buffer[i] = pdBuffer[pdBufferPos];
pdBufferPos++;
}
return count;
}
}
Read
方法用 LibPD.Process 提供的输出填充整个缓冲区(这是一个浮点数组,每次大小为 128)。
最佳答案
But it doesn't work out - I only get crackling sounds (guess what). I know it has something to do with the buffer size of the Read method, but where can I configure this?
WasapiOut
请求一定数量的数据,就在你手中,你要返回多少数据。填写
buffer
,从指定的
offset
开始,你想要的数据。返回提供的样本数。这就是你“配置”它的方式。
关于c# - CSCore:从纯数据播放 float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465033/
首先:我已经发现了这个问题:Is it possible to capture audio output and apply effects to it?。但这并不能回答我的问题。 我的问题:我几个月
我必须解码立体声 mp4 文件并将 L 和 R 声道映射到 5.1 or 7.1 surround .另外我必须提供一个特定的输出格式:16bit pcm 44.1kHz . 将音频源转换为44100
我目前正在尝试通过 WasapiCapture 和 WaveWriter(CSCore 包)录制音频,并希望在用户停止说话后停止录制。谁能帮我吗? 我想到的是,我可能会创建一个 RecordingVo
是否可以使用CSCore-Library剪切音频文件?例如,我想在第二个20开始播放mp3,然后在第二个50停止播放,并想生成一个新的mp3文件。 最佳答案 有两种方法可以剪切mp3文件。 解析mp3
我正在编写 C# 模拟器,并决定使用 CScore 输出 PCM。当样本大小(每个 channel )为一个字节时,声音输出正确,但当我将样本大小增加到 16 位时,声音非常嘈杂。 与该问题相关的一个
我正在使用 CSCore.WasapiLoopbackCapture 来录制系统声音。但是当系统没有声音的时候,根本就没有录音!例如,在播放音乐和录制音乐时,输出文件的持续时间小于轨道的持续时间。我希
我正在用 C# 编写一个程序,它使用 libpd 库与纯数据进行通信(更多信息:http://libpd.cc/) 我的纯数据补丁只是创建一个正弦波。 我写了一些测试代码来看看我是否从我的纯数据补丁中
这里: C# recording audio from soundcard 是使用 CSCore 库的示例实现,但它仅适用于控制台应用程序。是否可以在 Windows 窗体应用程序中使用它? 最佳答案
我想使用类 CSCore.Streams.FadeInOut ,包含在 CSCore-Library 中.我想淡入和淡出我播放的歌曲。但我不知道如何使用它。有人知道吗? 最佳答案 正如您已经提到的,您
我正在尝试运行使用 cscore ( https://github.com/filoe/cscore ) 及其子命名空间“CSCore.Ffmpeg”的应用程序 我已经尝试过作者在“https://g
我已经使用 CSCore 库从我的程序中过滤了所有音频流。它工作正常,但我不知道哪个流属于哪个进程。有没有办法获取每个流的 processId 或 processname? 我的代码: public
我刚刚开始使用 CSCore,在学习了很多 C++ 之后又回到了 C#。这是一个测试程序,它枚举默认 Audio Session 管理器的 Audio Session ,并为每个 session 附加
使用 CSCore,我如何从 FileStream 或 MemoryStream 播放 WMA 或 MP3(与使用采用 string 的方法不同)文件路径或 url)。 最佳答案 由于 CodecFa
我想知道是否可以使用与 SuperEQ 相同的算法来实现均衡器,Foobar播放器的均衡器。我知道 CSCore 有一个很棒的均衡器,但它基于一个更简单的参数均衡器。 在 Foobar 中,如果我简单
我想知道是否可以在录制 wav 文件后编码为 mp3。我尝试更改 WasapiCapture 参数,但我认为这不起作用,因为声音长度只有 5 秒和 1,20 MB。 这里是尝试在开始录制之前转换为 m
我是一名优秀的程序员,十分优秀!