電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

久しぶりにRolandのSC-88proで遊びました。

色々データを整理してるうちに久しぶりにMIDIデータを聞いてました。
現在でもWindows機にはMU2000を接続できるようにしているのですが、今回はPC-9821Xaに接続しているSC-88Proで聴いてました。



PC98現役当時からXG音源で、10年ほど前に久しぶりに実機でMIDIファイルを聴きたいと思い、まずYAMAHAのMU1000をオークションで購入しました。十分安く手に入るようになったこともあり、数か月後にGS音源も欲しいと思い、現在でも根強いファンのいるSC-88Proを入手しました。
当時オークションで約15,000円でしたが、今でも相場はそんなに変わってないようです。
発売当初の新品価格は8万円位だったと思います。

PSGやFM音源と同じでMIDI音源も機種毎に独特の音あって、最近の音源でリアルな楽器を再現するのとは別の良さがあります。

Roland SC-88pro
パート数:32
最大同時発音数:64
音色数:1117
ドラムセット:42
音色マップ:3(SC-55/SC-88/SC88Pro)
エフェクト:リバーブ 8種類, コーラス8種類, ディレイ10種類, 2バンドイコライザー インサーションエフェクト64種類1系統

Xiaomi Redmi Pad を買いました

今までiPadとは別にサブのAndroidタブレットとして、2万円前後の低価格Androidタブレットを使用していました。
やはりこの手の機種はそこそこ高性能のCPUやメモリが多くてもOSの作りが悪いといいますか、動きがスムーズでは無かったり、良くアプリが落ちたり、タッチ制度が悪かったりと何かしら欠点があってカタログスペックほどの快適性はない機種ばかりです。
サブ機と割り切って使用してましたが、毎年のように買い替えてました。
最後に使用してた機種は今年の春頃に2万円前後のTECLAST M40 Proでした。
最近人気のUnisoc T618を使用しているもののブラウザ(Chrome)でも動作が重く感じました。

今回は少しまともなものにしようと思い、Xiaomiの Redmi Pad を選択しました。
日本国内バージョンはメモリが3GBのモデルが39,800円、4GBのモデルが44,800円と少々高価な価格ですが、Aliexpressのブラックフライデーセールで6GBのグローバル版を35,000円ほどで購入できました。

初めは3GBでいいやと思っていましたが、動画のレビューを見ているとAntutuベンチマークのGPU部分で4GBと2万くらい差が出てました。4GBと6GBはほぼ同じです。
推測ですがVRAMに割り当てられるメモリの差で結果に差が出ていると思われます。
ホーム画面やブラウザのスクロールでも動作にも差が出ているので、3GBは避けた方が良いと思います。

購入時 (Aliexpressのブラックフライデーセール中) の価格は 3GB版が約25,000円、4GB版が約30,000円、6GB版が約35,000円でした。

細かい動作はブログでは伝えにくいので、Youtube等で探してみてください。
体感的にいま家にある一番古いiPadの第5世代iPad mini でiOSを使用しているのと同等の動きをしてくれてます。
CPUはMediaTek Helio G99をしており、自分では計測していませんが各サイトやレビューを参考にするとAntutu 330,000前後 (3GB版は-20,000)です。

Android12ベースのOSの動作も快適で、今まで低価格の機種で味わったような未調整な感じもしません。
iPadには及びませんが、今まで所有したAndroidタブレットとば格段に快適な操作性でした。

iPadも複数年使用していることもあり、この機種も複数年使用できると思います。
低価格Androidタブレット+1万円でまともな機種を買えるので、低価格Androidタブレットを買おうとしている方は少し考えた方が良いと思います。

Aliexpressではスペックを偽造しているものや中国国内版にカスタマイズしたグローバルバージョンのROMを書き込んで販売している物も多いです。
見極めは慣れていないと難しいですが、Mi Global StoreやXiaomiPro Global Store等のXiaomi製品しか扱っていないストアは正規に仕入れてる可能性が高く、比較的信用できると思います。

PiCar-Xで遊ぶ 2 各モーター制御のメモ

今回は PiCar-X のモーター制御メソッドのメモです。

範囲はサンプルプログラムから推測した実用的な範囲です。
範囲を超えても指定できますが、可動に無理があるので範囲内に収めた方が良いです。

Picardクラス

PiCar-Xで遊ぶ 1 初期セットアップのメモ』 でセットアップをすると、picarxモジュールが使用できるようになりその中にPicardクラスがあります。
Picardクラスに各モーターを制御するメソッドがあります。

カメラの縦の角度

set_camera_servo1_angle(角度)
実用的な角度の範囲は-35~75

カメラの横の角度

set_camera_servo2_angle(角度)
実用的な角度の範囲は-90~90

前輪の角度

set_dir_servo_angle(角度)
実用的な角度の範囲は-30~30

前進

forward(速度)
速度の値の基準は不明
都度適当な値を設定して調整する

後退

backward(速度)
速度の値の基準は不明
都度適当な値を設定して調整する

簡単なサンプル

正面を向いて速度10で前進させるだけの簡単なサンプルです。

#!/usr/bin/env python3

from picarx import Picarx

px = Picarx()

# 正面を向く
px.set_camera_servo1_angle(0)
px.set_camera_servo2_angle(0)

# 前進
px.forward(10)

PiCar-Xで遊ぶ 1 初期セットアップのメモ

ロボット的なもので遊んでみたいと思い、価格も手ごろでカメラも扱える PiCar-X を買ってみました。

似たようなものは簡単なものでmicro:nbitを使用したものやESP32を使用したものを持っているので今度紹介したいと思いますが、今回はsshで接続してPython等でコードを書いたらすぐに実行できれば手軽だなと思いRaspberry Pi用のものが欲しいと思ってました。
今まで所有してたものは距離センサーがあって障害物を回避したりはできたのですが、今回はカメラと組み合わせて色々と遊びたいと思って探してたところ、1万円前後で手に入る PiCar-X を購入してみました。
実際に購入したのは2,3か月前なのですが、やっと組み立てました。

初期セットアップは公式ドキュメントPython環境の公式ドキュメントの方に詳しく書いてあるのですが、初期セットアップは何回も行いそうなので、簡素にコマンドを中心にメモを残しておきたいと思います。

RaspberryPi SDカード作成

Raspberry Pi Imager で「CHOOSE OS」→ 「Raspberry Pi OS(other)」 を選択。
Raspberry Pi OS(Legacy)かRaspberry Pi OS Lite(Legacy)を選択してDebian Busterをインストール

pythonモジュール

sudo apt update
sudo apt upgrade
sudo apt install git python3-pip python3-setuptools python3-smbus

robot-hatインストール

cd /home/pi/
git clone https://github.com/sunfounder/robot-hat.git
cd robot-hat
sudo python3 setup.py install

vilibインストール

cd /home/pi/
git clone https://github.com/sunfounder/vilib.git
cd vilib
sudo python3 install.py

picar-xインストール

cd /home/pi/
git clone -b v2.0 https://github.com/sunfounder/picar-x.git
cd picar-x
sudo python3 setup.py install

i2s アンプに必要なコンポーネントインストール

cd /home/pi/picar-x
sudo bash i2samp.sh

最後に「Would you like to reboot now?」と聞かれるので、yを入力し再起動
再起動後に音が出ない場合は、i2samp.sh スクリプトを数回実行する

ダイソー1,500円TWS(完全ワイヤレスイヤホン) 私的レビュー

ダイソーのAAC対応の1,500円のTWS(完全ワイヤレスイヤホン)を買いました。

結論から言うと、1,000円前後の格安TWSの中では一番マシで普通に使える音質だと思います。

KZ S1が故障してから、PCに接続する用のイヤホンとして格安TWSを色々と試してました。
1年くらいで10個は試して、少しまともなTWSを買えそうな金額になってますが、そこは趣味ということで。
100円均一ショプやドン・キホーテやエレコム等の1,000円前後のものはどれも有線だと100円均一ショプで買えるようなものと大差無く、まともな音質のものは無く、このブログでも特にレビューを書いてませんでした。

その中で今回買ったダイソー1,500円TWSは意外とまともに使えると思ったので、紹介したくなりました。

箱から出して聞いた一番初めの印象はまたいつもと同じかと思われましたが、ファイナルEタイプに変えると全体的に音も落ち着いて印象は大分変りました。
他の格安イヤホンはそこまで変化しなかったので、このイヤホンの付属のイヤーピースは特に質が良くないと思います。

仕様はこんな感じ

音の傾向はやや高音寄りのドンシャリ型でボーカル域が聞きやすくなってます。低音は弱いですが他の格安TWSと比較するとまともに聞こえます。
解像度はこの価格帯の中ではある方で、音が混ざってシャカシャカ聞こえる部分も割とまともになってくれてます。
音自体は一見クリアなのですが、他のイヤホンと比べると疲れる感じがするので、気が付かない範囲でノイズがあると思います。
一晩エージングすると音も落ち着いて疲れなくなりましたが、これはエージングの効果があったか体が慣れただけかはわかりませんでした。

単にイヤホンとしての評価ではあまりよくは無く、メインで使用するものではありませんが、この低価格帯で探している人には他のを買わずにこれを買えと強く薦めたいです。

今でも遊べる QY70

色々整理してたらYAMAHAのQY70が出てきたので、少し遊んじゃいました。

これは数年前に中古で購入したものですが、この製品が発売された当時も持っていました。
当時はほとんど使い方がわからないまま、PCのMIDI音源代わりに使っていたのですが、まじめに色々と遊んでたら結構使い方がわかりました。

今でもPC上のDAWの画面より、このようなモノクロ液晶の画面を見ると楽しくなってしまいます。
一見すると画面が小さくてPCでDAWソフトを使うより遥かに使いにくそうに見えますが、シーケンサとして作られているので、ボタン配置や画面レイアウトも効率が良く、慣れると明らかにPCでやるより早く入力できます。
リアルタイムレコーディングが出来る人はPCのほうが早いと思いますが、ステップ入力しかできない身としては、こちらの方が助かります。

このタイプの小型シーケンサはQY10から始まりQY70の後のQY100で最後になりますが、QY100は2000年から2014年まで生産されていました。
QY100も所有したことがありましたが、追加された機能は特に必要がなく、本体が少し大きくなるのでコンパクトなQY70の方を残していました。

当時から手軽に作曲ができる名機として人気があり、出荷台数も多いので現在でも比較的簡単に動作品が入手できるので、気になる方はぜひ手に入れることをお勧めします。

最大同時発音数:32
音色数:ノーマルボイス×519(XG)+ドラムボイス×20キット(XG)
エフェクト:リバーブ11タイプ、コーラス11タイプ、バリエーション43タイプ

RyzenのWindows環境へのTensorflowセットアップ方法 (NVIDIA以外のGPU環境へのセットアップ)

NVIDIA以外のGPU環境へTensorflowセットアップ方法を簡単に書きます。
実際にRyzen 9 4900HとRyzen 7 6800Hの環境へ内蔵GPUを使用できるようにセットアップした手順です。

Tensorflow2でGPUを使用する場合はCUDAを使用できるNVIDIAしか対応してませんが、
tensorflow-directml-pluginを使用すると、DirectX12に対応するGPUで機械学習を高速化できるMicrosoftのDirectMLを使用することができます。

今回はWindowsの使用しているユーザのみの範囲で他のユーザやWindows自体の環境に影響がない方法でセットアップしました。

作業の前提

手順の表記で<ユーザ>とある部分はWindowsのユーザ名です。
(Microsoftアカウントでログインしてる場合はユーザ名の一部の場合もあります。)

作業はWindows PowerShellで行います。

セットアップ手順

PythonインストールまでWindows用パッケージマネージャのscoopを使用します。
scoopはインストールしたパッケージはユーザフォルダ(C:\Users\<ユーザ>)の下のscoopファルダにインストールされるので、他のユーザに影響を与えることなく環境を作ることができます。

scoopインストール
Set-ExecutionPolicy RemoteSigned -scope CurrentUser 
invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') 
gitインストール
scoop install git
Pythonインストール

現時点でtensorflow-directml-pluginの対応してるバージョンがPython3.7までなので、バージョンを指定してインストールします。

scoop bucket add versions
scoop install python37
virtualenv

Tensorflow用に仮想環境を作りたいため、virtualenvをインストールします。

pip install virtualenv
Tensorflow用に仮想環境作成

ユーザフォルダの下にフォルダ"pythonenv"を作り、この中にPythonの仮想環境を作ることにします。
Tensorflow用仮想環境は".\pythonenv\ts_dml"に作ることとします。

cd ~
virtualenv -p "C:\Users\<ユーザ>\scoop\apps\python37\3.7.9\python.exe" .\pythonenv\ts_dml

3.7.9の部分はバージョン番号のため、現在インストールされているpythonのバージョンに合わせてください。

Tensorflow用仮想環境開始
.\pythonenv\ts_dml\Scripts\activate
Tensorflowインストール
pip install tensorflow-cpu
tensorflow-directml-pluginインストール
pip install tensorflow-directml-plugin
インストール確認

Pythonを起動

python

下の2行のコードを実行、「device_type: "GPU"」の項目があることを確認

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

以下、実行例(抜粋)

[name: "/device:CPU:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 14551679353227654613
xla_global_id: -1
, name: "/device:GPU:0"
device_type: "GPU"
memory_limit: 8205292468
locality {
  bus_id: 1
}
incarnation: 4805927211384585618
physical_device_desc: "device: 0, name: DML, pci bus id: <undefined>"
xla_global_id: -1
]
仮想環境終了

仮想環境から抜けるときは下のコマンドを実行します。

deactivate