原図をランダマイズするメソッドを修正する
原図をランダマイズするメソッドはRepeatingMotifをランダマイズする時にも呼ばれます。その際、アンドゥマネージャにアクション名をセットされたくないので、原図をランダマイズする部分を独立したメソッドとして、randomizeMasterMotif:withUndoManager:lockFrequency:メソッドがそれを呼び出してからアクション名をセットする様にしました。
Randomizer.m
- (void)randomizeMasterMotif:(MasterMotif *)masterMotif
withUndoManager:(NSUndoManager *)undoManager
lockFrequency:(BOOL)isLockFrequency
{
int aX1,aX2,aX3,aY1,aY2,aY3;
int fX1,fX2,fX3,fY1,fY2,fY3;
int pX1,pX2,pX3,pY1,pY2,pY3;
aX1 = [self randomIntBetweenA:amplitudeMinX1 andB:amplitudeMaxX1];
aX2 = [self randomIntBetweenA:amplitudeMinX2 andB:amplitudeMaxX2];
aX3 = [self randomIntBetweenA:amplitudeMinX3 andB:amplitudeMaxX3];
aY1 = [self randomIntBetweenA:amplitudeMinY1 andB:amplitudeMaxY1];
aY2 = [self randomIntBetweenA:amplitudeMinY2 andB:amplitudeMaxY2];
aY3 = [self randomIntBetweenA:amplitudeMinY3 andB:amplitudeMaxY3];
fX1 = [self randomIntBetweenA:frequencyMinX1 andB:frequencyMaxX1];
fX2 = [self randomIntBetweenA:frequencyMinX2 andB:frequencyMaxX2];
fX3 = [self randomIntBetweenA:frequencyMinX3 andB:frequencyMaxX3];
fY1 = [self randomIntBetweenA:frequencyMinY1 andB:frequencyMaxY1];
fY2 = [self randomIntBetweenA:frequencyMinY2 andB:frequencyMaxY2];
fY3 = [self randomIntBetweenA:frequencyMinY3 andB:frequencyMaxY3];
pX1 = [self randomIntBetweenA:0 andB:359];
pX2 = [self randomIntBetweenA:0 andB:359];
pX3 = [self randomIntBetweenA:0 andB:359];
pY1 = [self randomIntBetweenA:0 andB:359];
pY2 = [self randomIntBetweenA:0 andB:359];
pY3 = [self randomIntBetweenA:0 andB:359];
[[[masterMotif x] osc1] setAmplitude:aX1];
[[[masterMotif x] osc2] setAmplitude:aX2];
[[[masterMotif x] osc3] setAmplitude:aX3];
[[[masterMotif y] osc1] setAmplitude:aY1];
[[[masterMotif y] osc2] setAmplitude:aY2];
[[[masterMotif y] osc3] setAmplitude:aY3];
if(!isLockFrequency)
{
[[[masterMotif x] osc1] setFrequency:fX1];
[[[masterMotif x] osc2] setFrequency:fX2];
[[[masterMotif x] osc3] setFrequency:fX3];
[[[masterMotif y] osc1] setFrequency:fY1];
[[[masterMotif y] osc2] setFrequency:fY2];
[[[masterMotif y] osc3] setFrequency:fY3];
}
[[[masterMotif x] osc1] setPhaseLag:pX1];
[[[masterMotif x] osc2] setPhaseLag:pX2];
[[[masterMotif x] osc3] setPhaseLag:pX3];
[[[masterMotif y] osc1] setPhaseLag:pY1];
[[[masterMotif y] osc2] setPhaseLag:pY2];
[[[masterMotif y] osc3] setPhaseLag:pY3];
[undoManager setActionName:
NSLocalizedString(@"randomizeMasterMotif",nil)];
}
- (void)randomizeMasterMotif:(MasterMotif *)masterMotif
withUndoManager:(NSUndoManager *)undoManager
lockFrequency:(BOOL)isLockFrequency
{
[self randomizeMasterMotif:masterMotif
lockFrequency:isLockFrequency];
[undoManager setActionName:
NSLocalizedString(@"randomizeMasterMotif",nil)];
}