mirror of
https://github.com/thestk/stk
synced 2026-01-11 12:01:52 +00:00
Version 4.1.2
This commit is contained in:
committed by
Stephen Sinclair
parent
6e0d1955a8
commit
586b0add5f
@@ -1,55 +1,55 @@
|
||||
/**********************************************/
|
||||
/** Utility to make various functions **/
|
||||
/** like exponential and log gain curves. **/
|
||||
/** **/
|
||||
/** Included here: **/
|
||||
/** Yamaha TX81Z curves for master gain, **/
|
||||
/** Envelope Rates (in normalized units), **/
|
||||
/** envelope sustain level, and more.... **/
|
||||
/**********************************************/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
int i,j;
|
||||
double temp;
|
||||
double data[128];
|
||||
|
||||
/*************** TX81Z Master Gain *************/
|
||||
for (i=0;i<100;i++) {
|
||||
data[i] = pow(2.0,-(99-i)/10.0);
|
||||
}
|
||||
data[0] = 0.0;
|
||||
printf("double __FM4Op_gains[99] = {");
|
||||
for (i=0;i<100;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
printf("%lf,",data[i]);
|
||||
}
|
||||
printf("};\n");
|
||||
/*************** TX81Z Sustain Level ***********/
|
||||
for (i=0;i<16;i++) {
|
||||
data[i] = pow(2.0,-(15-i)/2.0);
|
||||
}
|
||||
data[0] = 0.0;
|
||||
printf("double __FM4Op_susLevels[16] = {");
|
||||
for (i=0;i<16;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
printf("%lf,",data[i]);
|
||||
}
|
||||
printf("};\n");
|
||||
/****************** Attack Rate ***************/
|
||||
for (i=0;i<32;i++) {
|
||||
data[i] = 6.0 * pow(5.7,-(i-1)/5.0);
|
||||
}
|
||||
printf("double __FM4Op_attTimes[16] = {");
|
||||
for (i=0;i<32;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
printf("%lf,",data[i]);
|
||||
}
|
||||
printf("};\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/**********************************************/
|
||||
/** Utility to make various functions **/
|
||||
/** like exponential and log gain curves. **/
|
||||
/** **/
|
||||
/** Included here: **/
|
||||
/** Yamaha TX81Z curves for master gain, **/
|
||||
/** Envelope Rates (in normalized units), **/
|
||||
/** envelope sustain level, and more.... **/
|
||||
/**********************************************/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
int i,j;
|
||||
double temp;
|
||||
double data[128];
|
||||
|
||||
/*************** TX81Z Master Gain *************/
|
||||
for (i=0;i<100;i++) {
|
||||
data[i] = pow(2.0,-(99-i)/10.0);
|
||||
}
|
||||
data[0] = 0.0;
|
||||
printf("double __FM4Op_gains[99] = {");
|
||||
for (i=0;i<100;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
printf("%lf,",data[i]);
|
||||
}
|
||||
printf("};\n");
|
||||
/*************** TX81Z Sustain Level ***********/
|
||||
for (i=0;i<16;i++) {
|
||||
data[i] = pow(2.0,-(15-i)/2.0);
|
||||
}
|
||||
data[0] = 0.0;
|
||||
printf("double __FM4Op_susLevels[16] = {");
|
||||
for (i=0;i<16;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
printf("%lf,",data[i]);
|
||||
}
|
||||
printf("};\n");
|
||||
/****************** Attack Rate ***************/
|
||||
for (i=0;i<32;i++) {
|
||||
data[i] = 6.0 * pow(5.7,-(i-1)/5.0);
|
||||
}
|
||||
printf("double __FM4Op_attTimes[16] = {");
|
||||
for (i=0;i<32;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
printf("%lf,",data[i]);
|
||||
}
|
||||
printf("};\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,33 +1,33 @@
|
||||
/**********************************************/
|
||||
/** Utility to make various functions **/
|
||||
/** like exponential and log gain curves. **/
|
||||
/** Specifically for direct MIDI parameter **/
|
||||
/** conversions. **/
|
||||
/** Included here: **/
|
||||
/** A440 Referenced Equal Tempered Pitches **/
|
||||
/** as a function of MIDI note number. **/
|
||||
/** **/
|
||||
/**********************************************/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
int i,j;
|
||||
double temp;
|
||||
double data[128];
|
||||
|
||||
/********* Pitch as fn. of MIDI Note **********/
|
||||
|
||||
printf("double __MIDI_To_Pitch[128] = {");
|
||||
for (i=0;i<128;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
temp = 220.0 * pow(2.0,((double) i - 57) / 12.0);
|
||||
printf("%.2lf,",temp);
|
||||
}
|
||||
printf("};\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/**********************************************/
|
||||
/** Utility to make various functions **/
|
||||
/** like exponential and log gain curves. **/
|
||||
/** Specifically for direct MIDI parameter **/
|
||||
/** conversions. **/
|
||||
/** Included here: **/
|
||||
/** A440 Referenced Equal Tempered Pitches **/
|
||||
/** as a function of MIDI note number. **/
|
||||
/** **/
|
||||
/**********************************************/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
void main()
|
||||
{
|
||||
int i,j;
|
||||
double temp;
|
||||
double data[128];
|
||||
|
||||
/********* Pitch as fn. of MIDI Note **********/
|
||||
|
||||
printf("double __MIDI_To_Pitch[128] = {");
|
||||
for (i=0;i<128;i++) {
|
||||
if (i%8 == 0) printf("\n");
|
||||
temp = 220.0 * pow(2.0,((double) i - 57) / 12.0);
|
||||
printf("%.2lf,",temp);
|
||||
}
|
||||
printf("};\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,116 +1,116 @@
|
||||
/**********************************************/
|
||||
/** Utility to make various flavors of **/
|
||||
/** sine wave (rectified, etc), and **/
|
||||
/** other commonly needed waveforms, like **/
|
||||
/** triangles, ramps, etc. **/
|
||||
/** The files generated are all 16 bit **/
|
||||
/** linear signed integer, of length **/
|
||||
/** as defined by LENGTH below **/
|
||||
/**********************************************/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define LENGTH 256
|
||||
#define PI 3.14159265358979323846
|
||||
|
||||
void main()
|
||||
{
|
||||
int i,j;
|
||||
double temp;
|
||||
short data[LENGTH + 2];
|
||||
FILE *fd;
|
||||
|
||||
/////////// Yer Basic TX81Z Waves, Including Sine ///////////
|
||||
fd = fopen("halfwave.raw","wb");
|
||||
for (i=0;i<LENGTH/2;i++)
|
||||
data[i] = 32767 * sin(i * 2 * PI / (double) LENGTH);
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("sinewave.raw","wb");
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 32767 * sin(i * 2 * PI / (double) LENGTH);
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("sineblnk.raw","wb");
|
||||
for (i=0;i<LENGTH/2;i++)
|
||||
data[i] = data[2*i];
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("fwavblnk.raw","wb");
|
||||
for (i=0;i<LENGTH/4;i++)
|
||||
data[i+LENGTH/4] = data[i];
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("snglpeak.raw","wb");
|
||||
for (i=0;i<=LENGTH/4;i++)
|
||||
data[i] = 32767 * (1.0 - cos(i * 2 * PI / (double) LENGTH));
|
||||
for (i=0;i<=LENGTH/4;i++)
|
||||
data[LENGTH/2-i] = data[i];
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("twopeaks.raw","wb");
|
||||
for (i=0;i<=LENGTH/2;i++) {
|
||||
data[LENGTH/2+i] = -data[i];
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("peksblnk.raw","wb");
|
||||
for (i=0;i<=LENGTH/2;i++)
|
||||
data[i] = data[i*2];
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("ppksblnk.raw","wb");
|
||||
for (i=0;i<=LENGTH/4;i++)
|
||||
data[i+LENGTH/4] = data[i];
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
/////////// Impulses of various bandwidth ///////////
|
||||
fd = fopen("impuls10.raw","wb");
|
||||
for (i=0;i<LENGTH;i++) {
|
||||
temp = 0.0;
|
||||
for (j=1;j<=10;j++)
|
||||
temp += cos(i * j * 2 * PI / (double) LENGTH);
|
||||
data[i] = 32767 / 10.0 * temp;
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("impuls20.raw","wb");
|
||||
for (i=0;i<LENGTH;i++) {
|
||||
temp = 0.0;
|
||||
for (j=1;j<=20;j++)
|
||||
temp += cos(i * j * 2 * PI / (double) LENGTH);
|
||||
data[i] = 32767 / 20.0 * temp;
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("impuls40.raw","wb");
|
||||
for (i=0;i<LENGTH;i++) {
|
||||
temp = 0.0;
|
||||
for (j=1;j<=40;j++)
|
||||
temp += cos(i * j * 2 * PI / (double) LENGTH);
|
||||
data[i] = 32767 / 40.0 * temp;
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
}
|
||||
/**********************************************/
|
||||
/** Utility to make various flavors of **/
|
||||
/** sine wave (rectified, etc), and **/
|
||||
/** other commonly needed waveforms, like **/
|
||||
/** triangles, ramps, etc. **/
|
||||
/** The files generated are all 16 bit **/
|
||||
/** linear signed integer, of length **/
|
||||
/** as defined by LENGTH below **/
|
||||
/**********************************************/
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#define LENGTH 256
|
||||
#define PI 3.14159265358979323846
|
||||
|
||||
void main()
|
||||
{
|
||||
int i,j;
|
||||
double temp;
|
||||
short data[LENGTH + 2];
|
||||
FILE *fd;
|
||||
|
||||
/////////// Yer Basic TX81Z Waves, Including Sine ///////////
|
||||
fd = fopen("halfwave.raw","wb");
|
||||
for (i=0;i<LENGTH/2;i++)
|
||||
data[i] = 32767 * sin(i * 2 * PI / (double) LENGTH);
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("sinewave.raw","wb");
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 32767 * sin(i * 2 * PI / (double) LENGTH);
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("sineblnk.raw","wb");
|
||||
for (i=0;i<LENGTH/2;i++)
|
||||
data[i] = data[2*i];
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("fwavblnk.raw","wb");
|
||||
for (i=0;i<LENGTH/4;i++)
|
||||
data[i+LENGTH/4] = data[i];
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("snglpeak.raw","wb");
|
||||
for (i=0;i<=LENGTH/4;i++)
|
||||
data[i] = 32767 * (1.0 - cos(i * 2 * PI / (double) LENGTH));
|
||||
for (i=0;i<=LENGTH/4;i++)
|
||||
data[LENGTH/2-i] = data[i];
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("twopeaks.raw","wb");
|
||||
for (i=0;i<=LENGTH/2;i++) {
|
||||
data[LENGTH/2+i] = -data[i];
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("peksblnk.raw","wb");
|
||||
for (i=0;i<=LENGTH/2;i++)
|
||||
data[i] = data[i*2];
|
||||
for (i=LENGTH/2;i<LENGTH;i++)
|
||||
data[i] = 0;
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("ppksblnk.raw","wb");
|
||||
for (i=0;i<=LENGTH/4;i++)
|
||||
data[i+LENGTH/4] = data[i];
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
/////////// Impulses of various bandwidth ///////////
|
||||
fd = fopen("impuls10.raw","wb");
|
||||
for (i=0;i<LENGTH;i++) {
|
||||
temp = 0.0;
|
||||
for (j=1;j<=10;j++)
|
||||
temp += cos(i * j * 2 * PI / (double) LENGTH);
|
||||
data[i] = 32767 / 10.0 * temp;
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("impuls20.raw","wb");
|
||||
for (i=0;i<LENGTH;i++) {
|
||||
temp = 0.0;
|
||||
for (j=1;j<=20;j++)
|
||||
temp += cos(i * j * 2 * PI / (double) LENGTH);
|
||||
data[i] = 32767 / 20.0 * temp;
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
fd = fopen("impuls40.raw","wb");
|
||||
for (i=0;i<LENGTH;i++) {
|
||||
temp = 0.0;
|
||||
for (j=1;j<=40;j++)
|
||||
temp += cos(i * j * 2 * PI / (double) LENGTH);
|
||||
data[i] = 32767 / 40.0 * temp;
|
||||
}
|
||||
fwrite(&data,2,LENGTH,fd);
|
||||
fclose(fd);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user