Beispiel #1
0
    private BeatSize GetQRSWaveAtTime(float timeWithinSegment, BeatSize qSize, BeatSize rSize, BeatSize sSize)
    {
        float quarterSegment = segmentLength / 4;
        float intensity      = (timeWithinSegment % quarterSegment) / quarterSegment;
        float pushFactor     = rSize.MechanicalPulse;

        if (timeWithinSegment < quarterSegment)
        {
            return(new BeatSize(qSize.ElectricalPulse * intensity, qSize.MechanicalPulse * intensity, pushFactor));
        }
        if (timeWithinSegment < 2 * quarterSegment)
        {
            return(new BeatSize(qSize.ElectricalPulse * (1 - intensity) + rSize.ElectricalPulse * intensity,
                                qSize.MechanicalPulse * (1 - intensity) + rSize.MechanicalPulse * intensity, pushFactor));
        }
        if (timeWithinSegment < 3 * quarterSegment)
        {
            return(new BeatSize(rSize.ElectricalPulse * (1 - intensity) + sSize.ElectricalPulse * intensity,
                                rSize.MechanicalPulse * (1 - intensity) + sSize.MechanicalPulse * intensity, pushFactor));
        }
        return(new BeatSize(sSize.ElectricalPulse * (1 - intensity), sSize.MechanicalPulse * (1 - intensity), pushFactor));
    }
Beispiel #2
0
    private BeatSize GetPTWaveAtTime(float timeWithinSegment, BeatSize beatSize)
    {
        float intensity = -Mathf.Pow(2 * timeWithinSegment / segmentLength - 1, 2) + 1f;

        return(new BeatSize(beatSize.ElectricalPulse * intensity, beatSize.MechanicalPulse * intensity, 0f));
    }