Valley of Defilement

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

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することで再び表示できます
 
■ その他のアプリ
 

自作アプリ紹介


① イヤホン接続状態表示

  [ できること ]

  • イヤホンの接続状態(未接続 / 接続)を表示
  • イヤホン接続状態を通知バーに常に表示することも可能
  • メディア音量の変更

  f:id:leechmonger:20210526224120p:plain


ダークソウルIII トロフィーコンプリート補助

  [ できること ]

  • DARK SOULS IIIのトロフィーコンプリートに必要な指輪、魔術、奇跡、呪術を一覧表示
  • 入手したものにチェックマークを付けられる
  • 現在の達成率(%)を表示
  • 入手方法も記載しています

f:id:leechmonger:20210527224122p:plain

 

git diff、git show、git grep等を非対話的に使用する方法

掲題のそれを「ページャ」(pager)と呼ぶらしく、git の後ろにオプション「--no-pager」を付与することで、無効にできる(=最後まで出力するようになる。非対話的になる。)

  • git --no-pager diff
  • git --no-pager show
  • git --no-pager grep hoge

shellで自動化する際にハマったのでメモ。

【無料】AndroidでYoutubeをバックグラウンド再生する方法

Google謹製のYouTubeアプリはバックグラウンド再生できない(お金払えばできるみたいだけど)。

あるアプリを使えば可能となる。それが以下(Andoroid向け)。

ついでに動画再生開始時の広告も表示されなくなる。

<使い方>

アプリ起動時に表示されているYouTubeアイコンから飛ぶ。

あるいはurl欄で「YouTube」検索。