fix #25945
This commit is contained in:
parent
29015d4782
commit
9a6d909a29
18 changed files with 112 additions and 149 deletions
|
@ -23,11 +23,11 @@ namespace Ms {
|
|||
// KeySigEvent
|
||||
//---------------------------------------------------------
|
||||
|
||||
KeySigEvent::KeySigEvent(int at)
|
||||
KeySigEvent::KeySigEvent(int key)
|
||||
{
|
||||
_accidentalType = at;
|
||||
Q_ASSERT(key >= -7 && key <= 7);
|
||||
_accidentalType = key;
|
||||
_invalid = false;
|
||||
enforceLimits();
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
@ -125,21 +125,19 @@ bool KeySigEvent::operator!=(const KeySigEvent& e) const
|
|||
// preset lines list with accidentals for given key
|
||||
//---------------------------------------------------------
|
||||
|
||||
void AccidentalState::init(const KeySigEvent& ks)
|
||||
void AccidentalState::init(int key)
|
||||
{
|
||||
int type = ks.accidentalType();
|
||||
|
||||
memset(state, 2, 74);
|
||||
for (int octave = 0; octave < 11; ++octave) {
|
||||
if (type > 0) {
|
||||
for (int i = 0; i < type; ++i) {
|
||||
if (key > 0) {
|
||||
for (int i = 0; i < key; ++i) {
|
||||
int idx = tpc2step(20 + i) + octave * 7;
|
||||
if (idx < 74)
|
||||
state[idx] = 1 + 2;
|
||||
}
|
||||
}
|
||||
else {
|
||||
for (int i = 0; i > type; --i) {
|
||||
for (int i = 0; i > key; --i) {
|
||||
int idx = tpc2step(12 + i) + octave * 7;
|
||||
if (idx < 74)
|
||||
state[idx] = -1 + 2;
|
||||
|
|
|
@ -48,7 +48,7 @@ class KeySigEvent {
|
|||
|
||||
public:
|
||||
KeySigEvent() {}
|
||||
KeySigEvent(int at);
|
||||
KeySigEvent(int key);
|
||||
|
||||
bool isValid() const { return !_invalid; }
|
||||
bool operator==(const KeySigEvent& e) const;
|
||||
|
@ -77,7 +77,7 @@ class AccidentalState {
|
|||
|
||||
public:
|
||||
AccidentalState() {}
|
||||
void init(const KeySigEvent&);
|
||||
void init(int key);
|
||||
AccidentalVal accidentalVal(int line) const {
|
||||
Q_ASSERT(line >= 0 && line < 75);
|
||||
return AccidentalVal((state[line] & 0x0f) - 2);
|
||||
|
|
|
@ -289,12 +289,12 @@ Element* KeySig::drop(const DropData& data)
|
|||
if (data.modifiers & Qt::ControlModifier) {
|
||||
// apply only to this stave
|
||||
if (k != keySigEvent())
|
||||
score()->undoChangeKeySig(staff(), tick(), k);
|
||||
score()->undoChangeKeySig(staff(), tick(), k.accidentalType());
|
||||
}
|
||||
else {
|
||||
// apply to all staves:
|
||||
foreach(Staff* s, score()->staves())
|
||||
score()->undoChangeKeySig(s, tick(), k);
|
||||
score()->undoChangeKeySig(s, tick(), k.accidentalType());
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
@ -303,9 +303,11 @@ Element* KeySig::drop(const DropData& data)
|
|||
// setKey
|
||||
//---------------------------------------------------------
|
||||
|
||||
void KeySig::setKey(int sig)
|
||||
void KeySig::setKey(int key)
|
||||
{
|
||||
setKeySigEvent(KeySigEvent(sig));
|
||||
KeySigEvent e;
|
||||
e.setAccidentalType(key);
|
||||
setKeySigEvent(e);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -1452,7 +1452,8 @@ void Score::addSystemHeader(Measure* m, bool isFirstSystem)
|
|||
// we assume that keysigs and clefs are only in the first
|
||||
// track (voice 0) of a staff
|
||||
|
||||
const KeySigEvent& keyIdx = staff->key(tick);
|
||||
KeySigEvent keyIdx;
|
||||
keyIdx.setAccidentalType(staff->key(tick));
|
||||
|
||||
for (Segment* seg = m->first(); seg; seg = seg->next()) {
|
||||
// search only up to the first ChordRest
|
||||
|
@ -1474,9 +1475,8 @@ void Score::addSystemHeader(Measure* m, bool isFirstSystem)
|
|||
break;
|
||||
}
|
||||
}
|
||||
bool needKeysig = /* !staff->isTabStaff() // keep key sigs in TABs: TABs themselves should hide them
|
||||
&& */ keyIdx.isValid()
|
||||
&& (isFirstSystem || styleB(StyleIdx::genKeysig));
|
||||
bool needKeysig = // keep key sigs in TABs: TABs themselves should hide them
|
||||
isFirstSystem || styleB(StyleIdx::genKeysig);
|
||||
|
||||
if (needKeysig && !keysig && keyIdx.accidentalType()) {
|
||||
//
|
||||
|
@ -2589,8 +2589,8 @@ QList<System*> Score::layoutSystemRow(qreal rowWidth, bool isFirstSystem, bool u
|
|||
Staff* staff = _staves[staffIdx];
|
||||
showCourtesySig = false;
|
||||
|
||||
KeySigEvent key1 = staff->key(tick - 1);
|
||||
KeySigEvent key2 = staff->key(tick);
|
||||
int key1 = staff->key(tick - 1);
|
||||
int key2 = staff->key(tick);
|
||||
if (styleB(StyleIdx::genCourtesyKeysig) && (key1 != key2)) {
|
||||
// locate a key sig. in next measure and, if found,
|
||||
// check if it has court. sig turned off
|
||||
|
@ -2606,19 +2606,19 @@ QList<System*> Score::layoutSystemRow(qreal rowWidth, bool isFirstSystem, bool u
|
|||
hasCourtesyKeysig = true;
|
||||
s = m->undoGetSegment(SegmentType::KeySigAnnounce, tick);
|
||||
KeySig* ks = static_cast<KeySig*>(s->element(track));
|
||||
KeySigEvent ksv(key2);
|
||||
|
||||
if (!ks) {
|
||||
ks = new KeySig(this);
|
||||
ks->setKeySigEvent(ksv);
|
||||
ks->setKey(key2);
|
||||
ks->setTrack(track);
|
||||
ks->setGenerated(true);
|
||||
ks->setParent(s);
|
||||
undoAddElement(ks);
|
||||
}
|
||||
else if (ks->keySigEvent() != ksv) {
|
||||
undo(new ChangeKeySig(ks, ksv,
|
||||
ks->showCourtesy() /*, ks->showNaturals()*/));
|
||||
else if (ks->key() != key2) {
|
||||
KeySigEvent ke = ks->keySigEvent();
|
||||
ke.setAccidentalType(key2);
|
||||
undo(new ChangeKeySig(ks, ke, ks->showCourtesy()));
|
||||
}
|
||||
// change bar line to qreal bar line
|
||||
// m->setEndBarLineType(BarLineType::DOUBLE, true); // this caused issue #12918
|
||||
|
|
|
@ -1394,12 +1394,12 @@ qDebug("drop staffList");
|
|||
|
||||
if (data.modifiers & Qt::ControlModifier) {
|
||||
// apply only to this stave
|
||||
score()->undoChangeKeySig(staff, tick(), k);
|
||||
score()->undoChangeKeySig(staff, tick(), k.accidentalType());
|
||||
}
|
||||
else {
|
||||
// apply to all staves:
|
||||
foreach(Staff* s, score()->staves())
|
||||
score()->undoChangeKeySig(s, tick(), k);
|
||||
score()->undoChangeKeySig(s, tick(), k.accidentalType());
|
||||
}
|
||||
|
||||
break;
|
||||
|
|
|
@ -1058,8 +1058,8 @@ void Note::read(XmlReader& e)
|
|||
_tpc[0] = Tpc::TPC_INVALID;
|
||||
}
|
||||
if (!tpcIsValid(_tpc[0]) && !tpcIsValid(_tpc[1])) {
|
||||
KeySigEvent key = (staff() && chord()) ? staff()->key(chord()->tick()) : KeySigEvent();
|
||||
int tpc = pitch2tpc(_pitch, key.accidentalType(), Prefer::NEAREST);
|
||||
int key = (staff() && chord()) ? staff()->key(chord()->tick()) : 0;
|
||||
int tpc = pitch2tpc(_pitch, key, Prefer::NEAREST);
|
||||
if (concertPitch())
|
||||
_tpc[0] = tpc;
|
||||
else
|
||||
|
@ -1622,8 +1622,8 @@ void Note::layout10(AccidentalState* as)
|
|||
acci = _accidental->accidentalType();
|
||||
if (acci == Accidental::AccidentalType::SHARP || acci == Accidental::AccidentalType::FLAT) {
|
||||
// TODO - what about double flat and double sharp?
|
||||
KeySigEvent key = (staff() && chord()) ? staff()->key(chord()->tick()) : KeySigEvent();
|
||||
int ntpc = pitch2tpc(epitch(), key.accidentalType(), acci == Accidental::AccidentalType::SHARP ? Prefer::SHARPS : Prefer::FLATS);
|
||||
int key = (staff() && chord()) ? staff()->key(chord()->tick()) : 0;
|
||||
int ntpc = pitch2tpc(epitch(), key, acci == Accidental::AccidentalType::SHARP ? Prefer::SHARPS : Prefer::FLATS);
|
||||
if (ntpc != tpc()) {
|
||||
//not true: qDebug("note at %d has wrong tpc: %d, expected %d, acci %d", chord()->tick(), tpc(), ntpc, acci);
|
||||
// setColor(QColor(255, 0, 0));
|
||||
|
|
|
@ -250,24 +250,6 @@ void Part::setMidiChannel(int) const
|
|||
void Part::setInstrument(const Instrument& i, int tick)
|
||||
{
|
||||
_instrList.setInstrument(i, tick);
|
||||
|
||||
#if 0
|
||||
//CHECK: ??
|
||||
if (!_score->styleB(StyleIdx::concertPitch) && i.transpose().chromatic) {
|
||||
foreach(Staff* staff, _staves) {
|
||||
if (staff->staffType()->group() != StaffGroup::PERCUSSION)
|
||||
_score->cmdTransposeStaff(staff->idx(), i.transpose(), false);
|
||||
}
|
||||
}
|
||||
if (!_score->styleB(StyleIdx::concertPitch) && i.transpose().chromatic) {
|
||||
foreach(Staff* staff, _staves) {
|
||||
Interval iv(i.transpose());
|
||||
iv.flip();
|
||||
if (staff->staffType()->group() != StaffGroup::PERCUSSION)
|
||||
_score->cmdTransposeStaff(staff->idx(), iv, false);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
|
|
@ -522,7 +522,6 @@ Score::FileError Score::read114(XmlReader& e)
|
|||
qDebug("read114: Key tick %d", tick);
|
||||
continue;
|
||||
}
|
||||
KeySigEvent ke = i->second;
|
||||
Measure* m = tick2measure(tick);
|
||||
if (!m) //empty score
|
||||
break;
|
||||
|
@ -530,6 +529,8 @@ Score::FileError Score::read114(XmlReader& e)
|
|||
if (seg->element(track))
|
||||
static_cast<KeySig*>(seg->element(track))->setGenerated(false);
|
||||
else {
|
||||
KeySigEvent ke;
|
||||
ke.setAccidentalType(i->second);
|
||||
KeySig* ks = keySigFactory(ke);
|
||||
if (ks) {
|
||||
ks->setParent(seg);
|
||||
|
|
|
@ -2426,25 +2426,25 @@ void Score::adjustKeySigs(int sidx, int eidx, KeyList km)
|
|||
{
|
||||
for (int staffIdx = sidx; staffIdx < eidx; ++staffIdx) {
|
||||
Staff* staff = _staves[staffIdx];
|
||||
if(!staff->isDrumStaff()) {
|
||||
if (staff->isDrumStaff())
|
||||
continue;
|
||||
for (auto i = km.begin(); i != km.end(); ++i) {
|
||||
int tick = i->first;
|
||||
Measure* measure = tick2measure(tick);
|
||||
KeySigEvent oKey = i->second;
|
||||
KeySigEvent nKey = oKey;
|
||||
int oKey = i->second;
|
||||
int nKey = oKey;
|
||||
int diff = -staff->part()->instr()->transpose().chromatic;
|
||||
if (diff != 0 && !styleB(StyleIdx::concertPitch))
|
||||
nKey.setAccidentalType(transposeKey(nKey.accidentalType(), diff));
|
||||
staff->setKey(tick, nKey.accidentalType());
|
||||
nKey = transposeKey(nKey, diff);
|
||||
staff->setKey(tick, nKey);
|
||||
KeySig* keysig = new KeySig(this);
|
||||
keysig->setTrack(staffIdx * VOICES);
|
||||
keysig->setKeySigEvent(nKey);
|
||||
keysig->setKey(nKey);
|
||||
Segment* s = measure->getSegment(keysig, tick);
|
||||
s->add(keysig);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// cmdRemoveStaff
|
||||
|
|
|
@ -517,7 +517,7 @@ class Score : public QObject {
|
|||
void undoChangeTuning(Note*, qreal);
|
||||
void undoChangePageFormat(PageFormat*, qreal spatium, int);
|
||||
void undoChangeUserMirror(Note*, DirectionH);
|
||||
void undoChangeKeySig(Staff* ostaff, int tick, KeySigEvent st);
|
||||
void undoChangeKeySig(Staff* ostaff, int tick, int key);
|
||||
void undoChangeClef(Staff* ostaff, Segment*, ClefType st);
|
||||
void undoChangeBarLine(Measure* m, BarLineType);
|
||||
void undoChangeProperty(Element*, P_ID, const QVariant&, PropertyStyle ps = PropertyStyle::NOSTYLE);
|
||||
|
@ -725,7 +725,6 @@ class Score : public QObject {
|
|||
void rebuildMidiMapping();
|
||||
void updateChannel();
|
||||
|
||||
void cmdTransposeStaff(int staffIdx, Interval, bool useDoubleSharpsFlats);
|
||||
void cmdConcertPitchChanged(bool, bool /*useSharpsFlats*/);
|
||||
|
||||
void setTempomap(TempoMap* tm);
|
||||
|
|
|
@ -206,41 +206,6 @@ int transposeTpcDiatonicByKey(int tpc, int steps, int key, bool keepAlteredDegre
|
|||
return newTpc;
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// transposeStaff
|
||||
//---------------------------------------------------------
|
||||
|
||||
void Score::cmdTransposeStaff(int staffIdx, Interval interval, bool useDoubleSharpsFlats)
|
||||
{
|
||||
if (staff(staffIdx)->staffType()->group() == StaffGroup::PERCUSSION)
|
||||
return;
|
||||
int startTrack = staffIdx * VOICES;
|
||||
int endTrack = startTrack + VOICES;
|
||||
|
||||
transposeKeys(staffIdx, staffIdx+1, 0, lastSegment()->tick(), interval);
|
||||
|
||||
for (Segment* segment = firstSegment(); segment; segment = segment->next1()) {
|
||||
for (int st = startTrack; st < endTrack; ++st) {
|
||||
Element* e = segment->element(st);
|
||||
if (!e || e->type() != ElementType::CHORD)
|
||||
continue;
|
||||
|
||||
Chord* chord = static_cast<Chord*>(e);
|
||||
QList<Note*> nl = chord->notes();
|
||||
foreach(Note* n, nl)
|
||||
transpose(n, interval, useDoubleSharpsFlats);
|
||||
}
|
||||
foreach (Element* e, segment->annotations()) {
|
||||
if ((e->type() != ElementType::HARMONY) || (e->track() < startTrack) || (e->track() >= endTrack))
|
||||
continue;
|
||||
Harmony* h = static_cast<Harmony*>(e);
|
||||
int rootTpc = transposeTpc(h->rootTpc(), interval, false);
|
||||
int baseTpc = transposeTpc(h->baseTpc(), interval, false);
|
||||
undoTransposeHarmony(h, rootTpc, baseTpc);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// transpose
|
||||
//---------------------------------------------------------
|
||||
|
@ -263,7 +228,7 @@ void Score::transpose(Note* n, Interval interval, bool useDoubleSharpsFlats)
|
|||
// transpose
|
||||
//---------------------------------------------------------
|
||||
|
||||
void Score::transpose(TransposeMode mode, TransposeDirection direction, int transposeKey,
|
||||
void Score::transpose(TransposeMode mode, TransposeDirection direction, int trKey,
|
||||
int transposeInterval, bool trKeys, bool transposeChordNames, bool useDoubleSharpsFlats)
|
||||
{
|
||||
bool rangeSelection = selection().isRange();
|
||||
|
@ -275,14 +240,13 @@ void Score::transpose(TransposeMode mode, TransposeDirection direction, int tran
|
|||
}
|
||||
|
||||
Staff* st = staff(startStaffIdx);
|
||||
// KeyList* km = staff(startStaffIdx)->keys();
|
||||
|
||||
Interval interval;
|
||||
if (mode != TransposeMode::DIATONICALLY) {
|
||||
if (mode == TransposeMode::BY_KEY) {
|
||||
// calculate interval from "transpose by key"
|
||||
int oKey = st->key(startTick);
|
||||
interval = keydiff2Interval(oKey, transposeKey, direction);
|
||||
interval = keydiff2Interval(oKey, trKey, direction);
|
||||
}
|
||||
else {
|
||||
interval = intervalList[transposeInterval];
|
||||
|
@ -341,7 +305,9 @@ void Score::transpose(TransposeMode mode, TransposeDirection direction, int tran
|
|||
else if ((e->type() == ElementType::KEYSIG) && mode != TransposeMode::DIATONICALLY && trKeys) {
|
||||
KeySig* ks = static_cast<KeySig*>(e);
|
||||
int key = st->key(ks->tick());
|
||||
undo(new ChangeKeySig(ks, KeySigEvent(key), ks->showCourtesy()));
|
||||
KeySigEvent ke = ks->keySigEvent();
|
||||
ke.setAccidentalType(key);
|
||||
undo(new ChangeKeySig(ks, ke, ks->showCourtesy()));
|
||||
}
|
||||
}
|
||||
return;
|
||||
|
@ -375,13 +341,17 @@ void Score::transpose(TransposeMode mode, TransposeDirection direction, int tran
|
|||
tracks.append(idx + i);
|
||||
}
|
||||
|
||||
for (Segment* segment = _selection.startSegment(); segment && segment != _selection.endSegment(); segment = segment->next1()) {
|
||||
Segment* s1 = _selection.startSegment();
|
||||
Segment* s2 = _selection.endSegment();
|
||||
for (Segment* segment = s1; segment && segment != s2; segment = segment->next1()) {
|
||||
for (int st : tracks) {
|
||||
if (staff(st/VOICES)->staffType()->group() == StaffGroup::PERCUSSION)
|
||||
continue;
|
||||
Element* e = segment->element(st);
|
||||
if (!e || e->type() != ElementType::CHORD)
|
||||
if (!e)
|
||||
continue;
|
||||
|
||||
if (e->type() == ElementType::CHORD) {
|
||||
Chord* chord = static_cast<Chord*>(e);
|
||||
QList<Note*> nl = chord->notes();
|
||||
for (Note* n : nl) {
|
||||
|
@ -399,6 +369,14 @@ void Score::transpose(TransposeMode mode, TransposeDirection direction, int tran
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (e->type() == ElementType::KEYSIG && trKeys && mode != TransposeMode::DIATONICALLY) {
|
||||
KeySig* ks = static_cast<KeySig*>(e);
|
||||
int nKey = transposeKey(ks->key(), interval);
|
||||
KeySigEvent ke = ks->keySigEvent();
|
||||
ke.setAccidentalType(nKey);
|
||||
undo(new ChangeKeySig(ks, ke, ks->showCourtesy()));
|
||||
}
|
||||
}
|
||||
if (transposeChordNames) {
|
||||
foreach (Element* e, segment->annotations()) {
|
||||
if ((e->type() != ElementType::HARMONY) || (!tracks.contains(e->track())))
|
||||
|
@ -421,10 +399,6 @@ void Score::transpose(TransposeMode mode, TransposeDirection direction, int tran
|
|||
}
|
||||
}
|
||||
}
|
||||
if (trKeys && mode != TransposeMode::DIATONICALLY) {
|
||||
transposeKeys(_selection.staffStart(), _selection.staffEnd(),
|
||||
_selection.tickStart(), _selection.tickEnd(), interval);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
|
@ -448,7 +422,9 @@ void Score::transposeKeys(int staffStart, int staffEnd, int tickStart, int tickE
|
|||
if (ks) {
|
||||
int key = st->key(s->tick());
|
||||
int nKey = transposeKey(key, interval);
|
||||
undo(new ChangeKeySig(ks, KeySigEvent(nKey), ks->showCourtesy()));
|
||||
KeySigEvent ke;
|
||||
ke.setAccidentalType(nKey);
|
||||
undo(new ChangeKeySig(ks, ke, ks->showCourtesy()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -417,7 +417,7 @@ void Score::undoChangePitch(Note* note, int pitch, int tpc1, int tpc2)
|
|||
// undoChangeKeySig
|
||||
//---------------------------------------------------------
|
||||
|
||||
void Score::undoChangeKeySig(Staff* ostaff, int tick, KeySigEvent st)
|
||||
void Score::undoChangeKeySig(Staff* ostaff, int tick, int key)
|
||||
{
|
||||
KeySig* lks = 0;
|
||||
foreach (Staff* staff, ostaff->staffList()) {
|
||||
|
@ -435,17 +435,19 @@ void Score::undoChangeKeySig(Staff* ostaff, int tick, KeySigEvent st)
|
|||
|
||||
int diff = -staff->part()->instr()->transpose().chromatic;
|
||||
if (diff && !score->styleB(StyleIdx::concertPitch))
|
||||
st.setAccidentalType(transposeKey(st.accidentalType(), diff));
|
||||
key = transposeKey(key, diff);
|
||||
|
||||
if (ks) {
|
||||
ks->undoChangeProperty(P_ID::GENERATED, false);
|
||||
undo(new ChangeKeySig(ks, st, ks->showCourtesy()));
|
||||
KeySigEvent kse = ks->keySigEvent();
|
||||
kse.setAccidentalType(key);
|
||||
undo(new ChangeKeySig(ks, kse, ks->showCourtesy()));
|
||||
}
|
||||
else {
|
||||
KeySig* nks = new KeySig(score);
|
||||
nks->setParent(s);
|
||||
nks->setTrack(track);
|
||||
nks->setKeySigEvent(st);
|
||||
nks->setKey(key);
|
||||
undo(new AddElement(nks));
|
||||
if (lks)
|
||||
lks->linkTo(nks);
|
||||
|
@ -465,8 +467,11 @@ void Score::undoChangeKeySig(Staff* ostaff, int tick, KeySigEvent st)
|
|||
continue;
|
||||
if (!ks->generated())
|
||||
break;
|
||||
if (ks->keySigEvent() != st)
|
||||
undo(new ChangeKeySig(ks, st, ks->showCourtesy()));
|
||||
if (ks->key() != key) {
|
||||
KeySigEvent kse = ks->keySigEvent();
|
||||
kse.setAccidentalType(key);
|
||||
undo(new ChangeKeySig(ks, kse, ks->showCourtesy()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -533,7 +533,7 @@ Score::FileError importBB(Score* score, const QString& name)
|
|||
staff->setKey(tick, bb.key());
|
||||
KeySig* keysig = new KeySig(score);
|
||||
keysig->setTrack((score->staffIdx(staff->part()) + staff->rstaff()) * VOICES);
|
||||
keysig->setKeySigEvent(KeySigEvent(bb.key()));
|
||||
keysig->setKey(bb.key());
|
||||
Measure* mks = score->tick2measure(tick);
|
||||
Segment* sks = mks->getSegment(keysig, tick);
|
||||
sks->add(keysig);
|
||||
|
|
|
@ -498,11 +498,11 @@ void MTrack::createKeys(int accidentalType)
|
|||
}
|
||||
for (auto it = km->begin(); it != km->end(); ++it) {
|
||||
const int tick = it->first;
|
||||
const KeySigEvent &key = it->second;
|
||||
int key = it->second;
|
||||
KeySig* ks = new KeySig(score);
|
||||
ks->setTrack(track);
|
||||
ks->setGenerated(false);
|
||||
ks->setKeySigEvent(key);
|
||||
ks->setKey(key);
|
||||
ks->setMag(staff->mag());
|
||||
Measure* m = score->tick2measure(tick);
|
||||
Segment* seg = m->getSegment(ks, tick);
|
||||
|
|
|
@ -779,7 +779,7 @@ void OveToMScore::convertSignatures(){
|
|||
|
||||
KeySig* keysig = new KeySig(score_);
|
||||
keysig->setTrack((staffCount+j) * VOICES);
|
||||
keysig->setKeySigEvent(KeySigEvent(keyValue));
|
||||
keysig->setKey(keyValue);
|
||||
|
||||
Segment* s = measure->getSegment(keysig, tick);
|
||||
s->add(keysig);
|
||||
|
|
|
@ -2296,7 +2296,7 @@ Measure* MusicXml::xmlMeasure(Part* part, QDomElement e, int number, Fraction me
|
|||
// Check for "superfluous" accidentals to mark them as USER accidentals.
|
||||
// The candiadates list courtAccNotes is ordered voice after voice. Check it here segment after segment.
|
||||
AccidentalState currAcc;
|
||||
currAcc.init(currKeySig->keySigEvent());
|
||||
currAcc.init(currKeySig->keySigEvent().accidentalType());
|
||||
SegmentType st = SegmentType::ChordRest;
|
||||
for (Ms::Segment* segment = measure->first(st); segment; segment = segment->next(st)) {
|
||||
for (int track = 0; track < staves * VOICES; ++track) {
|
||||
|
@ -3239,8 +3239,8 @@ void MusicXml::xmlAttributes(Measure* measure, int staff, QDomElement e, KeySig*
|
|||
int staves = score->staff(staff)->part()->nstaves();
|
||||
// apply to all staves in part
|
||||
for (int i = 0; i < staves; ++i) {
|
||||
KeySigEvent oldkey = score->staff(staffIdx+i)->key(tick);
|
||||
if (oldkey != key) {
|
||||
int oldkey = score->staff(staffIdx+i)->key(tick);
|
||||
if (oldkey != key.accidentalType()) {
|
||||
// new key differs from key in effect at this tick
|
||||
KeySig* keysig = new KeySig(score);
|
||||
keysig->setTrack((staffIdx + i) * VOICES);
|
||||
|
@ -3256,8 +3256,8 @@ void MusicXml::xmlAttributes(Measure* measure, int staff, QDomElement e, KeySig*
|
|||
//
|
||||
// apply key to staff(staffIdx) only
|
||||
//
|
||||
KeySigEvent oldkey = score->staff(staffIdx)->key(tick);
|
||||
if (oldkey != key) {
|
||||
int oldkey = score->staff(staffIdx)->key(tick);
|
||||
if (oldkey != key.accidentalType()) {
|
||||
// new key differs from key in effect at this tick
|
||||
KeySig* keysig = new KeySig(score);
|
||||
keysig->setTrack(staffIdx * VOICES);
|
||||
|
|
|
@ -896,8 +896,8 @@ void MuseScore::editInstrList()
|
|||
int interval = firstStaff->part()->instr()->transpose().chromatic;
|
||||
for (auto i = tmpKeymap.begin(); i != tmpKeymap.end(); ++i) {
|
||||
int tick = i->first;
|
||||
KeySigEvent oKey = i->second;
|
||||
tmpKeymap[tick] = transposeKey(oKey.accidentalType(), interval);
|
||||
int oKey = i->second;
|
||||
tmpKeymap[tick] = transposeKey(oKey, interval);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -200,16 +200,16 @@ Palette* MuseScore::newKeySigPalette()
|
|||
|
||||
for (int i = 0; i < 7; ++i) {
|
||||
KeySig* k = new KeySig(gscore);
|
||||
k->setKeySigEvent(KeySigEvent(i+1));
|
||||
k->setKey(i + 1);
|
||||
sp->append(k, keyNames[i*2]);
|
||||
}
|
||||
for (int i = -7; i < 0; ++i) {
|
||||
KeySig* k = new KeySig(gscore);
|
||||
k->setKeySigEvent(KeySigEvent(i));
|
||||
k->setKey(i);
|
||||
sp->append(k, keyNames[(7 + i) * 2 + 1]);
|
||||
}
|
||||
KeySig* k = new KeySig(gscore);
|
||||
k->setKeySigEvent(KeySigEvent(0));
|
||||
k->setKey(0);
|
||||
sp->append(k, keyNames[14]);
|
||||
return sp;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue