我正在使用NAudio
库来记录系统麦克风输入 - 连续.
private void RecordStart() {
try {
_sourceStream = new WaveIn {
DeviceNumber = _recordingInstance.InputDeviceIndex,
WaveFormat =
new WaveFormat(
44100,
WaveIn.GetCapabilities(_recordingInstance.InputDeviceIndex).Channels)
};
_sourceStream.DataAvailable += SourceStreamDataAvailable;
_sourceStream.StartRecording();
} catch (Exception exception) {
Log.Error("Recording failes", exception);
}
}
Run Code Online (Sandbox Code Playgroud)
有一个事件处理程序,只要有数据,它就会从记录流中获取数据.
我能够使用现有的音频文件创建一个音频(mp3)HTTP流媒体,并在我的系统中安装VLC播放器.
const int portNumber = 8089;
const string streamName = "fstream_1789846";
const string audio = "C:\\Recording\\Audio\\1789846.wav";
const string windowQuiet = "-I dummy --dummy-quiet";
const string tanscode = ":sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}";
var stream = String.Format(@":http{{mux=mp3,dst=:{0}/{1}}}", portNumber, streamName);
const string keep = ":sout-keep"; …
Run Code Online (Sandbox Code Playgroud) 我还有一个与BASS有关的问题.我已经发布了这个问题我们如何在iPhone中控制音乐的低音,但是没有得到你应该得到的那么多人的关注.但现在我已经做了一些搜索并阅读了Core AUDIO.我有一个示例代码,我想与你分享这里的人是下载iPhoneMixerEqGraphTest的链接.在这段代码中看一下我所看到的是开发人员使用Apple在iPod中给出的预置均衡器.让我们看一些代码片段:----
// iPodEQ unit
CAComponentDescription eq_desc(kAudioUnitType_Effect, kAudioUnitSubType_AUiPodEQ, kAudioUnitManufacturer_Apple);
Run Code Online (Sandbox Code Playgroud)
kAudioUnitSubType_AUiPodEQ的作用是从iPod的均衡器中获取预设值并在Xcode中返回我们可以在PickerView/TableView中使用的数组,并且可以设置任何类别,如贝斯,摇滚,舞蹈等.这对我来说无能为力,因为它只返回名称均衡器类型,如低音,摇滚,舞蹈等,因为我只想实现低音,并希望在UISLider上实现它.
要在滑块上实现低音,我需要值,以便我可以设置最小值和最大值,以便可以更改移动滑块上的低音.
完成所有这些后,我开始阅读Core Audio的音频单元框架的类,并得到了这个
之后我开始寻找低音控制并得到了这个
所以现在我需要实现这个kAudioUnitSubType_LowShelfFilter.但现在我不知道如何在我的代码中实现这个枚举,以便我可以控制低音作为书面文档.即便是Apple也没有写过我们如何使用它.kAudioUnitSubType_AUiPodEQ此类别返回一个数组,但kAudioUnitSubType_LowShelfFilter类没有返回任何数组.在使用kAudioUnitSubType_AUiPodEQ此类别时,我们可以使用数组中的均衡器类型,但我们如何使用此类别kAudioUnitSubType_LowShelfFilter.任何人都能以任何方式帮助我吗?这将是非常值得赞赏的.
谢谢.
我试图通过使用以下代码以编程方式应用低音效果:
BassBoost bassBoost = new BassBoost(0, audioSessionId);
bassBoost.setEnabled(true);
BassBoost.Settings bassBoostSettingTemp = bassBoost.getProperties();
BassBoost.Settings bassBoostSetting = new BassBoost.Settings(bassBoostSettingTemp.toString());
bassBoostSetting.strength = MAX_STRENGTH_FOR_BASS; // 1000
bassBoost.setProperties(bassBoostSetting);
bassBoost.setStrength((short) progress); // progress value from seek bar
Run Code Online (Sandbox Code Playgroud)
但低音效果不适用于当前的音频会话.
请告诉我什么是错的,请帮助我.
我想控制用户从iPod音乐库播放的歌曲的低音.
我在Google上搜索了一些没有任何帮助的AudioMixer样本,但是现在我有来自http://www.un4seen.com/的低音库,即libbass.a ,我认为这非常有用.
但我不知道如何使用滑块调整歌曲的低音.
最近我又收到了一个样本.但是这里的问题是我在AudioUnit Framework给出的数组中得到所有均衡器的类型,如Dance,Pop,Rock,Bass,Jazz,Acoustic,Classical等预设/预定义.但我想在滑块中只实现低音.你必须知道要在滑块中实现任何东西,我们需要值.但在我的情况下,我没有为那些均衡器预设类型的任何人获得任何价值.
我遇到了一个问题,我3天都无法解决,你是我最后的希望.
我的目标是使用Bass.dll录制声音(iPhone的特殊版本的库和.net包装的版本;可以在这里找到:un4seen.com)
在模拟器程序工作(或似乎工作正常).但是当我试图在iPhone上运行它时 - 我收到了这个错误:
"尝试使用JIT编译方法'(包装器本机到托管)RecordingAudioHelloWorld.Player:recordingHandler(int,intptr,int,intptr)'在运行时使用--aot-only."
错误发生在这里:
RECORDPROC _recordingHandler = new RECORDPROC(recordingHandler);
_record = Bass.BASS_RecordStart(16000, 1, BASSFlag.BASS_SPEAKER_RIGHT, _recordingHandler, IntPtr.Zero); // <-- ERROR!!!
private int recordingHandler (int handle, IntPtr buffer, int length, IntPtr user)
{
//....
}
Run Code Online (Sandbox Code Playgroud)
正如我在这里读到的,在SO上,我将链接器行为更改为"仅限链接SDK程序集",但它没有任何效果.
有什么我可以做的吗?
我正在为毕业写一个合理的编辑器.我正在使用BASS从MP3,WAV,OGG等文件中提取样本,并添加回声,镶边等DSP效果.简单地说,我制作了我的框架,应用了从position1到position2,剪切/粘贴管理的效果.
现在我的问题是我想创建一个类似于Cool Edit Pro的控件,它可以绘制一个波形表示的歌曲,并能够放大/缩小波形的选择部分等.选择后我可以做类似的事情:
TInterval EditZone = WaveForm->GetSelection();
Run Code Online (Sandbox Code Playgroud)
TInterval有这种形式:
struct TInterval
{
long Start;
long End;
}
Run Code Online (Sandbox Code Playgroud)
我是初学者,当涉及到复杂的绘图时,任何关于如何使用BASS返回的样本数据来创建歌曲的波形表示的提示,具有放大/缩小的能力将是值得赞赏的.
我正在用C++编写我的项目,但我可以理解C#,Delphi代码,所以如果你想要你可以发布最后两种语言的片段:)
Thanx DrOptix
我一直在互联网上进行广泛的研究,因为我需要一种方法来从程序中产生真正的低音(如电贝司吉他).事情是我一直在用MIDI的方式来产生那种声音,但是我不确定这是不是正确的事情,实际上我对这个主题知之甚少,是我第一次尝试任何与原始编码产生声音有关的事情.我一直在寻找不同的API来帮助我,他们中的大多数都是开源的,看看是做什么的,但我发现它们非常复杂,学习曲线非常陡峭,文档很少.我一直在寻找开源程序,如tuxguitar,用java制作,类似于GuitarPro,所以我可以看到产生低音的效果,我还有一些代码可以扫描,所以我可以找到我要找的东西,但是我担心这不是我需要或能做的事情.所以要包装所有这些,我的问题是:有没有办法产生真正的音乐低音,无论是通过本机代码还是任何API,没有必要使用MIDI或类似的东西,最好是在c/c ++或java?非常感谢PS借口任何sintaxis或语言错误,我不是英语本地人.
我正在尝试使用来自 BASS.NET 库的音频创建一个应用程序,但是我在“我的第一个 BASS 应用程序”示例中遇到了一些错误。我按照http://bass.radio42.com/help/上的给定说明进行操作,但是当我尝试运行粘贴的代码时,此行出现错误:
if ( Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero) )
我收到的错误是:
An unhandled exception of type 'System.TypeInitializationException' occurred in Bass Test.exe
我试图按照所有说明进行操作,但是对于#4,我没有添加bass.dll,而是添加了bass.net.dll,认为这是错字。
4.Copy the 'bass.dll' to your executable directory (e.g. .\bin\Debug).
示例代码是:
using System;
using Un4seen.Bass;
namespace MyFirstBass
{
class Program
{
static void Main(string[] args)
{
// init BASS using the default output device
if (Bass.BASS_Init(-1, 44100, BASSInit.BASS_DEVICE_DEFAULT, IntPtr.Zero))
{
// create a stream channel from a file
int stream = Bass.BASS_StreamCreateFile("test.mp3", 0, 0, BASSFlag.BASS_DEFAULT); …
Run Code Online (Sandbox Code Playgroud) 有button_play
和button_pause
.我想把它们组合成一个按钮.第一次按下歌曲时,歌曲开始播放.第二次按 - 暂停.在第三次按下时,播放继续.我做不到.
请告诉我,我如何将它们结合起来.
private void button_play_Click(object sender, EventArgs e)
{
if ((list_catalog.Items.Count != 0) && (list_catalog.SelectedIndex != -1))
{
string current = Vars.Files[list_catalog.SelectedIndex];
Vars.CurrentTrackNumber = list_catalog.SelectedIndex;
BassLike.Play(current, BassLike.Volume);
label_time1.Text = TimeSpan.FromSeconds(BassLike.GetPosOfStream(BassLike.Stream)).ToString();
label_time2.Text = TimeSpan.FromSeconds(BassLike.GetTimeOfStream(BassLike.Stream)).ToString();
xrewind.Maximum = BassLike.GetTimeOfStream(BassLike.Stream);
xrewind.Value = BassLike.GetPosOfStream(BassLike.Stream);
timer1.Enabled = true;
}
}
private void button_pause_Click(object sender, EventArgs e)
{
BassLike.Pause();
}
Run Code Online (Sandbox Code Playgroud) 基于Bass的文档,我正在尝试使用以下代码加载ogg文件:
var
FFile : string;
Music: HSAMPLE;
ch: HCHANNEL;
OpenDialog1 : TOpenDialog;
begin
Dynamic_Bass.Load_BASSDLL('Library/Bass.dll');
Dynamic_Bass.BASS_Init(1,44000,Bass_DEVICE_SPEAKERS,0,nil);
OpenDialog1 := TOpenDialog.Create(nil);
if not OpenDialog1.Execute then
Exit;
ffile := OpenDialog1.FileName;
Music := BASS_SampleLoad(FALSE, PChar(ffile), 0, 0, 3, BASS_SAMPLE_OVER_POS);
ch := BASS_SampleGetChannel(Music, False);
BASS_ChannelSetAttribute(ch, BASS_ATTRIB_PAN, 0);
BASS_ChannelSetAttribute(ch, BASS_ATTRIB_VOL, 1);
BASS_ChannelPlay(ch, False);
ShowMessage(IntToStr(BASS_ErrorGetCode));
end;
Run Code Online (Sandbox Code Playgroud)
ShowMessage
返回5.根据文档,这是Handle错误,这意味着错误在music
var中.如果我评论下面的行BASS_SampleLoad
我得到错误2.意味着无法加载该文件.所以这是一个普通的OGG文件.所以我的问题是:我做错了吗?
提前致谢.