SSブログ
プログラミング ブログトップ

自動作曲アプリの制作④ [プログラミング]

Java ScriptによるWebアプリのプログラミングの4回目。今回はパターンの機能を仕上げ、また少しGUIのデザインを始めました。

2パートの8音の繰り返しの演奏が基本になってますが、そこに当てはめる音程・音価(音符の長さ)・音量の基準値を設定できるようにしました。3連符も選択できるようにしました。また繰り返す音数を変えられるようにしました。これで、演奏に変化が出てきたと思います。

パラメーターが増えて画面が乱雑になってきたので、GUIのデザインを決めて配置を始めました。こちらはCSSを使った作り込みますが、本格的なCSSも久しぶりなので思い出しながらで苦戦しました。

操作はネットで配布されているロータリーノブを使ってみました。シンセっぽい画面になりますね。でも色も含めてもうちょっとカッコよくしたいな〜と思ってます。まだまだ、基本的なデーター構造などで苦労してますが続けていきます!


リンクはこちら → https://youtu.be/dQR4Vi3NdTU

nice!(13)  コメント(0) 
共通テーマ:音楽

自動作曲アプリの制作③ [プログラミング]

Java ScriptによるWebアプリのプログラミングの3回目。今回はパートを2つにして、少し音楽っぽい演奏になってきました。

前回までの8音の繰り返しパターンは継続してますが、そこにランダムな要素などを加えて変化が付くようにしました。とりあえず音程だけです。このままだと不協和ばかりなので、強制的に音階(スケール)に合わせる機能をつけました。音階はいくつかプリセットを作りました。

2パートにしたので、今回の動画はベースとメロディーっぽくしてみました。途中からメジャースケール→マイナースケールと切り替えてます。ちょっと音楽っぽくなってきたと思います。

プログラミングの技量的には完成させる見込みが立ってきましたが、残りの機能の追加の他にGUIのデザインや各パラメーターの音楽的な調整など、やることは盛りだくさんです。地道に続けていきます。


リンクはこちら → https://youtu.be/xnFqUoj8j9o

nice!(15)  コメント(0) 
共通テーマ:音楽

自動作曲アプリの制作② [プログラミング]

Java ScriptによるWebアプリのプログラミング、前回の続き。前回の8音の繰り返しのままですが、音の長さや強弱も変えられるようにしました。

前回はJava Scriptでどのくらいのことができるかの確認としてあれこれと機能を調査しながら3日ほどで作りました。およそつかめてきたので、アプリ全体の構想を練ってアルゴリズムやデーター構造を考えました。

それに合わせて前回作ったものをリファインしていったのですが、じっくりと1週間以上かかりました。いろいろな機能を同じフォーマットで扱えるようなベースを構築するのがプログラミングの一番難しいところだと思います。しばらくぶりで感が鈍っているってこともありますが。

と言った感じで、あまり進んでないですが、長さや強弱がつくと単純な8音の繰り返しでもフレーズにちょっと表情がつきますね。こんな感じです。


リンクはこちら → https://youtu.be/mEvKN_GyolE

nice!(23)  コメント(0) 
共通テーマ:音楽

自動作曲アプリの制作開始 [プログラミング]

また、Java ScriptによるWebアプリのプログラミングを始めました。今回は本格的な音楽アプリです。自動作曲と言うかフレーズ生成機みたいのを作ろうとしてます。完成までに時間がかかりそうなので、途中経過を書いていきます。

20年ぐらい前、Maxと言う音楽用のプログラミングアプリにハマっていろいろな物を作りました。その時、物凄く凝った自動作曲アプリを作り、実際にこれで曲を作り3rdアルバムに入れました。5曲目と8曲目ですが参考に再アップしときます。どちらもピアノパートはほとんど手直しなしでそのアプリの自動演奏です。

Concerto for space-time #1

Concerto for space-time #2

良く出来たアプリでしたが操作がちょっと難しかったです。もうちょっと直感的に扱えるアプリに作り直したいな〜と長年気に留めてました。で、今回、Java ScriptでオーディオやMIDIが扱えることが分かりWebアプリでこれを実現しようと思ったわけです。

と言うことで、Java Scriptのお勉強をしながら作り始めました。前回のBluetoothMIDIも難しかったですが、やっぱり今回もしょっぱなから苦戦してます。

まずはこんな感じ。スライダーで演奏パターンを決めて8音を繰り返します。まだ、全然、曲っぽくないですね。どんなアプリになるか? そもそも完成するのか? 乞うご期待です!


リンクはこちら → https://youtu.be/CUE5fNVHg0U

nice!(20)  コメント(0) 
共通テーマ:音楽

Mac操作の自動化 [プログラミング]

先週の自作アプリ(スマホ用Logic Proコントローラー)関連でMacのちょっとした自動化にチャレンジしました。使ったのはMacのユーティリティーの”Automator”と”ショートカット”です。備忘録を兼ねて記事にしてみます。

先日、自作したアプリはBluetooth経由でスマホからMacへMIDI(BLE-MIDI)を送信するものでした。Bluetoothなので両者をペアリングする必要があります。通常のBluetoothだと最初にペアリングをすれば次回からは自動でペアリングしてくれますが、BLE-MIDIの場合、毎回、ペアリングをする必要があります。

