AlphaTab.Audio.Generator.MidiFileGenerator.GenerateNote C# (CSharp) Method

GenerateNote() private method

private GenerateNote ( Note note, int beatStart, int beatDuration, int brushInfo ) : void
note AlphaTab.Model.Note
beatStart int
beatDuration int
brushInfo int
return void
        private void GenerateNote(Note note, int beatStart, int beatDuration, int[] brushInfo)
        {
            var track = note.Beat.Voice.Bar.Staff.Track;
            var noteKey = note.RealValue;
            var brushOffset = note.IsStringed && note.String <= brushInfo.Length ? brushInfo[note.String - 1] : 0;
            var noteStart = beatStart + brushOffset;
            var noteDuration = GetNoteDuration(note, beatDuration) - brushOffset;
            var dynamicValue = GetDynamicValue(note);

            // TODO: enable second condition after whammy generation is implemented
            if (!note.HasBend /* && !note.Beat.HasWhammyBar */)
            {
                // reset bend
                _handler.AddBend(track.Index, noteStart, (byte)track.PlaybackInfo.PrimaryChannel, DefaultBend);
            }

            //
            // Fade in
            if (note.Beat.FadeIn)
            {
                GenerateFadeIn(note, noteStart, noteDuration, noteKey, dynamicValue);
            }

            // TODO: grace notes?

            //
            // Trill
            if (note.IsTrill && !track.IsPercussion)
            {
                GenerateTrill(note, noteStart, noteDuration, noteKey, dynamicValue);
                // no further generation needed
                return;
            }

            //
            // Tremolo Picking
            if (note.Beat.IsTremolo)
            {
                GenerateTremoloPicking(note, noteStart, noteDuration, noteKey, dynamicValue);
                // no further generation needed
                return;
            }

            //
            // All String Bending/Variation effects
            if (note.HasBend)
            {
                GenerateBend(note, noteStart, noteDuration, noteKey, dynamicValue);
            }
            else if (note.Beat.HasWhammyBar)
            {
                GenerateWhammyBar(note, noteStart, noteDuration, noteKey, dynamicValue);
            }
            else if (note.SlideType != SlideType.None)
            {
                GenerateSlide(note, noteStart, noteDuration, noteKey, dynamicValue);
            }
            else if (note.Vibrato != VibratoType.None)
            {
                GenerateVibrato(note, noteStart, noteDuration, noteKey, dynamicValue);
            }

            //
            // Harmonics
            if (note.HarmonicType != HarmonicType.None)
            {
                GenerateHarmonic(note, noteStart, noteDuration, noteKey, dynamicValue);
            }

            if (!note.IsTieDestination)
            {
                _handler.AddNote(track.Index, noteStart, noteDuration, (byte)noteKey, dynamicValue, (byte)track.PlaybackInfo.PrimaryChannel);
            }
        }