Nucleo_DCOは3OSCですが、OSC1のみSine波に設定して測定しました。OSC2、OSC3はLevel POTを最小にしてMIXされないようにしました。
Nucleo_DCOはADCを無効化できるようにしていますが、これは有効化して測定しました。(参考「DASS01のCV入力」)
ブロック図
Nucleo_DCOのRange
DominoからA2(NoteNuber:45)を出力し、Nucleo_DCOのRangeを切り替えてオクターブごとのA音をWaveSpectraで測定しました。
Nucleo_DCOでRangeの設定は以下の通りプログラミングしています。frequencyBaseは出力できる最低周波数です。
const double frequencyBase[FREQUENCY_RANGE_MAX] = {
// A-1 A0 A1 A2 A3 A4 A5 A6 A7 A8
13.75, 27.5, 55.0, 110.0, 220.0, 440.0, 880.0, 1760.0, 3520.0, 7040.0
}
DominoでA2を出力
Nucleo_DCO Range:A-1
Nucleo_DCO Range:A0
Nucleo_DCO Range:A1
Nucleo_DCO Range:A2
Nucleo_DCO Range:A3
Nucleo_DCO Range:A4
Nucleo_DCO Range:A5
Nucleo_DCO Range:A6
Nucleo_DCO Range:A7
Nucleo_DCO Range:A8
Range | 周波数(Hz) | 測定値(Hz) | 差(Hz) | 誤差(%) |
---|---|---|---|---|
A-1 | 27.5 | 26.4 | -1.1 | -4.00% |
A0 | 55 | 55.7 | 0.7 | 1.27% |
A1 | 110 | 111.3 | 1.3 | 1.18% |
A2 | 220 | 219.7 | -0.3 | -0.14% |
A3 | 440 | 442.4 | 2.4 | 0.55% |
A4 | 880 | 881.8 | 1.8 | 0.20% |
A5 | 1760 | 1769.5 | 9.5 | 0.54% |
A6 | 3520 | 3536.1 | 16.1 | 0.46% |
A7 | 7040 | 7072.3 | 32.3 | 0.46% |
A8 | 14080 | 14150.4 | 70.4 | 0.50% |
測定値
誤差
MIDIノートナンバー
Nucleo_DCOのRangeをA3(220Hz~)に固定して、Dominoから送出するMIDIノートナンバーを1オクターブ分測定しました。
note | # | 周波数(Hz) | 測定値(Hz) | 差(Hz) | 誤差(%) |
---|---|---|---|---|---|
A2 | 45 | 440 | 442.4 | 2.4 | 0.55% |
A#2 | 46 | 466.1637615 | 468.8 | 2.636238482 | 0.57% |
B2 | 47 | 493.8833013 | 495.1 | 1.216698744 | 0.25% |
C3 | 48 | 523.2511306 | 524.4 | 1.148869399 | 0.22% |
C#3 | 49 | 554.365262 | 556.6 | 2.234738046 | 0.40% |
D3 | 50 | 587.3295358 | 591.8 | 4.470464165 | 0.76% |
D#3 | 51 | 622.2539674 | 624 | 1.746032556 | 0.28% |
E3 | 52 | 659.2551138 | 662.1 | 2.844886174 | 0.43% |
F3 | 53 | 698.4564629 | 700.2 | 1.743537134 | 0.25% |
F#3 | 54 | 739.9888454 | 744.1 | 4.111154577 | 0.56% |
G3 | 55 | 783.990872 | 788.1 | 4.109128037 | 0.52% |
G#3 | 56 | 830.6093952 | 832 | 1.39060484 | 0.17% |
A3 | 57 | 880 | 884.8 | 4.8 | 0.55% |
測定値
誤差
メモ:
純粋に楽器として見るとチューニングが怪しい感じです。詳しくはわかりませんが、A音が440Hzか442Hzかで問題になる業界もあるようです。
MIDI_CV_CONVで出力電圧の調整に使っているトリムのR5を多回転タイプのものにすればMIDI_CV_CONVの出力電圧の精度は上げられそうですが。
今回のテストでは、MIDIノートナンバーをMIDI_CV_CONVの12bitDACでCV(アナログ信号)に変換して、Nucleo_DCOでは12bitADCでCVをプログラムで扱えるように再びデジタル化しています。
DAC/ADCの精度や信号路のノイズなどを考えると、全体として調律の精度を上げるのは難しそうです。
きっちり精度を出すなら、MIDI信号をデジタル信号のままNucleo_DCOに渡せば良くなると思います。
Nucleo_DCOで直接MIDIのRXを処理するとか、MIDI→SPIのDigital to Digital Converterとか。
0 件のコメント:
コメントを投稿