投稿

10月, 2020の投稿を表示しています

[UTAU] Garagebandで作ったボーカルメロディーをUTAUに読ませる

イメージ
UTAUにはメロディーとしてMIDIデータを読み込む機能がありますが、GaragebandそのものにはMIDIを吐き出す機能がありません。 以下の手順でMIDIに変換します。 ---------------------------スポンサー--------------------------- -------------------------------------------------------------------- (リージョンが飛んでいる場合)Garagebandのボーカルのトラックを選択して、編集>リージョンを結合 ファイル>リージョンをループライブラリに追加 → .aifファイルが、多分$HOME/Library/Audio/Apple\ Loops/User\ Loops/SingleFiles/らへんに吐き出される。 ターミナル(mac標準の黒いアイコンのコマンドアプリ)で open $HOME/Library/Audio/Apple\ Loops/User\ Loops/SingleFiles/とするとFinderで表示される。 GB2MIDIというフリーツールをダウンロードして開き、「run」もしくは「実行」をクリックし、さきほどの.aifファイルを投入   .midファイルができる(.aifと基本同じ場所)ので、UTAUからファイル>インポートで読み込む  注:インポート後、一部の音がうまく読み込まれず消える場合があります。Garagebandの時点で音が重なっていたり、短すぎたりすると起こるような気がします。

[UTAU] Mac版UTAU (UTAU-Synth)で自作ライブラリ [音MAD]

イメージ
自分用メモ。 Mac用のUTAUは、これまでのWindows版と違って、無音を手で挿入する必要がなかったり、一部機能がないなど、いくつか異なる点があります。  自作ライブラリは、基本的に以下の工程で導入されます。 各音のwaveファイルの用意 音声素材(アカペラや独白のように、BGM等のノイズのないものが望ましい)を用意し、生音データ(例えば「あ.wav」ファイル)を五十音の各音に関して切り出してくる。他人の音声ファイルを使う場合には 著作権等には十分注意。  これはAudacity(私が使用したのはver. 2.3.2)というフリーツールを使うのが定石。mp3ファイルも読んでくれるので、  音声ファイルを読ませて、上のバーの部分で6つのアイコンのうち"I"の字型の「選択ツール(F1)」が選択されていることを確認して、   波形を範囲ドラッグ→コピー、波形表示枠外クリック後貼り付けで新たにトラックができる。  いくつかトラックを作ったら、元音源だけミュート状態にして、ファイル>書き出し>複数ファイルの書き出し。   waveファイルをまとめて入れたフォルダを作って、$HOME/Library/UTAU/voice/に入れる フォルダ名は「〇〇.utau」とすることでUTAUがライブラリとして認識する。 ただしこれをするとフォルダの中身をfinderで見れなくなったりするので、戻したい(.utauを外したい)時は、finderで右クリック、「情報を見る」から「名前と拡張子」を変更。 もしライブラリの名前やアイコンを入れたければ、適当に画像を入れて、以下の内容のテキストファイル(名前は必ず"character.txt") name=ライブラリにつける名前 image=画像の名前 も作ってフォルダに一緒に入れておく。  ライブラリ選択 「UTAU-Synth」起動、左上の「デフォルト」のアイコンをクリックして、「more」からライブラリ選択できる。ツール>原音設定ツールから原音の設定ができる。波形の左からドラッグすると選択モードに入り、子音の部分を指定したりできる。 あとは曲を作って調整するだけ!プラグイン等も活用すると調整が楽になります。

[Unity] 並行処理とclass

