2013年6月3日月曜日

PogoPlug MobileでSDブート + Arch Linux


PogoPlug Mobile
SD x1。USB 2.0 x1。

Arch Linux
KISS: Keep It Simple, Stupid

シンプル、ゴキゲンな高性能コンピュータが手のひらに。:-)

Arch Linux ARM
USBメモリから起動するなら、この手順のとおり。
でも、USBポートはひとつしかないので、かわりにSDカードからブートしたい…

活発に情報交換されていて、流れを追うのに少し時間がかかりました。
bodhiさんのまとめ
davygravyさんのSDブート用U-Boot
Arch LinuxのSDブート


【レシピ】
  • NAND flashバックアップ
  • Arch Linuxインストール(USBブート)
  • SDブート用U-Bootインストール

NAND flashツール
http://download.doozan.com/uboot/nanddump
http://download.doozan.com/uboot/nandwrite
http://download.doozan.com/uboot/flash_erase

 U-Boot環境設定ツール
http://download.doozan.com/uboot/fw_printenv
http://download.doozan.com/uboot/fw_env.config
http://download.doozan.com/uboot/blparam

SDブート用U-Boot
https://www.dropbox.com/sh/nwt2kbvetvgvroo/sm-hZ0B4jU/Kirkwood/uboot/Pogoplug4Series

Debian起動用U-Boot環境設定
http://download.doozan.com/uboot/files/environment/uboot.environment


NAND flashバックアップ
工場出荷状態のまま起動してWebサイトで登録。SSHログインを許可します。
NAND flashの使用領域を確認。
===
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00200000 00020000 "u-boot"
mtd1: 00300000 00020000 "uImage"
mtd2: 00300000 00020000 "uImage2"
mtd3: 00800000 00020000 "failsafe"
mtd4: 07000000 00020000 "root"
===

このあと書き換えるmtd0の領域をバックアップしておきます。
===
# nanddump --noecc --omitoob -l 0x200000 -f uboot-mtd0-dump-0x200000 /dev/mtd0
===
ただし、書き戻してホントにもとどおり動くのか未確認です。


Arch Linuxインストール
ここでUSB3.0とSATAポートのある上位機種が紹介されています。
同じ手順で無事起動できました。

起動できたら、USBメモリにインストールした時と同じように、SDカードをフォーマットして、Arch Linuxをダウンロード、インストールしておきます。


SDブート用U-Bootインストール

自己責任
U-Bootの更新に失敗すると、最悪の場合、なにも起動しなくなります
PogoPlug Mobileくんはけっこう軽いので、文鎮としての活用もややキビシイかと…

【Note.1】
通常の手順に従ったArch Linuxインストールでは、再びPogoPlugオリジナルのFirmwareを起動するための手段(alarm_revert)が用意されています。また、Debianインストールでは、うまく起動できなかった時のための工夫(rescue_bootcmd)がされているようです。ここでインストールするSDブート用U-Bootとその環境設定では、こういった手段が考慮されていません。
ただし、環境設定だけの問題であれば、U-Bootが起動し、netconsoleが使えれば、対処できるかもしれません。netconsoleの設定はこちらを参考に。IPアドレスは環境に合わせて変更が必要です。

