2016年11月13日

Arduino based game console "Arduboy" first impression (August 17, 2016)

arduboy01.jpg

I got an "Arduboy" at the venue of Maker Fair Tokyo 2016.

This is a portable game machine combining Arduino Leonardo equivalent CPU and 180 mAh battery, SSD1306 OLED display, piezoelectric buzzer, operation buttons.
The selling price at the venue was 5,000 yen.
Even buying parts individually will not be so cheap.
Anyway I bought it because the making of the casing was very good.

Although the appearance is a game machine style, it is a wonderful Arduino compatible machine.
Since the USB connector is built in, all you need is just connecting the cable.
Of course, you can write programs in Arduino IDE and run it normally.


arduboy0.jpg


For the setup etc of the development environment, the following page is detailed.

【Kickstarter】Arduboyレビュー、インストール手順、面白いゲーム紹介など - t-miyajima blog

However, one thing that needs attention is "It will not work with Arduino 1.6.10."
During compilation I got an error saying
-fno-fat-lto-objects are supported only with linker plugin.
and it stops.
(8/19 update: Arduino 1.6.11 has been released, it works fine.)
This seems to be caused by inconsistency of Arduino IDE and Arduboy library.
Arduino 1.6.9 works without problems.

Cannot Compile or Upload an Example Game: cc1.exe: error [SOLVED] - Arduboy / Issues - Community


As the first step, I tested some games and samples attached to the Arduboy library.

*Hello, World!
A Sample displays characters on the OLED. The code is here .
arduboy02.jpg


*ArduBreakout
A breakout with button operation. The code is here.
arduboy03.jpg


*GLOVE
A " Gauntlet " style game. Well done.
The compiler reported "Sketch uses 28,612 bytes (99%) of program storage space. Maximum is 28,672 bytes. Global variables use 1,682 bytes (65%) of dynamic memory, leaving 878 bytes for local variables." which means that the author stuffed code and data in as much as he can.
arduboy04.jpg


*伊for Arduboy
A side scrolling shooter. I impressed that it can move objects much more than I had thought.
arduboy05.jpg


Looking at the community site , it seems that 27 games are currently registered in the wiki.
There were also various demos that were not games including a demonstration of RPG similar to the Legends of Zelda.

Arduventure
[WIP] Arduventure (RPG) - Arduboy / Development - Community

arduboy06.jpg


An introduction of various works is in the following article.

11 Arduboy Games worth Playing - Retro Gaming Magazine | Retro Gaming Magazine

Original post in Japanese: ゲーム機型Arduino「Arduboy」を動かしてみた: 楽しくやろう。
タグ:english Arduboy
posted by boochow at 13:46| Comment(0) | Arduino | このブログの読者になる | 更新情報をチェックする

I will translate this blog into English by Google translation

Recently, it has become a hot topic that Google translation has improved considerably due to machine learning.

Google unleashes deep learning tech on language with Neural Machine Translation | TechCrunch

Perhaps, it may be possible to use Google translation for English translation of this blog.
Therefore, in order to investigate the performance of Google translation, I will translate the previous articles in English using Google Translate and post them.

The article translated into English is tagged "English".
Those articles are translated into English by Google translation, and then I corrected the translation error manually.

Google翻訳でこのブログの英訳を行います

最近、Google翻訳が、機械学習のおかげで大幅に品質向上したと話題になっています。

Google、ニューラルネットワーク機械学習を検索翻訳に適用―第一陣は中国語/英語 | TechCrunch Japan

もしかすると、このブログの英訳にGoogle翻訳が使えるかもしれません。
そこで、Google翻訳の性能を調べるため、Google翻訳を使って以前の記事を英訳してポストしていきます。

英訳した記事には"English"タグが付けられます。
それらの記事は、Google翻訳で英訳した後、翻訳ミスを人手で修正しています。
タグ:english
posted by boochow at 12:46| Comment(0) | 日記 | このブログの読者になる | 更新情報をチェックする

2016年11月12日

Arduboy用画像作成ツール for Mac

abImagerMac.png

以前作ったArduboy用の画像データ作成ツールをMac上でもビルドしてみました。
XCodeは5年以上前にちょっと使ったまま放置でしたが、AppStoreから配布されるようになってから一度インストールだけはしてありました。
以下のガイドにあるようにコマンドラインツールの設定をするだけで、他には特に追加の作業は必要ありませんでした。

xcode | openFrameworks

openFrameworks自体はクロスプラットフォーム環境なので、基本的にはOS X版をダウンロードしてくるだけです。
openFrameworksのプロジェクトの雛形は、ダウンロードしたファイルの中にあるProject Generatorを使いますが、これはAppStoreから配布されたソフトではないので、起動するにはCTRLを押しながらアイコンを選択し、メニューから起動を選ぶ必要があります

以前公開したソースコードをコンパイルしたところ、型チェックで少し引っかかったところがあってので、修正しました。
また、ついでにBMPファイルも読み込めるようにしました。

GitHubのソースは修正してあります。
テストは(いまだに)Yosemiteで行いました。

また、コンパイル済みのバイナリは以下に置いておきます。

ArduboyImager-Mac.zip

posted by boochow at 18:25| Comment(0) | Mac | このブログの読者になる | 更新情報をチェックする

2016年11月06日