イメージ
簡単なゲームであればMainCameraにアタッチしたスクリプト一個ですべてのオブジェクトの挙動を管理できるかもしれませんが、この方法で困るのが例えば   あるオブジェクトが時間変化している間に他の動作もしたい時 。  選択したカードを一定時間大きく見せたい場合を例としてあげると、大きく見せている間に他のカードの選択を受け付けるなどの並行動作を処理するのが難しい。というかコードがやたら複雑になっていく。 そこで、今までどう使えば良いか分からず敬遠していた クラス分け が有用になってきます。 例えば、一定時間だけ自動的にカードを大きくし、かつ前面に出しておきたい時、「big.cs」というスクリプトを作り、「big」というクラスを作ります。 using System.Collections; using System.Collections.Generic; using UnityEngine; public class big : MonoBehaviour { public float life_time = 1.0f, xx=0.0f,yy=0.0f,zz=0.0f; float time = 0f; public bool a = false; public void Switch (){ time = 0; a = true; Vector3 sc = gameObject.transform.localScale; xx = sc.x; yy = sc.y; sc.x *= 2.0f; //2倍の大きさにする sc.y *= 2.0f; gameObject.transform.localScale = sc; Vector3 pos = gameObject.transform.position; zz = pos.z; pos.z -= 5.0f; //zを-5(前に出す) gameObject.transform.position = pos; } void Update () { time += Time.deltaTime; if (a && time > life_time) { Vector3 sc = gameObject

[Unity] 自作webゲームをGitHubを使って無料でアップロード

イメージ
ここでは例として自分で作った神経衰弱ゲームをwebにアップロードした過程を追っていきます。  GitHubというサービスを利用させていただくことで、自前でサーバを持っていない人も無料でゲームをアップロードできます。 ( https://qiita.com/kenta71/items/c32760e1cc2ba01e8f9a を参考にさせていただきました。) アカウントを持っていない人は、適当なID、メールアドレス、パスワードを入力して登録してください。下のような画面は、無料の場合は「for free」の方にチェックが付いていることを確認して、そのまま「Continue」で大丈夫です。    メールアドレスの認証も済ませたら、new repository(またはstart〜)から、適当な名前でレポジトリを作成します。    上の図で「Create repository」を押したら、下の図の左上にある「Set up in Desktop」をクリック。    G itHubが初めての場合、       この図のように、デスクトップアプリケーションのダウンロードを求められるので、ダウンロードしてzipを解凍(普通にクリックすれば通常は勝手に展開してくれます)。デスクトップアプリケーションを開くと、まずサインアップを求められるので、先ほど登録したIDとパスワードでログインします。さらに、公開情報としてニックネームとアドレスの記入を求められるので、見られても良いものを記入。    最後に、匿名でGitHubに情報を提供してくれませんか?というお決まりのメッセージが出るので、これは個人の好みで。       そしたら、再び「Create New Repository」から、適当な名前でレポジトリ(webにアップするフォルダに対応させるために、今使っているパソコンの中に作るフォルダ)を作成します(初めての方はメールアドレス認証後に入力した名前と同じもので大丈夫です)。ここで変えるのは「Name」だけでok。 そして、 のマークをクリックし、「New」ボタン→「gh-pages」という名前で新しくブランチ(枝。サブフォルダのような意味)を作成します。  次に、Unityのメニューバーから「File」→「Build Settings」で、WebGLを選択して「Build」します。

[Unity] 効果音をつける

イメージ
今日は効果音をつけようと思います。  今回は神経衰弱ゲームで カードをめくる時に「ペラッ」ていう効果音をつけたい 。  結論から言うと、メインカメラにつけたスクリプトでも各カードに貼り付けたスクリプトでもどちらでも良いので、 カードをめくった時に実行される関数部分に、 (「Audio Source」をコンポーネントに持つオブジェクト) .GetComponent ().PlayOneShot(適当な名前); と入れておく 。ここで「OneShot」は、他の音が再生されても最後まで一回分全部再生されます。「Audio Source」をコンポーネントに持つオブジェクト、というのは下の方を読めばなんのことかわかります。 で、「適当な名前」と書いたのは自分でつける変数名で、上の行をかいたスクリプトの上(関数の外)に、 public GameObject 適当な名前; などと定義しておいて、その変数に音声ファイルを割り当てればいい。 割りあて方は、そのスクリプトがアタッチされているオブジェクトをクリックして、「Inspector」タブのそのスクリプトの部分にその値を入力する欄ができるので、そこに音声ファイルをドラッグ&ドロップでいける。    ちなみに、これだけではまだ音はなりません。 Unityには「Audio Listener」と「Audio Source」というコンポーネントがあります。つまり、「音を聞く人」と「音を出す人」ということです。   なぜこんなめんどくさい仕様なのかというと、今作っている神経衰弱は2Dゲームですが、Unityが3Dゲームも作成できるツールだから。 足元でサラサラ流れる小川の表現には、小川に「Audio Source」、プレイヤーに「Audio Listener」をアタッチ。 耳元をかすめていく銃弾の表現には、銃弾に「Audio Source」、プレイヤーに「Audio Listener」をアタッチ。  まあ今は2Dゲームだしリアルさもあまり重要じゃないので、「Audio Listener」も「Audio Source」も適当なのにくっつけますが...。ちなみに「Audio Listener」はデフォルトでメインカメラについてます。 

[Unity]BGMを流す+Audio Mixerによる音量調節

イメージ
効果音をつける では効果音を入れましたが、なんか寂しい感じ。 と思ったら、BGM入れていませんでした。 BGMは常に流しっぱなしにしていれば良いので効果音よりもある意味簡単。 一番手っ取り早いのは、「GameObject」→「Audio」→「AudioSource」として、「Inspector」タブの「AudioClip」の欄に音源を(もちろん「Project」タブにドラッグするなりして"インポート"してから)ドラッグすれば、シーン再生直後からBGMが流れるようになります。 BGMは自分で作っても良いですが、今回は FREE BGM DOVA-SYNDROME さんからお借りしてきました。 一応音は出せることはわかりましたが、ボリューム調整機能もつけたいですね。 個々に調節するのはAudioSource.Volumeをスクリプトで変更したりすればできそうですが、「効果音、BGM合わせた全体の音量」を調節させたい時はどうするのでしょう。 と、いうわけで、新たな仲間を呼びます。その名も 「AudioMixer」 。  まず、「Assets」→「Create」→「Audio Mixer」として、Audio Mixerを作ります。      次に、「Window」→「Audio Mixer」で、「Audio Mixer」タブ(ウィンドウ)を新たに召喚。      こんなタブが表示されます↓     このタブの「Groups」の横の「+」をクリックして、「BGM」「SE」それぞれのグループを作成します。 この時「SE」が「BGM」の子になっていたらドラッグして上に持って行ってあげれば同列階層になるはず。ちなみに「Master」は全ての親なので「Master」より階層を上にはできません。  できたら、Hierarchyタブから先ほどのBGM用のAudio Sourceを選択して、「Inspector」の「Output」欄にAudio Mixerの「BGM」グループをドラッグアンドドロップ。 で、同様に、効果音のAudio SourceにもAudio Mixerの「SE」グループをドラッグアンドドロップして準備完了。   ここまでやってふと、 「あれ?BGM鳴らなくなってる?」 ということでBGMの「Audio Source」の「Inso

[Pythonアプリ開発] Kivyを使ったpythonインターフェース [導入編]

イメージ
ここではプログラミング言語としてpythonを使い、別ウィンドウでタップやドラッグなどによって操作可能なデスクトップアプリを作ることを目指します。  注:このページの想定読者層 ・macOS(or Linux/Unix)ユーザ、もしくはそれに準ずる環境構築ができている ・pythonを導入済みで、ある程度触ったことがある(pythonは有名な高級言語で、参考ページも豊富なため、それらを参照しながら読むことはもちろん可能) アプリ開発のためのライブラリは、Tkinter、Kivy、PyQt、wxWidgets、wxPythonなど様々ありますが、ここでは他ライブラリと組み合わせてWindows, Mac, Androidと手広く応用可能な「Kivy」を使っていきます。 Kivyは、コマンドライン(macのターミナル)から、 pip install kivy でインストール可能です。 この時「Kivy-Garden」も一緒にインストールされます。 Kivy-Gardenを使うと、様々なモジュールが使用できるようになります。 例えば、 ・タブ切り替え ・画面遷移アニメーション ・数値の選択(ダイヤル方式やバーなど多種) ・タップ・ドラッグ操作補助 などといった基本的なものはもちろん、さらには ・メディアプレーヤー ・3DCGデータ表示 など多少マニアックなものまであります。 モジュール一覧: https://github.com/kivy-garden これらのモジュールを使う際には、再びコマンドラインから garden install androidtabs と打つことで使えるようになります(上の例ではandroidtabsモジュールをインストール)。 サンプルプログラム: from kivy.app import App from kivy.uix.boxlayout import BoxLayout from kivy.uix.button import Button from kivy.garden.androidtabs import * class MyTab(BoxLayout, AndroidTabsBase):     pass class MyApp(App):     def build(self):         android_tabs = A

TWRP公式サポートされてないAndroid端末でシステムインストールした話

イメージ
TWRPはandroidのroot化に関連して注目されることが多いですね。 公式サポートされてないだけで地獄と化すことを私は知りませんでした。 以下は丸4日に渡る私の悪戦苦闘の記録です。あくまで参考程度に、このような操作は自己責任で行ってください。 (バックアップはあらかじめ取っておこう。特にブートローダーをアンロックしてない場合は初期化不可避。) ---------------------------スポンサー--------------------------- -------------------------------------------------------------------- ちなみに私が今回使用したのはASUS Zenfone Live (L1)。新品でも1万円代で、とても良い仕事をしてくれるけれど、TWRP公式サポートしてない機種です。 システムインストールは、要するにユーザーアプリを/system以下に入れれば良い(システムをいじって動かなくしてしまったりセキュリティ上信頼できないアプリを入れるのを防ぐため、普段はロックがかかっています)から、流れとしては、 1、PCに adb・fastboot を導入しておく (リンク先はwindows用。macの場合android studioアプリをインストールし、パスをターミナルアプリのコマンドラインから export PATH=$PATH:/Users/<自分のユーザー名のフォルダ>/Library/Android/sdk/platform-tools することでadbが入る) 2、ブートローダーのアンロック 3、TWRPをrecoveryへ焼く(ちなみにTWRPの言語は設定から変更可能) 4、TWRPファイルマネージャーで/system以下へのファイル移動 の、つもりだった。実際どうだったかは以下の通り。 1、そのまま。DLしてきてディレクトリにパスを通す。検索すれば良い解説ページがたくさんある。 2、 まずブートローダーのアンロックは避けられなかったです。 非公式の方法だとアンロック解除できる方法もあるらしいけど、自分は公式の方で行く。なぜなら変ないじり方されないだろうし安心だから。まあ当然サポートは切れるけど。 ASUS

[Unity] カーソルでとびとびにメニュー選択

イメージ
 今回は下の画像のような、メニュー場面の選択などでよく使うカーソル選択用のスクリプトを書きました 上下キーで上下に動き、スペースキーで決定します (書き換えれば左右や、他のキーやボタンで動かすことも可能) テキストや背景画像の入れ方は こちらの記事 が参考になると思います。 手順は簡単で、 1、カーソルにしたい画像を「Scene」タブにドラッグ&ドロップ 2、カーソルを一番上の項目に位置合わせしておく 3、下のコードの「function」のところに項目選択時にさせたい動作を設定 4、その画像が選択されている状態で、コードを「inspector」タブにドラッグアンドドロップ 5、パラメータを適当に設定(下参照) using System.Collections; using System.Collections.Generic; using UnityEngine; public class main : MonoBehaviour {     int Pos = 1;     public int nummenu;     public float linewidth; // Use this for initialization void Start () { }     // Update is called once per frame     void Update()     {         if (Input.GetKeyDown("down") && Pos != nummenu)         {             Vector3 tmp = this.transform.position;             this.transform.position = new Vector3(tmp.x, tmp.y - linewidth, tmp.z);             Pos += 1;         }         else if (Input.GetKeyDown("up") && Pos != 1)         {             Vector3 tmp = this.transform.position;