public void Step(float tickSpeed, int stepIndex, PureDataSequence sequence)
        {
            PureDataSequenceTrackStep trackStep = steps[stepIndex];

            if (trackStep.patternIndex == -1)
            {
                pureData.communicator.SendBang(string.Format("utrack_pattern{0}_{1}", sequence.Id, Id));
            }
            else
            {
                PureDataSequencePattern pattern = patterns[trackStep.patternIndex];
                pureData.communicator.Send(string.Format("utrack_size{0}_{1}", sequence.Id, Id), pattern.sendSize);
                pureData.communicator.Send(string.Format("utrack_delay{0}_{1}", sequence.Id, Id), tickSpeed * 1000 / pattern.subdivision);
                pureData.communicator.Send(string.Format("utrack_pattern{0}_{1}", sequence.Id, Id), pattern.GetPattern());
            }
        }
		void ShowSequencePatterns() {
			sequencePatternsProperty = currentSequenceSelection.TrackProperty.FindPropertyRelative("patterns");
			
			BeginBox();
			
			if (AddFoldOut(sequencePatternsProperty)) {
				currentSequenceSelection.Track.patterns[currentSequenceSelection.Track.patterns.Length - 1] = new PureDataSequencePattern();
				sequencePatternsProperty.serializedObject.Update();
			}
			
			if (sequencePatternsProperty.isExpanded) {
				EditorGUI.indentLevel += 1;
				
				for (int i = 0; i < sequencePatternsProperty.arraySize; i++) {
					currentSequencePattern = currentSequenceSelection.Track.patterns[i];
					currentSequencePatternProperty = sequencePatternsProperty.GetArrayElementAtIndex(i);
					
					GUIStyle style = new GUIStyle("foldout");
					style.fontStyle = FontStyle.Bold;
					if (DeleteFoldOut(sequencePatternsProperty, i, string.Format("{0} | {1} | {2} : {3}", GetSequencePatternName(i), currentSequencePattern.sendType, currentSequencePattern.sendSize, currentSequencePattern.subdivision).ToGUIContent(), style)) {
						currentSequenceSelection.Track.RemovePatternFromSteps(i);
						currentSequenceSelection.TrackProperty.serializedObject.Update();
						break;
					}
					
					ShowSequencePattern();
				}
				
				Separator();
				EditorGUI.indentLevel -= 1;
			}
			
			EndBox();
		}