【Note.2】
USBメモリからのブートは可能です。USBメモリ→SDカードの順で起動を試みます。
また、PogoPlugオリジナルのFirmware自体はそのまま残っているので、U-Bootの環境設定を書き換えれば、起動できるかもしれません。(未確認

【Note.3】
ethaddrとcesvcidは、SDブート用U-Bootをインストールするまえに、blpparamで確認しておきます。すべての環境設定を保存しておくことをオススメ。
===
# blparam
...
ethaddr=XX:XX:XX:XX:XX:XX
cesvcid=XXXXXXXXXXXXXX
...
===

【Note.4】
工場出荷状態、および、Arch LinuxでインストールされるU-Bootでは、環境設定ツールとしてblparamを使用します。いっぽう、Debian起動用、SDブート用のU-Bootでは、fw_setenv、fw_printenvを使用します。U-Boot環境が保存されるNAND flashのアドレスは/etc/fw_env.configに記述されています。

【Note.5】
ブートできないSDカードもあるようです。大容量(2GBより大きい?)のSDカードだとダメなのかも。起動できないときのU-Bootのエラーはこんなかんじでした。
===
mmc block read error
bad MBR sector signature 0x0000
** Bad partition - mmc 0:1 **
===

bodhiさんのまとめを熟読。このとおり作業を進めます。
- Flash uboot.environment to 0xC0000
で、Debian用のU-Boot環境設定を一括して書き込み、さらに、SDブート用の環境設定をfw_setenvで書き足していく手順になっています。
Arch Linuxを起動するためにはこちらを参考に少し変更が必要でした。
再起動する前に、fw_printenvで、すべての設定が正しく行われているか、慎重に確認。

===for netconsole===
===serverip、ipaddrは環境に合わせて修正===
# fw_setenv serverip 192.168.1.2
# fw_setenv ipaddr 192.168.1.100
# fw_setenv if_netconsole 'ping $serverip'
# fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10; setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
# fw_setenv preboot 'run if_netconsole start_netconsole'

===etc.===
===ethaddr、 cesvcidはblparamで確認===
===ethaddr設定が無いと起動のたびにMACアドレスが変わる===
===machid設定が無いとLEDが使えない===
# fw_setenv mtdparts 'mtdparts=orion_nand:2M(u-boot),3M(uImage),3M(uImage2),8M(failsafe),112M(root)'
# fw_setenv usb_rootfstype ext3
# fw_setenv ethaddr XX:XX:XX:XX:XX:XX
# fw_setenv cesvcid XXXXXXXXXXXXXX
# fw_setenv ceboardver PPV4A1
# fw_setenv arcNumber 3960
# fw_setenv machid F78

===for SD/USB uboot===
# fw_setenv mmc_root /dev/mmcblk0p1
# fw_setenv mmc_rootfstype ext3
# fw_setenv mmc_rootdelay 10
# fw_setenv mmc_set_bootargs 'setenv bootargs console=$console root=$mmc_root rootdelay=$mmc_rootdelay rootfstype=$mmc_rootfstype $mtdparts'
# fw_setenv mmc_bootcmd 'mmc init; mmc init; run mmc_set_bootargs; run mmc_boot'
# fw_setenv mmc_boot 'mw 0x800000 0 1; ext2load mmc 0:1 0x00800000 /boot/uImage; if ext2load mmc 0:1 0x01100000 /boot/uInitrd; then bootm 0x800000 0x1100000; else bootm 0x800000; fi'
# fw_setenv bootcmd 'usb start; run force_rescue_bootcmd; run ubifs_bootcmd; run usb_bootcmd; usb stop; run mmc_bootcmd'
===

Thanks,

hiro

2012年9月16日日曜日

Shredneck (Jason Becker model)


どんなときも弾いていないと落ち着かないあなたへ…

一週間ほど出先でギターが弾けないのにあわせて(?)Shredneckを購入してみました。
Seaform Greenとどちらにするか悩んだ末に選んだのはこちら

日本ではこちらで扱われているようです。

練習の鬼に捧ぐ最強の練習&ウォームアップツールです。

とのことで、、

果たしてほんとうに練習になるのかしらん、、、と思いながら注文っ

購入価格は$53.79なり。1ドル = 80円として4,300円ちょっとくらい。
#高崎さんやZakkさんのモデルもあって、それぞれ値段が違うっていう…


見たまんまなんだけども、ネック(ナットから7フレット分)を再現したものになっています。

通常とは逆側についているチューナは、テンション調整用とのこと。8フレットの位置にもナットがあって、ここまでが弦長になるので、このフレットの位置では半音ごとの音程はとれません。うまくチューニングして使う音を限定すれば、なんとなーく演奏してる気にはなるかもしれないけど。でも、ぺけぺけって小さな音しか出ないし、やっぱり楽器にはならないな。そのぶん、音で周りのひとに迷惑をかけることはないと思われまする。

ネックの雰囲気はよく出てるので、フィンガリングの練習やウォーミングアップにはけっこう有効な気がしました。
音楽っていうより筋トレ…

ピッキングは7フレットと8フレット位置にあるナットの間で行うことになってて、この部分だけ指板が深く彫られてます。
んー、弾きづらい、、、っていうのが第一印象で。演奏する姿勢や右手の置き方など、実際のギターとはずいぶん感じが違ってて。7フレットと8フレットの間の位置でピッキングしてることになるので、弦間にも違和感があるかも。慣れてくれば、右と左をシンクロさせて動かす練習にならなくはないかぁ、といったところ。

ちょっとした旅行のあいだなど、ギターを持っていくのはタイヘンだけど、弦を弾く感覚は一日でも忘れたくないんだーっていうときに、リュックのすき間にちょこっと入れていくにはいいかと。
アメリカの国内線では、リュックに入れっぱなしでもゲートの検査でなにか尋ねられることもありませんでした。ベルトコンベアを通っているときの画像にはばっちり写ってたけど、、、これ、怪しくない??

ラメの入ったブルーの塗装はきらきら綺麗で、メイプル指板もゴキゲン。
チューナはやや小ぶりで、それほど安っぽいカンジはしません。チューナーチップ(飛び出した弦で怪我しないようにペグポストにかぶせる)はナイスアイデア?
 

細かいところの仕上げは荒いかなぁ。
ま、いいや…

Thanks,

hiro

2012年7月2日月曜日

ミニチュア写真ふうScript-Fu


ホントは高いところから逆あおりで撮影してみたいところなんだけど...
てもとにある写真をそれらしく。
光軸を傾けて撮影(ティルト、スイング)した画像っぽく見えるように処理してみます。
#光軸を並行にずらす操作(シフト、フォール、ライズ)はムツカシイってば。

写真によっては、実際に光軸を傾けて撮影したものと比べると、とってもつじつまの合ってないことになってるんだろうけども、つじつまの合わないところに注目するよりも、これはミニチュアだ、と強く思うことがダイジ。脳には見たいものが見えるもので。

ところで、あおり撮影ができるレンズはこんな動きをします。楽しい。

傾ける光軸を任意の位置、角度でお手軽に決められるのは、デジタル処理でやってしまうことのメリットではあります。これを実際の撮影で画角を変えずにやろうとすると、けっこう手間取るのではないかなぁ。

 
【レシピ】
  1. 画像をやや明るめに(gimp-curves-spline)
  2. 彩度を上げる(gimp-hue-saturation)
  3. ライティングを工夫(plug-in-lighting)
  4. 任意の軸を中心にぼかす(plug-in-focusblur)

ぼかしの前処理を含めて定番の手順と思います。
処理の順番はこのとおりでなくてもいいのかもしれないけども、今回はトーンジャンプしそうな処理を前に持ってきてみました。 あとの処理で少しでもごまかしが効くことを期待して。

Script-Fuはちょと長くなったので下のほうにのせてます。(へんなところに改行が入ってしまったので、コピーペーストの際はご注意を...)
各パラメータは適当に変えてもらうとして。
gimp-displays-flushをしつこく呼び出ししてるのは、ジブンの環境ではなぜかこうしないとうまく動かなかったから。設定ダイアログを表示せずに、一気に実行すると動くんだけどなぁ。んー。たまたま動いているだけだったり。スクリプトになにか根本的な原因があるのかもしれませぬ。

さてさて、ミニチュアが展示されている様子を想像すると、、、
それは自然光以外で明るめにライティングされているだろうし、実物よりもややディフォルメされて彩度高めで着色されているだろう、っていうことなのかしら。3. はパラメータしだいで周辺の光量を落とすのと近い効果にもなります。

plug-in-focusblurには深度マップを読み込む機能があります。今回はこれを利用してgimp-edit-blendを使って作成したグラデーションを読み込んでいます。
被写界深度を極端に浅くした画像をシミュレートすればミニチュアっぽく見えるようで、そうなると、しっかり作り込んだ深度マップを読み込めばもっとうまくぼかしができるし、何もティルト撮影を真似て軸を設定する必要もないわけで。
でも、そんな手間をかけずに、それらしく見えればそれはそれで。ね。
こんな簡易的な手法でも、けっこう脳をだませてしまうところを楽しんでみました。

と言いながら、何度もこればっかり試してたら、あまりミニチュアっぽく見えなくなってきてしまった。あれ...











Thanks,

hiro

(define (script-fu-miniature-fu img layer tone sat lighting focus-x focus-y focus-angle depth-of-field transition filter-radius s-radius s-threshold)
;(tracing TRUE)
  (let* (
         (tone-curve-points 4)                    ;tunable..
         (tone-curve #(0 0 32 80 80 140 255 255)) ;tunable..

         (width (car (gimp-drawable-width layer)))
         (height (car (gimp-drawable-height layer)))

         (start-x (* width focus-x))
         (start-y (* height focus-y))

         (pi (acos -1))
         (focus-angle-rad (* pi (/ focus-angle 180)))

         (focus-layer (car (gimp-layer-new img width height 0 "focus-layer" 0 0)))

         (pixels-max 0)
         (pixels-min 0)
         (transition-pixels 0)
         (d-x 0)
         (d-y 0)
         (end-x-b 0)
         (end-y-b 0)
         (end-x-f 0)
         (end-y-f 0)
         )

    (if (< width height)
        (begin
          (set! pixels-max height)
          (set! pixels-min width))
        (begin
          (set! pixels-max width)
          (set! pixels-min height))
        )
    (set! transition-pixels (* pixels-max transition))

    (set! d-x (* transition-pixels (sin focus-angle-rad)))
    (set! d-y (* transition-pixels (cos focus-angle-rad)))
    (set! end-x-b (- start-x d-x))
    (set! end-y-b (- start-y d-y))
    (set! end-x-f (+ start-x d-x))
    (set! end-y-f (+ start-y d-y))

    ; start process
    (gimp-selection-all img)
    (gimp-displays-flush)

    ; tone curve
    (if (= tone TRUE)
        (begin
          (gimp-curves-spline layer 0 (* tone-curve-points 2) tone-curve)
          (gimp-displays-flush))
        )

    ; saturation
    (if (> sat 0)
        (begin
          (gimp-hue-saturation layer 0 0 0 sat)
          (gimp-displays-flush))
        )

    ; lighting
    (if (= lighting TRUE)
        (begin
;          Intensity (Light tab in lighting UI): no parameter from script-fu (set to 1.0 as default)
;          ambient-intensity: 'Glowing'
;          diffuse-intensity: 'Bright'
;          diffuse-reflectivity: no control from lighting UI (set to 0.4 as default)
;          specular-reflectivity: 'Shiny'
;          highlight: 'Polished'
;          (plug-in-lighting 1 img layer layer layer FALSE FALSE 0 0 '(255 255 255) focus-x focus-y 0.7 -1 -1 1 Glowing Bright 0.4 Shiny Polished FALSE FALSE FALSE)
          (plug-in-lighting 1 img layer layer layer FALSE FALSE 0 0 '(255 255 255) focus-x focus-y 0.7 -1 -1 1 0 0.6 0.4 0 0 FALSE FALSE FALSE)
          (gimp-displays-flush))
        )

    ; blur
    (gimp-image-insert-layer img focus-layer 0 -1)
    (gimp-displays-flush)
    (gimp-edit-blend focus-layer 0 0 0 100 0 0 FALSE FALSE 1 0 FALSE end-x-f end-y-f end-x-b end-y-b)
    (gimp-displays-flush)
    (define df-curve (make-vector 256 0))
    (define df (* depth-of-field 128))
    (define a (/ 128 (- 128 df)))
    (define b (- 255 (* a 255)))
    (let* ((n 0))
      (while (< n (- 128 df))
             (vector-set! df-curve n (* n a))
             (set! n (+ n 1)))
      (while (< n (+ 128 df))
             (vector-set! df-curve n 128)
             (set! n (+ n 1)))
      (while (< n 256)
             (vector-set! df-curve n (+ (* n a) b))
             (set! n (+ n 1)))
      )
    (gimp-curves-explicit focus-layer 0 256 df-curve)
    (gimp-displays-flush)
    (plug-in-focusblur 1 img layer 1 filter-radius 50 focus-layer s-radius s-threshold) ;Bokeh(behind) 0:Flat, 1:Spherical, 2:Gaussian, 3:Ring, 4:Concave, 5:Brush
    (gimp-displays-flush)
    (gimp-image-remove-layer img focus-layer)
    (gimp-displays-flush)
    )

  (gimp-displays-flush)
;(tracing FALSE)
)

(script-fu-register
 "script-fu-miniature-fu"
 "Miniature Fu..."
 "tonecurve + saturation + lighting + blur"
 "hiro"
 "Copyright (C) 2012 hiro"
 "06/24/2012"
 "RGB*"
 SF-IMAGE "image" 0
 SF-DRAWABLE "drawable" 0
 SF-TOGGLE "tone" TRUE
 SF-ADJUSTMENT "saturation" '(80 0 100 1 10 0 0)
 SF-TOGGLE "lighting" TRUE
 SF-ADJUSTMENT "focus x" '(0.5 0 1 0.01 0.1 2 0)
 SF-ADJUSTMENT "focus y" '(0.5 0 1 0.01 0.1 2 0)
 SF-ADJUSTMENT "focus angle" '(0 -180 180 1 15 1 0)
 SF-ADJUSTMENT "depth of field" '(0.05 0 1 0.01 0.1 2 0)
 SF-ADJUSTMENT "transition" '(0.2 0 1 0.01 0.1 2 0)
 SF-ADJUSTMENT "filter radius" '(11 1 50 1 1 0 0)
 SF-ADJUSTMENT "shining radius" '(3 -1 50 1 1 0 0)
 SF-ADJUSTMENT "shining threshold" '(90 0 100 1 10 0 0)
 )

(script-fu-menu-register "script-fu-miniature-fu"
                         "<Image>/Filters/MyFu")
※GIMP 2.8.0で動作を確認しました。
※期待したとおり動かないかもしれません。
※動かなくても、何が起きても、たとえ悪魔が呼び出されたとしても、責任は取れません...


2012年6月18日月曜日

モノクロフィルムふう Script-Fu


デジタルカメラで撮影したカラー画像をモノクロフィルムっぽく。
GIMPさんにお願い!
(define (script-fu-monochrome-film-fu img layer)
  (let* (
         (copy-layer (car (gimp-layer-copy layer TRUE)))
         (new-mask (car (gimp-layer-create-mask copy-layer 5)))
         )
    (gimp-image-add-layer img copy-layer -1)
    (gimp-layer-add-mask copy-layer new-mask)
    (gimp-curves-spline new-mask 0 8 #(0 192 16 96 64 42 160 0))
    (plug-in-noise-generator 1 img layer 0 0 10 0 0 0)
    (set! layer (car (gimp-image-merge-down img copy-layer 0)))
    (gimp-curves-spline layer 0 8 #(0 0 64 32 200 230 255 255))
    (plug-in-colors-channel-mixer 1 img layer 1 0.299 0.587 0.114 0.299 0.587 0.114 0.299 0.587 0.114)
    )
  (gimp-displays-flush)
  )

(script-fu-register
 "script-fu-monochrome-film-fu"
 "Monochrome Film Fu..."
 "description"
 "name"
 "copyright"
 "date"
 "RGB*"
 SF-IMAGE     "Image"     0
 SF-DRAWABLE  "Drawable"  0)

(script-fu-menu-register "script-fu-monochrome-film-fu"
                         "<Image>/Filters/Test")
※GIMP 2.8.0で動作を確認しました。
※期待したとおり動かないかもしれません。
※動かなくても、何が起きても、たとえ悪魔が呼び出されたとしても、責任は取りません...

Script-Fuについてはこちらを参考にさせていただきました。
GIMP使用のてびき(GIMPスクリプト)
Script-Fu 青空教室(スクリプトの実行方法はこのあたり)
Macの場合、スクリプトは下記に置けばOKみたいです。
~/Library/Application Support/Gimp/scripts


さてさて、粒状感をどうするか、というところから。
しかしながら、これは思った以上に奥が深そうで、そもそも。

こちらのドキュメントがとっても参考になります。
Film Grain, Resolution and Fundamental Film Particles

グレインの霧が晴れたかのように思えた説明を引用させていただきます。
Film grain is the product of the human eye and brain working in combination when viewing very large numbers fundamental image particles
顕微鏡写真(Page 19)を見ると「粒」の形状をなしていない...
たくさんの濃淡の集まりを見るとき、それを表示する大きさによっては、脳が粒状として認識してしまうということかしら。
粒状性の表し方のひとつであるところのRMS粒状度にしたって、濃度のばらつきであって、粒子の大きさ自体の単位ではないのでした。

化学反応極まる銀塩写真を再現することはできないし、
あまり突っ込まずに、それらしく自分の脳をだましておくことにしよう。


それらしく、に注力するとして、何か参考になるものは...
ということで、フィルムスキャナでスキャンした画像を観察してみました。
バス停の横の看板のあたりを等倍表示すると、、、
これは、いわゆる粒状として期待されているようなテクスチャに見えませんか?
はい。見えます。

粒状性は露出、現像のしかたによって、ずいぶん変わるようです。
デジタル化する際には、スキャンする解像度でもその見え方は変わってきます。
なので、これはあくまで、この写真をこのスキャナの解像度でスキャンしたときの雰囲気を再現するための試行、くらいの意味しかないので。

さてさて、明るさの違う場所でいくつかヒストグラムをとってみました。
Mean 211.9 / Std dev 10.7
 Mean 141.7 / Std dev 10.7
 Mean 100.8 / Std dev 9.2
 Mean 37.4 / Std dev 4.9

ノイズは正規分布っぽく、標準偏差の変化もなんとなく想像してたのと近い結果です。ネガポジ変換が行われて、ガンマがかかって、さらにスキャナ自体のノイズの影響もあるだろうし、ちっとも正確なデータではないんだけども。そこは。
こういったノイズを再現すれば何となくそれらしく見える。かも。と言い聞かせつつ。


【レシピ】
  1. ガウスノイズを加えた画像を生成
  2. 元画像にノイズ画像を混ぜる(暗いところはやや控えめに)
  3. コントラストを強めに
  4. モノクロ画像に変換
Script-Fuでやってるのはこれだけです。(スクリプトでは一部処理の順序が前後しています。)

GIMPさんの機能を呼び出しているだけなので、手動でも同じことができます。
お好みで下記のパラメータを調整するのがいいかと。
  1. FIlters->Noise->Noise generatorでガウスノイズの標準偏差を変える
  2. マスクのトーンカーブ(Colors->Curves)で明るさに応じたノイズの量を調整
  3. Colors->Curvesで好みのコントラストに
  4. Colors->Components->Channel MixerでRGBの比を調整
※モノクロ化は最後に。入出力が同じビット深度の画像でコントラストを調整すると、だいたいトーンジャンプが起こるんだけど、RGBを混合するときにある程度はごまかせます。たぶん。


Thanks,

hiro

2012年4月15日日曜日

MacでRMAA: Apogee Duet2 (再測定)


オーディオインターフェイスとして、さらにヘッドフォンアンプとして、ゴキゲンに活躍中のDuet2くんです。

どれくらいゴキゲンか定量的に調べる方法はないものかしら。

ということで始めたRMAAを使った測定。
前回は、まぁこんなもんかーっていう結果でした。
やっぱりbalanced入出力でも試したいなー、と思いつつ時は過ぎ。

やっとXLR to 1/4'' TRS Connectorが入手できたので、 再測定してみました。

【結果発表】
Duet2 RMAA 24bit 44.1kHz (balanced)
Duet2 RMAA 24bit 48kHz (balanced)
Duet2 RMAA 24bit 96kHz (balanced)

注意
あくまで、うちの環境でわりかし適当に測定してみた結果です。
再生と録音がRMAAの想定しているとおりに正しく行われている確証はありません。
Duet2くんの実力全開かどうか分からない、ということです。


THD + Noiseなど全般的に良くなったようです。balanced入出力の効果アリと思っていいかと。
それでこそ、この測定以外に使わなさそうなコネクタを入手した甲斐があったというものだ...

残念ながら周波数特性の傾向は変わりませんでした。
測定方法に問題がある可能性もあるなぁ...


Thanks,


hiro

Duet2 RMAA 24bit 44.1kHz (balanced)

RightMark Audio Analyzer test : duet2 44 balanced

RightMark Audio Analyzer test report

Testing device duet2 44 balanced
Sampling mode 24-bit, 44 kHz
Interface
Testing chain External loopback (line-out - line-in)
RMAA Version 6.2.3
20 Hz - 20 kHz filter ON
Normalize amplitude ON
Level change -0.0 dB / -0.0 dB
Mono mode OFF
Calibration singal, Hz 1000
Polarity correct/correct



Summary

Frequency response (from 40 Hz to 15 kHz), dB
+0.03, -0.13
Very good
Noise level, dB (A)
-107.4
Excellent
Dynamic range, dB (A)
106.7
Excellent
THD, %
0.0007
Excellent
THD + Noise, dB (A)
-100.2
Excellent
IMD + Noise, %
0.0014
Excellent
Stereo crosstalk, dB
-108.3
Excellent
IMD at 10 kHz, %
0.0015
Excellent
General performance
Very good



Frequency response



From 20 Hz to 20 kHz, dB
-0.24, +0.03
From 40 Hz to 15 kHz, dB
-0.13, +0.03



Noise level



Left
Right
RMS power, dB
-106.3
-107.0
RMS power (A-weighted), dB
-106.9
-107.9
Peak level, dB FS
-91.1
-91.4
DC offset, %
+0.0
+0.0



Dynamic range



Left
Right
Dynamic range, dB
+106.3
+106.3
Dynamic range (A-weighted), dB
+106.7
+106.7
DC offset, %
+0.00
+0.00



THD + Noise (at -3 dB FS)



Left
Right
THD, %
+0.0008
+0.0006
THD + Noise, %
+0.0012
+0.0011
THD + Noise (A-weighted), %
+0.0010
+0.0009



Intermodulation distortion



Left
Right
IMD + Noise, %
+0.0015
+0.0013
IMD + Noise (A-weighted), %
+0.0012
+0.0012



Stereo crosstalk



Left
Right
Crosstalk at 100 Hz, dB
-113
-111
Crosstalk at 1000 Hz, dB
-108
-107
Crosstalk at 10000 Hz, dB
-106
-106



IMD (swept tones)



Left
Right
IMD + Noise at 5000 Hz,
0.0015
0.0015
IMD + Noise at 10000 Hz,
0.0015
0.0015
IMD + Noise at 15000 Hz,
0.0015
0.0015



Duet2 RMAA 24bit 48kHz (balanced)

RightMark Audio Analyzer test : duet2 48 balanced

RightMark Audio Analyzer test report

Testing device duet2 48 balanced
Sampling mode 24-bit, 48 kHz
Interface
Testing chain External loopback (line-out - line-in)
RMAA Version 6.2.3
20 Hz - 20 kHz filter ON
Normalize amplitude ON
Level change -0.0 dB / -0.0 dB
Mono mode OFF
Calibration singal, Hz 1000
Polarity correct/correct



Summary

Frequency response (from 40 Hz to 15 kHz), dB
+0.03, -0.14
Very good
Noise level, dB (A)
-107.4
Excellent
Dynamic range, dB (A)
106.6
Excellent
THD, %
0.0007
Excellent
THD + Noise, dB (A)
-100.4
Excellent
IMD + Noise, %
0.0014
Excellent
Stereo crosstalk, dB
-106.4
Excellent
IMD at 10 kHz, %
0.0014
Excellent
General performance
Very good



Frequency response



From 20 Hz to 20 kHz, dB
-0.23, +0.03
From 40 Hz to 15 kHz, dB
-0.14, +0.03



Noise level



Left
Right
RMS power, dB
-106.3
-107.0
RMS power (A-weighted), dB
-107.0
-107.8
Peak level, dB FS
-86.9
-86.1
DC offset, %
-0.0
-0.0



Dynamic range



Left
Right
Dynamic range, dB
+106.3
+106.3
Dynamic range (A-weighted), dB
+106.6
+106.6
DC offset, %
+0.00
-0.00



THD + Noise (at -3 dB FS)



Left
Right
THD, %
+0.0008
+0.0006
THD + Noise, %
+0.0012
+0.0010
THD + Noise (A-weighted), %
+0.0010
+0.0009



Intermodulation distortion



Left
Right
IMD + Noise, %
+0.0014
+0.0013
IMD + Noise (A-weighted), %
+0.0012
+0.0011



Stereo crosstalk



Left
Right
Crosstalk at 100 Hz, dB
-115
-113
Crosstalk at 1000 Hz, dB
-105
-105
Crosstalk at 10000 Hz, dB
-106
-106



IMD (swept tones)



Left
Right
IMD + Noise at 5000 Hz,
0.0014
0.0013
IMD + Noise at 10000 Hz,
0.0014
0.0013
IMD + Noise at 15000 Hz,
0.0014
0.0013