envelope.c++ 2.51 KB
//====================================================================
// envelope.c++
//
// Synopsis:
//
// Author(s)
//  Steve Shepard
//
// Copyright 1993, Silicon Graphics, Inc.
// All Rights Reserved.
//
// This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
// the contents of this file may not be disclosed to third parties, copied or
// duplicated in any form, in whole or in part, without the prior written
// permission of Silicon Graphics, Inc.
//
// RESTRICTED RIGHTS LEGEND:
// Use, duplication or disclosure by the Government is subject to restrictions
// as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
// and Computer Software clause at DFARS 252.227-7013, and/or in similar or
// successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
// rights reserved under the Copyright Laws of the United States.
//====================================================================

#include <stdlib.h>
#include "libbank.h"

ICEnvelope::ICEnvelope()
{
    declclass   = ICENVELOPE;
    size        = sizeof(ALEnvelope);
    envelope    = 0;
    attackTime  = 0;
    attackVol   = AL_VOL_FULL;
    decayTime   = 0;
    decayVol    = AL_VOL_FULL;
    releaseTime = 0;
}

void ICEnvelope::SetAttackTime(ALMicroTime t) 
{
    attackTime = t;
}

void ICEnvelope::SetAttackVol(short v) 
{
    FailIf(( (v > AL_VOL_FULL) || (v < 0) ), IC_PARAMETER_ERR);
    
    attackVol = v;
}

void ICEnvelope::SetDecayTime(ALMicroTime t)
{
    decayTime = t;
}

void ICEnvelope::SetDecayVol(short v)
{
    FailIf(((v > AL_VOL_FULL) || (v < 0)), IC_PARAMETER_ERR);

    decayVol = v;
}

void ICEnvelope::SetReleaseTime(ALMicroTime t)
{
    releaseTime = t;
}

void ICEnvelope::Assemble()
{
    size = Size();

    ALEnvelope *e = (ALEnvelope *)calloc(1, size);
    FailIf(e == 0, IC_INTERNAL_ERR);

    e->attackTime      = attackTime;
    e->attackVolume    = attackVol;
    e->decayTime       = decayTime;
    e->decayVolume     = decayVol;
    e->releaseTime     = releaseTime;

    envelope = e;

    thing = envelope;
}

void ICEnvelope::Print()
{
    if (declid) {
         printf("Envelope: %s\n", declid->name);
    } else {
         printf("Envelope: \n");
    }
    
    ICObject::Print();
    
    printf("\tattackTime:\t= %x\n", envelope->attackTime);
    printf("\tattackVolume:\t= %x\n", envelope->attackVolume);
    printf("\tdecayTime:\t= %x\n", envelope->decayTime);
    printf("\tdecayVolume:\t= %x\n", envelope->decayVolume);
    printf("\treleaseTime:\t= %x\n", envelope->releaseTime);
    printf("\n");
}