!C99Shell v. 1.0 pre-release build #13!

Software: Apache/2.0.54 (Unix) mod_perl/1.99_09 Perl/v5.8.0 mod_ssl/2.0.54 OpenSSL/0.9.7l DAV/2 FrontPage/5.0.2.2635 PHP/4.4.0 mod_gzip/2.0.26.1a 

uname -a: Linux snow.he.net 4.4.276-v2-mono-1 #1 SMP Wed Jul 21 11:21:17 PDT 2021 i686 

uid=99(nobody) gid=98(nobody) groups=98(nobody) 

Safe-mode: OFF (not secure)

/usr/src/linux-2.4.18-xfs-1.1/drivers/sound/   drwxr-xr-x
Free 318.38 GB of 458.09 GB (69.5%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     gus_vol.c (3.29 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |

/*
 * gus_vol.c - Compute volume for GUS.
 *
 *
 * Copyright (C) by Hannu Savolainen 1993-1997
 *
 * OSS/Free for Linux is distributed under the GNU GENERAL PUBLIC LICENSE (GPL)
 * Version 2 (June 1991). See the "COPYING" file distributed with this software
 * for more info.
 */
#include "sound_config.h"

#include "gus.h"
#include "gus_linearvol.h"

#define GUS_VOLUME    gus_wave_volume


extern int      gus_wave_volume;

/*
 * Calculate gus volume from note velocity, main volume, expression, and
 * intrinsic patch volume given in patch library.  Expression is multiplied
 * in, so it emphasizes differences in note velocity, while main volume is
 * added in -- I don't know whether this is right, but it seems reasonable to
 * me.  (In the previous stage, main volume controller messages were changed
 * to expression controller messages, if they were found to be used for
 * dynamic volume adjustments, so here, main volume can be assumed to be
 * constant throughout a song.)
 *
 * Intrinsic patch volume is added in, but if over 64 is also multiplied in, so
 * we can give a big boost to very weak voices like nylon guitar and the
 * basses.  The normal value is 64.  Strings are assigned lower values.
 */

unsigned short gus_adagio_vol(int vel, int mainv, int xpn, int voicev)
{
    int i, m, n, x;


    /*
     * A voice volume of 64 is considered neutral, so adjust the main volume if
     * something other than this neutral value was assigned in the patch
     * library.
     */
    x = 256 + 6 * (voicev - 64);

    /*
     * Boost expression by voice volume above neutral.
     */
     
    if (voicev > 65)
        xpn += voicev - 64;
    xpn += (voicev - 64) / 2;

    /*
     * Combine multiplicative and level components.
     */
    x = vel * xpn * 6 + (voicev / 4) * x;

#ifdef GUS_VOLUME
    /*
     * Further adjustment by installation-specific master volume control
     * (default 60).
     */
    x = (x * GUS_VOLUME * GUS_VOLUME) / 10000;
#endif

#ifdef GUS_USE_CHN_MAIN_VOLUME
    /*
     * Experimental support for the channel main volume
     */

    mainv = (mainv / 2) + 64;    /* Scale to 64 to 127 */
    x = (x * mainv * mainv) / 16384;
#endif

    if (x < 2)
        return (0);
    else if (x >= 65535)
        return ((15 << 8) | 255);

    /*
     * Convert to GUS's logarithmic form with 4 bit exponent i and 8 bit
     * mantissa m.
     */
     
    n = x;
    i = 7;
    if (n < 128)
    {
          while (i > 0 && n < (1 << i))
              i--;
    }
    else
    {
        while (n > 255)
        {
              n >>= 1;
              i++;
        }
    }
    /*
     * Mantissa is part of linear volume not expressed in exponent.  (This is
     * not quite like real logs -- I wonder if it's right.)
     */
    m = x - (1 << i);

    /*
     * Adjust mantissa to 8 bits.
     */
    if (m > 0)
    {
        if (i > 8)
            m >>= i - 8;
        else if (i < 8)
            m <<= 8 - i;
    }
    return ((i << 8) + m);
}

/*
 * Volume-values are interpreted as linear values. Volume is based on the
 * value supplied with SEQ_START_NOTE(), channel main volume (if compiled in)
 * and the volume set by the mixer-device (default 60%).
 */

unsigned short gus_linear_vol(int vol, int mainvol)
{
    int mixer_mainvol;

    if (vol <= 0)
        vol = 0;
    else if (vol >= 127)
        vol = 127;

#ifdef GUS_VOLUME
    mixer_mainvol = GUS_VOLUME;
#else
    mixer_mainvol = 100;
#endif

#ifdef GUS_USE_CHN_MAIN_VOLUME
    if (mainvol <= 0)
        mainvol = 0;
    else if (mainvol >= 127)
        mainvol = 127;
#else
    mainvol = 127;
#endif
    return gus_linearvol[(((vol * mainvol) / 127) * mixer_mainvol) / 100];
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 1.0 pre-release build #13 powered by Captain Crunch Security Team | http://ccteam.ru | Generation time: 0.0273 ]--