かんぷれのソースをカスタマイズして、私家版ファーム作ってたのしんでるのですが、公式版でも実装してくれると嬉しい機能の要望いくつか。
私家版は以下のgithubにおいてあります。
https://github.com/nobynobynoby/KANTAN_Play_core-nori-fork
・自動演奏の一時停止機能
現在、自動演奏中の自動演奏停止は右上ノブ押下などで行っていますが、それを押すと、自動演奏停止と共に、自動演奏モード解除、および発声の完全停止が行われるようです。
演奏の途中でいったん自動演奏を停止させて、再開させたいと思った場合、停止時に演奏がぶつ切りになる、および再開するには自動演奏モード変更ボタンを押さなければならない、の2点を解消したいです。
私家版では、右上ノブの動作を、
押下時:自動演奏停止(自動演奏モードは自動演奏待機のまま)
リリース時:オールノートオフ
という形に機能変更しています。
・自動演奏時の#♭ボタンのキープ機能
自動演奏時にたとえば3♭ボタンで演奏しようとすると、このボタンは押しっぱなしにする必要があります(リリースするとそこから3♭じゃなく3で演奏されちゃう)
これが3ボタンだと、リリースしてもその3のまま演奏される(自動演奏だから当たり前)ので、同じような操作のつもりでも、挙動が異なります。自動演奏の際は♭リリースしても♭のまま演奏が続くようにしたいです(自動演奏じゃない場合はあまり問題にならないですが、ステップ長いと同じように違和感あるかも?)
私家版では、♭をリリースしても♭維持。他のノートボタンが押された際に、♭が押されてない状態の場合のみ、♭キャンセルとしてます。
・オンコード時の#♭独立化
現状、#♭は、オンコード演奏の際にはルートとコード、どちらにも#♭ついちゃうので、3〜/6♭のボタンを用意してもそもそも弾けませんこれらを弾けるように、内部的にベース部の#♭をコード部の#♭と分けてほしいです。
私家版はでは分離してますが、単体の#♭は悩ましいところ(ベース側には効かない設定)
>>オンコード時の#♭独立化
いいですね。
キーアサインにオンベース用の「/#」「/b」があるとByteボタンユニットやGID-8といった8ボタンの外部拡張機器で1オクターブ分のオンベース音を独立して入力できるようになるので便利だと思います。
@watarunrt 返信が遅くなって申し訳ございません。
GitHubも私家版に上げていただくなどご配慮ありがとうございます。
まだ、ユーザーの皆さんにプルリクしていただくには、ルールや環境の整備がちゃんとできてないので助かります。
どの機能もすばらしいので、公式へのマージを進めております。
1点質問があります。
パートごとに内部で鳴らすか外部MIDIで鳴らすかを選べる機能というのは、どんな場面で必要なのかイマイチ分かりませんでした。実装した理由を教えていただけますか?
もし公式で実装するなら、USB MIDIなどにも共通で機能追加しないといけないと思いますので、ちょっと時間がかかると思います。
返答ありがとうございます。役に立ちそうな機能あれば、ご検討をいただければ。
パートごとに内部で鳴らすか外部MIDIで鳴らすかを選べる機能というのは、どんな場面で必要なのかイマイチ分かりませんでした。実装した理由を教えていただけますか?
この機能ですが、インスタコード接続機能が実装されるちょっと前に実装したので、現時点ではちょっと有用度下がったというか、すごくニッチというか。
これ、ギターパートに外部エフェクターかけたかったんですよ。でたまたま手元にM5のMIDIユニットがあったもんで、そっちにギターだけ再生できるようにするとそっからエフェクターへつなげるので。
で、現状
・インスタコード側でギターならして、伴奏かんぷれでならす→インスタコード出力をエフェクターにつなげりゃいい。
・そもそもMIDI出力がマルチパートなら受け側で単独パートだけ再生すりゃいいじゃん→至極ごもっとも
というわけで、MIDI受け側に融通聞かない機器(全パートを無条件で再生する)がいたときのみ、意味がある機能だったりします。なので、この機能必要とする人はあまりいないかなぁというものでして。
なるほど~。
たしかに、MIDI接続先の機器内でエフェクトをかけられる場合も多いですし、機能自体を理解するのは難しくないんですが、目的・用途が分かりにくい機能なので、ひとまず保留にしようと思います。
その他は、こちらが見落としていた機能もいっぱいあって、本当にありがたいです!
GitHubの整備よりも、まだ保留になっている機能の実装を優先しないといけないので、もし今後も気づきがあれば、ちょっと面倒ですがこのような形で報告いただけると助かります。
自動演奏の一時停止機能 について実装を進めているのですが、1点質問があります。
私家版ファームでは、上ダイヤルを押し込んだ時の挙動として、自動裏拍の途中で止めた場合、残りの裏拍が次の再生時にまとめて発音してしまうという問題がありました。それは解決したのですが
止めた後、アルペジオのループを先頭に戻す処理も外してあるので、同じコードを演奏するとアルペジオの途中から再開します。
一時停止させた後、アルペジオを先頭に戻す方が何かと都合が良いのではないかと思いましたがいかがでしょう?
アルペジオの途中で止めて、途中から再開できるのも、それはそれでニーズはあると思うのですが、実装にあたり何かと不都合が生じるため、とりあえず、アルペジオを先頭に戻すという方向で進めています。
また、自動演奏に適用させるのでなく通常演奏時にも適用して、
同じ動作で裏拍演奏を途中で止められるようにしようと思います。
そこで、下記のような仕様で再構築していますが問題ないでしょうか?
■現状:上ダイヤルを押したときの挙動
a. アルペジエーター停止
b. 自動演奏停止
c. ループを先頭に
d. 全ての音を停止
e. 自動演奏モード終了
となっているのを下記のように変更し
■上ダイヤルを押したとき
a. アルペジエーター停止
B' . 自動演奏の状態変更(走行中→一時停止/待機中→終了)
c. ループを先頭に
F. サステイン(発音5秒後に音を止めるのをキャンセルし、音が伸び続ける状態にする)
■離したとき
d. 全ての音を停止
G. サステイン状態オフ
B'' . 自動演奏の状態変更(一時停止→待機)
私家版ファームでは、上ダイヤルを押し込んだ時の挙動として、自動裏拍の途中で止めた場合、残りの裏拍が次の再生時にまとめて発音してしまうという問題がありました。そ
先ほど確認してみました。確かに変な挙動してましたね。すいません。
一時停止時にあえてループをリセットしなかったのは、一応意図した挙動ではありました(強制的に戻したい場合は、右上のシフトはじけばいいので)。
とはいいつつ、特に演奏上どうしてもやりたかったわけではなく(特に有用なシーンはなかった)、
という話もあるとのことなので、提案どおりの実装で問題ないと思われます。実装にあたり何かと不都合が生じるため
と、ここにつなげて書いちゃいますが、ここまでやると自動演奏の開始設定だけ別ボタン(サイドボタン)になっているのがちょっとだけ惜しい感じがしてきました。パニックボタン(オールノートオフ)と自動演奏にかかわる機能を切り離して、自動演奏は開始から終了までが1機能で動作する、みたいにすると、その機能を外部ボタンに割り当てたときに(インスタコードでも)、1ボタンで完結するので良いのかなぁと思ったりしまして(パニックボタンと切り離さなくてもよいかもですが、それはそれで混乱どっちとるか、と悩ましいところですが)。
早速ご返答ありがとうございます!
上ダイヤル(ボリュームダイヤル)の停止機能を改善したファーム(0.5.4)を公開しましたのでご確認下さい。
ここまでやると自動演奏の開始設定だけ別ボタン(サイドボタン)になっているのがちょっとだけ惜しい感じがしてきました。
ご意見ありがとうございます。
おっしゃることはよく分かります!
ただ、
- 1つのボタンに複数機能を実装する場合「長押し」「ダブルクリック」なども考えられますが、説明書を見ないとまず気づかれないのでそれは避けたいのと、長押しなどの動作は演奏表現でも使われる可能性があるので、機能を割り当てるのは難しい。
- 自動演奏モードと通常演奏モードは挙動が大きく違うので、モード切替は、押しにくい右サイドボタンに固有機能として割り当てられていることにも一定の意味がある
- 上ダイヤルに、音量に関する機能が集約されているのは整合性がある
などの理由で、今のところは2つに分かれている方が良いんじゃないかと考えています。
素早い対応ありがとうございます(gitのほうでも、私にメンション飛んできました)
機能分けるとか、一ボタンにいろいろ機能が内包されちゃうのも確かに良し悪しだと思いますので、公式側でここまで対応していただけたのであれば、全く問題ないかと思います。
というわけで、後ほどファームをDLして確認させていただきます。