-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
allow dynamic length adjustment within part arp #145
Comments
わかりにくいので、「記述するmml」と「実際に演奏されるmml」を提示していただけるとありがたいです。 仰りたいのはこういうことでしょうか?
実際に演奏されるmml
Case 2:
実際に演奏されるmml
↑の理解であっているのであれば、以下の通りに記述できるようにしたほうが分かりやすいかもしれません。如何でしょうか。(実際に発音する音調をlコマンド、音符コマンドの修飾コマンドとして指定する)
実際に演奏されるmml
Case 2:
実際に演奏されるmml
|
I suppose I must have provided difficult data to start with, or maybe just incorrect. If we take it to be a note modifier, applied to the note that comes before the switch, the input for your second example would be:
Which says the default note length is a half note, and the default switch step is an eighth note. That would then give the output:
Or if it has to be modifying the note after the switch rather than before, shift all of the explicit `n modifications one to the right, which better matches your example. 私が最初に提供したデータが難しかったか、あるいは間違っていたのでしょう。スイッチの前の音に適用されるノートモディファイアだとすると、2番目の例の入力は次のようになります:
デフォルトの音符の長さは2分音符で、デフォルトのスイッチステップは8分音符です。そうすると、次のように出力される:
あるいは、スイッチの前ではなく、スイッチの後に音を修正する必要がある場合は、明示的な |
言いたいことはわかりました。
妥協案としては↑ですね。。。 |
So the existing note length specification determines the switch length, and the extra ` decorator controls the note's duration on that channel? |
Yes. |
Alright, that will work then. Thanks very much! |
TAG715をお試しください。 |
One last question. Will the tie decoration on a note cause it to play the next note on the next channel without waiting any time at all, thus allowing the creation of chords? I figured it would be tie rather than length 0 since length 0 is related to the tone doubling functionality. |
どのようなmmlですか? |
I just realized it would actually make more sense for it to be the existing chord modifier that you have for the MIDI mode
It would give something like this.
That is, the part arp would distribute the notes about the allocated channels without waiting between switches at all, making a chord. MIDIモードのコード・モディファイア
このようになります。
つまり、パートアルペジオは、スイッチとスイッチの間をまったく待たずに、割り当てられたチャンネルにノートを分散させ、和音を作ることになる。 |
今回はその機能は要らないです。 |
Fair enough, although as I can't see it's likely my MML will on the whole be less readable. What is the similar function you mention? I know there is the chord thing but that only applies to MIDI. Otherwise you have implemented this feature well and can close this issue. |
'[|'コマンドと '|]'コマンドです>似たような機能 |
Problem
The example for the part arp is to play the Final Fantasy prelude, which is a useful example. however, I was transcribing something that required some polyphony recently and wanted to automatically switch between the assigned polyphony channels to maximize polyphony. The trouble is that this does not use the same lengths everywhere, in fact not even within the same small note phrase, which required me to do very careful calibration of note lengths and rests among the channels. The fact that the part arp exists already puts this compiler above most others, where automatic channel-swapping is reserved for sophisticated trackers with an instrument mode. But I think you could take it even further.
Proposed Solution
Extend the syntax available inside part arps to allow for two new commands.
l`n
and`n
, where n is a note length.The first sets the default length for the part arp's switcher, as note length is already going to the actual channel and does not factor into the arp. I believe the current behavior is to derive this from the existing default length when the arp is opened? Say I wanted to do an arp with all the waits being the same length, but wanted to have the notes be twice as long. I could do something like this.
Which would play a new note on a new channel every 8th note, but all the notes themselves would have the length of a quarter note, letting them ring out even after the part arp has switched away. Bonus of this is that the actual note length can be different, meaning you don't have to specify explicit quarter note lengths on every note, or abuse quantization to do something like
q*4
to achieve the same effect. I think the engine can already write data like this so the only trick is to make the switching length adjustable. Backward compatibility would dictate it inherits the note length if not specified.The second command would allow me to use specific wait lengths without having to change the default one, which would allow me to use this for passages that are not all the same length. It is an analogue of note default length versus individual note lengths. Whether this would be a note decorator that only works inside part arps is up to you, it would make sense if it were but also it being a standalone command would be fine. It would then look something like this, assume that using the same channel again would cut a previous note short.
Where the
`n
after a given note means play this note and then wait this long before going to the next one, overriding the default. It might make more sense as a note decoration. While in practice the length could be increased with integration of rests and wait commands causing it to pause there before switching, I don't think it could be meaningfully shortened below the default that way.Additional context
This came up specifically due to this particular composition, where you can see how ugly and difficult the transcription of this polyphony ended up without this feature. Channels 1 and 2 are deliberately not used in this part, although the first transition where they are included could use them as well. You can also see I do use an actual part arp as you have them written later, but only because all the distances are the same. Heavily in progress of course.
marble.txt
This is my attempt to transcribe the Marble Machine track using a YM2413.
問題
パートarpの例は、ファイナルファンタジーのプレリュードを演奏するもので、これは便利な例です。しかし、最近ポリフォニーを必要とするものをトランスクリプションしていて、ポリフォニーを最大化するために、割り当てられたポリフォニー・チャンネルを自動的に切り替えたいと思っていました。困ったことに、これはどこでも同じ長さを使うわけではなく、実際、同じ小さな音符のフレーズの中でさえも同じ長さを使うわけではないので、チャンネル間の音符の長さと休符を非常に注意深く校正する必要があった。arpというパートがすでに存在しているという事実が、このコンパイラを他のほとんどのコンパイラよりも優位に立たせる。しかし、私はそれをさらに進めることができると思う。
解決策の提案
パートarp内で使用可能な構文を拡張し、2つの新しいコマンドを使用できるようにする。
l`n
と`n
で、nは音符の長さです。最初のコマンドはパートarpのスイッチャーのデフォルトの長さを設定する。現在の動作は、arpを開いたときに、既存のデフォルトの長さからこの長さを導き出すようになっているのではないでしょうか?例えば、すべてのウェイティングが同じ長さのarpを作りたいが、ノートの長さを2倍にしたいとします。このようにすることができます。
この場合、8分音符ごとに新しいチャンネルで新しい音を演奏することになるが、すべての音符は4分音符の長さを持ち、パートアープが切り替わった後も鳴り続ける。つまり、すべての音符に4分音符の長さを明示的に指定したり、同じ効果を得るためにクオンタイズを乱用して
q*4
のような処理をしたりする必要がないんだ。エンジンはすでにこのようなデータを書くことができるので、唯一のトリックはスイッチングの長さを調整できるようにすることだと思います。後方互換性があれば、指定がなければ音符の長さを継承することになる。つ目のコマンドは、デフォルトの長さを変更することなく、特定の待機長を使用できるようにするものです。これは、音符のデフォルトの長さと個々の音符の長さのアナロジーです。これがパート譜の中だけで機能する音符の装飾になるかどうかは、あなた次第です。同じチャンネルをもう一度使うと、前のノートが短くなると仮定すると、次のようになります。
ここで、与えられたノートの後の
`n
は、このノートを演奏し、次のノートに移るまでこの時間待つことを意味し、デフォルトを上書きします。これは音符の装飾としてより理にかなっているかもしれない。実際には、休符やwaitコマンドを統合して、切り替える前にそこで一時停止するようにすれば、長さを長くすることができますが、そのようにすれば、デフォルトよりも有意義に短くできるとは思えません。追加コンテキスト
このポリフォニーのトランスクリプションが、この機能なしでいかに醜く困難なものになったか、おわかりいただけると思います。チャンネル1とチャンネル2は、このパートでは意図的に使っていません。また、後で書いてもらうように、実際のパートのアープを使っているのがわかると思うが、すべての距離が同じだからだ。もちろん、現在進行中です。
marble.txt
これはYM2413を使ってマーブルマシンのトラックを書き起こそうとしたものです。
The text was updated successfully, but these errors were encountered: