Classiclll's Blog

an old boy

XYScope API(JavaDocを翻訳)

まだサンプルコードを動かしただけなんだけど、予想がつくところから翻訳した

わけがわからないところは原文のまま放置中

実際に使ってわかったら更新予定

 

とりあえず、

 

Class XYscope

  • java.lang.Object
    • xyscope.XYscope
  • public class XYscope
  • extends java.lang.Object
    Render vector graphics on a vector display (oscilloscope X-Y mode, laser) by converting them to audio .
  • Modifier and Type
  • Class and Description
  • class 
  • class 

 

フィールドサマリ

  • Type
  • Field and Description
  • AudioOutput
  • outXY
    • ライブラリminim から継承、オーディオ出力モデル(XY)
  • AudioOutput
  • outZ
    • ライブラリminim から継承、オーディオ出力モデル(Z用)
  • float
  • float
  • float
  • shapes
    • buildWaves()で描画されるshapeのコレクション
  • float
  • float
  • float
  • Summer
  • sumXY
    • ライブラリminimから継承  加算フィルタ(XY平面用)
    • Summer, for customizing patching filters.
  • Summer
  • sumZ
    • ライブラリminimから継承  加算フィルタ(Z方向用)
    • minim Summer, for customizing patching filters.
  • Oscil
  • waveB
    • ライブラリminimから継承 ウェーブジェネレータ
    • minim Oscil, for customizing Laser RGB oscillators.
  • Oscil
  • waveG
    • ライブラリminimから継承 ウェーブジェネレータ
    • minim Oscil, for customizing Laser RGB oscillators.
  • Oscil
  • waveR
    • ライブラリminimから継承 ウェーブジェネレータ
    • minim Oscil, for customizing Laser RGB oscillators.
  • Oscil
  • waveX
    • ライブラリminimから継承 ウェーブジェネレータ
    • minim Oscil, for customizing XYZ oscillators.
  • Oscil
  • waveY
    • ライブラリminimから継承 ウェーブジェネレータ
    • minim Oscil, for customizing XYZ oscillators.
  • Oscil
  • waveZ
    • ライブラリminimから継承 ウェーブジェネレータ
    • minim Oscil, for customizing XYZ oscillators.

 

 

コンストラクタサマリ

 

メソッドサマリ

  • Type
  • Method and Description
  • amp()
    • 現在の設定音量を得る
  • void
  • amp(float newAmp)
    • XYZ全ての波高を一律に設定する
  • void
  • amp(float newAmpX, float newAmpY)
    • X 、 Y の波高を個別に設定する
  • void
  • amp(float newAmpX, float newAmpY, float newAmpZ)
    • X 、 Y 、 Z の波高を個別に設定する
  • void
  • amp(PVector newAmp)
    • 各波高(XYZ)をPVector (3値)で設定する
  • void
  • void
  • void
  • buildWaves(int bwm)
    • 登録された点やシェイプに基づきXYの各波形をオシレーター描画用オーディオ信号に変換
  • void
  • buildX(float newWave)
    • X 軸オシレータの波形をカスタマイズする
  • void
  • buildY(float newWave)
    • Y 軸オシレータの波形をカスタマイズする
  • void
  • buildZ(float newWave)
    • Z 軸オシレータの波形をカスタマイズする
  • void
  • clearWaves()
    • buildWaves()で生成した波形をクリアする
  • void
  • curveVertex(float x, float y)
    • 曲線vortexを追加する。(現在は通常vertexー改修予定)
  • void
  • curveVertex(float x, float y, float z)
    • 曲線vortexを追加する。(現在は通常vertexー改修予定)
  • boolean
  • void
  • void
  • drawAll()
    • 登録されている全ての描画情報(drawPath() 、drawWaveform()、 drawWave()、 drawXY() 、drawPoints())を描画する
  • void
  • drawPath()
    • 登録されているPath情報(drawPath() )を描画する
  • void
  • drawPoints()
    • 登録されている点情報(drawPoint() )を描画する。(3Dでは楕円体)
  • void
  • drawRGB()
    • Draw waveform of all laser RGB oscillators.
  • void
  • drawWave()
    • Draw wave of all XYZ oscillators.
  • void
  • void
  • drawXY()
    • Simulate X-Y mode of oscilloscope output.
  • boolean
  • ease()
    • buildWaves()によるフレーム間のイージング設定を取得
  • void
  • ease(boolean easeBool)
    • buildWaves()によるフレーム間のイージング設定をオン/オフ
  • float
  • easeAmount()
    • 現在のイージング値(0.0 - 1.0.)を取得
  • void
  • easeAmount(float newEaseValue)
    • buildWave()によるフレーム間のイージング値を設定
  • void
  • ellipse(float x, float y, float w, float h)
    • 楕円(x, y, w, h)を描く
  • int
  • ellipseDetail()
    • 楕円描画の詳細度(点の数)を取得
  • void
  • ellipseDetail(int newED)
    • 楕円描画の詳細度(点の数)を設定
  • void
  • endShape()
    • シェイプの終了を宣言
  • void
  • void
  • freq(float newFreqX, float newFreqY)
    • X 、 Y オシレータの周波数を個別に設定
  • void
  • freq(float newFreqX, float newFreqY, float newFreqZ)
    • X、 Y 、 Zオシレータの周波数を個別に設定
  • void
  • freq(PVector newFreq)
    • PVectorを使ってX、 Y 、 Zオシレータの周波数を個別に設定
  • void
  • getMixerInfo()
    • 利用可能なオーディオ入出力のリストアップ
  • void
  • laser(java.lang.String inR, java.lang.String inBG)
    • Activate use of Laser's RGB by assigning 3 additional (2x stereo pairs) audio channels for controlling the RGB modulation.
      inR - String for name of audio channel for Red
      inBG - String for name of audio channel for Blue/Green
  • float
  • laserLPF()
    • Returns current frequency of Laser's low-pass-filter (LPF).
  • void
  • laserLPF(float newLaserLPFVal)
    • Set new frequency for Laser's low-pass-filter (LPF) as float.
    • newLaserLPFVal - float between 0.1 - 20000.0
  • float
  • limitPath()
    • Returns current value for border that limtis rendering to edges of screen.
  • void
  • limitPath(float newLimitVal)
    • Only render points within specified border from the edge
  • float
  • void
  • limitPoints(int newLimitPointsVal)
    • 描画ポイント上限数を設定
  • void
  • line(float x1, float y1, float x2, float y2)
    • 2D直線描画 (x1, y1)->( x2, y2).
  • void
  • line(float x1, float y1, float z1, float x2, float y2, float z2)
    • 3D直線描画 (x1, y1, z1)->(x2, y2, z2).
  • void
  • point(float x, float y)
    • 2D点(x, y)描画
  • void
  • point(float x, float y, float z)
    • 3D点(x, y, z)描画
  • void
  • rect(float x, float y, float w, float h)
    • 2D四辺形(x, y, w, h)描画
  • void
  • rectMode(int rectModeVal)
    • 四辺形描画モード設定 (Processing の同関数参照).
  • boolean
  • smoothWaves()
    • 波形スムージングモードか否かを確認
  • void
  • smoothWaves(boolean smoothWavesBool)
    • 波形スムージングモードの有効化/無効化
  • int
  • void
  • smoothWavesAmount(int swAmount)
    • 波形スムージングのためのステップ数を設定
  • float
  • spotKiller()
    • spot-killer値(laserの最小描画サイズ)を取得
  • void
  • spotKiller(float newLaserCutoffVal)
    • spot-killer値(laserの最小描画サイズ)を設定
  • void
  • stroke(float r, float g, float b)
    • RGB laserの線幅を個別に設定
  • void
  • void
  • void
  • void
  • strokeFreq()
    • R, G, B  laser の各周波数を PVectorで取得
  • void
  • strokeFreq(float newFreq)
    • R, G, B  laser の各周波数を 一律に設定
  • void
  • strokeFreq(float newFreqR, float newFreqG, float newFreqB)
    • R + G + B laser の各周波数を 個別に設定.
  • void
  • strokeMin()
    • RGB laser用の各最小線幅をPVectorで取得
  • void
  • strokeMin(float minR, float minG, float minB)
    • RGB laser用の各最小線幅を個別に設定
    • 各線幅は 0.0 - 255.0 の範囲
  • void
  • strokeMin(PVector minPV)
    • RGB laser用の各最小線幅をPVectorで個別に設定
  • strokeWB()
    • RGB laser用のホワイトバランスの設定値をPVectorで取得
  • void
  • strokeWB(float wbR, float wbG, float wbB)
    • RGB laser用のホワイトバランスを個別に設定
    • 各設定値は0.0 - 255.0の値
  • void
  • strokeWB(PVector wbPV)
    • RGB laser用のホワイトバランスをPVectorで個別に設定
    • 各設定値は0.0 - 255.0の値
  • void
  • void
  • void
  • vectrex(int vw, int vh, float vamp, int vrot)
    • (同上)
  • float
  • void
  • vectrexRatio(float vectrexAmpVal)
    • Vectrex用の波高差を設定
  • void
  • vertex(float x, float y)
    • 2Dシェイプにvertexを追加
  • void
  • vertex(float x, float y, float z)
    • 3Dシェイプにvertexを追加
  • void
  • wavePoints()
    • ベクター描画に用いられる各軸の(単位)ベクトルをPVectorのListで取得
  • void
  • waveReset()
    • XYZ オシレータがスリップするような時に波形のタイムステップをリセットする
  • int
  • waveSize()
    • 波形テーブルのサイズを取得
  • void
  • waveSize(int newSize)
    • 波形テーブルのサイズをカスタマイズする
  • void
  • z(java.lang.String zMixer)
    • Z軸をカスタムサウンドカードに接続(パッチ)する
  • void
  • z(java.lang.String zMixer, int sampleR)
    • ミキサーデバイス名(String) とサンプルレート (44100, 192000)を指定して Z軸をカスタムサウンドカードに接続(パッチ)する
  • boolean
  • zAuto()
    • Z軸の波形が自動描画モードか否かを取得
  • void
  • zAuto(boolean zAutoBool)
    • Z軸の波形が自動描画モードか否かを設定
  • float
  • zRange()
    • Z軸用出力の最大/最小(閾)値をペア値(float[])で取得
  • void
  • zRange(float zMin, float zMax)
  • Z軸用出力の最大/最小(閾)値をセットで設定


今、XYscopeのAPIを翻訳してんだけど、、

知らない固有名詞がJavaDoc中のAPI名に出てきたのでググってみたら、、、

ja.wikipedia.org

amzn.to

で1980年代に米企業が開発し、日本ではバンダイが販売していた模様

 

さらに、物好きな人が「MOD」用のカセットを作っちゃって、、、

icon.jp

もともとラズパイ用に開発されたようだけど、、

Raspberry Pi 4(8GB技適マーク付き)/ 32GBのMicroSDカード/ 5V 3A USB-Type-C 電源アダプター/2つのMicroHDMI-to-HDMIケーブルライン/1つ9層ケース/冷却ファン/三つヒートシンク/ドライバー/カードリーダ

 

XYscopeってこのハードもサポートしてるAPIも持ってた!

laserプロジェクター用のクラス/APIも持ってるらしいのだけどまだ不詳

 (RGB3本の波形クラスがあり、カラフルなレーザープロジェクションができるかも)

 

さすがプログラミングアート環境、、、

50BM8全段差動PP製作準備

まずは中身の調査

基盤/機能構成調査

背面パネルに2連のRCAジャック基盤、アッテネーターなのか抵抗がいっぱい

そこから前面パネルの切り替えSW基盤、入力2系は当然だけど出力も2系、よく見るとボリューム基盤とメーター駆動基盤へ分岐してた

ボリューム基盤からはメインボードへ

メインボードは電源/プリ/メイン区画が識別でき、まずはプリ区画に入ってきたライン入力を2個のオペアンプ構成で受けて真空管基盤へ

(NF型トーンコントロール回路、前面パネルのトーンボリューム基盤と双方向接続)

真空管基盤で味付けされた信号はまたメインボードのメインアンプ区画へ戻ってスピーカーを駆動

結構ややこしかった、、、

温存するのはメインアンプ、電源回路を除く、

 ・前/背面パネルの外部端子基盤とメーター駆動回路(±12V)

 ・トーンコントロール区画(NF型トーンコントロール回路、±12V)

 ・真空管基盤に取り付けられた9ピンソケット(パタンカット!)

新たに製作するのは

 ・電源:PTL倍電圧で220V

 ・ヒーター点火:50BM8直列x2を100VDC(ACだとハム発生)

 ・トーンコントロールとメーター駆動用±12V電源(ジャンク24VACアダプタ活用)

 ・メインアンプ全段差動プッシュプル、出力トランスは別の中華アンプから

 

まずは出力トランスの確保から、、かな

次はこれ、中華ハイブリッドの全段差動化(50BM8)

ずいぶん前にジャンクで落札してた中華ハイブリッド真空管アンプ

Wien AV-2030の雄姿(改造前の自前写真が無かったのでWeb画像)

見た目は両脇の双三極管(6N2-T)と中央の五極管(6P15)による三段増幅(あるいは初段パラの2段増幅)シングルアンプ

トーンコントロール、レベルメーター、2入力切り替え付きで両サイドに木をあしらった良さげな出で立ち

当時、これが1万切る価格で販売されて話題になった模様

中華アンプとはいえ本格真空管アンプが1万円で入手できるとあってそこそこ売れたらしいが、そのあとが大変だったようで

・公称15WがMT管シングルで出せるわけは無い

・音がひどい

真空管抜いても音が出る

良い音で鳴ってるケースも多いけど作りも悪かったらしく、なかには不具合満載の個体にぶつかった人も相当数いて、なかでも中を開けた人の報告で「商品説明には無いけどデジアンが入ってる!」

商品説明に一切ハイブリッドであることの記述が無かったことで、詐欺紛いとの非難も

 

それを承知で(筐体を含めた部品取り目的で)激安ゲット

開けてみると

中身(自前で撮り忘れたのでネットから拝借)

・トランスケースは木製、中には16Vx2のトロイダルトランス

真空管部とメーター駆動部は同一基盤

・6N2-Tの片側(残った三極部はNC)と6P15との2段カソフロバッファ

中華風味付け回路

・ヒータは16V半波整流点火(同一管直列にすればいいのに、、、)

・プレート電圧は24V(!!(±12V定電圧供給!!)

真空管サウンドの風味づけとしてはやりすぎ感が、、、

 、、なにより6.3Vヒーターを20Vで点火するなんて、、、なんて酷い、、、

 

、、、ということで、外見維持してちゃんとした真空管アンプにするプロジェクト始動

RC5B Single:Tone Port UX2開腹手術から完成へ

 

活かしたいのは2連のレベルメータ、Phoneジャック、2連ボリュームx2

 

メーター駆動回路図(LTSpiceモデル)は

レベルメータ駆動回路

オペアンプを使った理想ダイオードをやはりオペアンプで仮想グランド作った両電源で駆動

 

下記は上蓋を開けた状態

組み立てた駆動基板とACアダプタをなんとか収めて配線

 

お腹の中

内部立体配線図

上部真空管アンプとのインターフェース、既設のボリュームPhone ジャックの引き出し等ややこしかったので配線のイラスト作った

前から入れて後ろにはLineスルー、SPout、ACライン引きこみ等を結構時間かけて検討

後ろ姿写真左側はSpOut、右側は表側からのLineスルーOut

後ろ姿

 

で、完成。小さなシングルOPTだけど見た目よりはパワフル、低音も期待以上

 

完成!!

 

RC5B Single 回路図

ウェブでRC5Bの作例を漁ってでっち上げた回路図

 

RC5B Single 回路図

初段は5670の片側使った通常の電力増幅

出力段も自己バイアスによる普通の回路

電源部は

 検電機能付き倍電圧半坡整流PTL

  双投スイッチで対地感電を防止しつつスイッチオフでシャーシ触ってネオンランプが点けばスイッチオンで「シャーシがColdになる」ことが確認出来る 、、、はずなんだけど作業部屋のフローリングとHotの電位差がほとんど無い

 メータ電源の5Vアダプターの後に6x6Ωの突入電流防止NTCサーミスタ

 ヒーターは大容量フィルンムコンを介したAC点火(フィルムコンの高いこと、、スペースさえ気にならなければトランスの方が安かったかも)

 

   uxcell NTCサーミスタ 温度センサー 8D-20 6A 8Ω 突入電流リミッタ 5枚入り

 

 

次はTonePortUX2の内部改造

RC5B single, the tiny tube amp

レイアウトは決まったけど、

  前面のツインメーターを生かすためには内部基板を諦めるしかなさそう、、、、

  TonePort UX2の筐体が小さくて真空管アンプを埋め込むことは難しそう、、、

 

ということで、

 内蔵DACは諦め、I/O端子(標準プラグ)、ボリューム、メーターのみ活用

 アンプは配線基板と真空管/トランス取り付け基板の2階建て

 

と決心し製作したのが下の2フロアー

 

1F アンプ基板

左上の黒いパーツは6ΩNTCサーミスタ(温度が上がると超低抵抗)6連36Ω、

PTL(電源トランスレス)倍電圧方式なので、ヒーター、ダイオード等の対突入電流保護

 

 

2F 真空管/トランス固定シャーシ

シャーシは丁度良いサイズのアルミ板切り残し

初めてシャーシパンチ使ったけどパンチ限界の1.5mm厚、体力続かず

左手前の傷はその時の奮闘の名残り

急遽ステップドリル刄を入手したら、、全然楽だね

XSUID ステップドリル 3本セット チタンコーティング スパイラル HSS鋼 六角チタンコーンドリルビットホールカッター 六角轴スパイラル 3-20mm対応

 

これからTonePort UX2の内部改造(破壊?)へ