簡體   English   中英

Java Midi接收器和Millis中的日歷時間

[英]Java Midi Receiver and Calendar Time in Millis

我目前使用的Receiver類從Midi鍵盤接收Midi事件。

對於每個事件, send()方法都會返回一些信息以及MidiEvent的timestamp

當我創建一個Calendar實例和getTimeInMillis()我得到的數字與Receiver's時間戳完全不同。 這兩個值的差每次都會改變,因此我知道這不僅僅是一個恆定值。

有沒有辦法通過Receiver's send()方法隨時獲取Receiver's時間戳值?

我的意思是,使用與Receiver's時間戳相同的時間刻度的方法獲得一個時間戳。

我相信您可能在誤解中進行操作Receiver.send()期望的時間戳值以微秒單位 ,而不是Calendar那樣的毫秒。 這意味着您的系數是1000,這似乎是“不斷變化的價值”。

我不知道您是否只想降低時間戳的分辨率,還是使用微秒。 這將取決於您的應用程序的確切性質,您在消息中獲取的數據以及您打算如何使用它們。


編輯:

這是基於以下假設:您正在接收數據,而不是在填充時間戳值。
如果需要保留分辨率,可以使用以下選項:

  1. 使用Datejava.sql.Timestamp子類。 這可以存儲低至納秒的分辨率(比您所需的分辨率還高)。 但是,該庫中的所有標准日期實用程序都有一些奇怪的行為,並且名稱空間可能不太理想。
  2. 編寫自己的JRE / JDK / JVM。 CalendarDate是標准庫的一部分。 如果要分發代碼,則必須期望人們使用的標准庫版本。 由於許多原因,這是不可取的。
  3. 查找/編寫自己的時間戳類型的類。 可能有一些具有相關實現的音頻庫。 如果您確實需要編寫自己的代碼,我可能會從Joda Time那里獲取代碼,並只是更改分辨率-但這仍然是相當多的工作。
  4. 只需將值保留為原始值即可。 畢竟,除了數字值之外,您幾乎不需要什么(不是像您需要轉換為年-月-日的值那樣)。 盡管為此最好具有類型安全性,尤其是考慮到分辨率差異。 如果這與您的用例不符,對不起。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM