電子趣味の部屋

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

今でも遊べる 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

Raspberry pi 400で遊ぶ X68000編

今回は『Raspberry pi 400で遊ぶ MSX編』に続いて、Raspberry pi 400 (日本語キーボード)へX68000の環境を構築しました。




Raspberry Pi OS Lite

今回も最小構成にしたいので、Raspberry Pi OS Liteを使用しました。
最新のBullseyeでは起動時に失敗して何回試してもうまく動作しなかったので、前バージョンのBusterを使用しました。
Raspberry Pi Imagerからは、Raspberry Pi OS (Other) から Raspberry Pi OS Lite (Legacy) を選択してインストールします。

初期設定

作業は一通りユーザ「pi」で進めていきます。

raspi-configで設定

raspi-config起動

sudo raspi-config
Wifi設定

[1 System Options] - [Wireless LAN] からWifiを設定

SSH有効化

[2 Interface Options] - [P2 SSH] から を選択してsshを有効化

キーボード設定 (日本語キーボードの場合)

[5 Location Options] - [L3 Keyboard]-[Generic 105-key PC (intl.)] から [Japanese - Japanese (OADG 109A)] を選択

自動ログイン

[1 System Options] - [Boot/Auto Login] から [B2 Console AutoLogin] を選択して自動ログイン

前準備

SDL 1.2、SDL_gfx 1.2、gitをインストールします

sudo apt install -y libsdl1.2-dev
sudo apt install -y libsdl-gfx1.2-dev
sudo apt install -y git

ファイルの展開のため、unzipとlhasaと7zをインストールします。

sudo apt install -y unzip
sudo apt install -y lhasa
sudo apt install -y p7zip-full

px68kの構築

ここではX68000のエミュレータpx68kの環境を構築する手順を書いていきます。

px68kはpiユーザのホーム以下のpx68kディレクトリ(/home/pi/px68k)へインストールすることを想定して進めます

cd
git clone https://github.com/hissorii/px68k
cd px68k
make

ここでmakeのエラーが発生すると思います。

gcc -o x68k/adpcm.o -m32 -g -O0 -fno-strict-aliasing -DUSE_SDLGFX -DNO_MERCURY -DPX68K_VERSION=0.15 -I./x11 -I./x68k -I./fmgen -I./win32api `sdl-config --cflags` -c x68k/adpcm.c
gcc: error: unrecognized command line option ‘-m32’; did you mean ‘-mbe32’?
make: *** [Makefile:112: x68k/adpcm.o] Error 1

Makeファイルの編集をします。

vi Makefile

編集するコマンドはnanoでも慣れてるもので大丈夫です。

"-m32"と書いてある箇所があるので"-mbe32"に変更します。

        MOPT= -m32

        MOPT= -mbe32

保存して再度makeします。

make

いくつかワーニングが表示されましたが、無事に動作しているようです。

BIOSファイル配置

実行にはiplrom.datとcgrom.datが必要。
色々なサイトを参考にX68000 LIBRARYXM6 Pro-68kから拝借

mkdir ~/.keropi
wget http://www.retropc.net/x68000/software/sharp/x68bios/X68BIOSE.LZH
lhasa x X68BIOSE.LZH iplrom.dat
mv iplrom.dat ~/.keropi/iplrom.dat
chmod 644 ~/.keropi/iplrom.dat
wget https://mijet.eludevisibility.org/XM6%20Pro-68k/XM6%20Pro-68k%20DLL%20Package.7z
7z x "XM6 Pro-68k DLL Package.7z" CGROM.DAT
mv CGROM.DAT ~/.keropi/cgrom.dat
chmod 644 ~/.keropi/cgrom.dat

動作確認

X68000 LIBRARYからHuman68kのディスクイメージを取得して起動してみます。

wget http://www.retropc.net/x68000/software/sharp/human302/HUMN302I.LZH
lhasa x HUMN302I.LZH human302.xdf
chmod 644 human302.xdf
./px68k human302.xdf

MSXの場合と同じように、FullHDのデイスプレイでは写真のように右上だけに表示されてしまいました。

/bootにあるconfig.txtを編集します

sudo vi /boot/config.txt

下の定義の部分のコメント"#"を削除して、設定できる画面モードのなかからなるべく全画面に近い解像度を設定しました。

#hdmi_group=1
#hdmi_mode=1

hdmi_group=2
hdmi_mode=9

詳細な意味は省略しますが、これで800x600表示になります。
設定後はリブート

sudo reboot

再度起動するとこんな感じです。

まだ余白がありますが、これ以上小さい解像度に設定すると、px68kの起動で失敗しました。

自動起動

電源を入れたらpx68kの起動まで自動で行えるようにします。
.bashrcの最後にpx68kの起動コマンドを追加します。

.bashrc編集

vi ~/.bashrc

最後の行に追加

cd px68k
./px68k

raspi-configの設定で自動ログインも有効化してるので、これで電源オンの後は自動でログインしてpx68kを起動されるようになります。

メニュー

[F12]でメニューを開いてディスクの入れ替えや、リセット、終了を行うことができます。

問題点

現在マウスカーソルが表示されてしまいます。
コンソールだけで扱いたいので、邪魔なのですが非表示にする方法が不明です。

次世代ゲーム機が買えないからと言ってゲーミングPCを勧めることの違和感

最近PS5やXBOX Series X/Sが買えないからと言ってゲーミングPCを勧めるブログやYoutubeを見ますが、個人的に違和感があります。
自分自身がPCでゲームをすることを辞めた方なので、いくつかのポイントについて反論したいと思います。
自作PCをやめてミニPC Minisforum HM90 にしました - 電子趣味の部屋

価格

まず価格が全く違います。
予算が多ければ多いほど高性能になるのは当たり前のことです。
所有していた自作PCのスペックはRyzen 7 3700X+GeForce GTR2060の構成でカタログスペック上はPS5とほぼ同等です。
これと同等のPCは今でも15万円前後します。
6万円前後で用意できる構成でないと比較対象にならないと思います。

最適化

汎用的に動作させようというPC向けのプログラムより、スペックが固定されているゲーム機向けのプログラムの方が最適化されていることの方が多いです。
OSもWindowsよりゲーム機用にカスタマイズされたOSの方がオーバーヘッドとなる部分が少ないです。
いくつかPC用とPS4用の同じゲームをしたことがありますが、PCで快適に動作させようと設定してもスペックが劣るはずのPS4の方が高画質、高フレームレートの場合が多いです。
バトルフィールド2042はまずPCで遊んでたのですが、XBOX Series X後はXBOXで遊んでます。カタログスペック上ではほぼ同等なのですが、PCではどう頑張ってもXBOXと同等の画質では快適に動作させることができないです。

静音性

最近は静穏が売りのデスクトップPCが多いですが、GPUを別に用意する構成はグラフィックボードに付いてるファンがある限り結構うるさいです。
静音性にはこだわっていまして、自作PCは結構パーツも静音性に優れたものを選択してたのですが、普通に買える範囲ではXBOXやPS5に勝てません。
ヒートシンクやヒートパイプを自作しない限りまずゲーム機に静音性では勝てません。

汎用性

ゲーミングPCはWindows PCなのでゲーム以外にも色々できると言って勧めてる場合も多いですが、普段からファンの騒音であまり使用する気にはなれずに、ゲーム以外の作業はノートPCで行っていました。
ノートPCでは厳しい作業をしかたなくデスクトップPCで行ってた感じです。

このブログを読んでくれてる方にはわかると思いますが、省電力マニアでして結構消費電力に気を使ってました。
Ryzen 7 3700X+GeForce GTR2060+ごく普通のマザーボード+DDR4 3200 32GB+SSD NVME 1TB + 2.5インチHDD 2TBの構成でアイドル時でも60Wでした。普段の使用時で100W、ゲーム時に最大200Wを超えてました。
この点も気になってたポイントです。

ゲームの多さ

ゲームの数は確かにPCの方が多いですが、大抵のビッグタイトルはPS5やXBOXでも発売されてます。
前述したとおり、次世代機と同等のスペックの中途半端なゲーミングPCよりゲーム機で遊んだほうが快適です。
PCでしかできないゲームはインディーズゲームが多いです。
これは既にPCを所有してることが前提ですが、インディーズゲームはそこまで高スペックが必要なゲームは少なく、Ryzen3000番台以降のAPU内蔵のGPUで大抵動作してしまいます。
唯一心残りがありまして。X4というPCでしか発売されてないゲームがあるのですが、これはRyzen4900Hでも厳しく遊べなくなってしまいました。

このようにいくつかポイントを書きましたが、特に価格の点で違和感があると思います。
次世代ゲーム機と同等スペックが6万円前後で買えるようになると、ようやく話ができることだと思います。

PC-8801のこと

パソコンはMSXから入ったのですが、本当はPC-8801が欲しかったです。
中学生の時にパソコンを買ってもらえることになったときにPC-8801は価格的に却下され、MSXを選択しました。

高校生の頃はパソコン自体飽きてあまり触らない時期でMSXもインテリアと化してました。
2年生の後半くらいになって進路を考える時期にコンピュータ系の学部がある大学に行きたいと思いました。
最近のパソコン情報を知るために久しぶりにマイコンBASICマガジンを買って、いつの間にか16ビットのMSXが発売されていることに驚きました。
何気なく通販の広告ページを見てたところ、中古のPC-8801がお手軽な価格だったので、バイトである程度お金があったこともあり買ってしまいました。
ここで選んだのはPC-8801MRです。モニターと合わせて5,6万円だったと思います。

初めに欲しかったパソコンが手に入ったことが嬉しかったです。届いてからは中古でヨーロッパ戦線やソーサリアンを遅れて遊んでました。
色々遊んでわかったのですが、PC88に過剰に期待してたことがわかりました。
MSXと比較して全体的な動作として思ったより高速ではありませんでした。BASICも体感的にMSXとそんなに変わらなかったと思います。
MSXで遊んだこともあるイースとハイドライドも安かったので比較したいと思って買ったのですが、むしろスプライト機能のあるMSXの方がスムーズで遊びやすかったです。
同じく安くて比較のために買った信長の野望全国版はディスクアクセスが速いのでPC88の方が快適でした。

PC88でも全盛期を過ぎた時期であり、ゲームコーナーのスペースもPC98やX68000に押されてMSXよりも少ないほどだったので、思ったより遊べませんでした。
こんな状態なので、久しぶりにBASICに手を出して、MSXで作ったパズルゲームを作ってみました。
今度はテキストではなくてグラフィックも使ってちょっと凝った作りにしました。
その時のパソコンの情熱を考えると不思議ですが、なぜかマイコンBASICマガジンに投稿して採用されてしまいました。(1992年7月号)

大学入学祝いとしてPC-9801BXを買ってもらいPC-8801MRは処分してしまいました。
所有した期間は1年程でネタも少なくてこのブログにもあまり触れてない機種ですが、パソコン雑誌に掲載されたりMSX以外の8ビット機を知ることができたりと買ったことは間違いなかったと思ってます。

Polyhex シングルボードコンピュータ EMB-iMX8MP-02

Polyhex シングルボードコンピュータ EMB-iMX8MP-02 をレビューします。

今回使用したオンラインサイト、RSでは電子工作に使うロジックICや各センサー等オンラインで購入可能です。

Raspberry Pi のようなシングルボードコンピュータです
Raspberry Piとほぼ同じ大きさです。

プロセッサはクワッドコアi.MX 8M PlusプロセッサでコアはCortex A-53です。
ちょうどRaspberry Pi 3と同等のコアです。
このプロセッサはニューラル処理ユニットが搭載されており、Tensor Flow Lite等で使用できるようです。

OSはUbuntu 20.04、Android 11、Yocto-L5.10.72_2.2.0が用意されています。
OSイメージは下のURLからダウンロードできます。
https://debix.io/Software/download.html

Ubuntuで実際に試した使用感ですが、Raspberry Pi 3と同等のコアの割には意外と快適に動作しました。
Raspberry Piでは3でも4でもUbuntuはもたつく感じがしますが、EMB-iMX8MPはそんなことはありませんでした。
Raspberry Pi 4でRaspberryOSを使用する場合と同等に快適でした。
初期状態では日本語やストアは用意されていないので、aptコマンド等で自分でセットアップする必要があります。
自分の使用用途としてコンソールからTensor Flow Lite等でニューラル処理ユニットを試したいので、ssh接続の設定後はディスプレイも使用せずにそのままssh接続して使用してます。

OSの日本語へのローカライズやストアが無いので初めは少々扱いにくいですが、一通り環境が整った後は単体のUbuntu環境として快適に使えるようになりました。

今後はAndroidや他のOSも試そうと思っています。

Raspberry pi 400で遊ぶ MSX編

Raspberry pi 400 (日本語キーボード)を手に入れました。

キーボード一体型なので、サーバにしてssh接続で使うにはスペースを取りすぎて無駄なので、普通のデスクトップPCとして使うことにしました。
普段は最新のRaspbberry Pi OSで使用しているんのですが、キーボード一体型と言えばMSXということで、MSX専用環境を作って遊んでみました。

Raspberry Pi OS Lite

MSXに特化して最小構成にしたいので、Raspberry Pi OS Liteを使用しました。
最新のBullseyeでは起動時に失敗して何回試してもうまく動作しなかったので、前バージョンのBusterを使用しました。
Raspberry Pi Imagerからは、Raspberry Pi OS (Other) から Raspberry Pi OS Lite (Legacy) を選択してインストールします。

初期設定

作業は一通りユーザ「pi」で進めていきます。

raspi-configで設定

raspi-config起動
sudo raspi-config
Wifi設定

[1 System Options] - [Wireless LAN] からWifiを設定

SSH有効化

[2 Interface Options] - [P2 SSH] から を選択してsshを有効化

キーボード設定 (日本語キーボードの場合)

[5 Location Options] - [L3 Keyboard]-[Generic 105-key PC (intl.)] から [Japanese - Japanese (OADG 109A)] を選択

自動ログイン

[1 System Options] - [Boot/Auto Login] から [B2 Console AutoLogin] を選択して自動ログイン

OpenMSXをインストール

aptでインストールできました。

sudo apt install openmsx

OpenMSX起動

openmsx

これだけで起動できます。

日本語レイアウトのキーボードでは、メニューキーでOpenMSXのメニューを開くことができます。
ここからOpenMSXを終了させることができます。

ただこの状態では、FullHDのデイスプレイでは写真のように右上だけに表示されてしまいました。

openmsxの設定ではフルスクリーンにできず、Raspberry Piの設定で変更しました。

画面解像度の設定

/bootにあるconfig.txtを編集します

sudo vi /boot/config.txt

編集するコマンドはnanoでも慣れてるもので大丈夫です。

下の定義の部分のコメント"#"を削除します。

#hdmi_group=1
#hdmi_mode=1

hdmi_group=1
hdmi_mode=1

詳細な意味は省略しますが、これでVGA(640x480)表示になります。
設定後はリブート

sudo reboot

これでopenmsxを実行すると画面いっぱいに表示されました。

ここで画面中央に小さく表示される場合は、一旦openmsxを終了し、設定ファイルを修正します。

vi ~/.openMSX/share/settings.xml

下の設定があると思うので、1を2に変更します。

<setting id="scale_factor">1</setting>

<setting id="scale_factor">2</setting>

これで起動するとちょうど良いサイズになります。

自動起動

実機のMSXと同様に電源を入れたらOpenMSXの起動まで自動で行えるようにします。
.bashrcの最後にopenmsxを追加します。

.bashrc編集

vi ~/.bashrc

最後の行に追加

openmsx

raspi-configの設定で自動ログインも有効化してるので、これで電源オンの後は自動でログインしてopenmsxを起動されるようになります。

OpenMSXの各種操作

日本語レイアウトのキーボードでは、メニューキーでOpenMSXのメニューを開くことができます。
ここでROMファイルを開いたりディスクファイル(ディレクトリ)を開いたりできます。
またBIOSを用意すれば特定の機種をエミュレートし、BASICも扱えるようになります。

BIOSファイルは下のディレトリに入れてください。
/home/pi/.openMSX/share/machines

BIOSの吸出し方法はここでは説明しませんが、FS-A1STの場合は http://bluemsx.msxblue.com/resource.html にある Panasonic dump tools で行いました。
何年か前のファイルを使いまわしてるので、手順は覚えてません。


ゲームコントローラ(ゲームパッド)について

ゲームコントローラはPS4用のものをのUSB接続でそのまま使用できました。
他のUSB接続のものなら使用できそうです。

最後に

Raspberry Pi 用のMSXエミュレータは他にも blueberrymsx 等ありますが、XウィンドウではなくSDLライブラリでの場合は、メニューが表示されないので、操作方法がわかりませんでした。
OpenMSXは独自でメニューを表示してキーボードだけで操作できるので、今回はこちらを選択しました。

今回は特に行わなかったですが、必要のないサービスは起動しないようにし、電源を入れてからのMSX起動までの高速化も行いたいと思います。