Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- namespace RhythmTool
- {
- [RequireComponent(typeof(BeatTracker))]
- public class SubBeatTracker : Analysis<Value>
- {
- public override string name
- {
- get
- {
- return "SubBeats";
- }
- }
- private BeatTracker beatTracker;
- private int beatCount;
- private void Awake()
- {
- beatTracker = GetComponent<BeatTracker>();
- }
- public override void Initialize(int sampleRate, int frameSize, int hopSize)
- {
- base.Initialize(sampleRate, frameSize, hopSize);
- beatCount = 0;
- }
- public override void Process(float[] samples, float[] magnitude, int frameIndex)
- {
- base.Process(samples, magnitude, frameIndex);
- Track<Beat> beats = beatTracker.track;
- //Look for new beats in the BeatTracker's track
- while (beatCount < beats.count - 1)
- {
- Beat prev = beats[beatCount];
- Beat next = beats[beatCount + 1];
- float subBeatLength = (next.timestamp - prev.timestamp) / 4;
- //For each new Beat, add 4 sub beats
- for (int i = 0; i < 4; i++)
- {
- Value subBeat = new Value()
- {
- timestamp = prev.timestamp + subBeatLength * i,
- value = i + 1
- };
- AddFeature(subBeat);
- }
- beatCount++;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement