DevDeb-Apps [App/Game-Developer]

Androidアプリ開発などを行っています

【ドット絵】ひろはすドット絵講座の内容まとめ

ひろはす氏のドット絵講座を履修し、その内容をまとめたので以下に載せておきます。

ドット絵ソフト

aseprite:https://www.aseprite.org/
Piskel:https://www.piskelapp.com/

参考になるサイト

LOSPEC:https://lospec.com/
Spriters resource:https://www.spriters-resource.com/

動画リンク [ひろはすドット絵講座]

【TopDownEngine】3Dシステムに2Dキャラクターを載せようとして挫折した【Unity】

先日以下のような投稿をした。

この動画では分かりにくいが、Playerである棒人間が常にうぞうぞしており、これはDead状態の時に表示されるはずのアニメーションである。 原因は特定できていないが、特定する気もなくなり、3Dに2Dキャラクターを載せることの難しさを痛感し実現を諦めた次第である。 備忘として以下に、その実装状況を記録する。

全体

  • Scene:Minimal3Dをベースとしている
  • Prefab:Clonelをベースとしている

Animator

赤丸で囲った箇所が常に表示されている。デフォルトはDashに設定しているのに。

DeadのInspector

AliveとFallingDownHoleが常にFlaseなのだろうか? Clonelのアニメーションと同様の設定のはずだが何故か上手くいかない。

DashのInspector

DashについてはDashingフラグを見ている。 これもClonelと同様である。DashしたらDashが表示されてもいい気がするが…。

Animation

アニメーションはこんなかんじで2枚の絵を繰り返してるだけ。

Hierarchy

ヒエラルキーはこんなかんじ。 Rigidbodyが必要だった。各コンポーネントは3D向けのものである必要あり。じゃないと壁抜けできてしまったりする。

CharacterOrientation3D

Ability PermittedをOFFにしないと、PlayerのSpriteがあらぬ方向を向いたままとなる。ここハマった。


とまぁこんなかんじで、手に負えなそうなので2D on 3Dは挫折座礁頓挫と相成り、初学者は素直にKoala2Dベースの2Dゲームから取り掛かることとします。

Text MIDI Sequencer【Usage】【Android App】

The scale entered in the text becomes music.
For example "CCGGAAG-FFEEDDC-" becomes Twinkle, twinkle, little star.

f:id:leechmonger:20210806134028p:plain

■□■ How to use ■□■
For one note, you can specify the accidental (# or ♭), octave, and note length.
If not specified, it sounds by default (no accidental, octave is 4, length is quarter note).
There are rules in the order of specification, so please refer to the explanation image at the following URL.

https://leechmonger.hateblo.jp/entry/textmidisequencer_en
- Text MIDI Sequencer【Usage】【Android App】

■□■ Characters that can be used ■□■
(explanatory notes: [Handling] ← [Input characters])

▼ ==== Musical scale ==============================
【C】 ←【C C ど ド ド は ハ】
【D】 ←【D D れ レ レ に ニ】
【E】 ←【E E み ミ ミ ほ ホ】
【F】 ←【F F ぁ ファ ファ へ ヘ】
【G】 ←【G G ソ ソ と ト】
【A】 ←【A A ら ラ ラ い イ】
【B】 ←【B B し シ シ ろ ロ】

▼ ==== Rest ==============================
【rest】←【r R r R _ _ 、 , △ □】

▼ ==== Accidental ==========================
【♯】←【# # ♯】
【♭】←【♭ b b】

▼ ==== Octave ========================
【Octave0】←【0 0】
【Octave1】←【1 1】
【Octave2】←【2 2】
【Octave3】←【3 3】
【Octave4】←【4 4】
【Octave5】←【5 5】
【Octave6】←【6 6】
【Octave7】←【7 7】
【Octave8】←【8 8】
【Octave9】←【9 9】

▼ ==== Stretch the sound ============================
【Stretch the sound 】←【ー - ― ‐ - ~】

▼ ==== Eighth note ===========================
【Eighth note】←【' ′ ’】

▼ ==== Sixteenth note ==========================
【Sixteenth note 】←【" ”】

▼ ==== ignored ====================
【Ignored】←【Line feed Half-width space Full-width space】(This character cannot be inserted in the expression of one sound. Error example: "C -")

■□■ Sound length ■□■
The length of one note is determined by the stretch symbol and the eighth / sixteenth note.
Since it is a little difficult to understand, an example of specifying the length is shown below.

<Example>
C" … 1/16 (Sixteenth note)
C' … 2/16 (Eighth note)
C'-" … 3/16
C … 4/16 (Quarter note)
C-" … 5/16
C-' … 6/16 (Dotted quarter note)
C-'-" … 7/16 (Sub-dotted quarter note)
C- … 8/16 (Half note)
C--" … 9/16
C--' … 10/16
C--'-" … 11/16
C-- … 12/16 (Dotted half note)
C---" … 13/16
C---' … 14/16 (Sub-dotted half note)
C---'-" … 15/16
C--- … 16/16 (Whole note )

■□■ Button description ■□■
The function of some of the buttons is explained.

|▷ … Play from cursor position
≪ … Delete the character to the left of the cursor (Back Space)
≫ … Delete the character to the right of the cursor
▼ … Enter a line break
← … Move the cursor to the left
⇒ … Move the cursor to the right

■□■ Notes ■□■
- Currently, only single notes are supported. Chords will be supported in the future
- Since the sound source built into the device is used, some sounds may not be produced depending on the device you are using. In particular, it seems that some octave 9 sounds do not sound.
- Sample music is displayed only when the app is started for the first time.

■□■ Future ■□■
The following functions will be added.
- Save / Load
- MIDI file output
- Undo / Redo)
- Tone change
- Switching with or without input button

 

テキストMIDIシーケンサー【使い方】【Androidアプリ】

テキストで入力した音階がそのまま音楽になります。
例えば「ドドソソララソーファファミミレレドー」と書けばきらきら星になります。

 

f:id:leechmonger:20210806134024p:plain

■□■ 使い方 ■□■
1つの音に対し、変化記号(♯や♭)、オクターブ、音の長さを指定できます。
指定しない場合はデフォルト(変化記号なし、オクターブは4、長さは4分音符)で鳴ります。
指定する順番にはルールがありますので、このページにある説明画像をご参照ください。

■□■ 扱える文字 ■□■
(凡例:【扱われ方】←【入力文字】)

▼ ==== 音階 ==============================
【ド】 ←【ど ド ド C C は ハ】
【レ】 ←【れ レ レ D D に ニ】
【ミ】 ←【み ミ ミ E E ほ ホ】
【ファ】←【ふぁ ファ ファ F F へ ヘ】
【ソ】 ←【そ ソ ソ G G と ト】
【ラ】 ←【ら ラ ラ A A い イ】
【シ】 ←【し シ シ B B ろ ロ】

▼ ==== 休符 ==============================
【休符】←【r R r R _ _ 、 , △ □】

▼ ==== 変化記号 ==========================
【♯】←【# # ♯】
【♭】←【♭ b b】

▼ ==== オクターブ ========================
【オクターブ0】←【0 0】
【オクターブ1】←【1 1】
【オクターブ2】←【2 2】
【オクターブ3】←【3 3】
【オクターブ4】←【4 4】
【オクターブ5】←【5 5】
【オクターブ6】←【6 6】
【オクターブ7】←【7 7】
【オクターブ8】←【8 8】
【オクターブ9】←【9 9】

▼ ==== 伸ばす ============================
【伸ばす】←【ー - ― ‐ - ~】

▼ ==== 8分音符 ===========================
【8分音符】←【' ′ ’】

▼ ==== 16分音符 ==========================
【16分音符】←【" ”】

▼ ==== 無視される文字 ====================
【無視される】←【改行 半角スペース 全角スペース】

■□■ 音の長さ ■□■
1音の長さは、伸ばす記号と8分音符/16分音符により決定されます。
若干分かりづらいため、以下に長さ指定の例を記載します。

