envelope.c 2.75 KB
/*====================================================================
 * envelope.c
 *
 * 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 <assert.h>
#include <stdlib.h>
#include "ic.h"

ICEnvelope       *curEnvelope=0;

void envNew(ICEnvelope *env)
{
    env->decl.declclass = ICENVELOPE;
    env->decl.id = objectID++;
    env->decl.offset = (void *)-1;              /* not allocated yet */
    env->decl.size = sizeof(ALEnvelope);
    env->envelope = 0;
}

void envSetAttackTime(ICEnvelope *e, int t) 
{
    e->attackTime = t;
}

void envSetAttackVol(ICEnvelope *e, short v) 
{
    e->attackVol = v;
}

void envSetDecayTime(ICEnvelope *e, int t)
{
    e->decayTime = t;
}

void envSetDecayVol(ICEnvelope *e, short v)
{
    e->decayVol = v;
}

void envSetReleaseTime(ICEnvelope *e, int t)
{
    e->releaseTime = t;
}

void envSetReleaseVol(ICEnvelope *e, short v)
{
    e->releaseVol = v;
}


void envLayOut(ICEnvelope *env)
{
    ALEnvelope *e;

    env->decl.size = declSize((Decl *)env);
    e = calloc(1, env->decl.size);
    assert(e);

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

    env->envelope = e;
}

void envPrint(ICEnvelope *env)
{
    ALEnvelope  *e = env->envelope;
    Id          *name;
    
    name = findname((Decl *)env);

    if (name) {
         printf("Envelope: %s\n", name->name);
    } else {
         printf("Envelope: \n");
    }
    
    declPrint((Decl *)env);
    
    printf("\tattackTime:\t= %x\n", e->attackTime);
    printf("\tattackVolume:\t= %x\n", e->attackVolume);
    printf("\tdecayTime:\t= %x\n", e->decayTime);
    printf("\tdecayVolume:\t= %x\n", e->decayVolume);
    printf("\treleaseTime:\t= %x\n", e->releaseTime);
    printf("\treleaseVolume:\t= %x\n", e->releaseVolume);
    printf("\n");
}

void envWrite(ICEnvelope *env, FILE *file)
{
    fwrite(env->envelope, env->decl.size, 1, file);
}