0

所以这是我的问题。我正在使用 NodeJS 编写一个脚本,该脚本将采用 MTC 或 MIDI 时间码信号,并最终从所述时间码中的某些点触发不同的事情。

我目前遇到的问题是我正在使用的当前时间码时钟程序将 MIDI 时间码消息作为所谓的“四分之一帧”消息发送。简而言之,它以十六进制形式发送八个连续的消息,这些消息共同构成了 hh:mm:ss:ff(小时、分钟、秒、帧)格式。如果第一条消息是00,表示帧号的个位为0(还是十六进制),如果第二条消息是15,从1开始,表示帧的十位是5。这太狡猾了解释,所以这是我能找到的唯一有效文档来解释它。

我设法找到了另一个相同的 StackOverflow 问题,除了提供的代码是用 C# 编写的,而且我不知道如何以我有限的知识将其转换为 JavaScript。这是那个问题。

提前致谢

4

1 回答 1

0

有一个名为 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
于 2020-12-17T05:24:24.433 回答