Procházet zdrojové kódy

Merge branch 'gyt-feature-tianyong' into gyt-test

TIANYONG před 1 rokem
rodič
revize
87d32666ee

+ 5 - 1
osmd-extended/src/Common/DataObjects/Pitch.ts

@@ -9,6 +9,7 @@
     "-2": [4, 12, 23],
     "-7": [13],
     "-9": [6],
+    "12": [5, 116, 55]
 };
 
 // The value of the enum indicates the number of halftoneSteps from one note to the next
@@ -177,7 +178,10 @@ export class Pitch {
                 }
             }
         }
-        // console.log(fixnum)
+        if ((DYSubjectId === 5 || DYSubjectId === 55) && !(window as any).needPitchVoice) {
+            fixnum = 0
+        }
+        // console.log('修改音符频率',fixnum,(window as any).needPitchVoice)
         // console.log('halfToneSteps', octaveSteps, halfToneSteps)
         let step = halfToneSteps + fixnum
         if (type === "next") {

+ 2 - 0
osmd-extended/src/MusicalScore/Graphical/EngravingRules.ts

@@ -34,6 +34,7 @@ export class EngravingRules {
      * DYWorkSpecial 是否是特殊教材
      * DYContainerId 当前容器id
      * DYSVGContainerId 当前SVG容器id
+     * DYMusicClientType 当前的客户端类型
      */
 
      public DYSlursStartingAtSameStaffEntryYOffset: number = 0;
@@ -45,6 +46,7 @@ export class EngravingRules {
      // public DYSubjectId: number = 0;
      public DYMusicScoreType: IMusicScore = "staff";
 
+     public DYMusicClientType: string = "";
     /** A unit of distance. 1.0 is the distance between lines of a stave for OSMD, which is 10 pixels in Vexflow. */
     public static unit: number = 1.0;
     public SamplingUnit: number;

+ 1 - 0
osmd-extended/src/MusicalScore/Graphical/MusicSheetDrawer.ts

@@ -265,6 +265,7 @@ export abstract class MusicSheetDrawer {
         // 修改 判断为音阶的话
         const clefList = ['C', 'G', 'D', 'A', 'E', 'B', 'F#', 'C#', 'G#', 'F', 'Bb', 'Eb', 'Ab', 'Db', 'Gb', 'Cb', 'Fb', 'D#', 'A#', 'E#']
         if (clefList.includes(label.text)){
+            // const distanceH = this.rules.DYMusicClientType === 'teacher' ? 8 : 18
             calcResults.ScreenPosition.y = (graphicalLabel.PositionAndShape.Parent.AbsolutePosition.y + graphicalLabel.PositionAndShape.Parent.BorderTop + graphicalLabel.PositionAndShape.Parent.BorderMarginTop) * 10
         }
         // 修改 底部 play listen

+ 23 - 1
osmd-extended/src/MusicalScore/ScoreIO/InstrumentReader.ts

@@ -150,6 +150,14 @@ export class InstrumentReader {
     this.maxTieNoteFraction = new Fraction(0, 1);
     let lastNoteWasGrace: boolean = false;
     const notes: IXmlElement[] = [];
+    // 根据hiddenSpeed关键字控制谱面速度是否隐藏
+    let hideSpeed: boolean = false;
+    /**
+     * needPitchVoice:是否需要转调
+     * <clef-octave-change>1</clef-octave-change>
+     * 根据<clef>标签里面的<clef-octave-change>的值判断,为0或者不存在<clef-octave-change>标签,则需要转调
+     * 
+     */
     try {
       const measureNode: IXmlElement = this.xmlMeasureList[this.currentXmlMeasureIndex];
       const xmlMeasureListArr: IXmlElement[] = measureNode.elements();
@@ -553,6 +561,14 @@ export class InstrumentReader {
             }
           }
 
+          // 曲子移调
+          const clefNode: IXmlElement = xmlNode.element("clef");
+          if (clefNode) {
+            const clefChangeNode: IXmlElement = clefNode.element('clef-octave-change');
+            if (!clefChangeNode || Number(clefChangeNode?.value) === 0) {
+              (window as any).needPitchVoice = true
+            }
+          }
         } else if (xmlNode.name === "forward") {
           const forFraction: number = parseInt(xmlNode.element("duration").value, 10);
           currentFraction.Add(new Fraction(forFraction, 4 * this.divisions));
@@ -640,6 +656,12 @@ export class InstrumentReader {
                   // console.log(words.value, this.currentGradualChangeMeasure.speedInfo);
                   this.xmlNotes = [];
                 }
+                // 隐藏速度显示
+                if (words.value && words.value.toLocaleLowerCase() === 'hiddenspeed') {
+                  hideSpeed = true
+                } else {
+                  hideSpeed = false
+                }
               }
               if (directionTypeNodes.find(ele => ele.element("metronome")) && this.currentGradualChangeMeasure?.speedInfo) {
                 // console.log(this.xmlNotes.length, this.currentGradualChangeMeasure.speedInfo);
@@ -660,7 +682,7 @@ export class InstrumentReader {
              expressionReader.readExpressionParameters(
                xmlNode, this.instrument, this.divisions, currentFraction, previousFraction, this.currentMeasure.MeasureNumber, false
              );
-             expressionReader.read(xmlNode, this.currentMeasure, currentFraction, previousFraction.clone(), notes.length);
+             expressionReader.read(xmlNode, this.currentMeasure, currentFraction, previousFraction.clone(), notes.length, hideSpeed);
            }
           }
         } else if (xmlNode.name === "barline") {

+ 1 - 0
osmd-extended/src/MusicalScore/ScoreIO/MusicSheetReader.ts

@@ -201,6 +201,7 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
 
         //this.musicSheet.DefaultStartTempoInBpm = this.musicSheet.SourceMeasures[0].TempoInBPM;
         this.musicSheet.userStartTempoInBPM = this.musicSheet.userStartTempoInBPM || this.musicSheet.DefaultStartTempoInBpm;
+        // console.log('🚀 ~ 音符数据2222', this.musicSheet.userStartTempoInBPM, this.musicSheet.DefaultStartTempoInBpm)
         this.musicSheet.InitializeStartTempoInBPM(this.musicSheet.userStartTempoInBPM);
         this.musicSheet.MusicPartManager.init();
         return this.musicSheet;

+ 5 - 2
osmd-extended/src/MusicalScore/ScoreIO/MusicSymbolModules/ExpressionReader.ts

@@ -146,7 +146,7 @@ export class ExpressionReader {
         }
     }
     public read(directionNode: IXmlElement, currentMeasure: SourceMeasure,
-                inSourceMeasureCurrentFraction: Fraction, inSourceMeasurePreviousFraction: Fraction = undefined, noteIndex: number = 0): void {
+                inSourceMeasureCurrentFraction: Fraction, inSourceMeasurePreviousFraction: Fraction = undefined, noteIndex: number = 0, hideSpeed?: boolean): void {
         let isTempoInstruction: boolean = false;
         let isDynamicInstruction: boolean = false;
         const n: IXmlElement = directionNode.element("sound");
@@ -188,6 +188,8 @@ export class ExpressionReader {
             // TODO check second "beat-unit", e.g. quarter = half
             const dotted: boolean = dirContentNode.element("beat-unit-dot") !== undefined;
             const bpm: IXmlElement = dirContentNode.element("per-minute");
+            // console.log('隐藏',hideSpeed)
+            // bpm['elem'].setAttribute('testAttr','hide')
             // TODO check print-object = false -> don't render invisible metronome mark
             if (beatUnit !== undefined && bpm) {
                 const useCurrentFractionForPositioning: boolean = (dirContentNode.hasAttributes && dirContentNode.attribute("default-x") !== undefined);
@@ -195,7 +197,7 @@ export class ExpressionReader {
                     this.directionTimestamp = Fraction.createFromFraction(inSourceMeasureCurrentFraction);
                 }
                 const bpmNumber: number = parseFloat(bpm.value);
-                this.createNewTempoExpressionIfNeeded(currentMeasure);
+                !hideSpeed && this.createNewTempoExpressionIfNeeded(currentMeasure);
                 const instantaneousTempoExpression: InstantaneousTempoExpression =
                     new InstantaneousTempoExpression(undefined,
                                                      this.placement,
@@ -229,6 +231,7 @@ export class ExpressionReader {
                 this.currentMultiTempoExpression.addExpression(instantaneousTempoExpression, "");
                 this.currentMultiTempoExpression.CombinedExpressionsText = "test";
             }
+            // console.log(bpm)
             return;
         }
 

+ 2 - 2
src/subpages/colexiu/popups/setting/sett.tsx

@@ -145,7 +145,7 @@ export default defineComponent({
                 <Switch v-model={SettingState.sett.eyeProtection} {...switchProps}></Switch>
               </Cell>
               {/** 大雅金唐曲目自定义小节数 */}
-              {/* {
+              {
                 detailState.isDaYaCategory && 
                 <>
                   <Cell center border={false} title="自定义每行小节数">
@@ -168,7 +168,7 @@ export default defineComponent({
                     </div>
                   }
                 </>
-              } */}
+              }
 
               <Divider />
               {/* <Cell center border={false} title="乐谱大小">