[ No.309 ]
ではでは、こちらに!!
投稿者: satoko
2002年11月29日 (金) 20時41分 |
|
|
|
みなさん、どうもお久しぶりです(^-^; 楽譜認識システムについて質問させてください☆
とりあえず、まずは音符位置から・・。
これって、CGakuhu.cppの音符位置調節関数の所じゃないんですか?? part[p]->line[iLine]->getNote(pos[p]+i)->x = posX + dx2*i;の所で均等に表示するようになっているみたいだなぁ〜と。 その後、posXを増やして行って、順々に表示させてるのかなぁ〜と。 そのdxを音価によって変えてやればいいのかなぁ〜と。 でも、やっぱり違いますかね・・(@_@)
先輩が言ってたCNoteクラスのメンバ変数xというのは、CNote.cppのret += 4/pow(2, (CNote-1+i));を書き換えるってことですかぁ〜?? たった一文で管理されてるんですかぁ〜??
あぁ〜、もう分からなぁ〜い( ̄□ ̄;)!! 頭の中がハチャメチャです・・。 先輩の期待(?)通り、がんがん質問しちゃいました(^^ヾ お答え、よろしくです☆ |
|
[ No.310 ]
投稿者: tom_sai
2002年11月29日 (金) 23時00分 |
|
|
|
いらっしゃ〜い。最近書き込み少ないんで、じゃんじゃん書いてください(^^)。
>これって、CGakuhu.cppの音符位置調節関数の所じゃないんですか?? 音符位置を修正するのは、そこでOKです。 part[p]->line[iLine]->getNote(pos[p]+i)->x が、CNoteクラスのメンバ変数xのことです(CNoteのインスタンスはリスト構造なのでgetNote関数によりアクセスしています)。 CNote.cppのret += 4/pow(2, (CNote-1+i)); が記述してあるメンバ関数CalcTimeは、その音符の拍数を計算して返す関数です(たとえば、4/4拍子なら8分音符なら0.5だっけ?)。 この関数を使って小説を区切り、小節内の音符・休符数をカウントして、音符間隔を決定してxの値を変更しています。 注意しなければいけないのは、小節線挿入関数(Unit1.cppのInsertBarLine関数)で、小節線の位置が「小節内の一番最後の音符・休符の位置のINTERVAL_NOTE/2後ろの位置」にしてあるという点です。ここもうまい具合に調節しなければだめでしょう。同様にDeleteBarLineも。
音価によって位置を変えるということは、一小節の長さを固定してしまうと楽かもしれませんね。そうすれば、音価による音符位置の幅は、拍数に比例して決定することができると思います。
例えば、 一小節の長さ:lenth 前の小節線のX座標:start 先頭の音符の前の小節からの位置:top とすると音符幅の和は(lenth-top)になります。 だから、 ある音符の幅は、(lenth-top)*(その音符の拍数/一小節の拍数)により決定されるはずです(たぶん)。 よって、表示する音符位置は前の音符位置+↑の音符幅で、 小節線挿入位置もstart+lenthになるので楽ですよね。 ただ、lenthを小さくとると窮屈になるかも(^^)
とりあえず、こんなところかな。わからなかったら質問してください。 |
|
[ No.313 ]
またまたぁ〜!!
投稿者: satoko
2002年12月05日 (木) 20時08分 |
|
|
|
音符の間隔を音価に対応させることが、なんとなくできてきました。でも、部分的にダメだったり、パートが増えるとハチャメチャだけど・・(@_@)
それならば!と、とりあえず小節線を固定してみました。 そうしたら、例えば位置的に3小節目に初めて音符を書いてみても、結局は音符位置最適化ボタンにより1小節目に移動してしまうのです。まぁ、普通は3小節目から書くこともないだろうと、その場は目を瞑ろうと思ったのですが・・。今度は1小節の拍数分ピッタリにカウントされた時だけ、小節線の色を変えてみようと考えました。でも、小節によって変な部分が出てきたり・・。
というわけで、小節クラスの必要性を感じる今日この頃。これがあれば、例え小節に音符が足りなくても1小節分の拍数を待ってから次の小節に移ったり、まぁ色々と便利になるのでは??と思うんです。だけど、何だか難しそうで難しそうで、どうしましょ〜(>_<)
毎回どうもすみません。先輩、助けてぇ〜!! またまたよろしくお願いします☆ |
|
[ No.314 ]
投稿者: tom_sai
2002年12月08日 (日) 13時33分 |
|
|
|
小節クラスは、設計当初盛り込むつもりでした。が、やめてしまいました^^; なぜやめたかというと、小節クラスはひとつ音符を追加するだけで、すべての小節に影響を及ぼし、処理・管理が大変だったからです。 たとえば、既に小節がいくつもあるような楽譜をつくり、先頭にひとつ音符を追加したとると、すべての小節クラスのデータを書き換える必要が出てしまいます。プログラム的に考えると、一つ音符を追加・修正するたびに全小節クラスのデータを更新する必要がでてしまいます。 それと、あのプログラムに小節クラスを追加するにはソースコードを相当修正することになります(ほぼ作り直しかな)。
今のままがんばるか、現状の問題にうまく対応する別の方法を考えるかしかなさそうです。 |
|
[ No.318 ]
ちょっと御無沙汰です。
投稿者: satoko
2002年12月17日 (火) 15時10分 |
|
|
|
最近、追いコンやら定演やらで大忙しでした(^-^;そろそろ卒研も本気モードで行かないと!!まぁ、小節線の方は今のまま頑張ろうかなぁ〜と思いまして。やっとサークルや部活が落ち着いたので、頑張りまぁ〜す(^O^)/また色々質問しちゃうかもしれないので、その時はよろしくお願いします☆ |
|
[ No.319 ]
投稿者: tom_sai
2002年12月18日 (水) 22時30分 |
|
|
|
そろそろ急ぎで行かないとやばめ?がんばれ〜 うちらは何度か徹夜でやった記憶が・・・ |
|
[ No.320 ]
投稿者: jun_river
2002年12月21日 (土) 01時53分 |
|
|
|
tom_saiはDiabloUかリネージュばっかりやってたけどな |
|
[ No.321 ]
投稿者: tom_sai
2002年12月21日 (土) 22時56分 |
|
|
|
お前もだ〜 |
|