DevDeb-Apps [App/Game-Developer]


Privacy Policy

Privacy Policy

DevDeb built the apps as an Ad Supported app. This SERVICE is provided by DevDeb at no cost and is intended for use as is.

This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.

If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.

The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at apps unless otherwise defined in this Privacy Policy.

Information Collection and Use

For a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retained by us and used as described in this privacy policy.

The app does use third-party services that may collect information used to identify you.

Link to the privacy policy of third-party service providers used by the app

Log Data

I want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.


Cookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.

This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.

Service Providers

I may employ third-party companies and individuals due to the following reasons:

  • To facilitate our Service;
  • To provide the Service on our behalf;
  • To perform Service-related services; or
  • To assist us in analyzing how our Service is used.

I want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.


I value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.

Links to Other Sites

This Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.

Children’s Privacy

These Services do not address anyone under the age of 13. I do not knowingly collect personally identifiable information from children under 13 years of age. In the case I discover that a child under 13 has provided me with personal information, I immediately delete this from our servers. If you are a parent or guardian and you are aware that your child has provided us with personal information, please contact me so that I will be able to do the necessary actions.

Changes to This Privacy Policy

I may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.

This policy is effective as of 2023-07-08

Contact Us

If you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at

This privacy policy page was created at and modified/generated by App Privacy Policy Generator






Spriters resource:

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



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


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




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


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




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


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.


■□■ 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.
- 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.

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






■□■ 使い方 ■□■

■□■ 扱える文字 ■□■

▼ ==== 音階 ==============================
【ド】 ←【ど ド ド 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分音符】←【" ”】

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

■□■ 音の長さ ■□■

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)
▼ … 改行を入力
← … カーソルを左に移動
⇒ … カーソルを右に移動

■□■ 留意事項 ■□■

■□■ 今後 ■□■

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





  • できそう
  • 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で権限付けたりとかは不要だった


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