musescoreを読む
前提
目についた部分から適当に読んでいます
/
mscoreapp/
musescore.cpp
l.5712, 5942 MuseScore::cmd
musescore上の操作コマンドを受け取る
クリック入力は区別されていて、ここは通らない
キー操作による入力や、ファイル保存操作等は通る
楽譜操作に関するものはScoreView::cmd Score::cmdに流れていく
events.cpp
l.452 ScoreView::mousePressEvent
楽譜に対するクリック操作を受け取る
scoreview.cpp
l.899 ScoreView::paintEvent
描画を更新する
毎フレーム呼ばれているっぽい
libmscore/
楽譜モデル
segment.h
chord.h
Graphic representation of a chord.
Single notes are handled as degenerated chords.
単音も「1音だけの和音」として扱われる
shadownote.h
入力モードでマウス位置に現れる青色の音符
chord.cpp
l.1807 Chord::layoutPitched
五線上に音符をレイアウトする(たぶん)
noteentry.cpp
l.287 Score::putNote
マウスによる音符入力操作を受ける
l.308 Score::putNote
音符を入力/置換する
edit.cpp
l.372 Score::addNote
和音に音を追加する
cmd.cpp
l.711 Score::setNoteRest
場合、最後の音符を選択
追加したい音符or休符のSegmentを返す
note.cpp
l.1104 Note::draw
音符を描画する
毎フレーム呼ばれている
l.1902 Note::layout
音符自体の座標計算
layout.cpp
l.813 Score::layoutChords3
calculate positions of notes, accidentals, dots
メインのレイアウト処理と思われる
3の意味は不明
sym.cpp
== symbol
楽譜上で使用する音符や記号等のシンボルが記述されている
フォントと紐付いている
l.5682 ScoreFont::draw
フォントの描画処理
pitchspelling.cpp
MIDIノートナンバー→音名への変換を行う
同音異名の判定を賢くやってくれるのかも
transpose.cpp
l.90 transposeInterval
指定した音程でピッチと音名を変換する
utils.cpp
l.555 chromatic2diatonic
全音音程→半音音程に変換する
fonts/
楽譜描画に使うフォントが入ってる
/icons/感動した.icon
https://gyazo.com/49fa70bd8c2b95b7673a61924f70e0af