Beispiel #1
0
 public Track()
 {
     Name = "";
     ShortName = "";
     Tuning = new int[0];
     Bars = new FastList<Bar>();
     Chords = new FastDictionary<string, Chord>();
     PlaybackInfo = new PlaybackInformation();
     Color = new Color(200, 0, 0);
 }
Beispiel #2
0
        public void ReadPlaybackInfos()
        {
            _playbackInfos = new FastList<PlaybackInformation>();
            for (int i = 0; i < 64; i++)
            {
                PlaybackInformation info = new PlaybackInformation();
                info.PrimaryChannel = i;
                info.SecondaryChannel = i;
                info.Program = ReadInt32();

                info.Volume = Data.ReadByte();
                info.Balance = Data.ReadByte();
                Data.Skip(6);

                _playbackInfos.Add(info);
            }
        }
        private void GenerateChannel(Track track, byte channel, PlaybackInformation playbackInfo)
        {
            var volume = ToChannelShort(playbackInfo.Volume);
            var balance = ToChannelShort(playbackInfo.Balance);
            _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.VolumeCoarse, (byte)volume);
            _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.PanCoarse, (byte)balance);
            _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.ExpressionControllerCoarse, 127);

            // set parameter that is being updated (0) -> PitchBendRangeCoarse
            _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.RegisteredParameterFine, 0);
            _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.RegisteredParameterCourse, 0);

            // Set PitchBendRangeCoarse to 12
            _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.DataEntryFine, 0);
            _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.DataEntryCoarse, 12);

            _handler.AddProgramChange(track.Index, 0, channel, (byte)playbackInfo.Program);
        }
Beispiel #4
0
 private void GenerateChannel(Track track, byte channel, PlaybackInformation playbackInfo)
 {
     var volume = ToChannelShort(playbackInfo.Volume);
     var balance = ToChannelShort(playbackInfo.Balance);
     _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.Volume, (byte)volume);
     _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.Balance, (byte)balance);
     _handler.AddControlChange(track.Index, 0, channel, (byte)MidiController.Expression, 127);
     _handler.AddProgramChange(track.Index, 0, channel, (byte)playbackInfo.Program);
 }
Beispiel #5
0
        public Score ScoreToJsObject(Score score)
        {
            Score score2 = NewObject();

            Score.CopyTo(score, score2);
            score2.MasterBars = new FastList <MasterBar>();
            score2.Tracks     = new FastList <Track>();

            #region MasterBars

            for (var i = 0; i < score.MasterBars.Count; i++)
            {
                MasterBar masterBar  = score.MasterBars[i];
                MasterBar masterBar2 = NewObject();
                MasterBar.CopyTo(masterBar, masterBar2);
                if (masterBar.TempoAutomation != null)
                {
                    masterBar2.TempoAutomation = NewObject();
                    Automation.CopyTo(masterBar.TempoAutomation, masterBar2.TempoAutomation);
                }
                if (masterBar.VolumeAutomation != null)
                {
                    masterBar2.VolumeAutomation = NewObject();
                    Automation.CopyTo(masterBar.VolumeAutomation, masterBar2.VolumeAutomation);
                }
                if (masterBar.Section != null)
                {
                    masterBar2.Section = NewObject();
                    Section.CopyTo(masterBar.Section, masterBar2.Section);
                }
                score2.MasterBars.Add(masterBar2);
            }

            #endregion

            #region Tracks

            for (int t = 0; t < score.Tracks.Count; t++)
            {
                var   track  = score.Tracks[t];
                Track track2 = NewObject();
                track2.Color = NewObject();
                Track.CopyTo(track, track2);

                track2.PlaybackInfo = NewObject();
                PlaybackInformation.CopyTo(track.PlaybackInfo, track2.PlaybackInfo);

                track2.Chords = new FastDictionary <string, Chord>();
                foreach (var key in track.Chords.Keys)
                {
                    var   chord  = track.Chords[key];
                    Chord chord2 = NewObject();
                    Chord.CopyTo(chord, chord2);
                    track2.Chords[key] = chord;
                }

                #region Bars

                track2.Bars = new FastList <Bar>();
                for (int b = 0; b < track.Bars.Count; b++)
                {
                    var bar  = track.Bars[b];
                    Bar bar2 = NewObject();
                    Bar.CopyTo(bar, bar2);

                    #region Voices

                    bar2.Voices = new FastList <Voice>();
                    for (int v = 0; v < bar.Voices.Count; v++)
                    {
                        var   voice  = bar.Voices[v];
                        Voice voice2 = NewObject();
                        Voice.CopyTo(voice, voice2);

                        #region Beats

                        voice2.Beats = new FastList <Beat>();
                        for (int bb = 0; bb < voice.Beats.Count; bb++)
                        {
                            var  beat  = voice.Beats[bb];
                            Beat beat2 = NewObject();
                            Beat.CopyTo(beat, beat2);

                            beat2.Automations = new FastList <Automation>();
                            for (int a = 0; a < beat.Automations.Count; a++)
                            {
                                Automation automation = NewObject();
                                Automation.CopyTo(beat.Automations[a], automation);
                                beat2.Automations.Add(automation);
                            }

                            beat2.WhammyBarPoints = new FastList <BendPoint>();
                            for (int i = 0; i < beat.WhammyBarPoints.Count; i++)
                            {
                                BendPoint point = NewObject();
                                BendPoint.CopyTo(beat.WhammyBarPoints[i], point);
                                beat2.WhammyBarPoints.Add(point);
                            }

                            #region Notes

                            beat2.Notes = new FastList <Note>();
                            for (int n = 0; n < beat.Notes.Count; n++)
                            {
                                var  note  = beat.Notes[n];
                                Note note2 = NewObject();
                                Note.CopyTo(note, note2);

                                note2.BendPoints = new FastList <BendPoint>();
                                for (int i = 0; i < note.BendPoints.Count; i++)
                                {
                                    BendPoint point = NewObject();
                                    BendPoint.CopyTo(note.BendPoints[i], point);
                                    note2.BendPoints.Add(point);
                                }

                                beat2.Notes.Add(note2);
                            }

                            #endregion

                            voice2.Beats.Add(beat2);
                        }

                        #endregion

                        bar2.Voices.Add(voice2);
                    }

                    #endregion

                    track2.Bars.Add(bar2);
                }

                #endregion

                score2.Tracks.Add(track2);
            }

            #endregion

            return(score2);
        }