<例>
C" … 1/16 (16分音符)
C' … 2/16 (8分音符)
C'-" … 3/16
C … 4/16 (4分音符)
C-" … 5/16
C-' … 6/16 (付点4分音符)
C-'-" … 7/16 (副付点4分音符)
C- … 8/16 (2分音符)
C--" … 9/16
C--' … 10/16
C--'-" … 11/16
C-- … 12/16 (付点2分音符)
C---" … 13/16
C---' … 14/16 (副付点2分音符)
C---'-" … 15/16
C--- … 16/16 (全音符)

■□■ ボタンの説明 ■□■
ボタンの一部について機能を説明します。

|▷ … カーソルの位置から再生
≪ … カーソルの左の文字を削除(Back Space)
≫ … カーソルの右の文字を削除(Delete)
▼ … 改行を入力
← … カーソルを左に移動
⇒ … カーソルを右に移動

■□■ 留意事項 ■□■
・現状、単音のみ対応しています。和音(コード)については今後対応予定です
・デバイス内蔵の音源を使用しているため、ご使用のデバイスによっては発音できない音がある可能性があります。特にオクターブ9の音は鳴らない音があると思われます。
・アプリ初回起動時のみ、サンプル音楽を表示します

■□■ 今後 ■□■
以下の機能を追加予定です。
・保存機能
MIDIファイル出力
・戻る/進む(Undo/Redo
・音色変更
・入力ボタン有無切り替え

AndroidアプリでMIDIファイル(SMF)を作成&再生するアプリを作る part.1

やりたいこと

Androidアプリで、任意のテンポ・音階のMIDIファイルを作成&再生したい。

参考にしたサイト

上記のサイトを読んで分かったこと

  • できそう
  • MIDIファイルはバイナリファイル。バイナリファイルをゴリゴリ作る処理となる(APIとかないの?)
  • 作ったファイルをMediaPlayerで再生させる
  • JetCreatorというAPIもあるようだが今回の目的には適していない気がする(参考
  • SMFとは・・

    Standard Midi File スタンダードMIDIファイル(Standard MIDI File、SMF)は、MIDI用ファイルフォーマットの一つである[1][2][3][4]。Format0/Format1/Format2の3タイプが存在する。一般的に用いられている拡張子は .mid。標準MIDIファイルとも呼ばれる。(Wikipedia

  • 今回の目的だとFormat0でよさそう

環境

参考サイトのコードが実行可能かやってみる

  • Nexus5 (Android 6.0.1)については以下の修正を行ったら動いた
    • ファイルパスをパッケージのパスに合わせて修正
fis = new FileInputStream("/data/data/<パッケージの参照を記載>/files/temp.mid");
  • Pixel 4a (Android 11)は上記に加え以下の修正が必要だった
    • MODE_WORLD_WRITEABLE は Android 6.0 以降で使用禁止となったモードらしいので変更(の割には Nexus5 (Android 6.0.1) で動いたけど)
<git diff>
@@ -48,7 +48,7 @@ public class MidiFileWriter {

         try {
             // ファイル作成
-            fos = context.openFileOutput(flname, Context.MODE_WORLD_WRITEABLE);
+            fos = context.openFileOutput(flname, Context.MODE_PRIVATE);
  • AndroidManifestで権限付けたりとかは不要だった

次回は

  • コードをよく理解していないので、ちゃんと読んでみる。
  • 再生させる音階を動的に生成したい。

【使い方・ヘルプ】イヤホン接続状態表示アプリ

■ アプリの概要
イヤホンジャックにイヤホンが接続されているか否かを表示する、Android向けのアプリです。
メディア音量(音楽やアプリの音量)を変更する機能も付いてます。
 
■ インストール方法
以下のURLからインストールしてください
 
■ 使い方
  • イヤホンの接続状態を確認する
アプリ画面、又は通知バーで接続状態を確認できます。
通知バーで接続状態を確認するには、アプリ画面の「通知バー表示」をONに設定してください。
 
  • 音量を変更する
アプリ画面下部より音量バーを操作
 
■ 不具合報告・ご要望
不具合やご要望につきましては、以下のページのコメント欄にて受け付けております。
 

【既知の不具合】

  • スマホのメモリが逼迫すると、通知バーの接続状態が消えてしまう
  •  → アプリ画面より「通知バー表示」をOFF/ONすることで再び表示できます
 
■ その他のアプリ