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); }
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); }
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); }
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); }