소스 검색

It lints! Reversing Gruntfile to normal

Andrea Condoluci 9 년 전
부모
커밋
872f136b70

+ 3 - 3
Gruntfile.js

@@ -116,7 +116,7 @@ module.exports = function (grunt) {
                 configuration: 'tslint.json'
             },
             all: {
-                src: ['<%= browserify.dist.src %>', '<%= browserify.debug.src %>']
+                src: ['src/**/*.ts', 'test/**/*.ts']
             }
         },
         // TypeScript Type Definitions
@@ -158,9 +158,9 @@ module.exports = function (grunt) {
 
     // Register tasks
     grunt.registerTask('all', ['typings', 'default']);
-    grunt.registerTask('default', [ /*'tslint',*/ 'browserify', 'karma:ci']);
+    grunt.registerTask('default', ['tslint', 'browserify', 'karma:ci']);
     // grunt.registerTask('lint', ['tslint', 'jscs']);
-    grunt.registerTask('test', ['browserify:debug', 'karma:ci']);
+    grunt.registerTask('test', ['tslint', 'browserify:debug', 'karma:ci']);
     // grunt.registerTask('test debug Firefox', ['browserify:debug', 'karma:debugWithFirefox']);
     // grunt.registerTask('test debug Chrome', ['browserify:debug', 'karma:debugWithChrome']);
     grunt.registerTask('rebuild', ['clean', 'default']);

+ 4 - 4
src/Common/logging.ts

@@ -3,11 +3,11 @@
  */
 
 
-export class logging {
-    public static debug(...args: any[]) {
+export class Logging {
+    public static debug(...args: any[]): void {
         console.log("[OSMD] DEBUG: ", args.join(" "));
     }
-    public static log(...args: any[]) {
+    public static log(...args: any[]): void {
         console.log("[OSMD] ", args.join(" "));
     }
-}
+}

+ 13 - 13
src/MusicalScore/ScoreIO/InstrumentReader.ts

@@ -17,7 +17,7 @@ import {RhythmSymbolEnum} from "../VoiceData/Instructions/RhythmInstruction";
 import {KeyEnum} from "../VoiceData/Instructions/KeyInstruction";
 import {IXmlAttribute} from "../../Common/FileIO/Xml";
 import {ChordSymbolContainer} from "../VoiceData/ChordSymbolContainer";
-import {logging} from "../../Common/logging";
+import {Logging} from "../../Common/logging";
 import {MidiInstrument} from "../VoiceData/Instructions/ClefInstruction";
 
 
@@ -125,7 +125,7 @@ export class InstrumentReader {
                 noteStaff = parseInt(xmlNode.element("staff").value, 10);
               }
             } catch (ex) {
-              logging.debug("InstrumentReader.readNextXmlMeasure.get staff number", ex);
+              Logging.debug("InstrumentReader.readNextXmlMeasure.get staff number", ex);
               noteStaff = 1;
             }
 
@@ -157,7 +157,7 @@ export class InstrumentReader {
             } catch (ex) {
               let errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/NoteDurationError", "Invalid Note Duration.");
               this.musicSheet.SheetErrors.pushTemp(errorMsg);
-              logging.debug("InstrumentReader.readNextXmlMeasure", errorMsg, ex);
+              Logging.debug("InstrumentReader.readNextXmlMeasure", errorMsg, ex);
               continue;
             }
 
@@ -242,7 +242,7 @@ export class InstrumentReader {
               this.divisions = parseInt(divisionsNode.value, 10);
             } catch (e) {
               let errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/DivisionError", "Invalid divisions value at Instrument: ");
-              logging.debug("InstrumentReader.readNextXmlMeasure", errorMsg, e.toString());
+              Logging.debug("InstrumentReader.readNextXmlMeasure", errorMsg, e.toString());
               this.divisions = this.readDivisionsFromNotes();
               if (this.divisions > 0) {
                 this.musicSheet.SheetErrors.push(errorMsg + this.instrument.Name);
@@ -362,7 +362,7 @@ export class InstrumentReader {
       }
       let errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/MeasureError", "Error while reading Measure.");
       this.musicSheet.SheetErrors.pushTemp(errorMsg);
-      logging.debug("InstrumentReader.readNextXmlMeasure", errorMsg, e);
+      Logging.debug("InstrumentReader.readNextXmlMeasure", errorMsg, e);
     }
 
     this.previousMeasure = this.currentMeasure;
@@ -529,7 +529,7 @@ export class InstrumentReader {
             );
             this.musicSheet.SheetErrors.pushTemp(errorMsg);
             line = 2;
-            logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
+            Logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
           }
 
         }
@@ -557,7 +557,7 @@ export class InstrumentReader {
             this.musicSheet.SheetErrors.pushTemp(errorMsg);
             clefEnum = ClefEnum.G;
             line = 2;
-            logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, e);
+            Logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, e);
           }
 
         }
@@ -605,7 +605,7 @@ export class InstrumentReader {
           );
           this.musicSheet.SheetErrors.pushTemp(errorMsg);
           key = 0;
-          logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
+          Logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
         }
 
       }
@@ -622,7 +622,7 @@ export class InstrumentReader {
           );
           this.musicSheet.SheetErrors.pushTemp(errorMsg);
           keyEnum = KeyEnum.major;
-          logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
+          Logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
         }
 
       }
@@ -696,7 +696,7 @@ export class InstrumentReader {
           this.musicSheet.SheetErrors.pushTemp(errorMsg);
           num = 4;
           denom = 4;
-          logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
+          Logging.debug("InstrumentReader.addAbstractInstruction", errorMsg, ex);
         }
 
         if ((num === 4 && denom === 4) || (num === 2 && denom === 2)) {
@@ -713,7 +713,7 @@ export class InstrumentReader {
 
   private saveAbstractInstructionList(numberOfStaves: number, beginOfMeasure: boolean): void {
     // FIXME TODO
-    logging.debug("saveAbstractInstructionList still to implement! See InstrumentReader.ts");
+    Logging.debug("saveAbstractInstructionList still to implement! See InstrumentReader.ts");
   }
 
   /*private saveAbstractInstructionList(numberOfStaves: number, beginOfMeasure: boolean): void {
@@ -854,7 +854,7 @@ export class InstrumentReader {
   private saveClefInstructionAtEndOfMeasure(): void {
     for (let key in this.abstractInstructions) {
       if (this.abstractInstructions.hasOwnProperty(key)) {
-        let value: { [n: number]: AbstractNotationInstruction; } = this.abstractInstructions[key];
+        let value: AbstractNotationInstruction = this.abstractInstructions[key];
         if (value instanceof ClefInstruction) {
           let clefInstruction: ClefInstruction = <ClefInstruction>value;
           if (
@@ -932,7 +932,7 @@ export class InstrumentReader {
               try {
                 noteDuration = parseInt(durationNode.value, 10);
               } catch (ex) {
-                logging.debug("InstrumentReader.readDivisionsFromNotes", ex);
+                Logging.debug("InstrumentReader.readDivisionsFromNotes", ex);
                 continue;
               }
 

+ 7 - 7
src/MusicalScore/ScoreIO/MusicSheetReader.ts

@@ -6,7 +6,7 @@ import {IXmlElement} from "../../Common/FileIO/Xml";
 import {Instrument} from "../Instrument";
 import {ITextTranslation} from "../Interfaces/ITextTranslation";
 import {MusicSheetReadingException} from "../Exceptions";
-import {logging} from "../../Common/logging";
+import {Logging} from "../../Common/logging";
 import {IXmlAttribute} from "../../Common/FileIO/Xml";
 import {RhythmInstruction} from "../VoiceData/Instructions/RhythmInstruction";
 import {RhythmSymbolEnum} from "../VoiceData/Instructions/RhythmInstruction";
@@ -79,7 +79,7 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
     try {
       return this._createMusicSheet(root, path);
     } catch (e) {
-      logging.log("MusicSheetReader.CreateMusicSheet", e);
+      Logging.log("MusicSheetReader.CreateMusicSheet", e);
     }
 
   }
@@ -162,7 +162,7 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
       //  afterSheetReadingModule.calculate(this.musicSheet);
       //}
     } catch (e) {
-      logging.log("MusicSheetReader._createMusicSheet", e);
+      Logging.log("MusicSheetReader._createMusicSheet", e);
     }
 
     return this.musicSheet;
@@ -665,7 +665,7 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
                         let result: number = <number>parseFloat(instrumentElement.value);
                         subInstrument.volume = result / 127.0;
                       } catch (ex) {
-                        logging.debug("ExpressionReader.readExpressionParameters", "read volume", ex);
+                        Logging.debug("ExpressionReader.readExpressionParameters", "read volume", ex);
                       }
 
                     } else if (instrumentElement.name === "pan") {
@@ -673,18 +673,18 @@ export class MusicSheetReader /*implements IMusicSheetReader*/ {
                         let result: number = <number>parseFloat(instrumentElement.value);
                         subInstrument.pan = result / 64.0;
                       } catch (ex) {
-                        logging.debug("ExpressionReader.readExpressionParameters", "read pan", ex);
+                        Logging.debug("ExpressionReader.readExpressionParameters", "read pan", ex);
                       }
 
                     }
                   } catch (ex) {
-                    logging.log("MusicSheetReader.createInstrumentGroups midi settings: ", ex);
+                    Logging.log("MusicSheetReader.createInstrumentGroups midi settings: ", ex);
                   }
 
                 }
               }
             } catch (ex) {
-              logging.log("MusicSheetReader.createInstrumentGroups: ", ex);
+              Logging.log("MusicSheetReader.createInstrumentGroups: ", ex);
             }
 
           }

+ 51 - 42
src/MusicalScore/ScoreIO/VoiceGenerator.ts

@@ -22,7 +22,7 @@ import {NoteEnum} from "../../Common/DataObjects/pitch";
 import {Staff} from "../VoiceData/Staff";
 import {StaffEntryLink} from "../VoiceData/StaffEntryLink";
 import {VerticalSourceStaffEntryContainer} from "../VoiceData/VerticalSourceStaffEntryContainer";
-import {logging} from "../../Common/logging";
+import {Logging} from "../../Common/logging";
 import {Pitch} from "../../Common/DataObjects/pitch";
 import {IXmlAttribute} from "../../Common/FileIO/Xml";
 import {CollectionUtil} from "../../Util/collectionUtil";
@@ -119,9 +119,11 @@ export class VoiceGenerator {
 
                 let openTieDict: { [_: number]: Tie; } = this.openTieDict;
                 for (let key in openTieDict) {
-                    let tie: Tie = openTieDict[key];
-                    if (Fraction.plus(tie.Start.ParentStaffEntry.Timestamp, tie.Start.Length).lt(this.currentStaffEntry.Timestamp)) {
-                        delete openTieDict[key];
+                    if (openTieDict.hasOwnProperty(key)) {
+                        let tie: Tie = openTieDict[key];
+                        if (Fraction.plus(tie.Start.ParentStaffEntry.Timestamp, tie.Start.Length).lt(this.currentStaffEntry.Timestamp)) {
+                            delete openTieDict[key];
+                        }
                     }
                 }
             }
@@ -193,10 +195,12 @@ export class VoiceGenerator {
     public checkOpenTies(): void {
         let openTieDict: {[key: number]: Tie} = this.openTieDict;
         for (let key in openTieDict) {
-            let tie: Tie = openTieDict[key];
-            if (Fraction.plus(tie.Start.ParentStaffEntry.Timestamp, tie.Start.Length)
-                    .lt(tie.Start.ParentStaffEntry.VerticalContainerParent.ParentMeasure.Duration)) {
-                delete openTieDict[key];
+            if (openTieDict.hasOwnProperty(key)) {
+                let tie: Tie = openTieDict[key];
+                if (Fraction.plus(tie.Start.ParentStaffEntry.Timestamp, tie.Start.Length)
+                        .lt(tie.Start.ParentStaffEntry.VerticalContainerParent.ParentMeasure.Duration)) {
+                    delete openTieDict[key];
+                }
             }
         }
     }
@@ -285,16 +289,17 @@ export class VoiceGenerator {
                                 }
                             } else if (pitchElement.name === "alter") {
                                 noteAlter = parseInt(pitchElement.value, 10);
-                                if (noteAlter === undefined) {
-                                    let errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/NoteAlterationError",
-                                        "Invalid alteration while reading note.");
+                                if (isNaN(noteAlter)) {
+                                    let errorMsg: string = ITextTranslation.translateText(
+                                        "ReaderErrorMessages/NoteAlterationError", "Invalid alteration while reading note."
+                                    );
                                     this.musicSheet.SheetErrors.pushTemp(errorMsg);
                                     throw new MusicSheetReadingException(errorMsg, undefined);
                                 }
 
                             } else if (pitchElement.name === "octave") {
                                 noteOctave = parseInt(pitchElement.value, 10);
-                                if (noteOctave === undefined) {
+                                if (isNaN(noteOctave)) {
                                     let errorMsg: string = ITextTranslation.translateText(
                                         "ReaderErrorMessages/NoteOctaveError", "Invalid octave value while reading note."
                                     );
@@ -303,7 +308,7 @@ export class VoiceGenerator {
                                 }
                             }
                         } catch (ex) {
-                            logging.log("VoiceGenerator.addSingleNote read Step: ", ex.message);
+                            Logging.log("VoiceGenerator.addSingleNote read Step: ", ex.message);
                         }
 
                     }
@@ -325,7 +330,7 @@ export class VoiceGenerator {
                     }
                 }
             } catch (ex) {
-                logging.log("VoiceGenerator.addSingleNote: ", ex);
+                Logging.log("VoiceGenerator.addSingleNote: ", ex);
             }
         }
 
@@ -528,7 +533,7 @@ export class VoiceGenerator {
                         let tupletLabelNumber: number = 0;
                         if (timeModNode !== undefined) {
                             tupletLabelNumber = parseInt(timeModNode.value, 10);
-                            if (tupletLabelNumber === undefined) {
+                            if (isNaN(tupletLabelNumber)) {
                                 let errorMsg: string = ITextTranslation.translateText(
                                     "ReaderErrorMessages/TupletNoteDurationError", "Invalid tuplet note duration."
                                 );
@@ -580,13 +585,10 @@ export class VoiceGenerator {
             if (n.hasAttributes) {
                 let type: string = n.attribute("type").value;
                 let tupletnumber: number = 1;
-                let noTupletNumbering: boolean = false;
-                try {
-                    if (n.attribute("number") !== undefined)
-                        tupletnumber = parseInt(n.attribute("number").value, 10);
-                } catch (err) {
-                    noTupletNumbering = true;
+                if (n.attribute("number") !== undefined) {
+                    tupletnumber = parseInt(n.attribute("number").value, 10);
                 }
+                let noTupletNumbering: boolean = isNaN(tupletnumber);
 
                 if (type === "start") {
                     let tupletLabelNumber: number = 0;
@@ -595,13 +597,13 @@ export class VoiceGenerator {
                         timeModNode = timeModNode.element("actual-notes");
                     }
                     if (timeModNode !== undefined) {
-                        try {
-                            tupletLabelNumber = parseInt(timeModNode.value, 10);
-                        } catch (e) {
-                            let errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/TupletNoteDurationError",
-                                "Invalid tuplet note duration.");
+                        tupletLabelNumber = parseInt(timeModNode.value, 10);
+                        if (isNaN(tupletLabelNumber)) {
+                            let errorMsg: string = ITextTranslation.translateText(
+                                "ReaderErrorMessages/TupletNoteDurationError", "Invalid tuplet note duration."
+                            );
                             this.musicSheet.SheetErrors.pushTemp(errorMsg);
-                            throw new MusicSheetReadingException("", e);
+                            throw new MusicSheetReadingException(errorMsg);
                         }
 
                     }
@@ -659,8 +661,9 @@ export class VoiceGenerator {
                 noteList.push(this.currentNote);
                 this.currentNote.NoteTuplet = tuplet;
             } catch (ex) {
-                let errorMsg: string = ITextTranslation.translateText("ReaderErrorMessages/TupletNumberError",
-                    "Invalid tuplet number.");
+                let errorMsg: string = ITextTranslation.translateText(
+                    "ReaderErrorMessages/TupletNumberError", "Invalid tuplet number."
+                );
                 this.musicSheet.SheetErrors.pushTemp(errorMsg);
                 throw ex;
             }
@@ -753,12 +756,14 @@ export class VoiceGenerator {
                                         slur.EndNote.NoteSlurs.push(slur);
                                     }
                                 }
-                                //let lyricsEntriesArr: KeyValuePair<number, LyricsEntry>[] = this.currentVoiceEntry.LyricsEntries.ToArray();
-                                for (let lyricsEntry in this.currentVoiceEntry.LyricsEntries) {
-                                    let val: LyricsEntry = this.currentVoiceEntry.LyricsEntries[lyricsEntry];
-                                    if (!tieStartNote.ParentVoiceEntry.LyricsEntries[lyricsEntry] === undefined) {
-                                        tieStartNote.ParentVoiceEntry.LyricsEntries[lyricsEntry] = val;
-                                        val.Parent = tieStartNote.ParentVoiceEntry;
+                                let lyricsEntries: { [n: number]: LyricsEntry; } = this.currentVoiceEntry.LyricsEntries;
+                                for (let lyricsEntry in lyricsEntries) {
+                                    if (lyricsEntries.hasOwnProperty(lyricsEntry)) {
+                                        let val: LyricsEntry = this.currentVoiceEntry.LyricsEntries[lyricsEntry];
+                                        if (!tieStartNote.ParentVoiceEntry.LyricsEntries.hasOwnProperty(lyricsEntry)) {
+                                            tieStartNote.ParentVoiceEntry.LyricsEntries[lyricsEntry] = val;
+                                            val.Parent = tieStartNote.ParentVoiceEntry;
+                                        }
                                     }
                                 }
                                 delete this.openTieDict[tieNumber];
@@ -799,10 +804,12 @@ export class VoiceGenerator {
                     }
                     let lyricsEntries: { [_: number]: LyricsEntry; } = this.currentVoiceEntry.LyricsEntries;
                     for (let key in lyricsEntries) {
-                        let lyricsEntry: LyricsEntry = lyricsEntries[key];
-                        if (tieStartNote.ParentVoiceEntry.LyricsEntries[key] === undefined) {
-                            tieStartNote.ParentVoiceEntry.LyricsEntries[key] = lyricsEntry;
-                            lyricsEntry.Parent = tieStartNote.ParentVoiceEntry;
+                        if (lyricsEntries.hasOwnProperty(key)) {
+                            let lyricsEntry: LyricsEntry = lyricsEntries[key];
+                            if (!tieStartNote.ParentVoiceEntry.LyricsEntries.hasOwnProperty(key)) {
+                                tieStartNote.ParentVoiceEntry.LyricsEntries[key] = lyricsEntry;
+                                lyricsEntry.Parent = tieStartNote.ParentVoiceEntry;
+                            }
                         }
                     }
                     if (maxTieNoteFraction.lt(Fraction.plus(this.currentStaffEntry.Timestamp, this.currentNote.Length))) {
@@ -829,9 +836,11 @@ export class VoiceGenerator {
     private findCurrentNoteInTieDict(candidateNote: Note): number {
         let openTieDict: { [_: number]: Tie; } = this.openTieDict;
         for (let key in openTieDict) {
-            let tie: Tie = openTieDict[key];
-            if (tie.Start.Pitch.FundamentalNote === candidateNote.Pitch.FundamentalNote && tie.Start.Pitch.Octave === candidateNote.Pitch.Octave) {
-                return +key;
+            if (openTieDict.hasOwnProperty(key)) {
+                let tie: Tie = openTieDict[key];
+                if (tie.Start.Pitch.FundamentalNote === candidateNote.Pitch.FundamentalNote && tie.Start.Pitch.Octave === candidateNote.Pitch.Octave) {
+                    return +key;
+                }
             }
         }
         return -1;

+ 2 - 2
src/MusicalScore/VoiceData/Expressions/instantaniousDynamicExpression.ts

@@ -3,7 +3,7 @@ import {MultiExpression} from "./multiExpression";
 import {DynamicExpressionSymbolEnum} from "./dynamicExpressionSymbolEnum";
 //import {ArgumentOutOfRangeException} from "../../Exceptions";
 import {InvalidEnumArgumentException} from "../../Exceptions";
-import {logging} from "../../../Common/logging";
+import {Logging} from "../../../Common/logging";
 
 export class InstantaniousDynamicExpression extends AbstractExpression {
     constructor(dynamicExpression: string, soundDynamics: number, placement: PlacementEnum, staffNumber: number) {
@@ -143,7 +143,7 @@ export class InstantaniousDynamicExpression extends AbstractExpression {
         //    length += FontInfo.Info.getBoundingBox(symbol).Width;
         //}
         //return length;
-        logging.debug("[Andrea] instantaniousDynamicExpression: not implemented: calculateLength!");
+        Logging.debug("[Andrea] instantaniousDynamicExpression: not implemented: calculateLength!");
         return 0.0;
     }
 

+ 1 - 0
src/Util/fft.ts

@@ -49,4 +49,5 @@ export class FFT2 {
     }
     return { amplitude: ampl, phase: phas };
   }
+
 }

+ 21 - 18
test/MusicalScore/Calculation/MeasureSizeCalculator.ts

@@ -49,7 +49,8 @@ describe("Measure Size Calculator Tests", () => {
   });
 
   it("Will certainly pass", (done: MochaDone) => {
-    let visual = function(func: (r: any, ctx: any) => void) {
+    let visual: (testfun: (r: any, ctx: any) => void ) => void;
+    visual = function(func: (r: any, ctx: any) => void): void {
       let canvas: HTMLCanvasElement = document.createElement("canvas");
       document.body.appendChild(canvas);
       let renderer: any = new Vex.Flow.Renderer(
@@ -60,26 +61,28 @@ describe("Measure Size Calculator Tests", () => {
       let ctx: any = renderer.getContext();
       ctx.setFont("Arial", 10, "").setBackgroundFillStyle("#eed");
       func(renderer, ctx);
-    }
+    };
 
-    visual(function(renderer, ctx) {
+    visual((renderer: any, ctx: any): void => {
       renderer.resize(420, 120);
-      let stave: Vex.Flow.Stave = new Vex.Flow.Stave(10, 0, 410);
-      stave.setContext(ctx);
-      for (var t in Vex.Flow.Clef.types) {
-        let clef: Vex.Flow.Clef = new Vex.Flow.Clef(t);
-        stave.addModifier(clef, Vex.Flow.StaveModifier.Position.BEGIN);
-        stave.format();
-        // (*&^%$#@) //
-        // FIXME HERE? NaN FIXME FIXME FIXME //
-        clef.setStave(stave);
-        let bb: Vex.Flow.BoundingBox =
-          MeasureSizeCalculator.getClefBoundingBox(clef);
-        console.log(bb);
-        ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH());
-        ctx.stroke();
+      let stave2: Vex.Flow.Stave = new Vex.Flow.Stave(10, 0, 410);
+      stave2.setContext(ctx);
+      for (let t in Vex.Flow.Clef.types) {
+        if (Vex.Flow.Clef.types.hasOwnProperty(t)) {
+          let clef: Vex.Flow.Clef = new Vex.Flow.Clef(t);
+          stave2.addModifier(clef, Vex.Flow.StaveModifier.Position.BEGIN);
+          stave2.format();
+          // (*&^%$#@) //
+          // FIXME HERE? NaN FIXME FIXME FIXME //
+          clef.setStave(stave2);
+          let bb: Vex.Flow.BoundingBox =
+              MeasureSizeCalculator.getClefBoundingBox(clef);
+          console.log(bb);
+          ctx.rect(bb.getX(), bb.getY(), bb.getW(), bb.getH());
+          ctx.stroke();
+        }
       }
-      stave.draw();
+      stave2.draw();
     });
 
     done();

+ 2 - 2
test/Util/fft.ts

@@ -2,8 +2,8 @@ import { FFT2 } from "../../src/Util/fft";
 
 describe("Fast Fourier Transform tests:", () => {
     describe("test1?", () => {
-      let array: number[] = [0.5, 0.5, 0.5];
-      let res: { imag: Float64Array; real: Float64Array; } = FFT2.toRealImag(array);
+        let array: number[] = [0.5, 0.5, 0.5];
+        let res: { imag: Float64Array; real: Float64Array; } = FFT2.toRealImag(array);
 
         it("will succeed", (done: MochaDone) => {
             console.log(res.imag[0], res.real[0]);