FM音源をArduboyで動かしてみた の続き


前回の続きです。
やはり16ステップのシーケンスが1つ使えるだけでは物足りないので、シーケンサー周りをグレードアップしました。
具体的には

・シーケンスは16個(個々のシーケンスは16ステップで変わらず)
・シーケンスの連続演奏
・シリアルポート経由でのシーケンスのインポート/エクスポート
・EEPROMへの保存

といった機能を実装しました。
そのほか、

・直前の音を消さない「タイ」と直前の音を消す「休符」を分けて実装
・1ステップを四分音符から八分音符へ変更

などの拡張も行っています。
以下のGitHubリポジトリも更新しました。(前回のものはリリースv1.0として保存してあります。)

boochow/abSynth-FM: FM Synthesizer with step sequencer for Arduboy

前回からコードを整理せずにそのまま拡張したので、相変わらず中身はきれいではありません。
行数は現時点でインベーダーゲームより多い1700行超になっていますが、ビットマップやプリセットで用意した曲データ、Protonで開発するためのシリアルポート入力の代替コードなどを含んでいます。

プログラミングとしては、シーケンスの選択や通信を行うユーザーインタフェースと、シリアルポートからの入力のパーサが主な追加部分です。
データの受信中は、誤ったデータや通信の中断によってArduboy側がロックされてしまわないように、メインループから呼ばれて通信バッファが空(Serial.available()がゼロ)だった場合は必ずメインループへ戻ってボタン入力の処理を行うようにしています。

GUIは今回かなりたくさん書いた結果、ある程度スタイルができてきました。
コードはどう考えても現在のスタイルではなくOOPで書き直したほうが良いと思われますので、時間と意欲があればクラスライブラリ化したいところです。

現在重要な役割を担っているのは「process_button()」という関数で、ボタンの状態管理を行います。
引数は

・bool *state ・・・ 現在のボタンのオンオフ
・uint8_t *repeat_count ・・・ 長押し判定のためのカウンタ(処理不要の場合はNULL)
・uint8_t keycode ・・・ 処理対象のボタンの指定
・void(*release_func)() ・・・ ボタンを離したときの処理を行う関数
・void(*repeat_func)()) ・・・ 長押しのときの処理を行う関数
・返り値(bool) ・・・ 画面更新をする必要があるときはtrue

となっています。
例えば、Aボタンの処理はメインループの中で
process_button(&g_keystat.a, &g_keystat.a_repeat, A_BUTTON, a_released, a_long_press);

というようにコールしています。
a_releasedにAボタンが押されたときの処理、a_long_pressはAボタンが長押しされたときの処理を書きます。

ゲームと違って、GUIでは、ボタン操作への反応は押された時ではなく離された時に行うのが基本です。
反応の速さよりも、最後の最後までユーザに選択肢を残すことが重要だからです。
タグ:Arduboy
posted by boochow at 18:53| Comment(0) | Arduino | このブログの読者になる | 更新情報をチェックする

2016年10月24日

FM音源をArduboyで動かしてみた


先々週、PWMを使ったシンセサイザをArduboyに移植しましたが、その記事の中でも触れたpcm1723さんの「FMMelody」をArduboyで動かしてみました。

基本的にはタイマー周りの設定をしてあげるだけで動作しました。
鳴らしてみると、圧電スピーカーでもはっきりと音色の違いが表れます。
FM音源は倍音成分が多いので、圧電スピーカー向きの音質なのかもしれません。

パラメータをいろいろいじって遊びたくなったので、パラメータ設定のGUIと、曲が一応変更可能なステップシーケンサーをArduboyで実装しました。
始めてみると、狭い画面にいかに詰め込むかに熱中してしまい、週末をつぶして一気に作成しました。
コードはこちらに置いてあります。

boochow/abSynth-FM: FM Synthesizer with step sequencer for Arduboy

動作させるには、「Arduboy2」ライブラリが必要です。
今回は、ユーザーインタフェースを作りながらコーディングしていったこともあり、コードはあまり綺麗ではありません。
機会があったら見直したいところです。

GUIは例によってpaint.netでお絵かきしながら考えました。
VSTiベースのソフトウェアシンセでよくあるような、見栄え重視のコントローラをイメージしました。

それを先日作ったツールでデータ化しています。
その静止画の上に線や小さなビットマップを上書きすることでGUIを作っています。
paint.netのようなお絵かきツールは、画像の中の座標が簡単に調べられるので、こういうコーディングをするときに便利です。

loopの中は一般的なArduboyのアプリケーションと若干違っていて、画面の書き換えが最小限になるようにしています。
画面周りの処理を重くすると音のほうがとぎれがちになるためです。

Arduboy、シーケンサー付きのシンセサイザーとしてはTeenage EngineeringのPOシリーズよりも小型軽量かもしれませんね。
オーディオアウトがあればチップチューン用に使えたかもしれません。
まあ、分解して線を引き出せば良いのですが。
下のビデオの方はたぶんそれをやっていると思います。


ちなみに分解写真が以下のスレッドにありますが、圧電ブザーの線を引き出すだけなら簡単にできそうです。

Kickstarter Edition numbering - General - Community
タグ:Arduboy
posted by boochow at 01:50| Comment(0) | Arduino | このブログの読者になる | 更新情報をチェックする
人気記事