public GuitarMessage(GuitarMessageList owner, TickPair pair, GuitarMessageType type) { this.messageType = type; this.props = new MidiEventProps(owner, pair); this.SetTicks(pair); }
public static GuitarChordName CreateEvent(GuitarMessageList owner, TickPair ticks, ChordNameMeta meta, bool chordNameHidden) { var ret = new GuitarChordName(owner, ticks, meta, chordNameHidden); ret.IsNew = true; ret.CreateEvents(); return ret; }
public GuitarModifier(GuitarMessageList owner, TickPair ticks, GuitarModifierType type, GuitarMessageType mt) : base(owner, ticks, mt) { Data2 = 100; Channel = 0; this.ModifierType = type; }
public static GuitarHandPosition CreateEvent(GuitarMessageList owner, TickPair ticks, int noteFret) { var ret = new GuitarHandPosition(owner, ticks, noteFret); ret.IsNew = true; ret.CreateEvents(); return ret; }
public GuitarNote(GuitarMessageList owner, TickPair ticks) : base(owner, ticks, GuitarMessageType.GuitarNote) { Data2 = Utility.Data2Default; Channel = Utility.ChannelDefault; SetTicks(ticks); }
public GuitarBigRockEnding(GuitarMessageList owner, TickPair ticks, IEnumerable<MidiEventPair> events) : this(owner, ticks) { Channel = 0; events.ToList().ForEach(ev => AddSubMessage(new GuitarBigRockEndingSubMessage(this, ev))); SetTicks(ticks); }
public GuitarPowerup(GuitarMessageList owner, TickPair pair) : base(owner, pair, GuitarModifierType.Powerup, GuitarMessageType.GuitarPowerup) { this.Data1 = Utility.PowerupData1; this.Data2 = 100; Channel = 0; this.SetTicks(pair); }
public GuitarMultiStringTremelo(GuitarMessageList owner, TickPair pair) : base(owner, pair, GuitarModifierType.MultiStringTremelo, GuitarMessageType.GuitarMultiStringTremelo) { this.Data1 = Utility.MultiStringTremeloData1; this.Data2 = 100; Channel = 0; this.SetTicks(pair); }
public GuitarChordName(GuitarMessageList owner, TickPair pair, ChordNameMeta meta, bool hidden) : base(owner, pair, GuitarMessageType.GuitarChordName) { this.Data1 = meta.ToneName.ToToneNameData1().ToInt(); this.Meta = meta; this.ChordNameHidden = hidden; Channel = 0; }
public static GuitarSolo CreateSolo(GuitarMessageList owner, TickPair ticks) { var ret = new GuitarSolo(owner, ticks); ret.IsNew = true; ret.CreateEvents(); return ret; }
public GuitarHandPosition(GuitarMessageList owner, TickPair pair, int noteFret) : base(owner, pair, GuitarMessageType.GuitarHandPosition) { this.Data1 = Utility.HandPositionData1; NoteFretDown = noteFret; Channel = 0; this.SetTicks(pair); }
public GuitarSolo(GuitarMessageList owner, TickPair ticks) : base(owner, ticks, GuitarModifierType.Solo, GuitarMessageType.GuitarSolo) { this.Data1 = Utility.SoloData1; this.Data2 = 100; Channel = 0; this.SetTicks(ticks); }
public static GuitarBigRockEnding CreateBigRockEnding(GuitarMessageList owner, TickPair ticks) { var ret = new GuitarBigRockEnding(owner, ticks); ret.IsNew = true; ret.CreateEvents(); return ret; }
public GuitarBigRockEndingSubMessage(GuitarBigRockEnding owner, TickPair ticks, int data1) : base(owner.Owner, ticks, GuitarMessageType.GuitarBigRockEndingSubMessage) { Channel = 0; this.Data1 = data1; this.Data2 = 100; this.owner = owner; this.SetTicks(ticks); }
public GuitarBigRockEnding(GuitarMessageList owner, TickPair ticks) : base(owner,ticks,GuitarModifierType.BigRockEnding, GuitarMessageType.GuitarBigRockEnding) { Channel = 0; foreach (var data1 in Utility.GetBigRockEndingData1(IsPro)) { childEvents.Add(new GuitarBigRockEndingSubMessage(this, ticks, data1)); } SetTicks(ticks); }
public static GuitarArpeggio CreateArpeggio(GuitarMessageList owner, TickPair ticks, GuitarDifficulty difficulty) { GuitarArpeggio ret = null; if (Utility.GetArpeggioData1(difficulty).IsNotNull()) { ret = new GuitarArpeggio(owner, ticks, difficulty); if (ret != null) { ret.IsNew = true; ret.CreateEvents(); } } return ret; }
public GuitarTrainer(GuitarMessageList owner, TickPair ticks, GuitarTrainerType type, GuitarTextEvent start, GuitarTextEvent end, GuitarTextEvent norm) : base(owner, ticks, GuitarMessageType.GuitarTrainer) { this.TrainerType = type; Start = start; End = end; Norm = norm; this.TrainerIndex = ParseTrainerIndex(); this.Loopable = norm != null; SetTicks(ticks); }
public GuitarTrainer(GuitarMessageList owner, TickPair ticks, GuitarTrainerType type, bool loopable, int index = Int32.MinValue) : base(owner, ticks, GuitarMessageType.GuitarTrainer) { this.TrainerType = type; this.TrainerIndex = index.IsNull() ? (owner.Trainers.Where(x => x.TrainerType == type).Count() + 1) : index; this.Loopable = loopable; Start = new GuitarTextEvent(owner, ticks.Down, GetStartText(TrainerType, TrainerIndex)); End = new GuitarTextEvent(owner, ticks.Up, GetEndText(TrainerType, TrainerIndex)); if (Loopable) { Norm = new GuitarTextEvent(owner, GetNormTick(ticks), GetNormText(TrainerType, TrainerIndex, Loopable)); } SetTicks(ticks); }
public GuitarChord Deserialize(GuitarMessageList owner, GuitarDifficulty diff, TickPair ticks) { int[] frets; int[] channels; ChordStrum chordStrum; bool isSlide; bool isSlideReverse; bool isHammeron; GuitarChordRootNoteConfig rootConfig; GetProperties(out frets, out channels, out chordStrum, out isSlide, out isSlideReverse, out isHammeron, out rootConfig); var ret = GuitarChord.CreateChord(owner, diff, ticks, new GuitarChordConfig(frets, channels, isSlide, isSlideReverse, isHammeron, chordStrum, rootConfig)); return ret; }
public TickPair GetClientPointFromScreenPoint(TickPair pair) { return new TickPair(GetClientPointFromScreenPoint(pair.Down), GetClientPointFromScreenPoint(pair.Up)); }
public override void SetTicks(TickPair ticks) { base.SetTicks(ticks); childEvents.ToList().ForEach(x => x.SetTicks(ticks)); }
public TimePair TickToTime(TickPair ticks) { return new TimePair(TickToTime(ticks.Down), TickToTime(ticks.Up)); }
public MidiEventPair Insert(int data1, int data2, int channel, TickPair ticks) { if (!ticks.IsValid) return default(MidiEventPair); var down = Insert(ticks.Down, new ChannelMessage(ChannelCommand.NoteOn, data1, data2, channel)); var up = Insert(ticks.Up, new ChannelMessage(ChannelCommand.NoteOff, data1, 0, channel)); return new MidiEventPair(Messages, down, up); }
void DrawRect(Graphics g, Brush b, TickPair ticks, int minString, int maxString) { var maxScreen = TopLineOffset + LineSpacing * (5 - minString) + NoteHeight - 2; var minScreen = TopLineOffset + LineSpacing * (5 - maxString) - NoteHeight + 2; g.FillRectangle(b, ticks.Down, minScreen, ticks.TickLength, maxScreen - minScreen); if (maxScreen - minScreen >= 4) { g.DrawRectangle(Utility.noteBoundPen, ticks.Down, minScreen, ticks.TickLength, maxScreen - minScreen); } }
private TickPair snapRightTick(TickPair tickPair, GridPoint gridPoint, IEnumerable<TickPair> closeToRight, IEnumerable<TickPair> closeToRight5, SnapConfig config) { var gridTick = Int32.MinValue; var tickPair5 = Int32.MinValue; var tickPair6 = Int32.MinValue; if (gridPoint != null && config.SnapGrid) { if (tickPair.Up.IsCloseTick(gridPoint.Tick)) gridTick = gridPoint.Tick; } if (config.SnapG5 && closeToRight5 != null && closeToRight5.Any()) { var closeDown = closeToRight5.Where(x => x.Down.IsCloseTick(tickPair.Up)).ToList(); var closeUp = closeToRight5.Where(x => x.Up.IsCloseTick(tickPair.Up)).ToList(); if (closeDown.Any()) { var minDown = closeDown.Select(x => new { Dist = (tickPair.Up - x.Down).Abs(), Val = x.Down }).OrderBy(x => x.Dist).FirstOrDefault().Val; if (tickPair.Up.IsCloseTick(minDown)) { tickPair5 = minDown; } else if (gridPoint != null && config.SnapGrid && gridTick.IsNotNull()) { var gd = gridTick.DistSq(tickPair.Up); if (gd < minDown.DistSq(tickPair.Up)) { if (tickPair.Up.IsCloseTick(gridTick)) tickPair5 = gridTick; } else { if (tickPair.Up.IsCloseTick(minDown)) tickPair5 = minDown; } } } if (closeUp.Any()) { var maxUp = closeUp.Select(x => new { Dist = (tickPair.Up - x.Up).Abs(), Val = x.Up }).OrderBy(x => x.Dist).FirstOrDefault().Val; if (tickPair.Up.IsCloseTick(maxUp)) { tickPair5 = maxUp; } else if (gridPoint != null && config.SnapGrid && gridTick.IsNotNull()) { var gd = gridTick.DistSq(tickPair.Up); if (gd < maxUp.DistSq(tickPair.Up)) { if (tickPair.Up.IsCloseTick(gridTick)) tickPair5 = gridTick; } else { if (tickPair.Up.IsCloseTick(maxUp)) tickPair5 = maxUp; } } } } if (config.SnapG6 && closeToRight != null && closeToRight.Any()) { var closeDown = closeToRight.Where(x => x.Down.IsCloseTick(tickPair.Up)).ToList(); var closeUp = closeToRight.Where(x => x.Up.IsCloseTick(tickPair.Up)).ToList(); if (closeDown.Any()) { var minDown = closeDown.Select(x => new { Dist = (tickPair.Up - x.Down).Abs(), Val = x.Down }).OrderBy(x => x.Dist).FirstOrDefault().Val; if (tickPair.Up.IsCloseTick(minDown)) { tickPair6 = minDown; } else if (gridPoint != null && config.SnapGrid && gridTick.IsNotNull()) { var gd = gridTick.DistSq(tickPair.Up); if (gd < minDown.DistSq(tickPair.Up)) { if (tickPair.Up.IsCloseTick(gridTick)) tickPair6 = gridTick; } else { if (tickPair.Up.IsCloseTick(minDown)) tickPair6 = minDown; } } } if (closeUp.Any()) { var maxUp = closeUp.Select(x => new { Dist = (tickPair.Up - x.Up).Abs(), Val = x.Up }).OrderBy(x => x.Dist).FirstOrDefault().Val; if (tickPair.Up.IsCloseTick(maxUp)) { tickPair6 = maxUp; } else if (gridPoint != null && config.SnapGrid && gridTick.IsNotNull()) { var gd = gridTick.DistSq(tickPair.Up); if (gd < maxUp.DistSq(tickPair.Up)) { if (tickPair.Up.IsCloseTick(gridTick)) tickPair6 = gridTick; } else { if (tickPair.Up.IsCloseTick(maxUp)) tickPair6 = maxUp; } } } } else if (gridPoint != null && config.SnapGrid && gridTick.IsNotNull()) { if (tickPair.Up.IsCloseTick(gridTick)) tickPair.Up = gridTick; } var ret = new[] { tickPair6, tickPair5, gridTick }.Where(x => x.IsNotNull()); if (ret.Any()) { tickPair.Up = ret.Select(x => new { Dist = (x - tickPair.Up).Abs(), Val = x }).OrderBy(x => x.Dist).FirstOrDefault().Val; } if (tickPair.Up.IsNull() == false && tickPair.Up < tickPair.Down) { tickPair.Up = tickPair.Down; } return tickPair; }
private TickPair snapRightScreenPoint(TickPair screenPair, GridPoint gridPoint, List<GuitarChord> closeToRight, List<GuitarChord> closeToRight5) { var gridScreenPoint = Int32.MinValue; if (gridPoint != null) { if (screenPair.Up.IsCloseScreenPoint(gridPoint.ScreenPoint)) gridScreenPoint = gridPoint.ScreenPoint; } if (closeToRight.Any()) { var minDown = closeToRight.Min(x => x.ScreenPointPair.Down); if (minDown < screenPair.Up) { if (screenPair.Up.IsCloseScreenPoint(minDown)) screenPair.Up = minDown; } else if (gridPoint != null) { var gd = gridScreenPoint.DistSq(screenPair.Up); if (gd < minDown.DistSq(screenPair.Up)) { if (screenPair.Up.IsCloseScreenPoint(gridScreenPoint)) screenPair.Up = gridScreenPoint; } else { if (screenPair.Up.IsCloseScreenPoint(minDown)) screenPair.Up = minDown; } } else { if (screenPair.Up.IsCloseScreenPoint(minDown)) screenPair.Up = minDown; } } else if (gridPoint != null) { if (screenPair.Up.IsCloseScreenPoint(gridScreenPoint)) screenPair.Up = gridScreenPoint; } return screenPair; }
private TickPair snapLeftScreenPoint(TickPair screenPair, GridPoint gridPoint, List<GuitarChord> closeToLeft, List<GuitarChord> closeToLeft5) { var gridScreenPoint = Int32.MinValue; if (gridPoint != null) { if (screenPair.Down.IsCloseScreenPoint(gridPoint.ScreenPoint)) gridScreenPoint = gridPoint.ScreenPoint; } if (closeToLeft5.Any()) { var maxLeft = closeToLeft5.Max(x => x.ScreenPointPair.Up); if (maxLeft > screenPair.Down) { if (screenPair.Down.IsCloseScreenPoint(maxLeft)) screenPair.Down = maxLeft; } else if (gridPoint != null) { var gd = gridScreenPoint.DistSq(screenPair.Down); if (gd < maxLeft.DistSq(screenPair.Down)) { if (screenPair.Down.IsCloseScreenPoint(gridScreenPoint)) screenPair.Down = gridScreenPoint; } else { if (screenPair.Down.IsCloseScreenPoint(maxLeft)) screenPair.Down = maxLeft; } } else { if (screenPair.Down.IsCloseScreenPoint(maxLeft)) screenPair.Down = maxLeft; } } if (closeToLeft.Any()) { var maxLeft = closeToLeft.Max(x => x.ScreenPointPair.Up); if (maxLeft > screenPair.Down) { if (screenPair.Down.IsCloseScreenPoint(maxLeft)) screenPair.Down = maxLeft; } else if (gridPoint != null) { var gd = gridScreenPoint.DistSq(screenPair.Down); if (gd < maxLeft.DistSq(screenPair.Down)) { if (screenPair.Down.IsCloseScreenPoint(gridScreenPoint)) screenPair.Down = gridScreenPoint; } else { if (screenPair.Down.IsCloseScreenPoint(maxLeft)) screenPair.Down = maxLeft; } } else { if (screenPair.Down.IsCloseScreenPoint(maxLeft)) screenPair.Down = maxLeft; } } else if (gridPoint != null) { if (screenPair.Down.IsCloseScreenPoint(gridScreenPoint)) screenPair.Down = gridScreenPoint; } return screenPair; }
private void DrawTextAtTime(Graphics g, int alpha80, int alpha180, bool tabActive, bool drawSelected, TickPair ticks, string text, SolidBrush tb, bool fullHeight) { var screenTicks = GetClientPointFromTick(ticks); if (screenTicks.TickLength <= 0) screenTicks.Up = screenTicks.Down + 1; if (screenTicks.Up > 0 && screenTicks.Down < Width) { var size = g.MeasureString(text, Utility.fretFont); var textRect = new RectangleF((float)screenTicks.Down, (size.Height * (0)) + (0 * size.Height * 0.1f), size.Width, size.Height); for (int idx = 0; idx < 8; idx++) { var ntr = new RectangleF((float)screenTicks.Down, (size.Height * (idx)) + (idx * size.Height * 0.1f), size.Width, size.Height); if (VisibleTextEvents.CountOverlapping(ntr) == 0) { textRect = ntr; VisibleTextEvents.Add(new GuitarTextEvent(Messages, screenTicks.Down, text), ntr); break; } } if (fullHeight) { using (var br = new SolidBrush(Color.FromArgb(alpha80, tb.Color))) { g.FillRectangle(br, screenTicks.Down, 0, screenTicks.TickLength, fullHeight ? (InnerHeight - 1) : size.Height + 1); } using (var p = new Pen(tb)) { g.DrawRectangle(p, screenTicks.Down, 0, screenTicks.TickLength, fullHeight ? (InnerHeight) : size.Height + 2); } } using (var tbg = new SolidBrush(Color.FromArgb(tabActive ? (drawSelected ? 255 : 200) : alpha80, Utility.BackgroundBrush.Color))) { g.FillRectangle(tbg, textRect.X, textRect.Y, textRect.Width, textRect.Height + 1); } using (var tbg = new Pen(Color.FromArgb(alpha180, Utility.noteBoundPen.Color))) { g.DrawRectangle(tbg, textRect.X, textRect.Y, textRect.Width, textRect.Height + 1); } using (var fb = new SolidBrush(Color.FromArgb(alpha180, Utility.fretBrush.Color))) { var tl = textRect.Location; tl.X -= 1; textRect.Location = tl; textRect.Width += 3; g.DrawString(text, Utility.fretFont, fb, textRect, StringFormat.GenericDefault); } } }
void FillRect(Graphics g, Brush b, TickPair ticks) { var rectTicks = GetClientPointFromTick(ticks); g.FillRectangle(b, rectTicks.Down, 0, rectTicks.Up - rectTicks.Down, Height - HScroll.Height - 1); if (rectTicks.TickLength >= 4) { using (var pen = new Pen(Color.FromArgb(30, Utility.noteBoundPen.Color))) { g.DrawRectangle(pen, rectTicks.Down, 0, rectTicks.Up - rectTicks.Down, Height - HScroll.Height - 1); } } }
public TickPair GetClientPointFromTick(TickPair p) { return new TickPair(GetClientPointFromTick(p.Down), GetClientPointFromTick(p.Up)); }