Exemple #1
0
 protected RandomIntervalsMelodicTrail()
 {
     MinPitch = Pitch.FromMidiPitch(0, Pitch.MidiPitchTranslationMode.Auto);
     MaxPitch = Pitch.FromMidiPitch(int.MaxValue, Pitch.MidiPitchTranslationMode.Auto);
     MinNotes = 2;
     MaxNotes = 10;
 }
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var pitches = new List <Pitch>();

            while (reader.TokenType != JsonToken.EndArray)
            {
                var midiPitch = reader.ReadAsInt32();
                if (!midiPitch.HasValue)
                {
                    continue;
                }
                pitches.Add(Pitch.FromMidiPitch(midiPitch.Value, Pitch.MidiPitchTranslationMode.Auto));
            }
            return(pitches.ToArray());
        }
        internal void UpdateDisplay(NoteTrainerViewModel trainerViewModel)
        {
            ClearMusicScore();

            var translationMode = Pitch.MidiPitchTranslationMode.Auto;

            if (gameConfiguration.Flats && !gameConfiguration.Sharps)
            {
                translationMode = Pitch.MidiPitchTranslationMode.Flats;
            }
            else if (gameConfiguration.Sharps && !gameConfiguration.Flats)
            {
                translationMode = Pitch.MidiPitchTranslationMode.Sharps;
            }

            foreach (var displayNote in trainerViewModel.DisplayNotes)
            {
                var staff = (displayNote.MidiPitch >= Midi.Pitch.C4) ? musicScore.FirstStaff : musicScore.SecondStaff;

                var scoreNote = new Note(Pitch.FromMidiPitch((int)displayNote.MidiPitch, translationMode), RhythmicDuration.Quarter)
                {
                    IsUpperMemberOfChord = (staff.Elements.Count > 2)
                };
                switch (displayNote.State)
                {
                case DisplayNoteState.Correct:
                    scoreNote.CustomColor = new Color(0, 255, 0, 255);
                    break;

                case DisplayNoteState.Incorrect:
                    scoreNote.CustomColor = Color.Red;
                    break;
                }
                staff.Add(scoreNote);
            }

            if (musicScore.FirstStaff.Elements.Count == 2)
            {
                musicScore.FirstStaff.Elements.Add(new Rest(RhythmicDuration.Quarter));
            }
            if (musicScore.SecondStaff.Elements.Count == 2)
            {
                musicScore.SecondStaff.Elements.Add(new Rest(RhythmicDuration.Quarter));
            }
        }
        public void LoadTestData(HookDirectionAlgorithm hookDirectionAlgorithm)
        {
            var mScore = Score.CreateOneStaffScore(Clef.Treble, Music.Model.MajorAndMinor.MajorScale.G);

            mScore.FirstStaff.AddTimeSignature(TimeSignatureType.Numbers, 4, 4);
            mScore.FirstStaff.AddNote(Pitch.G4, RhythmicDuration.Half);
            mScore.FirstStaff.Add(new Rest(RhythmicDuration.Quarter));
            mScore.FirstStaff.AddNote(Pitch.FromMidiPitch(60, Pitch.MidiPitchTranslationMode.Auto), RhythmicDuration.Half);
            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);
            mScore.FirstStaff.AddNote(Pitch.G4, RhythmicDuration.Quarter);

            mScore.FirstStaff.AddNote(Pitch.FromMidiPitch(61, Pitch.MidiPitchTranslationMode.Auto), RhythmicDuration.Quarter);
            mScore.FirstStaff.AddRange(new Note[] {
                Note.FromMidiPitch(63, RhythmicDuration.Quarter),
                Note.FromMidiPitch(67, RhythmicDuration.Quarter)
            }.MakeChord());
            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);
            mScore.FirstStaff.AddRange(StaffBuilder.FromPitches(
                                           Pitch.C4,
                                           Pitch.E4,
                                           Pitch.G4,
                                           Pitch.A4,
                                           Pitch.C4,
                                           Pitch.E4,
                                           Pitch.G4,
                                           Pitch.A4).AddUniformRhythm(RhythmicDuration.Sixteenth).ApplyStemDirection(VerticalDirection.Up).Rebeam());

            Note n1 = new Note();

            n1.ApplyMidiPitch(63);
            n1.Duration             = RhythmicDuration.Quarter;
            n1.Tuplet               = TupletType.Start;
            n1.TupletWeightOverride = 1;
            mScore.FirstStaff.Add(n1);

            n1 = new Note();
            n1.ApplyMidiPitch(66);

            n1.Duration             = RhythmicDuration.Quarter;
            n1.TupletWeightOverride = 1;

            mScore.FirstStaff.Add(n1);

            n1 = new Note();
            n1.ApplyMidiPitch(66);
            n1.Duration             = RhythmicDuration.Quarter;
            n1.TupletWeightOverride = 1;

            n1.Tuplet = TupletType.Stop;
            mScore.FirstStaff.Add(n1);

            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);
            PrintSuggestion ps = new PrintSuggestion
            {
                IsSystemBreak = true
            };

            mScore.FirstStaff.Add(ps);

            mScore.FirstStaff.AddRange(StaffBuilder.FromPitches(Pitch.G4, Pitch.B4, Pitch.D5, Pitch.C4, Pitch.E4, Pitch.G4, Pitch.D4, Pitch.DSharp4, Pitch.A4)
                                       .AddRhythm("8 8 8 8 4 4 4 4 4"));
            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);

            mScore.FirstStaff.AddRange(StaffBuilder.FromPitches(Pitch.G4, Pitch.B4, Pitch.D5, Pitch.C4, Pitch.E4, Pitch.G4, Pitch.D4, Pitch.DSharp4, Pitch.A4)
                                       .AddRhythm("8 8 8 8 4 4 4 4 4"));

            mScore.FirstStaff.Elements.Add(new Barline());

            mScore.FirstStaff.Add(new PrintSuggestion()
            {
                IsSystemBreak = true
            });

            mScore.FirstStaff.AddBarline(BarlineStyle.LightHeavy);

            mScore.FirstStaff.Elements.Add(new TimeSignature(TimeSignatureType.Numbers, 3, 4));
            mScore.FirstStaff.Elements.Add(new Note(Pitch.C4, RhythmicDuration.Half.AddDots(1))
            {
                TieType = NoteTieType.Start
            });

            mScore.FirstStaff.Elements.Add(new Barline());
            mScore.FirstStaff.Elements.Add(new Note(Pitch.C4, RhythmicDuration.Half.AddDots(1))
            {
                TieType = NoteTieType.Stop
            });
            mScore.FirstStaff.Elements.Add(new Barline());
            mScore.FirstStaff.Elements.Add(new Note(Pitch.C4, RhythmicDuration.Half.AddDots(1)));
            mScore.FirstStaff.Elements.Add(new Barline(BarlineStyle.LightHeavy));

            Data = mScore;
        }
 protected MajorOrMinorScale(int midiPitch, MajorAndMinorScaleFlags flags)
     : base(GetMode(flags.IsMinor), midiPitch, flags.IsFlat ? Pitch.MidiPitchTranslationMode.Flats : Pitch.MidiPitchTranslationMode.Sharps)
 {
     Tonic  = Pitch.FromMidiPitch(midiPitch, MidiPitchTranslationMode);
     Fifths = CircleOfFifths.CalculateFifths(Tonic, flags);
 }
 /// <summary>
 /// Changes pitch of the note to the specific midi pitch.
 /// </summary>
 /// <param name="midiPitch">Midi pitch</param>
 public void ApplyMidiPitch(int midiPitch)
 {
     Pitch = Pitch.FromMidiPitch(midiPitch, Pitch.MidiPitchTranslationMode.Auto);
 }
        public Form1()
        {
            InitializeComponent();
            //noteViewer1.Settings.IsMusicPaperMode = true;

            var fontPath     = Path.Combine(Application.StartupPath, "Assets", "Bravura.otf");
            var metaPath     = Path.Combine(Application.StartupPath, "Assets", "bravura_metadata.json");
            var smuflProfile = SMuFLMusicFont.CreateFromJsonString(File.ReadAllText(metaPath));

            noteViewer1.SetFontFromPath(fontPath, smuflProfile);

            var mScore = Score.CreateOneStaffScore(Clef.Treble, Music.Model.MajorAndMinor.MajorScale.G);

            mScore.FirstStaff.AddTimeSignature(TimeSignatureType.Numbers, 4, 4);
            mScore.FirstStaff.AddNote(Pitch.G4, RhythmicDuration.Half);
            mScore.FirstStaff.Add(new Rest(RhythmicDuration.Quarter));
            mScore.FirstStaff.AddNote(Pitch.FromMidiPitch(60, Pitch.MidiPitchTranslationMode.Auto), RhythmicDuration.Half);
            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);
            mScore.FirstStaff.AddNote(Pitch.G4, RhythmicDuration.Quarter);

            mScore.FirstStaff.AddNote(Pitch.FromMidiPitch(61, Pitch.MidiPitchTranslationMode.Auto), RhythmicDuration.Quarter);
            mScore.FirstStaff.AddRange(new Note[] {
                Note.FromMidiPitch(63, RhythmicDuration.Quarter),
                Note.FromMidiPitch(67, RhythmicDuration.Quarter)
            }.MakeChord());
            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);
            mScore.FirstStaff.AddRange(StaffBuilder.FromPitches(
                                           Pitch.C4,
                                           Pitch.E4,
                                           Pitch.G4,
                                           Pitch.A4,
                                           Pitch.C4,
                                           Pitch.E4,
                                           Pitch.G4,
                                           Pitch.A4).AddUniformRhythm(RhythmicDuration.Sixteenth).ApplyStemDirection(VerticalDirection.Up).Rebeam());

            Note n1 = new Note();

            n1.ApplyMidiPitch(63);
            n1.Duration             = RhythmicDuration.Quarter;
            n1.Tuplet               = TupletType.Start;
            n1.TupletWeightOverride = 1;
            mScore.FirstStaff.Add(n1);

            n1 = new Note();
            n1.ApplyMidiPitch(66);

            n1.Duration             = RhythmicDuration.Quarter;
            n1.TupletWeightOverride = 1;

            mScore.FirstStaff.Add(n1);

            n1 = new Note();
            n1.ApplyMidiPitch(66);
            n1.Duration             = RhythmicDuration.Quarter;
            n1.TupletWeightOverride = 1;

            n1.Tuplet = TupletType.Stop;
            mScore.FirstStaff.Add(n1);

            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);
            PrintSuggestion ps = new PrintSuggestion
            {
                IsSystemBreak = true
            };

            mScore.FirstStaff.Add(ps);

            mScore.FirstStaff.AddRange(StaffBuilder.FromPitches(Pitch.G4, Pitch.B4, Pitch.D5, Pitch.C4, Pitch.E4, Pitch.G4, Pitch.D4, Pitch.DSharp4, Pitch.A4)
                                       .AddRhythm("8 8 8 8 4 4 4 4 4"));
            mScore.FirstStaff.AddBarline(BarlineStyle.Regular);

            mScore.FirstStaff.AddRange(StaffBuilder.FromPitches(Pitch.G4, Pitch.B4, Pitch.D5, Pitch.C4, Pitch.E4, Pitch.G4, Pitch.D4, Pitch.DSharp4, Pitch.A4)
                                       .AddRhythm("8 8 8 8 4 4 4 4 4"));

            mScore.FirstStaff.Elements.Add(new Barline());

            mScore.FirstStaff.Add(new PrintSuggestion()
            {
                IsSystemBreak = true
            });

            mScore.FirstStaff.AddBarline(BarlineStyle.LightHeavy);

            mScore.FirstStaff.Elements.Add(new TimeSignature(TimeSignatureType.Numbers, 3, 4));
            mScore.FirstStaff.Elements.Add(new Note(Pitch.C4, RhythmicDuration.Half.AddDots(1))
            {
                TieType = NoteTieType.Start
            });

            mScore.FirstStaff.Elements.Add(new Barline());
            mScore.FirstStaff.Elements.Add(new Note(Pitch.C4, RhythmicDuration.Half.AddDots(1))
            {
                TieType = NoteTieType.Stop
            });
            mScore.FirstStaff.Elements.Add(new Barline());
            mScore.FirstStaff.Elements.Add(new Note(Pitch.C4, RhythmicDuration.Half.AddDots(1)));
            mScore.FirstStaff.Elements.Add(new Barline(BarlineStyle.LightHeavy));

            noteViewer1.DataSource = mScore;
            noteViewer1.Refresh();
        }