private void panelTracks_DragDrop(object sender, DragEventArgs e) { var droppedPETrack = e.GetDropObject <PEMidiTrack>(); droppedPETrack.IfObjectNotNull(xx => { if (droppedPETrack != sender) { DoRequestBackup(); Track newTrack = null; if (Sequence == null) { var targetType = this.IsPro ? FileType.Pro : FileType.Guitar5; var seq = new Sequence(targetType, droppedPETrack.Track.Sequence.Division); this.sequence = seq; if (!droppedPETrack.Track.IsTempo()) { var tempo = droppedPETrack.Track.Sequence.Tracks.Where(x => x.IsTempo()); if (tempo.Any()) { seq.AddTempo(tempo.First().ConvertToPro()); } } newTrack = droppedPETrack.Track.Clone(seq.FileType); seq.Add(newTrack); } else { if (this.Sequence == droppedPETrack.Track.Sequence) { this.Sequence.MoveTrack(droppedPETrack.Track.GetTrackIndex(), GetInsertAt()); } else { newTrack = droppedPETrack.Track.Clone(Sequence.FileType); sequence.Insert(GetInsertAt(), newTrack); if (!sequence.Tracks.Any(x => x.IsTempo())) { var tempo = droppedPETrack.Track.Sequence.Tracks.Where(x => x.IsTempo()); if (tempo.Any()) { sequence.AddTempo(tempo.First().ConvertToPro()); } } } } CreatePanelTracks(this.sequence); TrackAdded.IfObjectNotNull(tc => tc(this, this.sequence, newTrack, SelectedDifficulty)); } }); dragItem = null; }
public void AddTempoTrack(Track t) { if (t == null || t.Name == null) { return; } try { if (!Sequence.Contains(t)) { Sequence.AddTempo(t); } } catch { } dirtyItems |= DirtyItem.All; }
private void ProcessFile(string fileName) { string[] lines = new ProcessScore(fileName).Score.ToArray(); MidiFile.Folder = Path.GetDirectoryName(fileName); string value = ""; var note = new Note(); foreach (string s in lines) { if (s.StartsWith("@skip")) { throw new SkipFileException("Skip Instruction"); } if (s.StartsWith("@real")) { note.RealPitch = true; continue; } if (s.StartsWith("@swing")) { note.Swing = !note.Swing; continue; } if (s.StartsWith("@soprano")) { note.SetSoprano(); continue; } if (s.StartsWith("@alto")) { note.SetAlto(); continue; } if (s.StartsWith("@transpose")) { note.Transpose = true; continue; } if (s.StartsWith("t=")) { value = s.Replace("t=", ""); Sequence.AddTempo(uint.Parse(value)); continue; } if (s.StartsWith("f=")) { value = s.Replace("f=", ""); MidiFile.Folder = value; continue; } string[] notes = TokeniseBar(s); foreach (var n in notes) { note.NextNote(n); Sequence.AddMidiNote(note); } } MidiFile.AllocateTracks(new TrackBuilder(Sequence, Debug)); }
void PlayMidiFromSelection() { try { if (EditorPro.Sequence == null) { return; } if (!CreateMidiPlaybackDeviceIfNull()) { return; } if (midiPlaybackSequencer == null) { midiPlaybackSequencer = new Sequencer(); } if (playbackSequencerAttached == false) { this.midiPlaybackSequencer.PlayingCompleted += new EventHandler(midiPlaybackSequencer_PlayingCompleted); this.midiPlaybackSequencer.ChannelMessagePlayed += new EventHandler <ChannelMessageEventArgs>(midiPlaybackSequencer_ChannelMessagePlayed); this.midiPlaybackSequencer.SysExMessagePlayed += new EventHandler <SysExMessageEventArgs>(midiPlaybackSequencer_SysExMessagePlayed); playbackSequencerAttached = true; } if (MidiPlaybackInProgress == true) { midiPlaybackSequencer.Stop(); MidiPlaybackInProgress = false; } if (midiPlaybackSequence != null) { midiPlaybackSequence.Dispose(); } midiPlaybackSequence = new Sequence(FileType.Pro, EditorPro.Sequence.Division); midiPlaybackSequence.Format = EditorPro.Sequence.Format; midiPlaybackSequencer.Sequence = midiPlaybackSequence; int pos = 0; if (SelectedChord != null) { pos = SelectedChord.DownTick - Utility.ScollToSelectionOffset; } var mainTrack = EditorPro.GuitarTrack.GetTrack(); if (mainTrack != null) { midiPlaybackSequence.AddTempo(EditorPro.GuitarTrack.GetTempoTrack().Clone()); Track t = new Track(FileType.Pro, mainTrack.Name); foreach (var gc in EditorPro.GuitarTrack.Messages.Chords.Where(x => x.IsPureArpeggioHelper == false).ToList()) { foreach (var cn in gc.Notes.Where(x => x.IsArpeggioNote == false && x.TickLength > 0 && x.Data2 >= 100).ToList()) { t.Insert(gc.DownTick - Utility.ScollToSelectionOffset, new ChannelMessage(ChannelCommand.NoteOn, cn.Data1, cn.Data2)); t.Insert(gc.UpTick - 1 - Utility.ScollToSelectionOffset, new ChannelMessage(ChannelCommand.NoteOff, cn.Data1, 0)); } } midiPlaybackSequence.Add(t); } if (SelectedSong != null) { if (SelectedSong.EnableSongMP3Playback && SelectedSong.SongMP3Location.FileExists()) { LoadSongMP3Playback(); } } midiPlaybackSequencer.Start(); MidiPlaybackPosition = pos; midiPlaybackSequencer.Position = pos; MidiPlaybackInProgress = true; timerMidiPlayback.Enabled = true; } catch { MidiPlaybackInProgress = false; timerMidiPlayback.Enabled = false; } }
private void panelTracks_DragDrop(object sender, DragEventArgs e) { var droppedPETrack = e.GetDropObject<PEMidiTrack>(); droppedPETrack.IfObjectNotNull(xx => { if (droppedPETrack != sender) { DoRequestBackup(); Track newTrack = null; if (Sequence == null) { var targetType = this.IsPro ? FileType.Pro : FileType.Guitar5; var seq = new Sequence(targetType, droppedPETrack.Track.Sequence.Division); this.sequence = seq; if (!droppedPETrack.Track.IsTempo()) { var tempo = droppedPETrack.Track.Sequence.Tracks.Where(x => x.IsTempo()); if (tempo.Any()) { seq.AddTempo(tempo.First().ConvertToPro()); } } newTrack = droppedPETrack.Track.Clone(seq.FileType); seq.Add(newTrack); } else { if (this.Sequence == droppedPETrack.Track.Sequence) { this.Sequence.MoveTrack(droppedPETrack.Track.GetTrackIndex(), GetInsertAt()); } else { newTrack = droppedPETrack.Track.Clone(Sequence.FileType); sequence.Insert(GetInsertAt(), newTrack); if (!sequence.Tracks.Any(x => x.IsTempo())) { var tempo = droppedPETrack.Track.Sequence.Tracks.Where(x => x.IsTempo()); if (tempo.Any()) { sequence.AddTempo(tempo.First().ConvertToPro()); } } } } CreatePanelTracks(this.sequence); TrackAdded.IfObjectNotNull(tc => tc(this, this.sequence, newTrack, SelectedDifficulty)); } }); dragItem = null; }