keymap.c++ 2.8 KB
//====================================================================
// keymap.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"

ICKeyMap::ICKeyMap()
{
    declclass   = ICKEYMAP;
    size        = sizeof(ALKeyMap);
    map         = 0;
    velocityMin = 1;
    velocityMax = 127;
    keyMin      = 0;
    keyMax      = 127;
    keyBase     = 60;
    detune      = 0;
}

void ICKeyMap::SetKeyMin(int min)
{
    FailIf(((min < AL_KEY_MIN) || (min > AL_KEY_MAX)), IC_PARAMETER_ERR);
    
    keyMin = min;
}

void ICKeyMap::SetKeyMax(int max)
{
    FailIf(((max < AL_KEY_MIN) || (max > AL_KEY_MAX)), IC_PARAMETER_ERR);
    keyMax = max;
}

void ICKeyMap::SetKeyBase(int base)
{
    FailIf(((base < AL_KEY_MIN) || (base > AL_KEY_MAX)), IC_PARAMETER_ERR);
    keyBase = base;
}

void ICKeyMap::SetVelMin(int value)
{
    FailIf(((value < 0) || (value > 127)), IC_PARAMETER_ERR);
    velocityMin = value;
}

void ICKeyMap::SetVelMax(int value)
{
    FailIf(((value < 0) || (value > 127)), IC_PARAMETER_ERR);
    velocityMax = value;
}

void ICKeyMap::SetDetune(int value)
{
    detune = value;
}

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

    ALKeyMap *k = (ALKeyMap *)calloc(1, size);
    FailIf(!k, IC_INTERNAL_ERR);

    k->velocityMin      = velocityMin;
    k->velocityMax      = velocityMax;
    k->keyMin           = keyMin;
    k->keyMax           = keyMax;
    k->keyBase          = keyBase;
    k->detune           = detune;

    map = k;
    thing = map;
}

void ICKeyMap::Print()
{
    if (declid) {
         printf("Key Map: %s\n", declid->name);
    } else {
         printf("Key Map: \n");
    }
    
    ICObject::Print();

    FailIf(!map, IC_INTERNAL_ERR);
    
    printf("\tvelocityMin:\t= %d\n", map->velocityMin);
    printf("\tvelocityMax:\t= %d\n", map->velocityMax);
    printf("\tkeyMin:\t\t= %d\n", map->keyMin);
    printf("\tkeyMax:\t\t= %d\n", map->keyMax);
    printf("\tkeyBase:\t= %d\n", map->keyBase);
    printf("\tdetune:\t\t= %d\n", map->detune);
    printf("\n");
}