Exemple #1
0
    public float MBTToBeats(Mbt mbt)
    {
        if (!_HasMidiFile())
        {
            return(mbt.beat * 4);
        }

        BarBeatTimeSpan inputSpan  = new BarBeatTimeSpan(mbt.measure, mbt.beat, mbt.tick);
        BeatTimeSpan    outputSpan = TimeConverter.ConvertTo <BeatTimeSpan>(inputSpan, _tempoMap);

        float resultBeats = (float)outputSpan.Beats + ((float)outputSpan.Ticks / _TicksPerBeat());

        return(resultBeats);
    }
Exemple #2
0
    public Mbt BeatsToMBT(float beat)
    {
        if (!_HasMidiFile())
        {
            return(new Mbt(0, (int)beat, 0));
        }

        float        frac      = beat % 1.0f;
        int          beats     = (int)beat;
        int          ticks     = (int)(frac * _TicksPerBeat());
        BeatTimeSpan inputSpan = new BeatTimeSpan(beats, ticks);

        BarBeatTimeSpan outputSpan = TimeConverter.ConvertTo <BarBeatTimeSpan>(inputSpan, _tempoMap);

        return(new Mbt((int)outputSpan.Bars, (int)outputSpan.Beats, (int)outputSpan.Ticks));
    }
Exemple #3
0
    public float BeatsToSecs(float beat)
    {
        if (!_HasMidiFile())
        {
            return(0.0f);
        }

        float          frac       = beat % 1.0f;
        int            beats      = (int)beat;
        int            ticks      = (int)(frac * _TicksPerBeat());
        BeatTimeSpan   inputSpan  = new BeatTimeSpan(beats, ticks);
        MetricTimeSpan outputSpan = TimeConverter.ConvertTo <MetricTimeSpan>(inputSpan, _tempoMap);

        float secs = outputSpan.TotalMicroseconds / 1000000.0f;

        return(secs);
    }
Exemple #4
0
    public float SecsToBeats(float secs)
    {
        if (!_HasMidiFile())
        {
            return(0.0f);
        }

        long microseconds = (long)(secs * 1000000.0f);

        MetricTimeSpan inputSpan  = new MetricTimeSpan(microseconds);
        BeatTimeSpan   outputSpan = TimeConverter.ConvertTo <BeatTimeSpan>(inputSpan, _tempoMap);


        float beats = (float)outputSpan.Beats;

        beats += ((float)outputSpan.Ticks / _TicksPerBeat());

        return(beats);
    }