音声の転送などの一般的なBluetooth接続と区別するために、そういう仕様になっているようです。スマホを持ってMacから遠くへ離れると接続が切れてしまうので、度々のペアリングがちょっと面倒くさいです。と言うことでMac側の接続操作を半自動化してみました。

まず、次の一連の操作を”Automator”に記録します。
 ・”Audio MIDI設定”ユーティリティーを起動する
 ・”Bluetooth構成”のパネルを開く
 ・ペアリングを開始するための”アドバタイズ”ボタンをクリックする

”Automator”の記録結果はこんな感じ。起動はデフォルトから選択、残りの二つは実際に自分でマウスでの操作をして記録します。

Automator

次に、”Automator”を記録したファイルを”ショートカット”のウインドウへドロップして登録します。そして、詳細メニューで”メニューバーにピン固定”にチェックを入れます。

ショートカット

これでメニューバーから一発で接続の操作をすることができるようになります。

メニューバー

自動で”Audio MIDI設定”が開いて操作されます。

Audio MIDI設定

と言うことで、初めてMacの自動化ツールを使ってみました。昔々からあるApple Scriptから派生した機能のようですが、こういうスクリプト系の機能はいろいろと物足りなくて微妙ですね。今回ももうちょっと作り込みたかったけどできないことが多くて諦めました。プログラミングの方が自分には向いてるかな?

nice!(14)  コメント(0) 
共通テーマ:音楽

スマホ用Logicコントローラー(自作アプリ) [プログラミング]

先週の制作記事の続き。スマホから無線(Bluetooth)でMacのLogicをコントロールするアプリが完成しました。使ってみるとワイヤレスで手元に置けてとても便利。曲作りがさらに楽しくなりそうです。

完成版はこちら。”Connect”のボタンでMacとBluetoothを接続します。8つのボタンでMIDIノートをBluetoothで送信しLogicの録音や再生などをリモートコントロールします。

BLE_MIDI 3

ちょっとデザインに凝ってみました。ボタンにタッチすると光ります。

BLE_MIDI 4

Mac側は”Audio MIDI設定”で接続をすると”MIDIスタジオ”内にスマホがBluetooth MIDIデバイスとして登録されます。

BLE_MIDI 5

Logicは”キーコマンド”→”割り当てを編集…”→”コントロールサーフェース”で対応する操作にMIDIノートを登録します。

BLE_MIDI 6

今回作ったアプリはいわゆるWebアプリです。Webページ(HTMLファイル)なのでブラウザで開いて使います。Bluetoothがあればスマホ以外でも使えるはずです。かなり汎用性があるはずですが、まだBluetooth MIDIの普及はこれからなので自分の環境(Andoroidoスマホ+Chrome)以外の作動は不明です。

と言うことで、久しぶりのプログラミングは成功しました。忘れてたHTML/CSSとJava Scriptも復活したし、今後もたまに作っていこうと思います。

nice!(15)  コメント(0) 
共通テーマ:音楽

プログラミング:Bluetooth MIDI [プログラミング]

久しぶりにブログラミングを始めました。スマホからBluetooth経由でMacのLogic Proを遠隔操作するアプリを作ろうとしてます。なかなかの難易度に挑戦しようとした経緯と途中経過です。

曲作り中、特にギターなどの演奏中はミニ鍵盤のCasio GZ-5をリモート・コントローラーとして使ってます。これで事は足りてるのですが、ミニ鍵盤とは言えあっちこっちと取り回すにはちょっと大きい。Bluetoothのミニキーボードをトライしてみたけどちょっと役不足(詳細はこちらの記事)。

LogicなどのDAWアプリを外部からコントロールする機器はいろいろとありますが、かなり高価でしかも無線接続の機器は出始めでまだ少ないです。i-Phone、iPadがあればLogic専用の無料アプリがありますが、我が家にはiPadが1台しかなく自分が専有できません。Androidスマホのアプリを探しましたが、良さそうなのはのはありませんでした。

で、調べているうちにJava ScriptにBluetoothのMIDI(BLE-MIDI)規格があることが分かりました。つまりWebページから他の機器へBluetoothでMIDI信号を送受信することができます。Webのプログラミングなら職業訓練校で習ったので(多分)バッチリです。で、さっそく始めたものの、、、

BLE-MIDIはまだ新しい規格のためか解説記事は基礎的なものが多く詳細不明。サンプルコードもちゃんと動かないものばかりでした。結局、英語に苦戦しながらJava Scriptの言語定義やBLE-MIDIの規格書などを紐解く作業からになりました。

また、BLE-MIDIに限らず、Androidスマホ上のhtmlファイルをブラウザ(Chrome)で動かすにも制約があって、こちらも解説記事が見つからずに試行錯誤しました。デバッグの環境を整えるのも苦労しました。

リモートとして使っているGZ-5。
主にギターの録音時に使う8つの機能を鍵盤に割り当ててます。
CASIO GZ-5

プログラミング中のJava Script。
アロー関数やプロミスなど知らない機能満載で苦戦しました。
BLE_MIDI 1

作成中のスマホの操作画面。GUIデザインはこれから。
ちゃんとLogicを無線で遠隔操作できました。
BLE_MIDI 2

と言うことで、3日間、どっぷりやって何とか基本的な機能が完成しました。後は使い勝手を考えながらGUIのデザインしていきます。

nice!(15)  コメント(0) 
共通テーマ:音楽
プログラミング ブログトップ