2018/11/30(金) [n年前の日記]
#1 [tic80] TIC-80の波形メモリ音源の波形を生成するツールを書いてみた
TIC-80の波形メモリ音源に対して、波形を生成して書き込むツールを書いてみたり。Windows10 x64 + TIC-80 0.70.6 で動作確認した。
使い方がよく分からん気もするので、操作してる様子を動画でキャプチャしてみたり。こんな感じ。
cart(.tic)は以下。zip圧縮して置いておきますので、使ってみたい方は御自由に。CC0 / Public Domain ってことで。
_wavetest2_20181130.zip
ブラウザ上で動作させるなら以下。
_wavetest2.tic.html
_Play WAVETEST2 in TIC-80
(※ 2018/12/01追記。TIC-80の公式サイト(Playコーナー)にもアップロードしてみた。)
ただ、ブラウザ上では処理が重く、手元の環境(Windows10 + Waterfox 56.2.5)ではノイズがやたらと入るようで…。それでもひとまず、触ってみれば雰囲気だけは伝わるかなと…。
ソースは以下。
_wavetest2.lua
使い方がよく分からん気もするので、操作してる様子を動画でキャプチャしてみたり。こんな感じ。
cart(.tic)は以下。zip圧縮して置いておきますので、使ってみたい方は御自由に。CC0 / Public Domain ってことで。
_wavetest2_20181130.zip
ブラウザ上で動作させるなら以下。
_wavetest2.tic.html
_Play WAVETEST2 in TIC-80
(※ 2018/12/01追記。TIC-80の公式サイト(Playコーナー)にもアップロードしてみた。)
ただ、ブラウザ上では処理が重く、手元の環境(Windows10 + Waterfox 56.2.5)ではノイズがやたらと入るようで…。それでもひとまず、触ってみれば雰囲気だけは伝わるかなと…。
ソースは以下。
_wavetest2.lua
◎ 操作方法。 :
一応操作方法をメモ。
基本的にはマウスクリックで動作する。
下のほうに2つのスライダー群があるけれど、左が周波数の音量指定。基準となる周波数(440Hz)の1倍、2倍、3倍…10倍、と並んでいる。
右のスライダー群は、位相(角度)の指定。-180度 〜 +180度を指定できる。
一番左のスライダーは、全体の音量。
スライダーの上で左ボタンクリック or ドラッグすると値を変更できる。中ボタンクリック(ホイールクリック)で、値をリセット。
基本的にはマウスクリックで動作する。
- WAVE ID <n> : 現在アクセスしてる波形メモリのID。0〜15まで選べるが、0〜3はデフォルトで波形が入っているので変更できないようにしてある。
- READ : 波形メモリの読み出し再生モード。
- MAKE : 波形生成モード。
- PLAY : 1秒間隔で音が鳴り続ける。
- STOP : 音を停止。
- Sync : 現在の波形メモリ状態を、cart に記録。
- MAXI : SFXエディタと同じサイズで波形を表示。
- OCT : オクターブの指定。
- AJST : 音量自動調整。
- RSET : 周波数設定のリセット。
- スライダー : 音量や位相の指定値。
- 波形アイコン : sin波(正弦波)、矩形波、ノコギリ波、三角波の切り替え。
下のほうに2つのスライダー群があるけれど、左が周波数の音量指定。基準となる周波数(440Hz)の1倍、2倍、3倍…10倍、と並んでいる。
右のスライダー群は、位相(角度)の指定。-180度 〜 +180度を指定できる。
一番左のスライダーは、全体の音量。
スライダーの上で左ボタンクリック or ドラッグすると値を変更できる。中ボタンクリック(ホイールクリック)で、値をリセット。
◎ 他のcartへの流用方法。 :
この wavetest2.tic で作成したSFX(効果音)の波形メモリを、自分が作成中の cart に流用したい場合は、load コマンドが使える模様。
load wavetest2.tic sfx最後に「sfx」を指定して load しているので、wavetest2.tic のSFX領域データだけが、現在開いてる cart の SFX領域データに読み込まれる。ソースコードやスプライト画像の領域は上書きされない。はず。たぶん。
[ ツッコむ ]
#2 [lua][tic80] Lua用軽量IDE ZeroBrane Studio を少し試用
TIC-80用のプログラムを、今まで
_Geany
を使って書いていたけれど。他にヨサゲなエディタはないかとググってたら、Lua用の軽量IDEとして ZeroBrane Studio なるものがあると知り。興味が湧いたので少し試用してみたり。ちなみに、Windows10 x64上で試したけれど、Mac や Linux でも使える、と謳っている模様。
_ZeroBrane Studio - Lua IDE/editor/debugger for Windows, Mac OSX, and Linux
_【Lua】軽量の Lua IDE「ZeroBrane Studio」紹介 - コガネブログ
_これ一つでLuaの開発がはじめられる・ZeroBrane Studio MOONGIFT
ちょっとだけ触ってみた印象では、改行した時のインデントを自動で挿入してくれたり、if 〜 then 〜 else 〜 end を打った時にインデントを調整してくれたりするあたりがイイ感じ。また、関数一覧を表示する機能もヨサゲ。
ちなみに、日本語文字列のインライン入力はできない模様。
デフォルトのキー割り当て一覧は以下。
_Editor Keyboard Shortcuts - ZeroBrane Studio
_ZeroBrane Studio - Lua IDE/editor/debugger for Windows, Mac OSX, and Linux
_【Lua】軽量の Lua IDE「ZeroBrane Studio」紹介 - コガネブログ
_これ一つでLuaの開発がはじめられる・ZeroBrane Studio MOONGIFT
ちょっとだけ触ってみた印象では、改行した時のインデントを自動で挿入してくれたり、if 〜 then 〜 else 〜 end を打った時にインデントを調整してくれたりするあたりがイイ感じ。また、関数一覧を表示する機能もヨサゲ。
ちなみに、日本語文字列のインライン入力はできない模様。
デフォルトのキー割り当て一覧は以下。
_Editor Keyboard Shortcuts - ZeroBrane Studio
◎ 設定をカスタマイズ。 :
設定は、Edit → Preferences → Setting: User を選ぶと開かれる、user.lua に追加していけばいいらしい。たぶん。
今回は以下のような設定を追加してみた。
設定内容については、以下が参考になる。
_Editor Preferences - ZeroBrane Studio
ショートカットキーも追加してみた。
このIDEは、 _Scintilla を利用しているようで、ショートカットキーの設定などは、Scintilla の設定その他が参考になる模様。
_Editor Preferences - ZeroBrane Studio
_KeyBindings - Scintilla Documentation
_KeyboardCommands - Scintilla Documentation
_[ZeroBrane Studio] Copy/move line keyboard shortcuts - zerobrane - FreeLists
_[ZeroBrane Studio] Re: Copy/move line keyboard shortcuts - zerobrane - FreeLists
「editor.keymap[#editor.keymap+1] = { 〜 }」と書くことで、editor.keymap というテーブルの最後に設定を追加しているのだろう…。
ショートカットキーの設定は、
コマンドの種類については、 _Scintillaのソレ を眺めて処理内容を想像しつつ試しに書いて動かしてみるしかないかな…。wxstc.wxSTC_CMD_コマンド名、と書くっぽい。
今回は以下のような設定を追加してみた。
-- font setting editor.fontname = "Consolas" -- editor.fontname = "MigMix 1M" editor.fontsize = 13 -- indent setting -- editor.tabwidth = 2 -- default editor.tabwidth = 1上記の例では、フォント種類、フォントサイズ、及び、インデント幅を設定している。記述してから ZeroBrane Studio を再起動したら設定が反映された。
設定内容については、以下が参考になる。
_Editor Preferences - ZeroBrane Studio
ショートカットキーも追加してみた。
-- add shortcut key editor.keymap[#editor.keymap+1] = {('E'):byte(), wxstc.wxSTC_SCMOD_CTRL, wxstc.wxSTC_CMD_LINEEND} editor.keymap[#editor.keymap+1] = {('K'):byte(), wxstc.wxSTC_SCMOD_ALT, wxstc.wxSTC_CMD_DELLINERIGHT} editor.keymap[#editor.keymap+1] = {wxstc.wxSTC_KEY_UP, wxstc.wxSTC_SCMOD_ALT, wxstc.wxSTC_CMD_MOVESELECTEDLINESUP} editor.keymap[#editor.keymap+1] = {wxstc.wxSTC_KEY_DOWN, wxstc.wxSTC_SCMOD_ALT, wxstc.wxSTC_CMD_MOVESELECTEDLINESDOWN}この例では、以下のショートカットキーを追加している。
- Ctrl + E : 行末まで移動
- ALt + K : 行末まで削除
- Alt + Up : 行を上に移動
- Alt + Down : 行を下に移動
このIDEは、 _Scintilla を利用しているようで、ショートカットキーの設定などは、Scintilla の設定その他が参考になる模様。
_Editor Preferences - ZeroBrane Studio
_KeyBindings - Scintilla Documentation
_KeyboardCommands - Scintilla Documentation
_[ZeroBrane Studio] Copy/move line keyboard shortcuts - zerobrane - FreeLists
_[ZeroBrane Studio] Re: Copy/move line keyboard shortcuts - zerobrane - FreeLists
「editor.keymap[#editor.keymap+1] = { 〜 }」と書くことで、editor.keymap というテーブルの最後に設定を追加しているのだろう…。
ショートカットキーの設定は、
{ キー種類, 修飾キー, コマンド }という形で並べていくのかなと。修飾キーの種類には、以下があるらしい。
- wxstc.wxSTC_SCMOD_CTRL
- wxstc.wxSTC_SCMOD_SHIFT
- wxstc.wxSTC_SCMOD_META
- wxstc.wxSTC_SCMOD_ALT
wxstc.wxSTC_SCMOD_CTRL + wxstc.wxSTC_SCMOD_ALTといった形で書くのかな。たぶん。試してないけど。
コマンドの種類については、 _Scintillaのソレ を眺めて処理内容を想像しつつ試しに書いて動かしてみるしかないかな…。wxstc.wxSTC_CMD_コマンド名、と書くっぽい。
◎ カラーテーマの変更。 :
カラーテーマというか配色を変更したいなと思ってググってみたら、以下が参考になった。
_Changing color theme in ZeroBrane Studio
ZeroBrane Studio のインストール場所に、cfg/scheme-picker.lua というファイルがあるので、ZeroBrane Studio で開いてみる。コメント部分に、色々なテーマ名が並んでいるので、それぞれをマウスでクリックしてみると色が変わるので…。これだな、と思ったテーマ名で、user.lua に以下のような感じで記述。
Notepad++ 風にしたい場合は、
_Changing color theme in ZeroBrane Studio
ZeroBrane Studio のインストール場所に、cfg/scheme-picker.lua というファイルがあるので、ZeroBrane Studio で開いてみる。コメント部分に、色々なテーマ名が並んでいるので、それぞれをマウスでクリックしてみると色が変わるので…。これだな、と思ったテーマ名で、user.lua に以下のような感じで記述。
styles = loadfile('cfg/tomorrow.lua')('Monokai') stylesoutshell = styles -- apply the same scheme to Output/Console windows styles.auxwindow = styles.text -- apply text colors to auxiliary windows styles.calltip = styles.text -- apply text colors to tooltipsこの場合は、Monokai を選んでる。
Notepad++ 風にしたい場合は、
styles = loadfile('cfg/tomorrow.lua')('NotepadPlusPlus')と書く模様。
◎ プラグインの追加。 :
以下から入手できるらしい。
_pkulchenko/ZeroBranePackage: Packages for ZeroBrane Studio (https://studio.zerobrane.com)
インストールの仕方は以下。
_pkulchenko/ZeroBranePackage: Packages for ZeroBrane Studio (https://studio.zerobrane.com)
インストールの仕方は以下。
- ZeroBrane Studio インストール場所の下にある packages フォルダの中に .lua を入れる。
- もしくは、~/.zbstudio/packages/ フォルダを作ってその中に .lua を入れる。
[ ツッコむ ]
以上、1 日分です。