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)); }
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)); }