- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我从键盘获取 MIDI 数据并开始使用
sequence = new Sequence(Sequence.PPQ, 24);
currentTrack = sequence.createTrack();
sequencer.setSequence(sequence);
sequencer.setTickPosition(0);
sequencer.recordEnable(currentTrack, -1);
sequencer.startRecording();
我使用一个按钮来停止录制并将其保存到文件中。当我播放 MIDI 文件时,大约需要 4 秒才能开始录制。我什至播放了它保存在外部程序上的 midi 文件,看起来它在录音开始时没有添加大约 4 秒的时间。有谁知道这是为什么,或者如何修复它,以便当我播放 midi 文件时,它立即开始?
最佳答案
这是一个获取文件并删除第一个注释(事件)的函数。在这种情况下,系统添加了一个代码为 144 的事件,该事件用于 Note_On,代替文件开头的某些控制命令(设置为第一个音符的持续时间的代码 171 告诉我这就是这个意思) 。所以我们删除第一个事件。
保存后即可应用。
public void write(Sequence s) {
int i=0, j;
int max=0;
Vector notes=new Vector();
try {
Sequence s2=MidiPlayer.createSequence();
Track tr2=s2.createTrack();
long tlen=s.getMicrosecondLength()/s.getTickLength();
Track[] tr=s.getTracks();
// System.out.println("has tracks "+tr.length);
Vector note=new Vector();
for(i=0; i<tr.length; i++) {
int l=tr[i].size()-1;
// System.out.println(i+" has events "+l);
int sum=0, start=0;
MidiEvent mi=null;
ShortMessage sm=null;
byte[] dat=null;
int tick=0, tick2=0;
for(j=0; j<l; j++) {
mi=tr[i].get(j);
if(mi.getMessage().getStatus()==MetaMessage.META) { System.out.println("meta "); continue; }
sm=(ShortMessage)mi.getMessage();
// System.out.println("sm "+sm.getCommand()+" "+sm.getStatus()+" "+sm.getData1()+" "+sm.getData2());
dat=sm.getMessage();
// for(int ik=0; ik<dat.length; ik++) System.out.print(dat[ik]+" ");
// System.out.println();
tick2=(int)mi.getTick();
int key=sm.getData1(), vel=sm.getData2();
System.out.println(j+" "+(tick2-tick)+" "+tlen+" "+tick2+" "+tick+" ch "+sm.getChannel()+" "+key);
if(j==0) { tick=tick2; continue; }
notes.add(new int[]{key, vel, max, tick2-tick});
max+=tick2-tick;
tick=tick2;
}
}
for(i=0; i<notes.size(); i++) {
int[] ii=(int[])notes.get(i);
if(ii==null) break;
ShortMessage on = new ShortMessage();
on.setMessage(ShortMessage.NOTE_ON, 0, ii[0], ii[1]);
ShortMessage off = new ShortMessage();
off.setMessage(ShortMessage.NOTE_OFF, 0, ii[0], ii[1]);
tr2.add(new MidiEvent(on, ii[2]));
tr2.add(new MidiEvent(off, ii[2]+ii[3]));
}
String t=""+(System.currentTimeMillis()/1000);
MidiPlayer.write(s2, "new-"+t+".mid");
}
catch(Exception e) { e.printStackTrace(); }
}
关于java - equencer.startRecording() 没有立即开始? Java MIDI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52798029/
我一直在尝试让我的 Android 应用程序使用麦克风并开始录音。但是应用程序一直在 AudioRecord StartRecording() 方法上崩溃。 _recorder = new Audio
我正在使用重播工具包在游戏过程中保存我的屏幕视频,但有时 startRecordingWithMicrophoneEnabled 和 recorder.stopRecordingWithHandler
Phonegap 的 Media.startRecord() 录音格式和采样率是什么?格式是否因平台而异? mediaRec = new Media("test.mp3", onSuccess, on
我正在尝试在 Android 上录制语音通话。我正在使用 android 的 AudioRecord 类/api 来执行此操作。但由于某些原因,AudioRecord 无法在某些设备上录制语音通话(尤
问题描述 startRecording() 完成处理程序从未被输入,即使显示了“允许在 $AppName 中进行屏幕录制”弹出窗口。偶尔会显示“允许 $AppName 中的屏幕录制”弹出窗口。当我删除
所以我从键盘获取 MIDI 数据并开始使用 sequence = new Sequence(Sequence.PPQ, 24); currentTrack = sequence.createTrack
我有一个调谐器应用程序并使用 Audio Record 对象收听麦克风。我想了解它适用于大多数设备和 Android 版本(甚至 Android 6),但我收到来自三星 S7 手机客户的错误报告。我在
我正在尝试实现 Wami-Recorder如上所述here on stackoverflow与接受的答案基本相同的设置,即 head 标签中包含的 swfobject.js、recorder.js 和
尝试通过 Android ICS 中的 native 代码让相机工作:大多数手册都提到了 startPreview() 方法。但是浏览 AOSP 代码,我在 中也发现了“startRecording
我正在尝试在 android 中录制音频并将其存储在一个字节数组中,为此我使用了 Android 的 AudioRecord 内置类。 我以前已经用过这个类,一切都很好,但由于某种原因,AudioRe
我正在使用此 SDK 设计一个简单的音乐识别应用 https://www.acrcloud.com/docs/audio-fingerprinting-sdks/android-sdk/ SDK提供的
我的代码在 android 平台上运行完美,但在 ios 中我得到:unhandled Promise Rejection: Cannot read property 'startRecorder'
我用 Phonegap 完成了标准录音: function recordSound() { var src = "mysound.mp3"; var mediaRec = new Me
我正在尝试在我的 Android 应用程序中将音频读取为 16 位整数。我使用 Xamarin.android 编写了这个应用程序。我为此使用 AudioRecord 低级库,因为我需要从手机麦克风读
我想录制一个长视频,在录制过程中将其分成几个部分,在不同的路径中持续几秒钟(例如 Instagram 故事)。 我再次尝试 stopRecording 和 startRecording,但出现错误或丢
我正在尝试使用 media.startRecord() PhoneGap 1.6.1 API ( http://docs.phonegap.com/en/1.6.1/cordova_media_med
我尝试使用phoneGap 录制示例音频,但没有成功。 根据文档,我所做的非常简单: var media = null; function record(){ media = new Medi
我在 android 2.3.4 版本移动设备 (LG) 中收到类似 start recording() 调用未初始化音频记录的错误,它在 android 2.2 中工作正常但在 android 2.
当我将 AudioRecord 对象的采样率设置为 44100 时出现错误。当它是 22050 时,它工作正常。 02-16 10:45:45.099 24021-24021/com.vlad.jac
我是一名优秀的程序员,十分优秀!