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());
			}
		}
 public PureDataSequenceItem(PureDataSequence sequence, PureData pureData)
     : base(pureData)
 {
     this.sequence = sequence;
 }
예제 #3
0
		void ShowSequences() {
			sequencesProperty = sequenceManagerSerialized.FindProperty("sequences");
			sequenceSelections = sequenceSelections ?? new Dictionary<PureDataSequence, SequenceSelectionData>();
			
			if (AddFoldOut(sequencesProperty, "Sequences".ToGUIContent())) {
				sequenceManager.sequences[sequenceManager.sequences.Length - 1] = new PureDataSequence(pureData);
				sequenceManager.sequences[sequenceManager.sequences.Length - 1].SetUniqueName("default", sequenceManager.sequences);
				sequenceManager.UpdateSequenceContainer();
				sequenceManagerSerialized.Update();
			}
			
			if (sequencesProperty.isExpanded) {
				EditorGUI.indentLevel += 1;
				
				for (int i = 0; i < sequencesProperty.arraySize; i++) {
					currentSequence = sequenceManager.sequences[i];
					currentSequenceProperty = sequencesProperty.GetArrayElementAtIndex(i);
					stepsProperty = currentSequenceProperty.FindPropertyRelative("steps");
					tracksProperty = currentSequenceProperty.FindPropertyRelative("tracks");
					sequenceSpatializerProperty = currentSequenceProperty.FindPropertyRelative("spatializer");
			
					if (!sequenceSelections.ContainsKey(currentSequence)) {
						sequenceSelections[currentSequence] = new SequenceSelectionData();
					}

					currentSequenceSelection = sequenceSelections[currentSequence];
					currentSequenceSelection.Initialize(currentSequence, currentSequenceProperty);
					
					BeginBox();
		
					if (DeleteFoldOut(sequencesProperty, i, currentSequence.Name.ToGUIContent(), GetSequenceStyle(), OnSequenceReorder)) {
						sequenceManager.UpdateSequenceContainer();
						break;
					}
		
					ShowSequence();
					
					EndBox();
				}
				
				Separator();
				
				EditorGUI.indentLevel -= 1;
			}
		}
예제 #4
0
		public void Initialize(PureDataSequence currentSequence, SerializedProperty currentSequenceProperty) {
			sequence = currentSequence;
			sequenceProperty = currentSequenceProperty;
			
			if (StepIsNull) {
				SetStep(0);
			}
			
			if (TrackIsNull) {
				SetTrack(0);
			}
		}
예제 #5
0
 public PureDataSequenceItem(PureDataSequence sequence, PureData pureData)
     : base(pureData)
 {
     this.sequence = sequence;
 }
		public void UpdateSendNames(PureDataSequence sequence) {
			panLeftSendName = "usequence_pan_left" + sequence.Id;
			panRightSendName = "usequence_pan_right" + sequence.Id;
		}
예제 #7
0
    public void Apply(PureDataSequence sequence)
    {
        switch (type)
        {
        case PureDataOption.OptionTypes.Volume:
            float[] volumeData = GetValue <float[]>();
            sequence.SetVolume(volumeData[0], volumeData[1], delay);
            break;

        case PureDataOption.OptionTypes.Loop:
            sequence.SetLoop(GetValue <bool>());
            break;

        case PureDataOption.OptionTypes.Output:
            sequence.SetOutput(GetValue <string>(), delay);
            break;

        case PureDataOption.OptionTypes.VolumeRolloffMode:
            sequence.spatializer.VolumeRolloffMode = (PureDataVolumeRolloffModes)GetValue <float>();
            break;

        case PureDataOption.OptionTypes.MinDistance:
            sequence.spatializer.MinDistance = GetValue <float>();
            break;

        case PureDataOption.OptionTypes.MaxDistance:
            sequence.spatializer.MaxDistance = GetValue <float>();
            break;

        case PureDataOption.OptionTypes.PanLevel:
            sequence.spatializer.PanLevel = GetValue <float>();
            break;

        case PureDataOption.OptionTypes.StepTempo:
            float[] stepTempoData = GetValue <float[]>();
            sequence.SetStepTempo((int)stepTempoData[0], stepTempoData[1]);
            break;

        case PureDataOption.OptionTypes.StepBeats:
            float[] stepBeatsData = GetValue <float[]>();
            sequence.SetStepBeats((int)stepBeatsData[0], (int)stepBeatsData[1]);
            break;

        case PureDataOption.OptionTypes.StepPattern:
            float[] stepPatternData = GetValue <float[]>();
            sequence.SetStepPattern((int)stepPatternData[0], (int)stepPatternData[1], (int)stepPatternData[2]);
            break;

        case PureDataOption.OptionTypes.TrackSendType:
            float[] trackSendTypeData = GetValue <float[]>();
            sequence.SetTrackSendType((int)trackSendTypeData[0], (int)trackSendTypeData[1], (PureDataPatternSendTypes)trackSendTypeData[2]);
            break;

        case PureDataOption.OptionTypes.TrackPattern:
            float[] trackPatternData = GetValue <float[]>();
            sequence.SetTrackPattern((int)trackPatternData[0], (int)trackPatternData[1], (int)trackPatternData[2], (int)trackPatternData[3], trackPatternData.Slice(4));
            break;

        default:
            Logger.LogError(string.Format("{0} can not be applied to {1}.", this, sequence.GetType()));
            break;
        }
    }