问题描述
这是我的问题。我正在使用NodeJS编写脚本,该脚本将接收MTC或MIDI时间码信号,并最终从所述时间码中的某些点触发不同的东西。
我当前遇到的问题是我正在使用的当前时间码时钟程序将MIDI时间码消息发送为所谓的“四分之一帧”消息。简而言之,它以十六进制发送八个连续的消息,这些消息总共构成了hh:mm:ss:ff(小时,分钟,秒,帧)格式。如果第一个消息为00,则表示帧号的单位数字为0(仍为十六进制);如果第二个消息为15,则从1开始,表示帧的十位数为5。解释,所以here is the only valid documentation I could find to explain it.
我设法找到另一个相同的StackOverflow问题,除了所提供的代码在C#中,而且我不知道怎么用我有限的知识将其转换为JavaScript。 Here is that question.
预先感谢
解决方法
有一个名为JZZ.js的库,除其他功能外,它还允许将顺序MTC转换为时间代码。 您可以在https://jazz-soft.net/doc/JZZ/smpte.html#read
上找到代码段代码:
var master = JZZ.SMPTE(); // master clock
var slave = JZZ.SMPTE(); // slave clock
var sender = JZZ.Widget(); // sending port
var receiver = JZZ.Widget(); // receiving port
receiver._receive = function(msg) {
if (slave.read(msg)) // print and consume the MTC messages
console.log(master.toString(),' ==> ',msg.toString(),slave.toString());
else _emit(msg); // forward all other MIDI messages
};
sender.connect(receiver);
master.reset(24,7,39,59); // 7:40 it arrives...
for (var n = 0; n < 25; n++) {
sender.mtc(master);
master.incrQF();
}
输出:
07:39:59:00 ==> f1 00 -- MIDI Time Code ==> 00:00:00:00
07:39:59:00 ==> f1 10 -- MIDI Time Code ==> 00:00:00:00
07:39:59:00 ==> f1 2b -- MIDI Time Code ==> 00:00:00:00
07:39:59:00 ==> f1 33 -- MIDI Time Code ==> 00:00:00:00
07:39:59:01 ==> f1 47 -- MIDI Time Code ==> 00:00:00:01
07:39:59:01 ==> f1 52 -- MIDI Time Code ==> 00:00:00:01
07:39:59:01 ==> f1 67 -- MIDI Time Code ==> 00:00:00:01
07:39:59:01 ==> f1 70 -- MIDI Time Code ==> 00:00:00:01
07:39:59:02 ==> f1 02 -- MIDI Time Code ==> 07:39:59:02
07:39:59:02 ==> f1 10 -- MIDI Time Code ==> 07:39:59:02
07:39:59:02 ==> f1 2b -- MIDI Time Code ==> 07:39:59:02
07:39:59:02 ==> f1 33 -- MIDI Time Code ==> 07:39:59:02
07:39:59:03 ==> f1 47 -- MIDI Time Code ==> 07:39:59:03
07:39:59:03 ==> f1 52 -- MIDI Time Code ==> 07:39:59:03
07:39:59:03 ==> f1 67 -- MIDI Time Code ==> 07:39:59:03
07:39:59:03 ==> f1 70 -- MIDI Time Code ==> 07:39:59:03
07:39:59:04 ==> f1 04 -- MIDI Time Code ==> 07:39:59:04
07:39:59:04 ==> f1 10 -- MIDI Time Code ==> 07:39:59:04
07:39:59:04 ==> f1 2b -- MIDI Time Code ==> 07:39:59:04
07:39:59:04 ==> f1 33 -- MIDI Time Code ==> 07:39:59:04
07:39:59:05 ==> f1 47 -- MIDI Time Code ==> 07:39:59:05
07:39:59:05 ==> f1 52 -- MIDI Time Code ==> 07:39:59:05
07:39:59:05 ==> f1 67 -- MIDI Time Code ==> 07:39:59:05
07:39:59:05 ==> f1 70 -- MIDI Time Code ==> 07:39:59:05
07:39:59:06 ==> f1 06 -- MIDI Time Code ==> 07:39:59:06