更新情報
広告
PRサイト
関連サイト

原図をランダマイズするメソッドを修正する

原図をランダマイズするメソッドは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)];
}



ページの先頭へ戻る