private void SetColor(alphatab.platform.model.Color color) { var baseColor = Color.FromArgb(color.getR(), color.getG(), color.getB()); double h, s, l; ColorTools.RGB2HSL(baseColor, out h, out s, out l); _startColor = ColorTools.HSL2RGB(h, System.Math.Max(0, System.Math.Min(1, s - 0.2)), System.Math.Max(0, System.Math.Min(1, l + 0.2))); _endColor = ColorTools.HSL2RGB(h, System.Math.Max(0, System.Math.Min(1, s - 0.2)), System.Math.Max(0, System.Math.Min(1, l - 0.2))); }
/// <summary> /// Creates the bars. /// </summary> /// <param name="gpTrack">The gp track.</param> /// <param name="masterBars">The master bars.</param> /// <returns></returns> private static TabLib.Bar[] CreateBars(alphatab.model.Track gpTrack, TabLib.MasterBar[] masterBars) { var bars = new TabLib.Bar[gpTrack.bars.length]; for (var i = 0; i < gpTrack.bars.length; i++) { var gpBar = gpTrack.bars[i] as alphatab.model.Bar; if (gpBar != null && !gpBar.isEmpty()) { var bar = new TabLib.Bar(); bar.Index = gpBar.index; bar.Beats = CreateBeats(gpBar, masterBars[i]); bars[i] = bar; } } return bars; }
/// <summary> /// Creates the beats. /// </summary> /// <param name="gpVoice">The gp voice.</param> /// <param name="masterBar">The master bar.</param> /// <returns></returns> private static TabLib.Beat[] CreateBeats(alphatab.model.Bar gpBar, TabLib.MasterBar masterBar) { var gpVoice = gpBar.voices[0] as alphatab.model.Voice; var beats = new TabLib.Beat[gpVoice.beats.length]; for (var i = 0; i < gpVoice.beats.length; i++) { var gpBeat = gpVoice.beats[i] as alphatab.model.Beat; if (gpBeat != null && !gpBeat.isEmpty) { var beat = new TabLib.Beat(); beat.Index = gpBeat.index; beat.Duration = GetDuration(gpBeat.duration); beat.Notes = CreateNotes(gpBeat); beat.Text = gpBeat.text; beat.Dots = gpBeat.dots; beat.TupletDenominator = gpBeat.tupletDenominator; beat.TupletNumerator= gpBeat.tupletNumerator; beat.CalculateDuration(masterBar.Tempo); beats[i] = beat; } } return beats; }
/// <summary> /// Gets the duration. /// </summary> /// <param name="duration">The duration.</param> /// <returns></returns> private static TabLib.Duration GetDuration(alphatab.model.Duration duration) { switch(duration) { case alphatab.model.Duration.Whole: return TabLib.Duration.Whole; case alphatab.model.Duration.Half: return TabLib.Duration.Half; case alphatab.model.Duration.Quarter: return TabLib.Duration.Quarter; case alphatab.model.Duration.Eighth: return TabLib.Duration.Eighth; case alphatab.model.Duration.Sixteenth: return TabLib.Duration.Sixteenth; case alphatab.model.Duration.ThirtySecond: return TabLib.Duration.ThirtySecond; case alphatab.model.Duration.SixtyFourth: return TabLib.Duration.SixtyFourth; default: return TabLib.Duration.Quarter; } }
/// <summary> /// Creates the tracks. /// </summary> /// <param name="gpScore">The gp score.</param> /// <param name="masterBars">The master bars.</param> /// <returns></returns> private static TabLib.Track[] CreateTracks(alphatab.model.Score gpScore, TabLib.MasterBar[] masterBars) { var tracks = new TabLib.Track[gpScore.tracks.length]; for (var i = 0; i < gpScore.tracks.length; i++) { var gpTrack = gpScore.tracks[i] as alphatab.model.Track; if (gpTrack != null) { var track = new TabLib.Track(); track.Index = gpTrack.index; track.Name = gpTrack.name; track.Bars = CreateBars(gpTrack, masterBars); tracks[i] = track; } } return tracks; }
/// <summary> /// Creates the score. /// </summary> /// <param name="gpScore">The gp score.</param> /// <returns> /// TabLib.Score. /// </returns> private static TabLib.Score CreateScore(alphatab.model.Score gpScore) { var score = new TabLib.Score(); score.Album = gpScore.album; score.Artist = gpScore.artist; score.Title = gpScore.title; score.Tempo = gpScore.tempo; score.MasterBars = CreateMasterBars(gpScore); score.Tracks = CreateTracks(gpScore, score.MasterBars); return score; }
/// <summary> /// Creates the notes. /// </summary> /// <param name="gpBeat">The gp beat.</param> /// <returns></returns> private static TabLib.Note[] CreateNotes(alphatab.model.Beat gpBeat) { var notes = new TabLib.Note[gpBeat.notes.length]; for (var i = 0; i < gpBeat.notes.length; i++) { var gpNote = gpBeat.notes[i] as alphatab.model.Note; if (gpNote != null) { var note = new TabLib.Note(); note.@String = gpNote.@string; note.Fret = gpNote.fret; notes[i] = note; } } return notes; }
/// <summary> /// Creates the master bars. /// </summary> /// <param name="gpScore">The gp score.</param> /// <returns></returns> private static TabLib.MasterBar[] CreateMasterBars(alphatab.model.Score gpScore) { var masterBars = new TabLib.MasterBar[gpScore.masterBars.length]; for (var i = 0; i < gpScore.masterBars.length; i++) { var gpMasterBar = gpScore.masterBars[i] as alphatab.model.MasterBar; if (gpMasterBar != null) { var masterBar = new TabLib.MasterBar(); masterBar.Index = i; // Get the master bar informations if (gpMasterBar.tempoAutomation != null && gpMasterBar.tempoAutomation.type == alphatab.model.AutomationType.Tempo) { masterBar.Tempo = (int)gpMasterBar.tempoAutomation.value; } else if (masterBar.Index == 0) { // Take the score tempo masterBar.Tempo = gpMasterBar.score.tempo; } else { // Take the previous tempo masterBar.Tempo = (int)masterBars[masterBar.Index - 1].Tempo; } masterBar.TimeSignatureNumerator = gpMasterBar.timeSignatureNumerator; masterBar.TimeSignatureDenominator = gpMasterBar.timeSignatureDenominator; masterBars[i] = masterBar; } } return masterBars; }