Version 4.1

This commit is contained in:
Gary Scavone
2009-03-24 23:02:12 -04:00
committed by Stephen Sinclair
parent 81475b04c5
commit 2f09fcd019
279 changed files with 36223 additions and 25364 deletions

View File

View File

@@ -1,73 +0,0 @@
# STK Makefile - Global version for Unix systems which have GNU
# Makefile utilities installed. If this Makefile does not work on
# your system, try using the platform specific Makefiles (.sgi,
# .next, and .linux).
OS = $(shell uname)
# The following definition indicates the relative location of
# the STK src directory.
STK_SRC = ../../src/
OBJECTS = Stk.o Envelope.o ADSR.o Noise.o WvIn.o WaveLoop.o WvOut.o \
Filter.o OneZero.o OnePole.o PoleZero.o TwoZero.o \
BiQuad.o Delay.o DelayL.o DelayA.o Reverb.o PRCRev.o \
FormSwep.o ReedTabl.o JetTabl.o BowTabl.o \
Instrmnt.o Clarinet.o BlowHole.o Saxofony.o Flute.o Brass.o BlowBotl.o \
Bowed.o Plucked.o StifKarp.o Sitar.o PluckTwo.o Mandolin.o Mesh2D.o \
FM.o Rhodey.o Wurley.o TubeBell.o HevyMetl.o PercFlut.o BeeThree.o FMVoices.o \
Sampler.o Moog.o Simple.o Drummer.o BandedWG.o Shakers.o \
Modal.o ModalBar.o Resonate.o \
\
Messager.o SKINI.o utilities.o
RT_OBJECTS = RtMidi.o RtWvOut.o RtAudio.o Thread.o Socket.o
INCLUDE = -I../../include
RM = /bin/rm
INSTR = demo
ifeq ($(OS),NEXTSTEP) # These are for NeXT
# CC = cc -arch m68k -arch i386 -Wall -D__OS_NeXT_
CC = g++ -bm68k-next-nextstep3 -bi386-next-nextstep3 -Wall -fhandle-exceptions
endif
ifeq ($(OS),IRIX) # These are for SGI
CC = CC -D__IRIX_AL__ # -g -fullwarn -D__SGI_CC__ -O2
OBJECTS += $(RT_OBJECTS)
LIBRARY = -laudio -lmd -lm -lpthread
endif
ifeq ($(OS),Linux) # These are for Linux
OBJECTS += $(RT_OBJECTS)
CC = g++ -O3 -Wall -D__LITTLE_ENDIAN__ -D__LINUX_OSS__ #-g
LIBRARY = -lpthread -lm #-lasound
endif
%.o : $(STK_SRC)%.cpp
$(CC) $(INCLUDE) -c $(<) -o $@
all: $(INSTR)
demo: demo.cpp $(OBJECTS)
$(CC) $(INCLUDE) -o demo demo.cpp $(OBJECTS) $(LIBRARY)
Md2Skini: Md2Skini.cpp Stk.o RtMidi.o Thread.o Socket.o
$(CC) -o Md2Skini Md2Skini.cpp Stk.o RtMidi.o Thread.o Socket.o $(LIBRARY) $(INCLUDE)
clean :
rm *.o
rm $(INSTR)
cleanIns :
rm $(INSTR)
strip :
strip $(INSTR)
# Project specific objects:
utilities.o: utilities.cpp
$(CC) $(INCLUDE) -c utilities.cpp

76
projects/demo/Makefile.in Normal file
View File

@@ -0,0 +1,76 @@
### STK demo Makefile - for various flavors of unix
PROGRAMS = demo
RM = /bin/rm
SRC_PATH = ../../src
OBJECT_PATH = @object_path@
vpath %.o $(OBJECT_PATH)
OBJECTS = Stk.o Noise.o SubNoise.o Envelope.o ADSR.o \
WvIn.o WaveLoop.o WvOut.o \
Filter.o OneZero.o OnePole.o PoleZero.o TwoZero.o \
BiQuad.o FormSwep.o Delay.o DelayL.o DelayA.o \
ReedTabl.o JetTabl.o BowTabl.o \
Reverb.o PRCRev.o \
Modulate.o SingWave.o Voicer.o \
Vector3D.o Sphere.o \
\
Instrmnt.o Clarinet.o BlowHole.o Saxofony.o Flute.o Brass.o BlowBotl.o \
Bowed.o Plucked.o StifKarp.o Sitar.o PluckTwo.o Mandolin.o Mesh2D.o \
FM.o Rhodey.o Wurley.o TubeBell.o HevyMetl.o PercFlut.o BeeThree.o FMVoices.o \
Sampler.o Moog.o Simple.o Drummer.o Shakers.o \
Modal.o ModalBar.o BandedWG.o Resonate.o VoicForm.o Phonemes.o Whistle.o \
\
Messager.o SKINI.o utilities.o
INCLUDE = @include@
ifeq ($(strip $(INCLUDE)), )
INCLUDE = ../../include
endif
vpath %.h $(INCLUDE)
CC = @CXX@
DEFS = @byte_order@
DEFS += @debug@
CFLAGS = @cflags@
CFLAGS += @warn@ -I$(INCLUDE)
LIBRARY = @LIBS@
LIBRARY += @frameworks@
REALTIME = @realtime@
ifeq ($(REALTIME),yes)
OBJECTS += RtMidi.o RtAudio.o RtWvOut.o Thread.o Socket.o
DEFS += @sound_api@
DEFS += @midiator@
endif
RAWWAVES = @rawwaves@
ifeq ($(strip $(RAWWAVES)), )
RAWWAVES = ../../rawwaves/
endif
DEFS += -DRAWWAVE_PATH=\"$(RAWWAVES)\"
%.o : $(SRC_PATH)/%.cpp
$(CC) $(CFLAGS) $(DEFS) -c $(<) -o $(OBJECT_PATH)/$@
all : $(PROGRAMS)
demo: demo.cpp $(OBJECTS)
$(CC) $(CFLAGS) $(DEFS) -o demo demo.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
Md2Skini: Md2Skini.cpp Stk.o RtMidi.o Thread.o Socket.o
$(CC) $(CFLAGS) $(DEFS) -o Md2Skini Md2Skini.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/RtMidi.o $(OBJECT_PATH)/Thread.o $(OBJECT_PATH)/Socket.o $(LIBRARY)
$(OBJECTS) : Stk.h
clean :
-rm $(OBJECT_PATH)/*.o
-rm $(PROGRAMS)
strip :
strip $(PROGRAMS)
# Project specific objects:
utilities.o: utilities.cpp
$(CC) $(CFLAGS) $(DEFS) -c utilities.cpp -o $(OBJECT_PATH)/$@

View File

@@ -1,309 +1,309 @@
/***************************************************/
/*
Simple realtime MIDI to SKINI parser.
This object takes MIDI from the input stream
(via the RtMidi class), parses it, and turns it
into SKINI messages.
by Perry R. Cook and Gary P. Scavone, 1995 - 2002.
*/
/***************************************************/
#include "RtMidi.h"
#include "Thread.h"
#include "Socket.h"
#include "SKINI.msg"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Exit thread declaration.
extern "C" THREAD_RETURN THREAD_TYPE stdinMonitor(void * ptr);
void usage(void) {
printf("\nuseage: Md2Skini <flag(s)>\n\n");
printf(" With no arguments, Md2Skini converts MIDI input to SKINI\n");
printf(" format and sends the output directly to stdout.\n");
printf(" With flag = -s <hostname>, the output is sent over a socket\n");
printf(" connection (port 2001) to the optional hostname (default = localhost).\n");
printf(" With flag = -f <filename>, the output stream is simultaneously\n");
printf(" written to the file specified by the optional <filename>\n");
printf(" (default = test.ski).\n\n");
exit(0);
}
int main(int argc,char *argv[])
{
bool done = false, firstMessage = true, writeFile = false, useSocket = false;
FILE *file = NULL;
char fileName[256];
char hostName[128];
RtMidi *rtmidi = 0;
Socket *soket = 0;
Thread *thread = 0;
if ( argc>5 ) {
usage();
}
// Parse the command-line arguments.
int i = 1;
while (i < argc) {
if (argv[i][0] == '-') {
switch(argv[i][1]) {
case 's':
if ((i+1 < argc) && argv[i+1][0] != '-') {
i++;
strncpy(hostName, argv[i], 128);
}
else strcpy(hostName, "localhost");
useSocket = true;
break;
case 'f':
if ((i+1 < argc) && argv[i+1][0] != '-') {
i++;
strncpy(fileName, argv[i], 252);
if ( strstr(fileName,".ski") == NULL ) strcat(fileName, ".ski");
}
else strcpy(fileName, "test.ski");
file = fopen(fileName,"wb");
writeFile = true;
break;
default:
usage();
break;
}
}
else usage();
i++;
}
MY_FLOAT dt=0.0;
try {
rtmidi = new RtMidi();
}
catch (StkError &) {
exit(0);
}
// If using sockets, setup the client socket
if (useSocket) {
try {
soket = new Socket( 2001, hostName );
}
catch (StkError &) {
exit(0);
}
}
// Start the "exit" thread.
thread = new Thread();
if ( !thread->start( (THREAD_FUNCTION)&stdinMonitor, (void *) &done ) ) {
fprintf(stderr, "Unable to create exit thread ... aborting.\n");
goto cleanup;
}
// Write SKINI messages to buffer 's'. This is the easiest way to
// allow this single executable to work for both socketing and
// printf's to stdout.
char s[128];
int channel, j;
MY_FLOAT byte2, byte3;
while ( !done ) {
if (rtmidi->nextMessage() > 0) {
byte3 = rtmidi->getByteThree();
byte2 = rtmidi->getByteTwo();
channel = rtmidi->getChannel();
if (writeFile) dt = rtmidi->getDeltaTime();
if (firstMessage) { // first MIDI message time stamp is meaningless
dt = 0.0;
firstMessage = false;
}
switch(rtmidi->getType()) {
case __SK_NoteOn_:
if (byte3 < 1.0) {
sprintf(s,"NoteOff\t\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,64.0);
if (writeFile) {
fprintf(file,"NoteOff\t\t%.3f %d %.1f %.1f\n",dt,channel,byte2,64.0);
}
} else {
sprintf(s,"NoteOn\t\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"NoteOn\t\t%.3f %d %.1f %.1f\n",dt,channel,byte2,byte3);
}
}
break;
case __SK_NoteOff_:
if (byte3 < 2.0) byte3 = 64.0;
sprintf(s,"NoteOff\t\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"NoteOff\t\t%.3f %d %.1f %.1f\n",dt,channel,byte2,byte3);
}
break;
case __SK_PolyPressure_:
sprintf(s,"PolyPressure\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"PolyPressure\t%.3f %d %.1f %.1f\n",dt,channel,byte2,byte3);
}
break;
case __SK_ControlChange_:
j = (int) byte2;
switch(j) {
case __SK_Volume_:
sprintf(s,"Volume\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Volume\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_ModWheel_:
sprintf(s,"ModWheel\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"ModWheel\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Breath_:
sprintf(s,"Breath\t\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Breath\t\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_FootControl_:
sprintf(s,"FootControl\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"FootControl\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Portamento_:
sprintf(s,"Portamento\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Portamento\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Balance_:
sprintf(s,"Balance\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Balance\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Pan_:
sprintf(s,"Pan\t\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Pan\t\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Sustain_:
sprintf(s,"Sustain\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Sustain\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Expression_:
sprintf(s,"Expression\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Expression\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
default:
sprintf(s,"ControlChange\t%.3f %d %d %.1f\n",0.0,channel,j,byte3);
if (writeFile) {
fprintf(file,"ControlChange\t%.3f %d %d %.1f\n",dt,channel,j,byte3);
}
break;
}
break;
case __SK_ProgramChange_:
j = (int) byte2;
sprintf(s,"ProgramChange\t%.3f %d %d\n",0.0,channel,j);
if (writeFile) {
fprintf(file,"ProgramChange\t%.3f %d %d\n",dt,channel,j);
}
break;
case __SK_ChannelPressure_:
sprintf(s,"ChannelPressure\t%.3f %d %.1f\n",0.0,channel,byte2);
if (writeFile) {
fprintf(file,"ChannelPressure\t%.3f %d %.1f\n",dt,channel,byte2);
}
break;
case __SK_PitchBend_:
sprintf(s,"PitchBend\t%.3f %d %f\n",0.0,channel,byte2);
if (writeFile) {
fprintf(file,"PitchBend\t%.3f %d %f\n",dt,channel,byte2);
}
break;
default:
sprintf(s,"// Unknown\t%.3f %d %f %f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"// Unknown\t\t%.3f %d %f %f\n",dt,channel,byte2,byte3);
}
break;
}
if (useSocket) {
if ( soket->writeBuffer( s, strlen(s), 0 ) < 0 ) {
fprintf(stderr,"Socket connection failed ... aborting.\n");
goto cleanup;
}
}
else {
printf("%s", s);
fflush(stdout);
}
memset(s, 0, sizeof(s));
} else {
// Sleep for 10 milliseconds
Stk::sleep( 10 );
}
}
sprintf(s, "Exiting Md2Skini process ... bye!\n");
if (useSocket)
soket->writeBuffer( s, strlen(s), 0 );
else {
printf("%s", s);
fflush(stdout);
}
if (writeFile) {
printf("Wrote SKINI output to file %s.\n", fileName);
fclose(file);
}
cleanup:
done = true;
delete rtmidi;
delete soket;
delete thread;
return 0;
}
THREAD_RETURN THREAD_TYPE stdinMonitor(void * ptr)
{
bool *done = (bool *) ptr;
char inputString[128];
printf("Type 'Exit<cr>' to quit.\n");
while ( !*done ) {
fgets(inputString, 128, stdin);
if (inputString[3] == 't' && inputString[1] == 'x'
&& inputString[2] == 'i' && inputString[0] == 'E') {
*done = true;
}
else {
printf(inputString);
fflush(stdout);
}
}
return 0;
}
/***************************************************/
/*
Simple realtime MIDI to SKINI parser.
This object takes MIDI from the input stream
(via the RtMidi class), parses it, and turns it
into SKINI messages.
by Perry R. Cook and Gary P. Scavone, 1995 - 2002.
*/
/***************************************************/
#include "RtMidi.h"
#include "Thread.h"
#include "Socket.h"
#include "SKINI.msg"
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// Exit thread declaration.
extern "C" THREAD_RETURN THREAD_TYPE stdinMonitor(void * ptr);
void usage(void) {
printf("\nuseage: Md2Skini <flag(s)>\n\n");
printf(" With no arguments, Md2Skini converts MIDI input to SKINI\n");
printf(" format and sends the output directly to stdout.\n");
printf(" With flag = -s <hostname>, the output is sent over a socket\n");
printf(" connection (port 2001) to the optional hostname (default = localhost).\n");
printf(" With flag = -f <filename>, the output stream is simultaneously\n");
printf(" written to the file specified by the optional <filename>\n");
printf(" (default = test.ski).\n\n");
exit(0);
}
int main(int argc,char *argv[])
{
bool done = false, firstMessage = true, writeFile = false, useSocket = false;
FILE *file = NULL;
char fileName[256];
char hostName[128];
RtMidi *rtmidi = 0;
Socket *soket = 0;
Thread *thread = 0;
if ( argc>5 ) {
usage();
}
// Parse the command-line arguments.
int i = 1;
while (i < argc) {
if (argv[i][0] == '-') {
switch(argv[i][1]) {
case 's':
if ((i+1 < argc) && argv[i+1][0] != '-') {
i++;
strncpy(hostName, argv[i], 128);
}
else strcpy(hostName, "localhost");
useSocket = true;
break;
case 'f':
if ((i+1 < argc) && argv[i+1][0] != '-') {
i++;
strncpy(fileName, argv[i], 252);
if ( strstr(fileName,".ski") == NULL ) strcat(fileName, ".ski");
}
else strcpy(fileName, "test.ski");
file = fopen(fileName,"wb");
writeFile = true;
break;
default:
usage();
break;
}
}
else usage();
i++;
}
MY_FLOAT dt=0.0;
try {
rtmidi = new RtMidi();
}
catch (StkError &) {
exit(0);
}
// If using sockets, setup the client socket
if (useSocket) {
try {
soket = new Socket( 2001, hostName );
}
catch (StkError &) {
exit(0);
}
}
// Start the "exit" thread.
thread = new Thread();
if ( !thread->start( (THREAD_FUNCTION)&stdinMonitor, (void *) &done ) ) {
fprintf(stderr, "Unable to create exit thread ... aborting.\n");
goto cleanup;
}
// Write SKINI messages to buffer 's'. This is the easiest way to
// allow this single executable to work for both socketing and
// printf's to stdout.
char s[128];
int channel, j;
MY_FLOAT byte2, byte3;
while ( !done ) {
if (rtmidi->nextMessage() > 0) {
byte3 = rtmidi->getByteThree();
byte2 = rtmidi->getByteTwo();
channel = rtmidi->getChannel();
if (writeFile) dt = rtmidi->getDeltaTime();
if (firstMessage) { // first MIDI message time stamp is meaningless
dt = 0.0;
firstMessage = false;
}
switch(rtmidi->getType()) {
case __SK_NoteOn_:
if (byte3 < 1.0) {
sprintf(s,"NoteOff\t\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,64.0);
if (writeFile) {
fprintf(file,"NoteOff\t\t%.3f %d %.1f %.1f\n",dt,channel,byte2,64.0);
}
} else {
sprintf(s,"NoteOn\t\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"NoteOn\t\t%.3f %d %.1f %.1f\n",dt,channel,byte2,byte3);
}
}
break;
case __SK_NoteOff_:
if (byte3 < 2.0) byte3 = 64.0;
sprintf(s,"NoteOff\t\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"NoteOff\t\t%.3f %d %.1f %.1f\n",dt,channel,byte2,byte3);
}
break;
case __SK_PolyPressure_:
sprintf(s,"PolyPressure\t%.3f %d %.1f %.1f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"PolyPressure\t%.3f %d %.1f %.1f\n",dt,channel,byte2,byte3);
}
break;
case __SK_ControlChange_:
j = (int) byte2;
switch(j) {
case __SK_Volume_:
sprintf(s,"Volume\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Volume\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_ModWheel_:
sprintf(s,"ModWheel\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"ModWheel\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Breath_:
sprintf(s,"Breath\t\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Breath\t\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_FootControl_:
sprintf(s,"FootControl\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"FootControl\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Portamento_:
sprintf(s,"Portamento\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Portamento\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Balance_:
sprintf(s,"Balance\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Balance\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Pan_:
sprintf(s,"Pan\t\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Pan\t\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Sustain_:
sprintf(s,"Sustain\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Sustain\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
case __SK_Expression_:
sprintf(s,"Expression\t%.3f %d %.1f\n",0.0,channel,byte3);
if (writeFile) {
fprintf(file,"Expression\t%.3f %d %.1f\n",dt,channel,byte3);
}
break;
default:
sprintf(s,"ControlChange\t%.3f %d %d %.1f\n",0.0,channel,j,byte3);
if (writeFile) {
fprintf(file,"ControlChange\t%.3f %d %d %.1f\n",dt,channel,j,byte3);
}
break;
}
break;
case __SK_ProgramChange_:
j = (int) byte2;
sprintf(s,"ProgramChange\t%.3f %d %d\n",0.0,channel,j);
if (writeFile) {
fprintf(file,"ProgramChange\t%.3f %d %d\n",dt,channel,j);
}
break;
case __SK_ChannelPressure_:
sprintf(s,"ChannelPressure\t%.3f %d %.1f\n",0.0,channel,byte2);
if (writeFile) {
fprintf(file,"ChannelPressure\t%.3f %d %.1f\n",dt,channel,byte2);
}
break;
case __SK_PitchBend_:
sprintf(s,"PitchBend\t%.3f %d %f\n",0.0,channel,byte2);
if (writeFile) {
fprintf(file,"PitchBend\t%.3f %d %f\n",dt,channel,byte2);
}
break;
default:
sprintf(s,"// Unknown\t%.3f %d %f %f\n",0.0,channel,byte2,byte3);
if (writeFile) {
fprintf(file,"// Unknown\t\t%.3f %d %f %f\n",dt,channel,byte2,byte3);
}
break;
}
if (useSocket) {
if ( soket->writeBuffer( s, strlen(s), 0 ) < 0 ) {
fprintf(stderr,"Socket connection failed ... aborting.\n");
goto cleanup;
}
}
else {
printf("%s", s);
fflush(stdout);
}
memset(s, 0, sizeof(s));
} else {
// Sleep for 10 milliseconds
Stk::sleep( 10 );
}
}
sprintf(s, "Exiting Md2Skini process ... bye!\n");
if (useSocket)
soket->writeBuffer( s, strlen(s), 0 );
else {
printf("%s", s);
fflush(stdout);
}
if (writeFile) {
printf("Wrote SKINI output to file %s.\n", fileName);
fclose(file);
}
cleanup:
done = true;
delete rtmidi;
delete soket;
delete thread;
return 0;
}
THREAD_RETURN THREAD_TYPE stdinMonitor(void * ptr)
{
bool *done = (bool *) ptr;
char inputString[128];
printf("Type 'Exit<cr>' to quit.\n");
while ( !*done ) {
fgets(inputString, 128, stdin);
if (inputString[3] == 't' && inputString[1] == 'x'
&& inputString[2] == 'i' && inputString[0] == 'E') {
*done = true;
}
else {
printf(inputString);
fflush(stdout);
}
}
return 0;
}

View File

1
projects/demo/Voice.bat Executable file
View File

@@ -0,0 +1 @@
wish < tcl/Voice.tcl | demo FMVoices -or -ip

View File

@@ -1,33 +1,38 @@
// demo.cpp
//
// An STK program for monophonic voice playback and control.
// An example STK program for voice playback and control.
#include "SKINI.msg"
#include "Messager.h"
#include "WvOut.h"
#include "Instrmnt.h"
#include "PRCRev.h"
#include "Voicer.h"
// Miscellaneous command-line parsing and instrument allocation
// functions are defined in utilites.cpp ... specific to this program.
#include "utilities.h"
#include <stdlib.h>
#include <signal.h>
#include <math.h>
#include <iostream.h>
bool done;
static void finish(int ignore){ done = true; }
int main(int argc, char *argv[])
{
bool done;
Instrmnt *instrument = 0;
Messager *messager = 0;
Instrmnt **instrument = 0;
WvOut **output = 0;
Messager *messager = 0;
Reverb *reverb = 0;
MY_FLOAT pitch = 220.0;
Voicer *voicer = 0;
int i, nVoices = 1;
MY_FLOAT t60 = 1.0; // in seconds
// If you want to change the default sample rate (set in Stk.h), do
// it before instantiating any objects!!
// it before instantiating any objects! If the sample rate is
// specified in the command line, it will override this setting.
Stk::setSampleRate( 22050.0 );
// Check the command-line arguments for errors and to determine
@@ -35,15 +40,28 @@ int main(int argc, char *argv[])
int nOutputs = checkArgs(argc, argv);
output = (WvOut **) calloc(nOutputs, sizeof(WvOut *));
// Instantiate the instrument from the command-line argument.
int voice = voiceByName(argv[1], &instrument);
if ( voice < 0 ) usage(argv[0]);
// Instantiate the instrument(s) type from the command-line argument
// (in utilities.cpp).
nVoices = countVoices(argc, argv);
instrument = (Instrmnt **) calloc(nVoices, sizeof(Instrmnt *));
int voice = voiceByName(argv[1], &instrument[0]);
if ( voice < 0 ) {
free( output );
free( instrument );
usage(argv[0]);
}
// If there was no error allocating the first voice, we should be fine for more.
for ( i=1; i<nVoices; i++ )
voiceByName(argv[1], &instrument[i]);
// Parse the command-line flags, instantiate WvOut objects, and instantiate
// the input message controller (in utilities.cpp).
voicer = (Voicer *) new Voicer(nVoices);
for ( i=0; i<nVoices; i++ )
voicer->addInstrument( instrument[i] );
// Parse the command-line flags, instantiate WvOut objects, and
// instantiate the input message controller (in utilities.cpp).
try {
int controlMask = parseArgs(argc, argv, output);
messager = new Messager( controlMask );
parseArgs(argc, argv, output, &messager);
}
catch (StkError &) {
goto cleanup;
@@ -52,10 +70,13 @@ int main(int argc, char *argv[])
reverb = new PRCRev( t60 );
reverb->setEffectMix(0.2);
// Install an interrupt handler function.
(void) signal(SIGINT, finish);
// The runtime loop begins here:
done = FALSE;
int nTicks, type, j, i;
MY_FLOAT temp, byte2, byte3, sample;
int nTicks, type, j;
MY_FLOAT byte2, byte3, sample;
while (!done) {
// Look for new messages and return a delta time (in samples).
@@ -64,9 +85,8 @@ int main(int argc, char *argv[])
done = TRUE;
nTicks = messager->getDelta();
for ( i=0; i<nTicks; i++ ) {
sample = reverb->tick( instrument->tick() );
sample = reverb->tick( voicer->tick() );
for ( j=0; j<nOutputs; j++ ) output[j]->tick(sample);
}
@@ -79,51 +99,50 @@ int main(int argc, char *argv[])
case __SK_NoteOn_:
if (byte3 == 0.0) // velocity is zero ... really a NoteOff
instrument->noteOff( 0.5 );
else { // a NoteOn
if ( byte2 < 0.0 || byte2 > 128.0 ) continue;
pitch = Midi2Pitch[(unsigned int) byte2];
instrument->noteOn(pitch, byte3 * ONE_OVER_128);
}
voicer->noteOff( byte2, 64.0 );
else // a NoteOn
voicer->noteOn( byte2, byte3 );
break;
case __SK_NoteOff_:
instrument->noteOff(byte3 * ONE_OVER_128);
voicer->noteOff( byte2, byte3 );
break;
case __SK_ControlChange_:
if (byte2 == 44.0)
reverb->setEffectMix(byte3 * ONE_OVER_128);
else
instrument->controlChange( (int)byte2, byte3 );
voicer->controlChange( (int) byte2, byte3 );
break;
case __SK_AfterTouch_:
instrument->controlChange( 128, byte2 );
voicer->controlChange( 128, byte2 );
break;
case __SK_PitchChange_:
voicer->setFrequency( byte2 );
break;
case __SK_PitchBend_:
if ( byte2 < 0.0 || byte2 > 128.0 ) continue;
temp = byte2 - (int)byte2; // floating-point remainder
pitch = Midi2Pitch[(unsigned int)byte2] * pow(2.0, temp/12.0);
instrument->setFrequency(pitch);
voicer->pitchBend( byte2 );
break;
case __SK_ProgramChange_:
if (voice != (int)byte2) {
instrument->noteOff(1.0);
// Let the instrument settle a bit.
for (i=0; i<4096; i++) {
sample = reverb->tick( instrument->tick() );
if ( voice != (int) byte2 ) {
voicer->silence();
// Let the instrument(s) settle a bit.
for ( i=0; i<4096; i++ ) {
sample = reverb->tick( voicer->tick() );
for ( j=0; j<nOutputs; j++ ) output[j]->tick(sample);
}
delete instrument;
voice = voiceByNumber( (int)byte2, &instrument );
if ( voice < 0 ) {
// Default instrument = 0
voice = voiceByNumber( 0, &instrument );
for ( i=0; i<nVoices; i++ ) {
voicer->removeInstrument( instrument[i] );
delete instrument[i];
voice = voiceByNumber( (int)byte2, &instrument[i] );
if ( voice < 0 )
voice = voiceByNumber( 0, &instrument[i] );
voicer->addInstrument( instrument[i] );
}
instrument->noteOn(pitch, 0.2);
}
}
}
@@ -132,7 +151,7 @@ int main(int argc, char *argv[])
// Let the reverb settle a bit.
nTicks = (long) (t60 * Stk::sampleRate());
for ( i=0; i<nTicks; i++) {
sample = reverb->tick( instrument->tick() );
sample = reverb->tick( voicer->tick() );
for ( j=0; j<nOutputs; j++ ) output[j]->tick(sample);
}
@@ -142,8 +161,14 @@ int main(int argc, char *argv[])
free(output);
delete messager;
delete instrument;
delete reverb;
delete voicer;
cout << "\ndemo finished ... goodbye.\n" << endl;
for ( i=0; i<nVoices; i++ ) delete instrument[i];
free(instrument);
cout << "\nStk demo finished ... goodbye.\n" << endl;
return 0;
}

View File

@@ -207,6 +207,10 @@ SOURCE=..\..\src\ModalBar.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Modulate.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Moog.cpp
# End Source File
# Begin Source File
@@ -231,6 +235,10 @@ SOURCE=..\..\src\PercFlut.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Phonemes.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Plucked.cpp
# End Source File
# Begin Source File
@@ -299,6 +307,10 @@ SOURCE=..\..\src\Simple.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\SingWave.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Sitar.cpp
# End Source File
# Begin Source File
@@ -311,6 +323,10 @@ SOURCE=..\..\src\Socket.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Sphere.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\StifKarp.cpp
# End Source File
# Begin Source File
@@ -319,6 +335,10 @@ SOURCE=..\..\src\Stk.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\SubNoise.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Thread.cpp
# End Source File
# Begin Source File
@@ -339,10 +359,26 @@ SOURCE=.\utilities.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Vector3D.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Voicer.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\VoicForm.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\WaveLoop.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Whistle.cpp
# End Source File
# Begin Source File
SOURCE=..\..\src\Wurley.cpp
# End Source File
# Begin Source File
@@ -475,6 +511,10 @@ SOURCE=..\..\include\ModalBar.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Modulate.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Moog.h
# End Source File
# Begin Source File
@@ -499,6 +539,10 @@ SOURCE=..\..\include\PercFlut.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Phonemes.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Plucked.h
# End Source File
# Begin Source File
@@ -567,6 +611,10 @@ SOURCE=..\..\include\Simple.h
# End Source File
# Begin Source File
SOURCE=..\..\include\SingWave.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Sitar.h
# End Source File
# Begin Source File
@@ -579,6 +627,10 @@ SOURCE=..\..\include\Socket.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Sphere.h
# End Source File
# Begin Source File
SOURCE=..\..\include\StifKarp.h
# End Source File
# Begin Source File
@@ -611,10 +663,22 @@ SOURCE=.\utilities.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Vector3D.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Voicer.h
# End Source File
# Begin Source File
SOURCE=..\..\include\WaveLoop.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Whistle.h
# End Source File
# Begin Source File
SOURCE=..\..\include\Wurley.h
# End Source File
# Begin Source File

View File

@@ -1,20 +1,20 @@
Suggested Score/Instrument Pairings:
BeeThree bookert.ski, organs.ski
Rhodey doogie.ski
Mandolin duelingb.ski
Bowed fiddle.ski
PercFlut misacrio.ski
AgogoBel morazbel.ski
Brass pictures.ski
Wurley nriderson.ski
Flute simplgft.ski
Clarinet simplgft.ski
Marimba spain.ski
Vibraphn spain.ski
HeavyMtl streetsf.ski
Moog1 thecars.ski
TubeBell tubebell.ski
FMVoices lacrymos.ski, vocaliz.ski
VoicForm lacrymos.ski, vocaliz.ski
Suggested Score/Instrument Pairings:
BeeThree bookert.ski, organs.ski
Rhodey doogie.ski
Mandolin duelingb.ski
Bowed fiddle.ski
PercFlut misacrio.ski
AgogoBel morazbel.ski
Brass pictures.ski
Wurley nriderson.ski
Flute simplgft.ski
Clarinet simplgft.ski
Marimba spain.ski
Vibraphn spain.ski
HeavyMtl streetsf.ski
Moog1 thecars.ski
TubeBell tubebell.ski
FMVoices lacrymos.ski, vocaliz.ski
VoicForm lacrymos.ski, vocaliz.ski

File diff suppressed because it is too large Load Diff

View File

@@ -1,90 +1,90 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 114.299997
NoteOff 0.380000 1 60 63.500000
NoteOn 0.020000 1 60 101.600002
NoteOff 0.100000 1 60 63.500000
NoteOn 0.100000 1 48 63.500000
NoteOff 0.200000 1 48 63.500000
NoteOn 0.200000 1 48 88.899998
NoteOff 0.190023 1 48 63.500000
NoteOn 0.010023 1 51 101.600002
NoteOff 0.570023 1 51 63.500000
NoteOn 0.030023 1 53 88.899998
NoteOff 0.570023 1 53 63.500000
NoteOn 0.030023 1 48 38.100002
NoteOff 0.300000 1 48 63.500000
NoteOn 0.300000 1 67 101.600002
NoteOff 0.570023 1 67 63.500000
NoteOn 0.030023 1 66 76.200003
NoteOff 0.190023 1 66 63.500000
NoteOn 0.010023 1 65 63.500000
NoteOff 0.190023 1 65 63.500000
NoteOn 0.010023 1 63 50.800001
NoteOff 0.190023 1 63 63.500000
NoteOn 0.010023 1 60 76.200003
NoteOff 0.380000 1 60 63.500000
NoteOn 0.020000 1 58 50.800001
NoteOff 0.190023 1 58 63.500000
NoteOn 0.010023 1 48 114.299997
NoteOff 0.380000 1 48 63.500000
NoteOn 0.020000 1 48 101.600002
NoteOff 0.100000 1 48 63.500000
NoteOn 0.100000 1 36 63.500000
NoteOff 0.200000 1 36 63.500000
NoteOn 0.200000 1 36 88.899998
NoteOff 0.190023 1 36 63.500000
NoteOn 0.010023 1 39 101.600002
NoteOff 0.570023 1 39 63.500000
NoteOn 0.030023 1 41 88.899998
NoteOff 0.570023 1 41 63.500000
NoteOn 0.030023 1 84 127.000000
NoteOff 0.475011 1 84 63.500000
NoteOn 0.025034 1 83 120.649998
NoteOff 0.066531 1 83 63.500000
NoteOn 0.003537 1 82 114.299997
NoteOff 0.057007 1 82 63.500000
NoteOn 0.003039 1 81 107.950003
NoteOff 0.047528 1 81 63.500000
NoteOn 0.002540 1 80 101.600002
NoteOff 0.047528 1 80 63.500000
NoteOn 0.002540 1 78 95.250000
NoteOff 0.038005 1 78 63.500000
NoteOn 0.002041 1 78 88.899998
NoteOff 0.028526 1 78 63.500000
NoteOn 0.001542 1 77 82.549997
NoteOff 0.019002 1 77 63.500000
NoteOn 0.001043 1 76 76.200003
NoteOff 0.019002 1 76 63.500000
NoteOn 0.001043 1 75 69.850002
NoteOff 0.019002 1 75 63.500000
NoteOn 0.001043 1 74 63.500000
NoteOff 0.019002 1 74 63.500000
NoteOn 0.001043 1 73 63.500000
NoteOff 0.028526 1 73 63.500000
NoteOn 0.001542 1 72 63.500000
NoteOff 0.019002 1 72 63.500000
NoteOn 0.001043 1 71 57.149998
NoteOff 0.028526 1 71 63.500000
NoteOn 0.001542 1 70 50.800001
NoteOff 0.038005 1 70 63.500000
NoteOn 0.002041 1 69 44.449999
NoteOff 0.047528 1 69 63.500000
NoteOn 0.002540 1 68 38.100002
NoteOff 0.057007 1 68 63.500000
NoteOn 0.003039 1 67 31.750000
NoteOff 0.057007 1 67 63.500000
NoteOn 0.003039 1 66 25.400000
NoteOff 0.057007 1 66 63.500000
NoteOn 0.003039 1 65 31.750000
NoteOff 0.066531 1 65 63.500000
NoteOn 0.003537 1 64 25.400000
NoteOff 0.076009 1 64 63.500000
NoteOn 0.004036 1 63 19.050001
NoteOff 0.085533 1 63 63.500000
NoteOn 0.004535 1 62 31.750000
NoteOff 0.095011 1 62 63.500000
NoteOn 0.005034 1 61 44.449999
NoteOff 0.104535 1 61 63.500000
ControlChange 0.005533 1 1 127.000000
NoteOn 0.000000 1 60 63.500000
NoteOff 1.500000 1 60 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 114.299997
NoteOff 0.380000 1 60 63.500000
NoteOn 0.020000 1 60 101.600002
NoteOff 0.100000 1 60 63.500000
NoteOn 0.100000 1 48 63.500000
NoteOff 0.200000 1 48 63.500000
NoteOn 0.200000 1 48 88.899998
NoteOff 0.190023 1 48 63.500000
NoteOn 0.010023 1 51 101.600002
NoteOff 0.570023 1 51 63.500000
NoteOn 0.030023 1 53 88.899998
NoteOff 0.570023 1 53 63.500000
NoteOn 0.030023 1 48 38.100002
NoteOff 0.300000 1 48 63.500000
NoteOn 0.300000 1 67 101.600002
NoteOff 0.570023 1 67 63.500000
NoteOn 0.030023 1 66 76.200003
NoteOff 0.190023 1 66 63.500000
NoteOn 0.010023 1 65 63.500000
NoteOff 0.190023 1 65 63.500000
NoteOn 0.010023 1 63 50.800001
NoteOff 0.190023 1 63 63.500000
NoteOn 0.010023 1 60 76.200003
NoteOff 0.380000 1 60 63.500000
NoteOn 0.020000 1 58 50.800001
NoteOff 0.190023 1 58 63.500000
NoteOn 0.010023 1 48 114.299997
NoteOff 0.380000 1 48 63.500000
NoteOn 0.020000 1 48 101.600002
NoteOff 0.100000 1 48 63.500000
NoteOn 0.100000 1 36 63.500000
NoteOff 0.200000 1 36 63.500000
NoteOn 0.200000 1 36 88.899998
NoteOff 0.190023 1 36 63.500000
NoteOn 0.010023 1 39 101.600002
NoteOff 0.570023 1 39 63.500000
NoteOn 0.030023 1 41 88.899998
NoteOff 0.570023 1 41 63.500000
NoteOn 0.030023 1 84 127.000000
NoteOff 0.475011 1 84 63.500000
NoteOn 0.025034 1 83 120.649998
NoteOff 0.066531 1 83 63.500000
NoteOn 0.003537 1 82 114.299997
NoteOff 0.057007 1 82 63.500000
NoteOn 0.003039 1 81 107.950003
NoteOff 0.047528 1 81 63.500000
NoteOn 0.002540 1 80 101.600002
NoteOff 0.047528 1 80 63.500000
NoteOn 0.002540 1 78 95.250000
NoteOff 0.038005 1 78 63.500000
NoteOn 0.002041 1 78 88.899998
NoteOff 0.028526 1 78 63.500000
NoteOn 0.001542 1 77 82.549997
NoteOff 0.019002 1 77 63.500000
NoteOn 0.001043 1 76 76.200003
NoteOff 0.019002 1 76 63.500000
NoteOn 0.001043 1 75 69.850002
NoteOff 0.019002 1 75 63.500000
NoteOn 0.001043 1 74 63.500000
NoteOff 0.019002 1 74 63.500000
NoteOn 0.001043 1 73 63.500000
NoteOff 0.028526 1 73 63.500000
NoteOn 0.001542 1 72 63.500000
NoteOff 0.019002 1 72 63.500000
NoteOn 0.001043 1 71 57.149998
NoteOff 0.028526 1 71 63.500000
NoteOn 0.001542 1 70 50.800001
NoteOff 0.038005 1 70 63.500000
NoteOn 0.002041 1 69 44.449999
NoteOff 0.047528 1 69 63.500000
NoteOn 0.002540 1 68 38.100002
NoteOff 0.057007 1 68 63.500000
NoteOn 0.003039 1 67 31.750000
NoteOff 0.057007 1 67 63.500000
NoteOn 0.003039 1 66 25.400000
NoteOff 0.057007 1 66 63.500000
NoteOn 0.003039 1 65 31.750000
NoteOff 0.066531 1 65 63.500000
NoteOn 0.003537 1 64 25.400000
NoteOff 0.076009 1 64 63.500000
NoteOn 0.004036 1 63 19.050001
NoteOff 0.085533 1 63 63.500000
NoteOn 0.004535 1 62 31.750000
NoteOff 0.095011 1 62 63.500000
NoteOn 0.005034 1 61 44.449999
NoteOff 0.104535 1 61 63.500000
ControlChange 0.005533 1 1 127.000000
NoteOn 0.000000 1 60 63.500000
NoteOff 1.500000 1 60 63.500000

View File

@@ -1,112 +1,112 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
StringDamping 0.0 2 127
Chord 0.0 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 D
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 D
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 D
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.1 2 32
ChordOff 0.1 2 100
StringDamping 0.0 2 120
Strumming 0.0 2 127
NoteOn 0.1 2 55 60
NoteOff 0.7 2 55 60
NoteOn 0.0 2 60 60
NoteOff 0.4 2 60 60
NoteOn 0.0 2 62 60
NoteOff 0.2 2 62 60
NoteOn 0.0 2 60 60
NoteOff 0.2 2 60 60
NoteOn 0.0 2 59 60
NoteOff 0.4 2 59 60
NoteOn 0.0 2 57 60
NoteOff 0.2 2 57 60
NoteOn 0.0 2 55 60
NoteOff 0.2 2 55 60
NoteOn 0.0 2 62 60
NoteOff 0.8 2 62 60
NoteOn 0.1 2 67 100
NoteOff 0.7 2 67 100
NoteOn 0.0 2 72 100
NoteOff 0.4 2 72 100
NoteOn 0.0 2 74 100
NoteOff 0.2 2 74 100
NoteOn 0.0 2 72 100
NoteOff 0.2 2 72 100
NotStrumming 0.0 2 0
NoteOn 0.0 2 71 100
NoteOff 0.1 2 71 100
NoteOn 0.0 2 76 100
NoteOff 0.1 2 76 100
NoteOn 0.0 2 74 100
NoteOff 0.1 2 74 100
NoteOn 0.0 2 70 100
NoteOff 0.1 2 70 100
NoteOn 0.0 2 69 100
NoteOff 0.1 2 69 100
NoteOn 0.0 2 67 100
NoteOff 0.1 2 67 100
NoteOn 0.0 2 64 100
NoteOff 0.1 2 64 100
NoteOn 0.0 2 62 100
NoteOff 0.1 2 62 100
Chord 0.0 2 64 G
ChordOff 2.0 2 64
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
StringDamping 0.0 2 127
Chord 0.0 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 D
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 D
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 C
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 D
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.2 2 32
StringDamping 0.0 2 127
ChordOff 0.0 2 100
Chord 0.2 2 100 G
StringDamping 0.1 2 32
ChordOff 0.1 2 100
StringDamping 0.0 2 120
Strumming 0.0 2 127
NoteOn 0.1 2 55 60
NoteOff 0.7 2 55 60
NoteOn 0.0 2 60 60
NoteOff 0.4 2 60 60
NoteOn 0.0 2 62 60
NoteOff 0.2 2 62 60
NoteOn 0.0 2 60 60
NoteOff 0.2 2 60 60
NoteOn 0.0 2 59 60
NoteOff 0.4 2 59 60
NoteOn 0.0 2 57 60
NoteOff 0.2 2 57 60
NoteOn 0.0 2 55 60
NoteOff 0.2 2 55 60
NoteOn 0.0 2 62 60
NoteOff 0.8 2 62 60
NoteOn 0.1 2 67 100
NoteOff 0.7 2 67 100
NoteOn 0.0 2 72 100
NoteOff 0.4 2 72 100
NoteOn 0.0 2 74 100
NoteOff 0.2 2 74 100
NoteOn 0.0 2 72 100
NoteOff 0.2 2 72 100
NotStrumming 0.0 2 0
NoteOn 0.0 2 71 100
NoteOff 0.1 2 71 100
NoteOn 0.0 2 76 100
NoteOff 0.1 2 76 100
NoteOn 0.0 2 74 100
NoteOff 0.1 2 74 100
NoteOn 0.0 2 70 100
NoteOff 0.1 2 70 100
NoteOn 0.0 2 69 100
NoteOff 0.1 2 69 100
NoteOn 0.0 2 67 100
NoteOff 0.1 2 67 100
NoteOn 0.0 2 64 100
NoteOff 0.1 2 64 100
NoteOn 0.0 2 62 100
NoteOff 0.1 2 62 100
Chord 0.0 2 64 G
ChordOff 2.0 2 64

View File

@@ -1,32 +1,32 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 72 88.899998
NoteOff 0.400000 1 72 63.500000
NoteOn 0.000000 1 71 101.600002
NoteOff 0.400000 1 71 63.500000
NoteOn 0.000000 1 69 63.500000
NoteOff 0.320000 1 69 63.500000
NoteOn 0.080000 1 71 101.600002
NoteOff 1.200000 1 71 63.500000
NoteOn 0.000000 1 67 76.200003
NoteOff 0.320000 1 67 63.500000
NoteOn 0.080000 1 64 38.100002
NoteOff 0.320000 1 64 63.500000
NoteOn 0.080000 1 67 101.600002
NoteOff 0.800000 1 67 63.500000
NoteOn 0.000000 1 69 127.000000
NoteOff 0.320000 1 69 63.500000
NoteOn 0.080000 1 69 76.200003
NoteOff 2.000000 1 69 63.500000
NoteOn 0.000000 1 60 114.299997
NoteOff 0.400000 1 60 63.500000
NoteOn 0.000000 1 62 63.500000
NoteOff 0.400000 1 62 63.500000
NoteOn 0.000000 1 64 63.500000
NoteOff 0.400000 1 64 63.500000
NoteOn 0.000000 1 62 88.899998
NoteOff 1.200000 1 62 63.500000
NoteOn 0.000000 1 60 38.100002
NoteOff 0.480000 1 60 63.500000
NoteOn 0.120000 1 60 127.000000
ControlChange 0.000000 1 1 127.000000
NoteOff 2.000000 1 60 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 72 88.899998
NoteOff 0.400000 1 72 63.500000
NoteOn 0.000000 1 71 101.600002
NoteOff 0.400000 1 71 63.500000
NoteOn 0.000000 1 69 63.500000
NoteOff 0.320000 1 69 63.500000
NoteOn 0.080000 1 71 101.600002
NoteOff 1.200000 1 71 63.500000
NoteOn 0.000000 1 67 76.200003
NoteOff 0.320000 1 67 63.500000
NoteOn 0.080000 1 64 38.100002
NoteOff 0.320000 1 64 63.500000
NoteOn 0.080000 1 67 101.600002
NoteOff 0.800000 1 67 63.500000
NoteOn 0.000000 1 69 127.000000
NoteOff 0.320000 1 69 63.500000
NoteOn 0.080000 1 69 76.200003
NoteOff 2.000000 1 69 63.500000
NoteOn 0.000000 1 60 114.299997
NoteOff 0.400000 1 60 63.500000
NoteOn 0.000000 1 62 63.500000
NoteOff 0.400000 1 62 63.500000
NoteOn 0.000000 1 64 63.500000
NoteOff 0.400000 1 64 63.500000
NoteOn 0.000000 1 62 88.899998
NoteOff 1.200000 1 62 63.500000
NoteOn 0.000000 1 60 38.100002
NoteOff 0.480000 1 60 63.500000
NoteOn 0.120000 1 60 127.000000
ControlChange 0.000000 1 1 127.000000
NoteOff 2.000000 1 60 63.500000

View File

@@ -1,128 +1,128 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.400000 1 38 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 49 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.400000 1 38 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 60.000000
NoteOn 0.200000 1 38 80.000000
NoteOn 0.200000 1 38 90.000000
NoteOn 0.100000 1 38 100.000000
NoteOn 0.100000 1 38 105.000000
NoteOn 0.100000 1 38 110.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 41 127.000000
NoteOn 0.100000 1 41 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 56 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.000000 1 56 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 56 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.000000 1 56 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 56 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.000000 1 56 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.300000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.100000 1 52 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.000000 1 46 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOff 1.000000 1 49 127.000000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.400000 1 38 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 49 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.400000 1 38 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 36 60.000000
NoteOn 0.200000 1 38 80.000000
NoteOn 0.200000 1 38 90.000000
NoteOn 0.100000 1 38 100.000000
NoteOn 0.100000 1 38 105.000000
NoteOn 0.100000 1 38 110.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 41 127.000000
NoteOn 0.100000 1 41 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 56 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.000000 1 56 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 56 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.000000 1 56 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOn 0.000000 1 42 127.000000
NoteOn 0.200000 1 56 127.000000
NoteOn 0.200000 1 38 127.000000
NoteOn 0.000000 1 56 127.000000
NoteOn 0.300000 1 36 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.000000 1 38 127.000000
NoteOn 0.200000 1 36 127.000000
NoteOn 0.100000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.000000 1 36 127.000000
NoteOn 0.000000 1 54 127.000000
NoteOn 0.100000 1 36 127.000000
NoteOn 0.100000 1 42 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.300000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.200000 1 32 127.000000
NoteOn 0.100000 1 52 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.100000 1 32 127.000000
NoteOn 0.000000 1 46 127.000000
NoteOn 0.000000 1 49 127.000000
NoteOff 1.000000 1 49 127.000000

View File

@@ -1,24 +1,24 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 57 50.800001
NoteOn 0.100000 1 57 50.800001
NoteOn 0.100000 1 57 127.000000
NoteOn 0.200000 1 59 63.500000
NoteOff 0.100000 1 59 63.500000
NoteOn 0.100000 1 61 127.000000
NoteOff 0.100000 1 61 63.500000
NoteOn 0.100000 1 62 127.000000
NoteOff 0.100000 1 62 63.500000
NoteOn 0.100000 1 64 114.299997
NoteOn 0.200000 1 62 63.500000
NoteOff 0.100000 1 62 63.500000
NoteOn 0.100000 1 61 127.000000
NoteOn 0.400000 1 69 127.000000
NoteOn 0.200000 1 69 12.700000
NoteOff 0.049977 1 69 63.500000
NoteOn 0.049977 1 73 63.500000
NoteOff 0.049977 1 73 63.500000
NoteOn 0.049977 1 71 63.500000
NoteOff 0.100000 1 71 63.500000
NoteOn 0.100000 1 85 127.000000
NoteOn 0.200000 1 45 50.800001
NoteOff 0.400000 1 45 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 57 50.800001
NoteOn 0.100000 1 57 50.800001
NoteOn 0.100000 1 57 127.000000
NoteOn 0.200000 1 59 63.500000
NoteOff 0.100000 1 59 63.500000
NoteOn 0.100000 1 61 127.000000
NoteOff 0.100000 1 61 63.500000
NoteOn 0.100000 1 62 127.000000
NoteOff 0.100000 1 62 63.500000
NoteOn 0.100000 1 64 114.299997
NoteOn 0.200000 1 62 63.500000
NoteOff 0.100000 1 62 63.500000
NoteOn 0.100000 1 61 127.000000
NoteOn 0.400000 1 69 127.000000
NoteOn 0.200000 1 69 12.700000
NoteOff 0.049977 1 69 63.500000
NoteOn 0.049977 1 73 63.500000
NoteOff 0.049977 1 73 63.500000
NoteOn 0.049977 1 71 63.500000
NoteOff 0.100000 1 71 63.500000
NoteOn 0.100000 1 85 127.000000
NoteOn 0.200000 1 45 50.800001
NoteOff 0.400000 1 45 63.500000

View File

@@ -1,111 +1,111 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 127.000000
NoteOff 0.118776 1 60 63.500000
NoteOn 0.006259 1 59 127.000000
NoteOff 0.118776 1 59 63.500000
NoteOn 0.006259 1 60 127.000000
NoteOff 0.118776 1 60 63.500000
NoteOn 0.006259 1 62 127.000000
NoteOff 0.118776 1 62 63.500000
NoteOn 0.006259 1 63 127.000000
NoteOff 0.237506 1 63 63.500000
NoteOn 0.012517 1 63 127.000000
NoteOff 0.062494 1 63 63.500000
NoteOn 0.062494 1 65 127.000000
NoteOff 0.062494 1 65 63.500000
NoteOn 0.062494 1 67 127.000000
NoteOff 0.237506 1 67 63.500000
NoteOn 0.012517 1 67 127.000000
NoteOff 0.118776 1 67 63.500000
NoteOn 0.006259 1 68 127.000000
NoteOff 0.118776 1 68 63.500000
NoteOn 0.006259 1 67 127.000000
NoteOff 0.062494 1 67 63.500000
NoteOn 0.062494 1 63 127.000000
NoteOff 0.062494 1 63 63.500000
NoteOn 0.062494 1 60 127.000000
NoteOff 0.237506 1 60 63.500000
NoteOn 0.012517 1 70 127.000000
NoteOff 0.118776 1 70 63.500000
NoteOn 0.006259 1 69 127.000000
NoteOff 0.118776 1 69 63.500000
NoteOn 0.006259 1 70 127.000000
NoteOff 0.118776 1 70 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.118776 1 72 63.500000
NoteOn 0.006259 1 74 127.000000
NoteOff 0.118776 1 74 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.062494 1 72 63.500000
NoteOn 0.062494 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 75 127.000000
NoteOff 0.062494 1 75 63.500000
NoteOn 0.062494 1 77 127.000000
NoteOff 0.118776 1 77 63.500000
NoteOn 0.006259 1 79 127.000000
NoteOff 0.118776 1 79 63.500000
NoteOn 0.006259 1 77 127.000000
NoteOff 0.118776 1 77 63.500000
NoteOn 0.006259 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.475011 1 70 63.500000
NoteOn 0.025034 1 72 127.000000
NoteOff 0.118776 1 72 63.500000
NoteOn 0.006259 1 75 127.000000
NoteOff 0.118776 1 75 63.500000
NoteOn 0.006259 1 79 127.000000
NoteOff 0.062494 1 79 63.500000
NoteOn 0.062494 1 72 127.000000
NoteOff 0.062494 1 72 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.118776 1 70 63.500000
NoteOn 0.006259 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 77 127.000000
NoteOff 0.062494 1 77 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.062494 1 70 63.500000
NoteOn 0.062494 1 68 127.000000
NoteOff 0.118776 1 68 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.118776 1 72 63.500000
NoteOn 0.006259 1 75 127.000000
NoteOff 0.062494 1 75 63.500000
NoteOn 0.062494 1 68 127.000000
NoteOff 0.062494 1 68 63.500000
NoteOn 0.062494 1 67 127.000000
NoteOff 0.118776 1 67 63.500000
NoteOn 0.006259 1 70 127.000000
NoteOff 0.062494 1 70 63.500000
NoteOn 0.062494 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 67 127.000000
NoteOff 0.062494 1 67 63.500000
NoteOn 0.062494 1 65 127.000000
NoteOff 0.118776 1 65 63.500000
NoteOn 0.006259 1 68 127.000000
NoteOff 0.118776 1 68 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.062494 1 72 63.500000
NoteOn 0.062494 1 65 127.000000
NoteOff 0.062494 1 65 63.500000
NoteOn 0.062494 1 63 127.000000
NoteOff 0.118776 1 63 63.500000
NoteOn 0.006259 1 67 127.000000
NoteOff 0.062494 1 67 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.062494 1 70 63.500000
NoteOn 0.062494 1 62 127.000000
NoteOff 0.062494 1 62 63.500000
NoteOn 0.062494 1 60 127.000000
NoteOff 0.124989 1 60 63.500000
NoteOn 0.124989 1 79 127.000000
NoteOff 0.187483 1 79 63.500000
NoteOn 0.187483 1 82 127.000000
NoteOff 0.356236 1 82 63.500000
NoteOn 0.018776 1 84 127.000000
ControlChange 0.000000 1 1 20.000000
NoteOff 0.950023 1 84 63.500000
NoteOff 0.050023 1 84 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 127.000000
NoteOff 0.118776 1 60 63.500000
NoteOn 0.006259 1 59 127.000000
NoteOff 0.118776 1 59 63.500000
NoteOn 0.006259 1 60 127.000000
NoteOff 0.118776 1 60 63.500000
NoteOn 0.006259 1 62 127.000000
NoteOff 0.118776 1 62 63.500000
NoteOn 0.006259 1 63 127.000000
NoteOff 0.237506 1 63 63.500000
NoteOn 0.012517 1 63 127.000000
NoteOff 0.062494 1 63 63.500000
NoteOn 0.062494 1 65 127.000000
NoteOff 0.062494 1 65 63.500000
NoteOn 0.062494 1 67 127.000000
NoteOff 0.237506 1 67 63.500000
NoteOn 0.012517 1 67 127.000000
NoteOff 0.118776 1 67 63.500000
NoteOn 0.006259 1 68 127.000000
NoteOff 0.118776 1 68 63.500000
NoteOn 0.006259 1 67 127.000000
NoteOff 0.062494 1 67 63.500000
NoteOn 0.062494 1 63 127.000000
NoteOff 0.062494 1 63 63.500000
NoteOn 0.062494 1 60 127.000000
NoteOff 0.237506 1 60 63.500000
NoteOn 0.012517 1 70 127.000000
NoteOff 0.118776 1 70 63.500000
NoteOn 0.006259 1 69 127.000000
NoteOff 0.118776 1 69 63.500000
NoteOn 0.006259 1 70 127.000000
NoteOff 0.118776 1 70 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.118776 1 72 63.500000
NoteOn 0.006259 1 74 127.000000
NoteOff 0.118776 1 74 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.062494 1 72 63.500000
NoteOn 0.062494 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 75 127.000000
NoteOff 0.062494 1 75 63.500000
NoteOn 0.062494 1 77 127.000000
NoteOff 0.118776 1 77 63.500000
NoteOn 0.006259 1 79 127.000000
NoteOff 0.118776 1 79 63.500000
NoteOn 0.006259 1 77 127.000000
NoteOff 0.118776 1 77 63.500000
NoteOn 0.006259 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.475011 1 70 63.500000
NoteOn 0.025034 1 72 127.000000
NoteOff 0.118776 1 72 63.500000
NoteOn 0.006259 1 75 127.000000
NoteOff 0.118776 1 75 63.500000
NoteOn 0.006259 1 79 127.000000
NoteOff 0.062494 1 79 63.500000
NoteOn 0.062494 1 72 127.000000
NoteOff 0.062494 1 72 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.118776 1 70 63.500000
NoteOn 0.006259 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 77 127.000000
NoteOff 0.062494 1 77 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.062494 1 70 63.500000
NoteOn 0.062494 1 68 127.000000
NoteOff 0.118776 1 68 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.118776 1 72 63.500000
NoteOn 0.006259 1 75 127.000000
NoteOff 0.062494 1 75 63.500000
NoteOn 0.062494 1 68 127.000000
NoteOff 0.062494 1 68 63.500000
NoteOn 0.062494 1 67 127.000000
NoteOff 0.118776 1 67 63.500000
NoteOn 0.006259 1 70 127.000000
NoteOff 0.062494 1 70 63.500000
NoteOn 0.062494 1 74 127.000000
NoteOff 0.062494 1 74 63.500000
NoteOn 0.062494 1 67 127.000000
NoteOff 0.062494 1 67 63.500000
NoteOn 0.062494 1 65 127.000000
NoteOff 0.118776 1 65 63.500000
NoteOn 0.006259 1 68 127.000000
NoteOff 0.118776 1 68 63.500000
NoteOn 0.006259 1 72 127.000000
NoteOff 0.062494 1 72 63.500000
NoteOn 0.062494 1 65 127.000000
NoteOff 0.062494 1 65 63.500000
NoteOn 0.062494 1 63 127.000000
NoteOff 0.118776 1 63 63.500000
NoteOn 0.006259 1 67 127.000000
NoteOff 0.062494 1 67 63.500000
NoteOn 0.062494 1 70 127.000000
NoteOff 0.062494 1 70 63.500000
NoteOn 0.062494 1 62 127.000000
NoteOff 0.062494 1 62 63.500000
NoteOn 0.062494 1 60 127.000000
NoteOff 0.124989 1 60 63.500000
NoteOn 0.124989 1 79 127.000000
NoteOff 0.187483 1 79 63.500000
NoteOn 0.187483 1 82 127.000000
NoteOff 0.356236 1 82 63.500000
NoteOn 0.018776 1 84 127.000000
ControlChange 0.000000 1 1 20.000000
NoteOff 0.950023 1 84 63.500000
NoteOff 0.050023 1 84 63.500000

View File

@@ -1,97 +1,97 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoiseLevel 0.000 1 30.0
NoteOn 0.000 1 79 80.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 84 90.000000
NoteOff 0.100 1 84 63.500000
NoteOn 0.100 1 79 70.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 77 110.000000
NoteOn 0.100 1 79 70.000000
NoteOff 0.100 1 79 70.0
NoteOn 0.100 1 79 90.000000
NoteOff 0.150 1 79 63.500000
NoteOn 0.050 1 79 80.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 84 90.000000
NoteOff 0.100 1 84 63.500000
NoteOn 0.100 1 79 70.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 76 70.000000
NoteOn 0.100 1 77 70.000000
NoteOn 0.100 1 79 80.000000
NoteOff 0.100 1 79 70.0
NoteOn 0.100 1 79 90.000000
NoteOff 0.150 1 79 63.500000
NoteOn 0.050 1 81 120.000000
NoteOn 0.100 1 79 110.000000
NoteOn 0.100 1 77 70.000000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 74 110.000000
NoteOn 0.100 1 72 70.000000
NoteOn 0.100 1 81 120.000000
NoteOn 0.200 1 82 60.000000
NoteOff 0.100 1 82 64.000000
NoteOn 0.100 1 81 110.000000
NoteOn 0.200 1 79 60.000000
NoteOff 0.100 1 79 64.000000
NoteOn 0.100 1 77 110.000000
NoteOn 0.200 1 76 60.000000
NoteOff 0.100 1 76 64.000000
NoteOn 0.100 1 77 120.000000
NoteOn 0.100 1 76 110.000000
NoteOn 0.100 1 74 70.000000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 77 110.000000
NoteOff 0.100 1 77 64.000000
NoteOn 0.100 1 79 120.000000
NoteOn 0.100 1 81 110.000000
NoteOn 0.100 1 79 70.000000
NoteOn 0.100 1 77 120.000000
NoteOn 0.100 1 76 110.000000
NoteOn 0.100 1 74 110.000000
NoteOn 0.100 1 79 120.000000
NoteOn 0.200 1 81 110.000000
NoteOn 0.200 1 79 70.000000
NoteOn 0.200 1 77 120.000000
NoteOn 0.200 1 76 110.000000
NoteOn 0.200 1 74 110.000000
NoteOff 0.100 1 74 110.000000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 74 110.000000
NoteOn 0.100 1 72 70.000000
NoteOn 0.100 1 74 120.000000
NoteOff 0.070 1 74 120.000000
NoteOn 0.030 1 76 100.000000
NoteOff 0.070 1 76 120.000000
NoteOn 0.030 1 77 100.000000
NoteOff 0.070 1 77 120.000000
NoteOn 0.030 1 79 100.000000
NoteOff 0.070 1 79 120.000000
NoteOn 0.030 1 81 100.000000
NoteOff 0.070 1 81 120.000000
NoteOn 0.030 1 82 100.000000
NoteOff 0.070 1 82 120.000000
NoteOn 0.030 1 81 100.000000
NoteOff 0.070 1 81 120.000000
NoteOn 0.030 1 82 100.000000
NoteOff 0.070 1 82 120.000000
NoteOn 0.030 1 79 100.000000
NoteOff 0.070 1 79 120.000000
NoiseLevel 0.000 1 40.0
Modulation 0.000 1 25.0
NoteOn 0.030 1 77 120.000000
NoteOn 1.000 1 89 100.000000
NoteOff 0.200 1 77 120.000000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoiseLevel 0.000 1 30.0
NoteOn 0.000 1 79 80.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 84 90.000000
NoteOff 0.100 1 84 63.500000
NoteOn 0.100 1 79 70.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 77 110.000000
NoteOn 0.100 1 79 70.000000
NoteOff 0.100 1 79 70.0
NoteOn 0.100 1 79 90.000000
NoteOff 0.150 1 79 63.500000
NoteOn 0.050 1 79 80.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 84 90.000000
NoteOff 0.100 1 84 63.500000
NoteOn 0.100 1 79 70.000000
NoteOff 0.100 1 79 63.500000
NoteOn 0.100 1 76 70.000000
NoteOn 0.100 1 77 70.000000
NoteOn 0.100 1 79 80.000000
NoteOff 0.100 1 79 70.0
NoteOn 0.100 1 79 90.000000
NoteOff 0.150 1 79 63.500000
NoteOn 0.050 1 81 120.000000
NoteOn 0.100 1 79 110.000000
NoteOn 0.100 1 77 70.000000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 74 110.000000
NoteOn 0.100 1 72 70.000000
NoteOn 0.100 1 81 120.000000
NoteOn 0.200 1 82 60.000000
NoteOff 0.100 1 82 64.000000
NoteOn 0.100 1 81 110.000000
NoteOn 0.200 1 79 60.000000
NoteOff 0.100 1 79 64.000000
NoteOn 0.100 1 77 110.000000
NoteOn 0.200 1 76 60.000000
NoteOff 0.100 1 76 64.000000
NoteOn 0.100 1 77 120.000000
NoteOn 0.100 1 76 110.000000
NoteOn 0.100 1 74 70.000000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 77 110.000000
NoteOff 0.100 1 77 64.000000
NoteOn 0.100 1 79 120.000000
NoteOn 0.100 1 81 110.000000
NoteOn 0.100 1 79 70.000000
NoteOn 0.100 1 77 120.000000
NoteOn 0.100 1 76 110.000000
NoteOn 0.100 1 74 110.000000
NoteOn 0.100 1 79 120.000000
NoteOn 0.200 1 81 110.000000
NoteOn 0.200 1 79 70.000000
NoteOn 0.200 1 77 120.000000
NoteOn 0.200 1 76 110.000000
NoteOn 0.200 1 74 110.000000
NoteOff 0.100 1 74 110.000000
NoteOn 0.100 1 76 120.000000
NoteOn 0.100 1 74 110.000000
NoteOn 0.100 1 72 70.000000
NoteOn 0.100 1 74 120.000000
NoteOff 0.070 1 74 120.000000
NoteOn 0.030 1 76 100.000000
NoteOff 0.070 1 76 120.000000
NoteOn 0.030 1 77 100.000000
NoteOff 0.070 1 77 120.000000
NoteOn 0.030 1 79 100.000000
NoteOff 0.070 1 79 120.000000
NoteOn 0.030 1 81 100.000000
NoteOff 0.070 1 81 120.000000
NoteOn 0.030 1 82 100.000000
NoteOff 0.070 1 82 120.000000
NoteOn 0.030 1 81 100.000000
NoteOff 0.070 1 81 120.000000
NoteOn 0.030 1 82 100.000000
NoteOff 0.070 1 82 120.000000
NoteOn 0.030 1 79 100.000000
NoteOff 0.070 1 79 120.000000
NoiseLevel 0.000 1 40.0
Modulation 0.000 1 25.0
NoteOn 0.030 1 77 120.000000
NoteOn 1.000 1 89 100.000000
NoteOff 0.200 1 77 120.000000

View File

@@ -1,180 +1,180 @@
NoteOn 0.000315 2 69 69
NoteOff 0.139851 2 69 0
NoteOn 0.292059 2 74 79
NoteOff 0.069197 2 74 0
NoteOn 0.046664 2 74 71
NoteOff 0.062959 2 74 0
NoteOn 0.025777 2 74 47
NoteOff 0.037024 2 74 0
NoteOn 0.065524 2 74 63
NoteOff 0.059605 2 74 0
NoteOn 0.019622 2 74 47
NoteOff 0.039886 2 74 0
NoteOn 0.052080 2 74 67
NoteOff 0.061615 2 74 0
NoteOn 0.021743 2 74 53
NoteOff 0.042091 2 74 0
NoteOn 0.056058 2 74 69
NoteOff 0.122627 2 74 0
NoteOn 0.047608 2 74 87
NoteOff 0.128503 2 74 0
NoteOn 0.187575 2 74 79
NoteOff 0.113216 2 74 0
NoteOn 0.055912 2 73 82
NoteOff 0.145445 2 73 0
NoteOn 0.104378 2 73 73
NoteOff 0.120442 2 73 0
NoteOn 0.047541 2 69 73
NoteOff 0.151890 2 69 0
NoteOn 0.098655 2 69 64
NoteOff 0.137789 2 69 0
NoteOn 0.042621 2 71 76
NoteOff 0.171097 2 71 0
NoteOn 0.081635 2 71 61
NoteOff 0.073859 2 71 0
NoteOn 0.110418 2 66 69
NoteOff 0.304332 2 66 0
NoteOn 0.119942 2 66 69
NoteOff 0.057357 2 66 0
NoteOn 0.034674 2 66 60
NoteOff 0.056795 2 66 0
NoteOn 0.018853 2 66 76
NoteOff 0.061343 2 66 0
NoteOn 0.048614 2 66 67
NoteOff 0.058950 2 66 0
NoteOn 0.008595 2 66 63
NoteOff 0.057296 2 66 0
NoteOn 0.036486 2 66 67
NoteOff 0.125570 2 66 0
NoteOn 0.055182 2 66 82
NoteOff 0.079954 2 66 0
NoteOn 0.021852 2 66 64
NoteOff 0.085418 2 66 0
NoteOn 0.065201 2 64 79
NoteOff 0.070529 2 64 0
NoteOn 0.055850 2 66 76
NoteOff 0.080037 2 66 0
NoteOn 0.047400 2 64 73
NoteOff 0.079393 2 64 0
NoteOn 0.075934 2 62 76
NoteOff 0.073956 2 62 0
NoteOn 0.038639 2 62 69
NoteOff 0.125310 2 62 0
NoteOn 0.067131 2 62 67
NoteOff 0.114670 2 62 0
NoteOn 0.053501 2 62 62
NoteOff 0.058095 2 62 0
NoteOn 0.017163 2 62 47
NoteOff 0.056632 2 62 0
NoteOn 0.023810 2 62 64
NoteOff 0.070499 2 62 0
NoteOn 0.018403 2 62 64
NoteOff 0.044563 2 62 0
NoteOn 0.038905 2 62 64
NoteOff 0.128219 2 62 0
NoteOn 0.020654 2 62 79
NoteOff 0.100199 2 62 0
NoteOn 0.119351 2 66 69
NoteOff 0.140313 2 66 0
NoteOn 0.023378 2 64 67
NoteOff 0.157359 2 64 0
NoteOn 0.103959 2 62 69
NoteOff 0.072433 2 62 0
NoteOn 0.089338 2 62 63
NoteOff 0.067472 2 62 0
NoteOn 0.131003 2 62 63
NoteOff 0.092003 2 62 0
NoteOn 0.084592 2 62 64
NoteOff 0.156367 2 62 0
NoteOn 0.024942 2 62 69
NoteOff 0.154966 2 62 0
NoteOn 0.023168 2 62 67
NoteOff 0.402274 2 62 0
NoteOn 0.151088 2 69 82
NoteOff 0.295762 2 69 0
NoteOn 0.144298 2 74 67
NoteOff 0.064684 2 74 0
NoteOn 0.046916 2 74 61
NoteOff 0.061961 2 74 0
NoteOn 0.013175 2 74 58
NoteOff 0.063742 2 74 0
NoteOn 0.063079 2 74 64
NoteOff 0.115461 2 74 0
NoteOn 0.066345 2 74 64
NoteOff 0.104482 2 74 0
NoteOn 0.058225 2 74 69
NoteOff 0.137897 2 74 0
NoteOn 0.028045 2 74 82
NoteOff 0.227867 2 74 0
NoteOn 0.089793 2 74 73
NoteOff 0.137043 2 74 0
NoteOn 0.027024 2 73 64
NoteOff 0.156746 2 73 0
NoteOn 0.091269 2 73 73
NoteOff 0.144116 2 73 0
NoteOn 0.040937 2 69 76
NoteOff 0.131683 2 69 0
NoteOn 0.111516 2 69 63
NoteOff 0.119809 2 69 0
NoteOn 0.055603 2 71 69
NoteOff 0.151398 2 71 0
NoteOn 0.092930 2 71 61
NoteOff 0.077496 2 71 0
NoteOn 0.108207 2 66 73
NoteOff 0.268736 2 66 0
NoteOn 0.105231 2 66 82
NoteOff 0.068718 2 66 0
NoteOn 0.052997 2 66 69
NoteOff 0.121595 2 66 0
NoteOn 0.089177 2 66 58
NoteOff 0.106939 2 66 0
NoteOn 0.049675 2 66 67
NoteOff 0.145059 2 66 0
NoteOn 0.033535 2 66 24
NoteOff 0.169419 2 66 0
NoteOn 0.058897 2 66 63
NoteOff 0.086285 2 66 0
NoteOn 0.041606 2 64 76
NoteOff 0.084153 2 64 0
NoteOn 0.044987 2 66 69
NoteOff 0.100239 2 66 0
NoteOn 0.022854 2 64 76
NoteOff 0.075048 2 64 0
NoteOn 0.065983 2 62 67
NoteOff 0.081468 2 62 0
NoteOn 0.040989 2 62 71
NoteOff 0.134240 2 62 0
NoteOn 0.062401 2 62 61
NoteOff 0.119152 2 62 0
NoteOn 0.050401 2 62 64
NoteOff 0.128506 2 62 0
NoteOn 0.030134 2 62 64
NoteOff 0.142160 2 62 0
NoteOn 0.037510 2 62 79
NoteOff 0.239364 2 62 0
NoteOn 0.018231 2 66 73
NoteOff 0.131528 2 66 0
NoteOn 0.042607 2 64 76
NoteOff 0.149396 2 64 0
NoteOn 0.089318 2 62 73
NoteOff 0.087485 2 62 0
NoteOn 0.085324 2 62 73
NoteOff 0.072863 2 62 0
NoteOn 0.023103 2 62 73
NoteOff 0.085817 2 62 0
NoteOn 0.021983 2 62 64
NoteOff 0.061305 2 62 0
NoteOn 0.036091 2 62 61
NoteOff 0.070809 2 62 0
NoteOn 0.011382 2 62 58
NoteOff 0.060215 2 62 0
NoteOn 0.027180 2 62 61
NoteOff 0.075393 2 62 0
NoteOn 0.025560 2 62 29
NoteOff 0.038858 2 62 0
NoteOn 0.030691 2 62 64
NoteOff 0.129305 2 62 0
NoteOn 0.021792 2 62 76
NoteOff 0.075593 2 62 0
NoteOn 0.030875 2 62 95
NoteOff 0.459440 2 62 0
NoteOn 0.000315 2 69 69
NoteOff 0.139851 2 69 0
NoteOn 0.292059 2 74 79
NoteOff 0.069197 2 74 0
NoteOn 0.046664 2 74 71
NoteOff 0.062959 2 74 0
NoteOn 0.025777 2 74 47
NoteOff 0.037024 2 74 0
NoteOn 0.065524 2 74 63
NoteOff 0.059605 2 74 0
NoteOn 0.019622 2 74 47
NoteOff 0.039886 2 74 0
NoteOn 0.052080 2 74 67
NoteOff 0.061615 2 74 0
NoteOn 0.021743 2 74 53
NoteOff 0.042091 2 74 0
NoteOn 0.056058 2 74 69
NoteOff 0.122627 2 74 0
NoteOn 0.047608 2 74 87
NoteOff 0.128503 2 74 0
NoteOn 0.187575 2 74 79
NoteOff 0.113216 2 74 0
NoteOn 0.055912 2 73 82
NoteOff 0.145445 2 73 0
NoteOn 0.104378 2 73 73
NoteOff 0.120442 2 73 0
NoteOn 0.047541 2 69 73
NoteOff 0.151890 2 69 0
NoteOn 0.098655 2 69 64
NoteOff 0.137789 2 69 0
NoteOn 0.042621 2 71 76
NoteOff 0.171097 2 71 0
NoteOn 0.081635 2 71 61
NoteOff 0.073859 2 71 0
NoteOn 0.110418 2 66 69
NoteOff 0.304332 2 66 0
NoteOn 0.119942 2 66 69
NoteOff 0.057357 2 66 0
NoteOn 0.034674 2 66 60
NoteOff 0.056795 2 66 0
NoteOn 0.018853 2 66 76
NoteOff 0.061343 2 66 0
NoteOn 0.048614 2 66 67
NoteOff 0.058950 2 66 0
NoteOn 0.008595 2 66 63
NoteOff 0.057296 2 66 0
NoteOn 0.036486 2 66 67
NoteOff 0.125570 2 66 0
NoteOn 0.055182 2 66 82
NoteOff 0.079954 2 66 0
NoteOn 0.021852 2 66 64
NoteOff 0.085418 2 66 0
NoteOn 0.065201 2 64 79
NoteOff 0.070529 2 64 0
NoteOn 0.055850 2 66 76
NoteOff 0.080037 2 66 0
NoteOn 0.047400 2 64 73
NoteOff 0.079393 2 64 0
NoteOn 0.075934 2 62 76
NoteOff 0.073956 2 62 0
NoteOn 0.038639 2 62 69
NoteOff 0.125310 2 62 0
NoteOn 0.067131 2 62 67
NoteOff 0.114670 2 62 0
NoteOn 0.053501 2 62 62
NoteOff 0.058095 2 62 0
NoteOn 0.017163 2 62 47
NoteOff 0.056632 2 62 0
NoteOn 0.023810 2 62 64
NoteOff 0.070499 2 62 0
NoteOn 0.018403 2 62 64
NoteOff 0.044563 2 62 0
NoteOn 0.038905 2 62 64
NoteOff 0.128219 2 62 0
NoteOn 0.020654 2 62 79
NoteOff 0.100199 2 62 0
NoteOn 0.119351 2 66 69
NoteOff 0.140313 2 66 0
NoteOn 0.023378 2 64 67
NoteOff 0.157359 2 64 0
NoteOn 0.103959 2 62 69
NoteOff 0.072433 2 62 0
NoteOn 0.089338 2 62 63
NoteOff 0.067472 2 62 0
NoteOn 0.131003 2 62 63
NoteOff 0.092003 2 62 0
NoteOn 0.084592 2 62 64
NoteOff 0.156367 2 62 0
NoteOn 0.024942 2 62 69
NoteOff 0.154966 2 62 0
NoteOn 0.023168 2 62 67
NoteOff 0.402274 2 62 0
NoteOn 0.151088 2 69 82
NoteOff 0.295762 2 69 0
NoteOn 0.144298 2 74 67
NoteOff 0.064684 2 74 0
NoteOn 0.046916 2 74 61
NoteOff 0.061961 2 74 0
NoteOn 0.013175 2 74 58
NoteOff 0.063742 2 74 0
NoteOn 0.063079 2 74 64
NoteOff 0.115461 2 74 0
NoteOn 0.066345 2 74 64
NoteOff 0.104482 2 74 0
NoteOn 0.058225 2 74 69
NoteOff 0.137897 2 74 0
NoteOn 0.028045 2 74 82
NoteOff 0.227867 2 74 0
NoteOn 0.089793 2 74 73
NoteOff 0.137043 2 74 0
NoteOn 0.027024 2 73 64
NoteOff 0.156746 2 73 0
NoteOn 0.091269 2 73 73
NoteOff 0.144116 2 73 0
NoteOn 0.040937 2 69 76
NoteOff 0.131683 2 69 0
NoteOn 0.111516 2 69 63
NoteOff 0.119809 2 69 0
NoteOn 0.055603 2 71 69
NoteOff 0.151398 2 71 0
NoteOn 0.092930 2 71 61
NoteOff 0.077496 2 71 0
NoteOn 0.108207 2 66 73
NoteOff 0.268736 2 66 0
NoteOn 0.105231 2 66 82
NoteOff 0.068718 2 66 0
NoteOn 0.052997 2 66 69
NoteOff 0.121595 2 66 0
NoteOn 0.089177 2 66 58
NoteOff 0.106939 2 66 0
NoteOn 0.049675 2 66 67
NoteOff 0.145059 2 66 0
NoteOn 0.033535 2 66 24
NoteOff 0.169419 2 66 0
NoteOn 0.058897 2 66 63
NoteOff 0.086285 2 66 0
NoteOn 0.041606 2 64 76
NoteOff 0.084153 2 64 0
NoteOn 0.044987 2 66 69
NoteOff 0.100239 2 66 0
NoteOn 0.022854 2 64 76
NoteOff 0.075048 2 64 0
NoteOn 0.065983 2 62 67
NoteOff 0.081468 2 62 0
NoteOn 0.040989 2 62 71
NoteOff 0.134240 2 62 0
NoteOn 0.062401 2 62 61
NoteOff 0.119152 2 62 0
NoteOn 0.050401 2 62 64
NoteOff 0.128506 2 62 0
NoteOn 0.030134 2 62 64
NoteOff 0.142160 2 62 0
NoteOn 0.037510 2 62 79
NoteOff 0.239364 2 62 0
NoteOn 0.018231 2 66 73
NoteOff 0.131528 2 66 0
NoteOn 0.042607 2 64 76
NoteOff 0.149396 2 64 0
NoteOn 0.089318 2 62 73
NoteOff 0.087485 2 62 0
NoteOn 0.085324 2 62 73
NoteOff 0.072863 2 62 0
NoteOn 0.023103 2 62 73
NoteOff 0.085817 2 62 0
NoteOn 0.021983 2 62 64
NoteOff 0.061305 2 62 0
NoteOn 0.036091 2 62 61
NoteOff 0.070809 2 62 0
NoteOn 0.011382 2 62 58
NoteOff 0.060215 2 62 0
NoteOn 0.027180 2 62 61
NoteOff 0.075393 2 62 0
NoteOn 0.025560 2 62 29
NoteOff 0.038858 2 62 0
NoteOn 0.030691 2 62 64
NoteOff 0.129305 2 62 0
NoteOn 0.021792 2 62 76
NoteOff 0.075593 2 62 0
NoteOn 0.030875 2 62 95
NoteOff 0.459440 2 62 0

View File

@@ -1,105 +1,105 @@
/* Howdy!!!! SKINI0.9 Test Score ***********/
// First a pretty good player
PlayerSkill 0.000000 2 100
NoteOn 0.000081 2 69 64
NoteOff 0.220735 2 69 0
Strumming 0.000000 2 127
NoteOn 0.244988 2 74 69
NoteOff 1.085355 2 74 0
NotStrumming 0.000000 2 0
NoteOn 0.133034 2 74 58
NoteOff 0.121377 2 74 0
NoteOn 0.025178 2 73 56
NoteOff 0.204028 2 73 0
NoteOn 0.070314 2 73 58
NoteOff 0.150998 2 73 0
NoteOn 0.029853 2 69 63
NoteOff 0.152847 2 69 0
NoteOn 0.097649 2 69 58
NoteOff 0.140495 2 69 0
NoteOn 0.052114 2 71 69
NoteOff 0.177446 2 71 0
NoteOn 0.084674 2 71 53
NoteOff 0.084189 2 71 0
NoteOn 0.107113 2 66 82
NoteOff 0.345345 2 66 0
Strumming 0.000000 2 127
NoteOn 0.114209 2 66 69
NoteOff 0.638118 2 66 0
NotStrumming 0.000000 2 0
NoteOn 0.096405 2 66 61
NoteOff 0.134993 2 66 0
NoteOn 0.028328 2 64 67
NoteOff 0.251752 2 64 0
NoteOn 0.052434 2 62 64
NoteOff 0.077954 2 62 0
Strumming 0.000000 2 127
NoteOn 0.069474 2 62 69
NoteOff 1.132502 2 62 0
NotStrumming 0.000000 2 0
NoteOn 0.043887 2 66 69
NoteOff 0.096938 2 66 0
NoteOn 0.046985 2 64 71
NoteOff 0.085443 2 64 0
NoteOn 0.055538 2 66 63
NoteOff 0.105148 2 66 0
NoteOn 0.021553 2 64 62
NoteOff 0.103749 2 64 0
Strumming 0.000000 2 127
NoteOn 0.054633 2 62 67
NoteOff 1.033837 2 62 0
NotStrumming 0.000000 2 0
// Now a really bad player
PlayerSkill 0.000000 2 10
NoteOn 0.235617 2 69 69
NoteOff 0.316772 2 69 0
Strumming 0.000000 2 127
NoteOn 0.145871 2 74 64
NoteOff 1.100060 2 74 0
NotStrumming 0.000000 2 0
NoteOn 0.115729 2 74 58
NoteOff 0.166520 2 74 0
NoteOn 0.007216 2 73 61
NoteOff 0.192106 2 73 0
NoteOn 0.067405 2 73 62
NoteOff 0.160641 2 73 0
NoteOn 0.015116 2 69 58
NoteOff 0.176983 2 69 0
NoteOn 0.083744 2 69 62
NoteOff 0.155400 2 69 0
NoteOn 0.020502 2 71 69
NoteOff 0.187489 2 71 0
NoteOn 0.076011 2 71 56
NoteOff 0.094456 2 71 0
NoteOn 0.094632 2 66 73
NoteOff 0.303251 2 66 0
Strumming 0.000000 2 127
NoteOn 0.136058 2 66 69
NoteOff 0.601147 2 66 0
NotStrumming 0.000000 2 0
NoteOn 0.073985 2 66 56
NoteOff 0.145772 2 66 0
NoteOn 0.028922 2 64 64
NoteOff 0.082327 2 64 0
NoteOn 0.047864 2 66 61
NoteOff 0.099460 2 66 0
NoteOn 0.020486 2 64 40
NoteOff 0.131447 2 64 0
Strumming 0.000000 2 127
NoteOn 0.042691 2 62 71
NoteOff 1.131626 2 62 0
NotStrumming 0.000000 2 0
NoteOn 0.040285 2 66 51
NoteOff 0.141532 2 66 0
NoteOn 0.016442 2 64 64
NoteOff 0.195371 2 64 0
NoteOn 0.073368 2 62 67
NoteOff 0.098382 2 62 0
Strumming 0.000000 2 127
NoteOn 0.082045 2 62 69
NoteOff 0.796526 2 62 0
NotStrumming 0.000000 2 0
NoteOn 0.079242 2 62 64
NoteOff 0.473653 2 62 0
/* Howdy!!!! SKINI0.9 Test Score ***********/
// First a pretty good player
PlayerSkill 0.000000 2 100
NoteOn 0.000081 2 69 64
NoteOff 0.220735 2 69 0
Strumming 0.000000 2 127
NoteOn 0.244988 2 74 69
NoteOff 1.085355 2 74 0
NotStrumming 0.000000 2 0
NoteOn 0.133034 2 74 58
NoteOff 0.121377 2 74 0
NoteOn 0.025178 2 73 56
NoteOff 0.204028 2 73 0
NoteOn 0.070314 2 73 58
NoteOff 0.150998 2 73 0
NoteOn 0.029853 2 69 63
NoteOff 0.152847 2 69 0
NoteOn 0.097649 2 69 58
NoteOff 0.140495 2 69 0
NoteOn 0.052114 2 71 69
NoteOff 0.177446 2 71 0
NoteOn 0.084674 2 71 53
NoteOff 0.084189 2 71 0
NoteOn 0.107113 2 66 82
NoteOff 0.345345 2 66 0
Strumming 0.000000 2 127
NoteOn 0.114209 2 66 69
NoteOff 0.638118 2 66 0
NotStrumming 0.000000 2 0
NoteOn 0.096405 2 66 61
NoteOff 0.134993 2 66 0
NoteOn 0.028328 2 64 67
NoteOff 0.251752 2 64 0
NoteOn 0.052434 2 62 64
NoteOff 0.077954 2 62 0
Strumming 0.000000 2 127
NoteOn 0.069474 2 62 69
NoteOff 1.132502 2 62 0
NotStrumming 0.000000 2 0
NoteOn 0.043887 2 66 69
NoteOff 0.096938 2 66 0
NoteOn 0.046985 2 64 71
NoteOff 0.085443 2 64 0
NoteOn 0.055538 2 66 63
NoteOff 0.105148 2 66 0
NoteOn 0.021553 2 64 62
NoteOff 0.103749 2 64 0
Strumming 0.000000 2 127
NoteOn 0.054633 2 62 67
NoteOff 1.033837 2 62 0
NotStrumming 0.000000 2 0
// Now a really bad player
PlayerSkill 0.000000 2 10
NoteOn 0.235617 2 69 69
NoteOff 0.316772 2 69 0
Strumming 0.000000 2 127
NoteOn 0.145871 2 74 64
NoteOff 1.100060 2 74 0
NotStrumming 0.000000 2 0
NoteOn 0.115729 2 74 58
NoteOff 0.166520 2 74 0
NoteOn 0.007216 2 73 61
NoteOff 0.192106 2 73 0
NoteOn 0.067405 2 73 62
NoteOff 0.160641 2 73 0
NoteOn 0.015116 2 69 58
NoteOff 0.176983 2 69 0
NoteOn 0.083744 2 69 62
NoteOff 0.155400 2 69 0
NoteOn 0.020502 2 71 69
NoteOff 0.187489 2 71 0
NoteOn 0.076011 2 71 56
NoteOff 0.094456 2 71 0
NoteOn 0.094632 2 66 73
NoteOff 0.303251 2 66 0
Strumming 0.000000 2 127
NoteOn 0.136058 2 66 69
NoteOff 0.601147 2 66 0
NotStrumming 0.000000 2 0
NoteOn 0.073985 2 66 56
NoteOff 0.145772 2 66 0
NoteOn 0.028922 2 64 64
NoteOff 0.082327 2 64 0
NoteOn 0.047864 2 66 61
NoteOff 0.099460 2 66 0
NoteOn 0.020486 2 64 40
NoteOff 0.131447 2 64 0
Strumming 0.000000 2 127
NoteOn 0.042691 2 62 71
NoteOff 1.131626 2 62 0
NotStrumming 0.000000 2 0
NoteOn 0.040285 2 66 51
NoteOff 0.141532 2 66 0
NoteOn 0.016442 2 64 64
NoteOff 0.195371 2 64 0
NoteOn 0.073368 2 62 67
NoteOff 0.098382 2 62 0
Strumming 0.000000 2 127
NoteOn 0.082045 2 62 69
NoteOff 0.796526 2 62 0
NotStrumming 0.000000 2 0
NoteOn 0.079242 2 62 64
NoteOff 0.473653 2 62 0

View File

@@ -1,34 +1,34 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
ControlChange 0.000000 1 1 20.000000
ControlChange 0.000000 1 4 22.000000
NoteOn 0.000000 1 46 64.000000
ControlChange 0.200000 1 4 8.000000
NoteOff 0.800000 1 46 64.500000
NoteOn 0.000000 1 51 74.000000
NoteOff 0.750000 1 51 74.500000
NoteOn 0.000000 1 53 84.000000
ControlChange 0.000000 1 4 0.000000
NoteOff 0.250000 1 53 84.500000
NoteOn 0.000000 1 54 84.000000
ControlChange 0.000000 1 4 10.000000
NoteOff 1.500000 1 54 84.500000
NoteOn 0.000000 1 54 84.000000
ControlChange 0.000000 1 4 8.000000
NoteOff 0.500000 1 54 84.500000
NoteOn 0.000000 1 53 84.000000
ControlChange 0.000000 1 4 0.000000
NoteOff 0.500000 1 53 84.500000
NoteOn 0.000000 1 51 84.000000
NoteOff 0.500000 1 51 84.500000
NoteOn 0.000000 1 53 84.000000
ControlChange 0.000000 1 4 4.000000
NoteOff 0.500000 1 53 84.500000
NoteOn 0.000000 1 54 94.000000
NoteOff 0.500000 1 54 94.500000
NoteOn 0.000000 1 51 74.000000
ControlChange 0.000000 1 4 0.000000
NoteOff 1.000000 1 51 74.500000
NoteOn 0.000000 1 46 32.000000
ControlChange 0.000000 1 4 8.000000
ControlChange 0.000000 1 1 40.000000
NoteOff 1.950023 1 46 64.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
ControlChange 0.000000 1 1 20.000000
ControlChange 0.000000 1 4 22.000000
NoteOn 0.000000 1 46 64.000000
ControlChange 0.200000 1 4 8.000000
NoteOff 0.800000 1 46 64.500000
NoteOn 0.000000 1 51 74.000000
NoteOff 0.750000 1 51 74.500000
NoteOn 0.000000 1 53 84.000000
ControlChange 0.000000 1 4 0.000000
NoteOff 0.250000 1 53 84.500000
NoteOn 0.000000 1 54 84.000000
ControlChange 0.000000 1 4 10.000000
NoteOff 1.500000 1 54 84.500000
NoteOn 0.000000 1 54 84.000000
ControlChange 0.000000 1 4 8.000000
NoteOff 0.500000 1 54 84.500000
NoteOn 0.000000 1 53 84.000000
ControlChange 0.000000 1 4 0.000000
NoteOff 0.500000 1 53 84.500000
NoteOn 0.000000 1 51 84.000000
NoteOff 0.500000 1 51 84.500000
NoteOn 0.000000 1 53 84.000000
ControlChange 0.000000 1 4 4.000000
NoteOff 0.500000 1 53 84.500000
NoteOn 0.000000 1 54 94.000000
NoteOff 0.500000 1 54 94.500000
NoteOn 0.000000 1 51 74.000000
ControlChange 0.000000 1 4 0.000000
NoteOff 1.000000 1 51 74.500000
NoteOn 0.000000 1 46 32.000000
ControlChange 0.000000 1 4 8.000000
ControlChange 0.000000 1 1 40.000000
NoteOff 1.950023 1 46 64.500000

View File

@@ -1,45 +1,45 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000082 2 55 82
NoteOff 1.000000 2 55 0
NoteOn 0.000082 2 55 82
NoteOff 0.700000 2 55 0
NoteOn 0.000082 2 62 82
NoteOff 0.600000 2 62 0
NoteOn 0.000082 2 62 82
NoteOff 1.000000 2 62 0
NoteOn 0.000082 2 69 82
NoteOff 0.500000 2 69 0
ControlChange 0.100000 1 1 10
ControlChange 0.100000 1 1 20
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 50
NoteOn 0.000000 2 69 82
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 22
ControlChange 0.100000 1 1 12
NoteOn 0.000000 2 69 82
ControlChange 0.100000 1 1 10
ControlChange 0.100000 1 1 20
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 50
ControlChange 0.100000 1 1 60
ControlChange 0.100000 1 1 50
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 20
ControlChange 0.100000 1 1 10
ControlChange 0.100000 1 1 6
NoteOn 0.000082 2 69 82
NoteOff 1.000000 2 69 0
NoteOn 0.000082 2 76 82
NoteOff 0.800000 2 76 0
NoteOn 0.000082 2 76 82
NoteOff 0.800000 2 76 0
NoteOn 0.000082 2 55 82
NoteOn 0.200000 2 62 82
NoteOn 0.100000 2 71 82
NoteOn 0.200000 2 79 82
NoteOff 1.000000 2 79 82
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000082 2 55 82
NoteOff 1.000000 2 55 0
NoteOn 0.000082 2 55 82
NoteOff 0.700000 2 55 0
NoteOn 0.000082 2 62 82
NoteOff 0.600000 2 62 0
NoteOn 0.000082 2 62 82
NoteOff 1.000000 2 62 0
NoteOn 0.000082 2 69 82
NoteOff 0.500000 2 69 0
ControlChange 0.100000 1 1 10
ControlChange 0.100000 1 1 20
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 50
NoteOn 0.000000 2 69 82
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 22
ControlChange 0.100000 1 1 12
NoteOn 0.000000 2 69 82
ControlChange 0.100000 1 1 10
ControlChange 0.100000 1 1 20
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 50
ControlChange 0.100000 1 1 60
ControlChange 0.100000 1 1 50
ControlChange 0.100000 1 1 40
ControlChange 0.100000 1 1 30
ControlChange 0.100000 1 1 20
ControlChange 0.100000 1 1 10
ControlChange 0.100000 1 1 6
NoteOn 0.000082 2 69 82
NoteOff 1.000000 2 69 0
NoteOn 0.000082 2 76 82
NoteOff 0.800000 2 76 0
NoteOn 0.000082 2 76 82
NoteOff 0.800000 2 76 0
NoteOn 0.000082 2 55 82
NoteOn 0.200000 2 62 82
NoteOn 0.100000 2 71 82
NoteOn 0.200000 2 79 82
NoteOff 1.000000 2 79 82

View File

@@ -1,107 +1,107 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.001 1 48 88.899998
NoteOff 0.100 1 48 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 91 88.899998
NoteOff 0.200 1 91 63.500000
StickHardness 0.000 1 30
NoteOn 0.001 1 48 88.899998
NoteOff 0.100 1 48 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.200 1 67 63.500000
StickHardness 0.000 1 120
NoteOn 0.001 1 48 88.899998
NoteOff 0.200 1 48 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.200 1 67 63.500000
StickHardness 0.000 1 64
NoteOn 0.001 1 93 88.899998
NoteOff 0.100 1 93 63.500000
NoteOn 0.001 1 91 88.899998
NoteOff 0.100 1 91 63.500000
NoteOn 0.001 1 89 88.899998
NoteOff 0.100 1 89 63.500000
NoteOn 0.001 1 88 88.899998
NoteOff 0.100 1 88 63.500000
NoteOn 0.001 1 86 88.899998
NoteOff 0.100 1 86 63.500000
NoteOn 0.001 1 84 88.899998
NoteOff 0.100 1 84 63.500000
NoteOn 0.001 1 83 88.899998
NoteOff 0.100 1 83 63.500000
NoteOn 0.001 1 79 88.899998
NoteOff 0.100 1 79 63.500000
NoteOn 0.001 1 48 88.899998
NoteOff 0.100 1 48 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 91 88.899998
NoteOff 0.200 1 91 63.500000
NoteOn 0.001 1 84 10.0
NoteOff 0.050 1 84 63.500000
NoteOn 0.001 1 96 20.0
NoteOff 0.040 1 96 63.500000
NoteOn 0.001 1 84 30.0
NoteOff 0.040 1 84 63.500000
NoteOn 0.001 1 96 40.0
NoteOff 0.045 1 96 63.500000
NoteOn 0.001 1 84 50.0
NoteOff 0.050 1 84 63.500000
NoteOn 0.001 1 96 60.0
NoteOff 0.055 1 96 63.500000
NoteOn 0.001 1 84 70.0
NoteOff 0.045 1 84 63.500000
NoteOn 0.001 1 96 80.0
NoteOff 0.040 1 96 63.500000
NoteOn 0.001 1 84 90.0
NoteOff 0.045 1 84 63.500000
NoteOn 0.001 1 96 100.0
NoteOff 0.050 1 96 63.500000
NoteOn 0.001 1 84 110.0
NoteOff 0.055 1 84 63.500000
NoteOn 0.001 1 96 120.0
NoteOff 0.300 1 96 63.500000
StickHardness 0.000 1 64
NoteOn 0.001 1 48 88.899998
NoteOff 2.000 1 48 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.001 1 48 88.899998
NoteOff 0.100 1 48 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 91 88.899998
NoteOff 0.200 1 91 63.500000
StickHardness 0.000 1 30
NoteOn 0.001 1 48 88.899998
NoteOff 0.100 1 48 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.200 1 67 63.500000
StickHardness 0.000 1 120
NoteOn 0.001 1 48 88.899998
NoteOff 0.200 1 48 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.200 1 67 63.500000
StickHardness 0.000 1 64
NoteOn 0.001 1 93 88.899998
NoteOff 0.100 1 93 63.500000
NoteOn 0.001 1 91 88.899998
NoteOff 0.100 1 91 63.500000
NoteOn 0.001 1 89 88.899998
NoteOff 0.100 1 89 63.500000
NoteOn 0.001 1 88 88.899998
NoteOff 0.100 1 88 63.500000
NoteOn 0.001 1 86 88.899998
NoteOff 0.100 1 86 63.500000
NoteOn 0.001 1 84 88.899998
NoteOff 0.100 1 84 63.500000
NoteOn 0.001 1 83 88.899998
NoteOff 0.100 1 83 63.500000
NoteOn 0.001 1 79 88.899998
NoteOff 0.100 1 79 63.500000
NoteOn 0.001 1 48 88.899998
NoteOff 0.100 1 48 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 67 88.899998
NoteOff 0.100 1 67 63.500000
NoteOn 0.001 1 76 88.899998
NoteOff 0.100 1 76 63.500000
NoteOn 0.001 1 72 88.899998
NoteOff 0.100 1 72 63.500000
NoteOn 0.001 1 55 88.899998
NoteOff 0.100 1 55 63.500000
NoteOn 0.001 1 91 88.899998
NoteOff 0.200 1 91 63.500000
NoteOn 0.001 1 84 10.0
NoteOff 0.050 1 84 63.500000
NoteOn 0.001 1 96 20.0
NoteOff 0.040 1 96 63.500000
NoteOn 0.001 1 84 30.0
NoteOff 0.040 1 84 63.500000
NoteOn 0.001 1 96 40.0
NoteOff 0.045 1 96 63.500000
NoteOn 0.001 1 84 50.0
NoteOff 0.050 1 84 63.500000
NoteOn 0.001 1 96 60.0
NoteOff 0.055 1 96 63.500000
NoteOn 0.001 1 84 70.0
NoteOff 0.045 1 84 63.500000
NoteOn 0.001 1 96 80.0
NoteOff 0.040 1 96 63.500000
NoteOn 0.001 1 84 90.0
NoteOff 0.045 1 84 63.500000
NoteOn 0.001 1 96 100.0
NoteOff 0.050 1 96 63.500000
NoteOn 0.001 1 84 110.0
NoteOff 0.055 1 84 63.500000
NoteOn 0.001 1 96 120.0
NoteOff 0.300 1 96 63.500000
StickHardness 0.000 1 64
NoteOn 0.001 1 48 88.899998
NoteOff 2.000 1 48 63.500000

View File

@@ -1,45 +1,45 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 100
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 80
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 60
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 40
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 20
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 10
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 100
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 80
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 60
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 40
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 20
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
StickHardness 0.000000 1 10
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998
NoteOn 0.050000 1 32 88.899998

View File

@@ -1,58 +1,58 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 67 127.000000
NoteOff 0.142494 1 67 63.500000
NoteOn 0.007528 1 67 127.000000
NoteOff 0.149977 1 67 63.500000
NoteOn 0.149977 1 67 127.000000
NoteOff 0.285034 1 67 63.500000
NoteOn 0.015011 1 69 127.000000
NoteOff 0.142494 1 69 63.500000
NoteOn 0.007528 1 67 127.000000
NoteOff 0.285034 1 67 63.500000
NoteOn 0.015011 1 64 127.000000
NoteOff 1.140000 1 64 63.500000
NoteOn 0.060000 1 64 127.000000
NoteOff 0.074966 1 64 63.500000
NoteOn 0.074966 1 64 127.000000
NoteOff 0.149977 1 64 63.500000
NoteOn 0.149977 1 64 127.000000
NoteOff 0.285034 1 64 63.500000
NoteOn 0.015011 1 62 127.000000
NoteOff 0.074966 1 62 63.500000
NoteOn 0.074966 1 60 127.000000
NoteOff 0.149977 1 60 63.500000
NoteOn 0.149977 1 57 127.000000
NoteOff 1.140000 1 57 63.500000
NoteOn 0.060000 1 79 127.000000
NoteOff 0.142494 1 79 63.500000
NoteOn 0.007528 1 79 127.000000
NoteOff 0.149977 1 79 63.500000
NoteOn 0.149977 1 79 127.000000
NoteOff 0.285034 1 79 63.500000
NoteOn 0.015011 1 81 127.000000
NoteOff 0.142494 1 81 63.500000
NoteOn 0.007528 1 79 127.000000
NoteOff 0.285034 1 79 63.500000
NoteOn 0.015011 1 76 127.000000
NoteOff 1.140000 1 76 63.500000
NoteOn 0.060000 1 76 127.000000
NoteOff 0.074966 1 76 63.500000
NoteOn 0.074966 1 76 127.000000
NoteOff 0.149977 1 76 63.500000
NoteOn 0.149977 1 76 127.000000
NoteOff 0.285034 1 76 63.500000
NoteOn 0.015011 1 74 127.000000
NoteOff 0.074966 1 74 63.500000
NoteOn 0.074966 1 72 127.000000
NoteOff 0.149977 1 72 63.500000
NoteOn 0.149977 1 69 127.000000
NoteOff 0.449977 1 69 63.500000
NoteOn 0.449977 1 79 127.000000
NoteOff 0.149977 1 79 63.500000
NoteOn 0.149977 1 81 127.000000
NoteOff 0.855011 1 81 63.500000
NoteOn 0.045034 1 91 127.000000
NoteOff 0.149977 1 91 63.500000
NoteOn 0.149977 1 93 127.000000
NoteOff 0.950023 1 93 63.500000
NoteOff 0.050023 1 93 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 67 127.000000
NoteOff 0.142494 1 67 63.500000
NoteOn 0.007528 1 67 127.000000
NoteOff 0.149977 1 67 63.500000
NoteOn 0.149977 1 67 127.000000
NoteOff 0.285034 1 67 63.500000
NoteOn 0.015011 1 69 127.000000
NoteOff 0.142494 1 69 63.500000
NoteOn 0.007528 1 67 127.000000
NoteOff 0.285034 1 67 63.500000
NoteOn 0.015011 1 64 127.000000
NoteOff 1.140000 1 64 63.500000
NoteOn 0.060000 1 64 127.000000
NoteOff 0.074966 1 64 63.500000
NoteOn 0.074966 1 64 127.000000
NoteOff 0.149977 1 64 63.500000
NoteOn 0.149977 1 64 127.000000
NoteOff 0.285034 1 64 63.500000
NoteOn 0.015011 1 62 127.000000
NoteOff 0.074966 1 62 63.500000
NoteOn 0.074966 1 60 127.000000
NoteOff 0.149977 1 60 63.500000
NoteOn 0.149977 1 57 127.000000
NoteOff 1.140000 1 57 63.500000
NoteOn 0.060000 1 79 127.000000
NoteOff 0.142494 1 79 63.500000
NoteOn 0.007528 1 79 127.000000
NoteOff 0.149977 1 79 63.500000
NoteOn 0.149977 1 79 127.000000
NoteOff 0.285034 1 79 63.500000
NoteOn 0.015011 1 81 127.000000
NoteOff 0.142494 1 81 63.500000
NoteOn 0.007528 1 79 127.000000
NoteOff 0.285034 1 79 63.500000
NoteOn 0.015011 1 76 127.000000
NoteOff 1.140000 1 76 63.500000
NoteOn 0.060000 1 76 127.000000
NoteOff 0.074966 1 76 63.500000
NoteOn 0.074966 1 76 127.000000
NoteOff 0.149977 1 76 63.500000
NoteOn 0.149977 1 76 127.000000
NoteOff 0.285034 1 76 63.500000
NoteOn 0.015011 1 74 127.000000
NoteOff 0.074966 1 74 63.500000
NoteOn 0.074966 1 72 127.000000
NoteOff 0.149977 1 72 63.500000
NoteOn 0.149977 1 69 127.000000
NoteOff 0.449977 1 69 63.500000
NoteOn 0.449977 1 79 127.000000
NoteOff 0.149977 1 79 63.500000
NoteOn 0.149977 1 81 127.000000
NoteOff 0.855011 1 81 63.500000
NoteOn 0.045034 1 91 127.000000
NoteOff 0.149977 1 91 63.500000
NoteOn 0.149977 1 93 127.000000
NoteOff 0.950023 1 93 63.500000
NoteOff 0.050023 1 93 63.500000

View File

@@ -1,85 +1,85 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 67 63.500000
NoteOn 0.200000 1 64 101.600002
NoteOn 0.200000 1 64 101.600002
NoteOn 0.200000 1 67 101.600002
NoteOn 0.200000 1 67 76.200003
NoteOn 0.200000 1 64 38.100002
NoteOn 0.300000 1 67 101.600002
NoteOn 0.300000 1 67 127.000000
NoteOn 0.200000 1 64 76.200003
NoteOn 0.200000 1 67 114.299997
NoteOn 0.200000 1 69 127.000000
NoteOn 0.100000 1 67 50.800001
NoteOn 0.100000 1 64 88.899998
NoteOn 0.100000 1 62 63.500000
NoteOn 0.100000 1 64 76.200003
NoteOn 0.600000 1 79 127.000000
NoteOn 0.200000 1 76 127.000000
NoteOn 0.200000 1 76 127.000000
NoteOn 0.200000 1 79 127.000000
NoteOn 0.200000 1 79 127.000000
NoteOn 0.100000 1 81 127.000000
NoteOn 0.200000 1 79 127.000000
NoteOn 0.100000 1 76 127.000000
NoteOn 0.100000 1 74 127.000000
NoteOn 0.100000 1 76 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 52 127.000000
NoteOn 0.200000 1 50 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 52 127.000000
NoteOn 0.200000 1 50 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 69 127.000000
NoteOn 0.100000 1 72 127.000000
NoteOn 0.200000 1 82 127.000000
NoteOn 0.200000 1 82 127.000000
NoteOn 0.200000 1 90 100.000000
NoteOn 0.200000 1 90 100.000000
NoteOn 0.200000 1 82 110.000000
NoteOn 0.300000 1 82 110.000000
NoteOn 0.200000 1 82 100.000000
NoteOn 0.100000 1 90 100.000000
NoteOn 0.200000 1 82 100.000000
NoteOn 0.200000 1 82 90.000000
NoteOn 0.200000 1 90 80.000000
NoteOn 0.200000 1 90 80.000000
NoteOn 0.200000 1 82 80.000000
NoteOn 0.300000 1 90 80.000000
NoteOn 0.200000 1 90 80.000000
NoteOn 0.100000 1 90 70.000000
NoteOn 0.200000 1 82 70.000000
NoteOn 0.200000 1 82 70.000000
NoteOn 0.200000 1 90 70.000000
NoteOn 0.200000 1 90 70.000000
NoteOn 0.200000 1 82 60.000000
NoteOn 0.300000 1 90 60.000000
NoteOn 0.200000 1 82 60.000000
NoteOn 0.100000 1 90 60.000000
NoteOn 0.200000 1 82 50.000000
NoteOn 0.200000 1 82 50.000000
NoteOn 0.200000 1 90 50.000000
NoteOn 0.200000 1 90 50.000000
NoteOn 0.200000 1 82 50.000000
NoteOn 0.300000 1 82 40.000000
NoteOn 0.200000 1 82 40.000000
NoteOn 0.100000 1 90 40.000000
NoteOn 0.200000 1 82 40.000000
NoteOn 0.200000 1 82 30.000000
NoteOn 0.200000 1 90 30.000000
NoteOn 0.200000 1 90 30.000000
NoteOn 0.200000 1 82 20.000000
NoteOn 0.300000 1 82 20.000000
NoteOn 0.200000 1 82 20.000000
NoteOn 0.100000 1 90 10.000000
NoteOff 0.800000 1 72 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 67 63.500000
NoteOn 0.200000 1 64 101.600002
NoteOn 0.200000 1 64 101.600002
NoteOn 0.200000 1 67 101.600002
NoteOn 0.200000 1 67 76.200003
NoteOn 0.200000 1 64 38.100002
NoteOn 0.300000 1 67 101.600002
NoteOn 0.300000 1 67 127.000000
NoteOn 0.200000 1 64 76.200003
NoteOn 0.200000 1 67 114.299997
NoteOn 0.200000 1 69 127.000000
NoteOn 0.100000 1 67 50.800001
NoteOn 0.100000 1 64 88.899998
NoteOn 0.100000 1 62 63.500000
NoteOn 0.100000 1 64 76.200003
NoteOn 0.600000 1 79 127.000000
NoteOn 0.200000 1 76 127.000000
NoteOn 0.200000 1 76 127.000000
NoteOn 0.200000 1 79 127.000000
NoteOn 0.200000 1 79 127.000000
NoteOn 0.100000 1 81 127.000000
NoteOn 0.200000 1 79 127.000000
NoteOn 0.100000 1 76 127.000000
NoteOn 0.100000 1 74 127.000000
NoteOn 0.100000 1 76 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 52 127.000000
NoteOn 0.200000 1 50 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 45 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 52 127.000000
NoteOn 0.200000 1 50 127.000000
NoteOn 0.100000 1 48 127.000000
NoteOn 0.100000 1 50 127.000000
NoteOn 0.100000 1 69 127.000000
NoteOn 0.100000 1 72 127.000000
NoteOn 0.200000 1 82 127.000000
NoteOn 0.200000 1 82 127.000000
NoteOn 0.200000 1 90 100.000000
NoteOn 0.200000 1 90 100.000000
NoteOn 0.200000 1 82 110.000000
NoteOn 0.300000 1 82 110.000000
NoteOn 0.200000 1 82 100.000000
NoteOn 0.100000 1 90 100.000000
NoteOn 0.200000 1 82 100.000000
NoteOn 0.200000 1 82 90.000000
NoteOn 0.200000 1 90 80.000000
NoteOn 0.200000 1 90 80.000000
NoteOn 0.200000 1 82 80.000000
NoteOn 0.300000 1 90 80.000000
NoteOn 0.200000 1 90 80.000000
NoteOn 0.100000 1 90 70.000000
NoteOn 0.200000 1 82 70.000000
NoteOn 0.200000 1 82 70.000000
NoteOn 0.200000 1 90 70.000000
NoteOn 0.200000 1 90 70.000000
NoteOn 0.200000 1 82 60.000000
NoteOn 0.300000 1 90 60.000000
NoteOn 0.200000 1 82 60.000000
NoteOn 0.100000 1 90 60.000000
NoteOn 0.200000 1 82 50.000000
NoteOn 0.200000 1 82 50.000000
NoteOn 0.200000 1 90 50.000000
NoteOn 0.200000 1 90 50.000000
NoteOn 0.200000 1 82 50.000000
NoteOn 0.300000 1 82 40.000000
NoteOn 0.200000 1 82 40.000000
NoteOn 0.100000 1 90 40.000000
NoteOn 0.200000 1 82 40.000000
NoteOn 0.200000 1 82 30.000000
NoteOn 0.200000 1 90 30.000000
NoteOn 0.200000 1 90 30.000000
NoteOn 0.200000 1 82 20.000000
NoteOn 0.300000 1 82 20.000000
NoteOn 0.200000 1 82 20.000000
NoteOn 0.100000 1 90 10.000000
NoteOff 0.800000 1 72 63.500000

View File

@@ -1,221 +1,221 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000327 2 68 64
NoteOn 0.011439 2 72 60
NoteOn 0.100661 2 69 58
NoteOff 0.022910 2 68 0
NoteOff 0.087179 2 69 0
NoteOff 0.002768 2 72 0
NoteOn 0.146276 2 74 60
NoteOn 0.007877 2 70 73
NoteOff 0.065823 2 74 0
NoteOff 0.034091 2 70 0
NoteOn 0.071562 2 65 42
NoteOff 0.095505 2 65 0
NoteOn 0.117222 2 72 36
NoteOn 0.003568 2 75 57
NoteOff 0.867934 2 72 0
NoteOff 0.016747 2 75 0
NoteOn 0.001292 2 70 66
NoteOn 0.016806 2 74 41
NoteOff 0.903721 2 70 0
NoteOn 0.002269 2 71 60
NoteOff 0.002452 2 74 0
NoteOff 0.024367 2 71 0
NoteOn 0.573769 2 71 71
NoteOn 0.071125 2 72 47
NoteOff 0.017603 2 71 0
NoteOn 0.099531 2 77 63
NoteOff 0.005133 2 72 0
NoteOn 0.002825 2 75 57
NoteOff 0.051047 2 77 0
NoteOn 0.062443 2 72 42
NoteOff 0.003421 2 75 0
NoteOn 0.004190 2 73 22
NoteOff 0.032476 2 73 0
NoteOff 0.003357 2 72 0
NoteOn 0.003412 2 71 51
NoteOff 0.082169 2 71 0
NoteOn 0.030527 2 70 64
NoteOff 0.068936 2 70 0
NoteOn 0.002836 2 68 63
NoteOff 0.069395 2 68 0
NoteOn 0.024967 2 65 52
NoteOff 0.083696 2 65 0
NoteOn 0.027784 2 63 69
NoteOff 0.102489 2 63 0
NoteOn 0.048174 2 60 61
NoteOff 0.094914 2 60 0
NoteOn 0.076034 2 58 62
NoteOff 0.080772 2 58 0
NoteOn 0.107826 2 56 73
NoteOff 0.114325 2 56 0
NoteOn 0.159665 2 53 71
NoteOff 0.094385 2 53 0
NoteOn 0.218823 2 56 82
NoteOff 0.396073 2 56 0
NoteOn 0.016601 2 53 79
NoteOff 0.590675 2 53 0
NoteOn 0.013945 2 41 61
NoteOn 0.003797 2 53 48
NoteOn 0.749734 2 57 69
NoteOn 0.006420 2 63 69
NoteOff 0.004025 2 53 0
NoteOn 0.001033 2 59 71
NoteOff 0.183718 2 59 0
ControlChange 0.981560 2 1 1
ControlChange 0.014051 2 1 2
ControlChange 0.018312 2 1 3
ControlChange 0.013991 2 1 4
ControlChange 0.014672 2 1 5
ControlChange 0.008917 2 1 6
ControlChange 0.009676 2 1 7
ControlChange 0.009401 2 1 8
ControlChange 0.014007 2 1 9
ControlChange 0.009716 2 1 10
ControlChange 0.009322 2 1 11
ControlChange 0.009533 2 1 12
ControlChange 0.009596 2 1 13
ControlChange 0.009475 2 1 14
ControlChange 0.014006 2 1 15
ControlChange 0.009540 2 1 16
ControlChange 0.010279 2 1 17
ControlChange 0.013663 2 1 18
ControlChange 0.009675 2 1 19
ControlChange 0.009790 2 1 20
ControlChange 0.014027 2 1 21
ControlChange 0.013973 2 1 22
ControlChange 0.009544 2 1 23
ControlChange 0.014007 2 1 24
ControlChange 0.010353 2 1 25
ControlChange 0.010221 2 1 26
ControlChange 0.017407 2 1 27
ControlChange 0.010088 2 1 28
ControlChange 0.009214 2 1 29
ControlChange 0.009312 2 1 31
ControlChange 0.014216 2 1 32
ControlChange 0.004844 2 1 33
ControlChange 0.009540 2 1 34
ControlChange 0.005039 2 1 35
ControlChange 0.009520 2 1 36
ControlChange 0.010018 2 1 37
ControlChange 0.004663 2 1 38
ControlChange 0.009539 2 1 39
ControlChange 0.009540 2 1 41
ControlChange 0.005017 2 1 42
ControlChange 0.009504 2 1 43
ControlChange 0.005097 2 1 44
ControlChange 0.009941 2 1 45
ControlChange 0.004610 2 1 46
ControlChange 0.005284 2 1 47
ControlChange 0.004821 2 1 48
ControlChange 0.005134 2 1 49
ControlChange 0.009580 2 1 51
ControlChange 0.009561 2 1 52
ControlChange 0.019091 2 1 54
ControlChange 0.001107 2 1 55
ControlChange 0.003756 2 1 56
ControlChange 0.009684 2 1 57
ControlChange 0.004888 2 1 58
ControlChange 0.014042 2 1 59
ControlChange 0.009508 2 1 60
ControlChange 0.009528 2 1 61
ControlChange 0.014029 2 1 62
ControlChange 0.009753 2 1 63
ControlChange 0.018303 2 1 64
ControlChange 0.014210 2 1 65
ControlChange 0.027270 2 1 66
ControlChange 0.027450 2 1 67
ControlChange 0.072463 2 1 68
ControlChange 0.040774 2 1 69
ControlChange 0.022966 2 1 70
ControlChange 0.018511 2 1 71
ControlChange 0.023463 2 1 72
ControlChange 0.013521 2 1 73
ControlChange 0.014483 2 1 74
ControlChange 0.013854 2 1 75
ControlChange 0.009555 2 1 76
ControlChange 0.018674 2 1 77
ControlChange 0.009540 2 1 78
ControlChange 0.009616 2 1 79
ControlChange 0.013994 2 1 80
ControlChange 0.014260 2 1 81
ControlChange 0.018448 2 1 82
ControlChange 0.032114 2 1 83
ControlChange 0.058711 2 1 84
ControlChange 0.049895 2 1 85
ControlChange 0.032104 2 1 86
ControlChange 0.036434 2 1 87
ControlChange 0.022873 2 1 88
ControlChange 0.068096 2 1 89
ControlChange 0.112544 2 1 90
ControlChange 0.018361 2 1 91
ControlChange 0.018528 2 1 92
ControlChange 0.018461 2 1 93
ControlChange 0.014041 2 1 94
ControlChange 0.037010 2 1 95
ControlChange 0.008956 2 1 96
ControlChange 0.099445 2 1 95
ControlChange 0.013834 2 1 94
ControlChange 0.009499 2 1 93
ControlChange 0.010104 2 1 92
ControlChange 0.005027 2 1 91
ControlChange 0.010180 2 1 90
ControlChange 0.008871 2 1 89
ControlChange 0.009510 2 1 88
ControlChange 0.005047 2 1 87
ControlChange 0.014061 2 1 86
ControlChange 0.009903 2 1 85
ControlChange 0.009119 2 1 84
ControlChange 0.009573 2 1 83
ControlChange 0.009491 2 1 82
ControlChange 0.005078 2 1 81
ControlChange 0.005002 2 1 80
ControlChange 0.009607 2 1 78
ControlChange 0.005082 2 1 77
ControlChange 0.009826 2 1 76
ControlChange 0.004771 2 1 75
ControlChange 0.005025 2 1 74
ControlChange 0.005486 2 1 72
ControlChange 0.004613 2 1 71
ControlChange 0.005046 2 1 70
ControlChange 0.005514 2 1 69
ControlChange 0.004571 2 1 67
ControlChange 0.005025 2 1 66
ControlChange 0.005039 2 1 65
ControlChange 0.005033 2 1 63
ControlChange 0.005073 2 1 62
ControlChange 0.005017 2 1 60
ControlChange 0.005073 2 1 59
ControlChange 0.005033 2 1 57
ControlChange 0.005061 2 1 56
ControlChange 0.005057 2 1 54
ControlChange 0.005024 2 1 52
ControlChange 0.005068 2 1 51
ControlChange 0.004988 2 1 49
ControlChange 0.005074 2 1 47
ControlChange 0.005035 2 1 45
ControlChange 0.005221 2 1 44
ControlChange 0.005234 2 1 42
ControlChange 0.005196 2 1 40
ControlChange 0.005115 2 1 38
ControlChange 0.005286 2 1 36
ControlChange 0.005148 2 1 34
ControlChange 0.005234 2 1 32
ControlChange 0.005301 2 1 30
ControlChange 0.005069 2 1 28
ControlChange 0.005155 2 1 26
ControlChange 0.008498 2 1 24
ControlChange 0.002918 2 1 21
ControlChange 0.004145 2 1 20
ControlChange 0.005652 2 1 17
ControlChange 0.004790 2 1 15
ControlChange 0.005180 2 1 13
ControlChange 0.005223 2 1 10
ControlChange 0.005177 2 1 8
ControlChange 0.005270 2 1 6
ControlChange 0.005135 2 1 4
ControlChange 0.005196 2 1 2
ControlChange 0.005197 2 1 0
NoteOff 0.354573 2 63 0
NoteOff 0.014193 2 57 0
NoteOff 0.008219 2 41 0
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000327 2 68 64
NoteOn 0.011439 2 72 60
NoteOn 0.100661 2 69 58
NoteOff 0.022910 2 68 0
NoteOff 0.087179 2 69 0
NoteOff 0.002768 2 72 0
NoteOn 0.146276 2 74 60
NoteOn 0.007877 2 70 73
NoteOff 0.065823 2 74 0
NoteOff 0.034091 2 70 0
NoteOn 0.071562 2 65 42
NoteOff 0.095505 2 65 0
NoteOn 0.117222 2 72 36
NoteOn 0.003568 2 75 57
NoteOff 0.867934 2 72 0
NoteOff 0.016747 2 75 0
NoteOn 0.001292 2 70 66
NoteOn 0.016806 2 74 41
NoteOff 0.903721 2 70 0
NoteOn 0.002269 2 71 60
NoteOff 0.002452 2 74 0
NoteOff 0.024367 2 71 0
NoteOn 0.573769 2 71 71
NoteOn 0.071125 2 72 47
NoteOff 0.017603 2 71 0
NoteOn 0.099531 2 77 63
NoteOff 0.005133 2 72 0
NoteOn 0.002825 2 75 57
NoteOff 0.051047 2 77 0
NoteOn 0.062443 2 72 42
NoteOff 0.003421 2 75 0
NoteOn 0.004190 2 73 22
NoteOff 0.032476 2 73 0
NoteOff 0.003357 2 72 0
NoteOn 0.003412 2 71 51
NoteOff 0.082169 2 71 0
NoteOn 0.030527 2 70 64
NoteOff 0.068936 2 70 0
NoteOn 0.002836 2 68 63
NoteOff 0.069395 2 68 0
NoteOn 0.024967 2 65 52
NoteOff 0.083696 2 65 0
NoteOn 0.027784 2 63 69
NoteOff 0.102489 2 63 0
NoteOn 0.048174 2 60 61
NoteOff 0.094914 2 60 0
NoteOn 0.076034 2 58 62
NoteOff 0.080772 2 58 0
NoteOn 0.107826 2 56 73
NoteOff 0.114325 2 56 0
NoteOn 0.159665 2 53 71
NoteOff 0.094385 2 53 0
NoteOn 0.218823 2 56 82
NoteOff 0.396073 2 56 0
NoteOn 0.016601 2 53 79
NoteOff 0.590675 2 53 0
NoteOn 0.013945 2 41 61
NoteOn 0.003797 2 53 48
NoteOn 0.749734 2 57 69
NoteOn 0.006420 2 63 69
NoteOff 0.004025 2 53 0
NoteOn 0.001033 2 59 71
NoteOff 0.183718 2 59 0
ControlChange 0.981560 2 1 1
ControlChange 0.014051 2 1 2
ControlChange 0.018312 2 1 3
ControlChange 0.013991 2 1 4
ControlChange 0.014672 2 1 5
ControlChange 0.008917 2 1 6
ControlChange 0.009676 2 1 7
ControlChange 0.009401 2 1 8
ControlChange 0.014007 2 1 9
ControlChange 0.009716 2 1 10
ControlChange 0.009322 2 1 11
ControlChange 0.009533 2 1 12
ControlChange 0.009596 2 1 13
ControlChange 0.009475 2 1 14
ControlChange 0.014006 2 1 15
ControlChange 0.009540 2 1 16
ControlChange 0.010279 2 1 17
ControlChange 0.013663 2 1 18
ControlChange 0.009675 2 1 19
ControlChange 0.009790 2 1 20
ControlChange 0.014027 2 1 21
ControlChange 0.013973 2 1 22
ControlChange 0.009544 2 1 23
ControlChange 0.014007 2 1 24
ControlChange 0.010353 2 1 25
ControlChange 0.010221 2 1 26
ControlChange 0.017407 2 1 27
ControlChange 0.010088 2 1 28
ControlChange 0.009214 2 1 29
ControlChange 0.009312 2 1 31
ControlChange 0.014216 2 1 32
ControlChange 0.004844 2 1 33
ControlChange 0.009540 2 1 34
ControlChange 0.005039 2 1 35
ControlChange 0.009520 2 1 36
ControlChange 0.010018 2 1 37
ControlChange 0.004663 2 1 38
ControlChange 0.009539 2 1 39
ControlChange 0.009540 2 1 41
ControlChange 0.005017 2 1 42
ControlChange 0.009504 2 1 43
ControlChange 0.005097 2 1 44
ControlChange 0.009941 2 1 45
ControlChange 0.004610 2 1 46
ControlChange 0.005284 2 1 47
ControlChange 0.004821 2 1 48
ControlChange 0.005134 2 1 49
ControlChange 0.009580 2 1 51
ControlChange 0.009561 2 1 52
ControlChange 0.019091 2 1 54
ControlChange 0.001107 2 1 55
ControlChange 0.003756 2 1 56
ControlChange 0.009684 2 1 57
ControlChange 0.004888 2 1 58
ControlChange 0.014042 2 1 59
ControlChange 0.009508 2 1 60
ControlChange 0.009528 2 1 61
ControlChange 0.014029 2 1 62
ControlChange 0.009753 2 1 63
ControlChange 0.018303 2 1 64
ControlChange 0.014210 2 1 65
ControlChange 0.027270 2 1 66
ControlChange 0.027450 2 1 67
ControlChange 0.072463 2 1 68
ControlChange 0.040774 2 1 69
ControlChange 0.022966 2 1 70
ControlChange 0.018511 2 1 71
ControlChange 0.023463 2 1 72
ControlChange 0.013521 2 1 73
ControlChange 0.014483 2 1 74
ControlChange 0.013854 2 1 75
ControlChange 0.009555 2 1 76
ControlChange 0.018674 2 1 77
ControlChange 0.009540 2 1 78
ControlChange 0.009616 2 1 79
ControlChange 0.013994 2 1 80
ControlChange 0.014260 2 1 81
ControlChange 0.018448 2 1 82
ControlChange 0.032114 2 1 83
ControlChange 0.058711 2 1 84
ControlChange 0.049895 2 1 85
ControlChange 0.032104 2 1 86
ControlChange 0.036434 2 1 87
ControlChange 0.022873 2 1 88
ControlChange 0.068096 2 1 89
ControlChange 0.112544 2 1 90
ControlChange 0.018361 2 1 91
ControlChange 0.018528 2 1 92
ControlChange 0.018461 2 1 93
ControlChange 0.014041 2 1 94
ControlChange 0.037010 2 1 95
ControlChange 0.008956 2 1 96
ControlChange 0.099445 2 1 95
ControlChange 0.013834 2 1 94
ControlChange 0.009499 2 1 93
ControlChange 0.010104 2 1 92
ControlChange 0.005027 2 1 91
ControlChange 0.010180 2 1 90
ControlChange 0.008871 2 1 89
ControlChange 0.009510 2 1 88
ControlChange 0.005047 2 1 87
ControlChange 0.014061 2 1 86
ControlChange 0.009903 2 1 85
ControlChange 0.009119 2 1 84
ControlChange 0.009573 2 1 83
ControlChange 0.009491 2 1 82
ControlChange 0.005078 2 1 81
ControlChange 0.005002 2 1 80
ControlChange 0.009607 2 1 78
ControlChange 0.005082 2 1 77
ControlChange 0.009826 2 1 76
ControlChange 0.004771 2 1 75
ControlChange 0.005025 2 1 74
ControlChange 0.005486 2 1 72
ControlChange 0.004613 2 1 71
ControlChange 0.005046 2 1 70
ControlChange 0.005514 2 1 69
ControlChange 0.004571 2 1 67
ControlChange 0.005025 2 1 66
ControlChange 0.005039 2 1 65
ControlChange 0.005033 2 1 63
ControlChange 0.005073 2 1 62
ControlChange 0.005017 2 1 60
ControlChange 0.005073 2 1 59
ControlChange 0.005033 2 1 57
ControlChange 0.005061 2 1 56
ControlChange 0.005057 2 1 54
ControlChange 0.005024 2 1 52
ControlChange 0.005068 2 1 51
ControlChange 0.004988 2 1 49
ControlChange 0.005074 2 1 47
ControlChange 0.005035 2 1 45
ControlChange 0.005221 2 1 44
ControlChange 0.005234 2 1 42
ControlChange 0.005196 2 1 40
ControlChange 0.005115 2 1 38
ControlChange 0.005286 2 1 36
ControlChange 0.005148 2 1 34
ControlChange 0.005234 2 1 32
ControlChange 0.005301 2 1 30
ControlChange 0.005069 2 1 28
ControlChange 0.005155 2 1 26
ControlChange 0.008498 2 1 24
ControlChange 0.002918 2 1 21
ControlChange 0.004145 2 1 20
ControlChange 0.005652 2 1 17
ControlChange 0.004790 2 1 15
ControlChange 0.005180 2 1 13
ControlChange 0.005223 2 1 10
ControlChange 0.005177 2 1 8
ControlChange 0.005270 2 1 6
ControlChange 0.005135 2 1 4
ControlChange 0.005196 2 1 2
ControlChange 0.005197 2 1 0
NoteOff 0.354573 2 63 0
NoteOff 0.014193 2 57 0
NoteOff 0.008219 2 41 0

View File

@@ -1,65 +1,65 @@
/* Howdy!!!! SKINI0.9 Test Score ***********/
PickPosition 0.0 2 64.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 56.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 48.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 40.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 32.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 24.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 16.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 8.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0
PickPosition 0.0 2 64.0
BodySize 0.0 2 0.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 16.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 32.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 48.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 60.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 80.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 96.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 127.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 64.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0
StringDamping 0.0 2 0.0
PickPosition 0.0 2 64.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0
StringDamping 0.0 2 128.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0
/* Howdy!!!! SKINI0.9 Test Score ***********/
PickPosition 0.0 2 64.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 56.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 48.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 40.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 32.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 24.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 16.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
PickPosition 0.0 2 8.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0
PickPosition 0.0 2 64.0
BodySize 0.0 2 0.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 16.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 32.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 48.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 60.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 80.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 96.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 127.0
NoteOn 0.0 2 55.0 64.0
NoteOff 0.25 2 55.0 64.0
BodySize 0.0 2 64.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0
StringDamping 0.0 2 0.0
PickPosition 0.0 2 64.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0
StringDamping 0.0 2 128.0
NoteOn 0.0 2 55.0 64.0
NoteOff 1.25 2 55.0 64.0

View File

@@ -1,30 +1,30 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 72 127.000000
NoteOff 0.540000 1 72 63.500000
NoteOn 0.060000 1 70 127.000000
NoteOff 0.540000 1 70 63.500000
NoteOn 0.060000 1 75 127.000000
NoteOff 0.540000 1 75 63.500000
NoteOn 0.060000 1 77 127.000000
NoteOff 0.270023 1 77 63.500000
NoteOn 0.030023 1 70 127.000000
ControlChange 0.000000 1 2 96.000000
NoteOff 0.299728 1 70 63.500000
NoteOn 0.000317 1 79 127.000000
NoteOff 0.540000 1 79 63.500000
NoteOn 0.060000 1 77 127.000000
NoteOff 0.270023 1 77 63.500000
NoteOn 0.030023 1 70 127.000000
ControlChange 0.000000 1 2 96.000000
NoteOff 0.299728 1 70 63.500000
NoteOn 0.000317 1 79 127.000000
NoteOff 0.540000 1 79 63.500000
NoteOn 0.060000 1 75 127.000000
NoteOff 0.540000 1 75 63.500000
NoteOn 0.060000 1 77 127.000000
NoteOff 0.540000 1 77 63.500000
NoteOn 0.060000 1 72 127.000000
NoteOff 0.540000 1 72 63.500000
NoteOn 0.060000 1 70 127.000000
NoteOff 0.540000 1 70 63.500000
NoteOff 0.060000 1 70 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 72 127.000000
NoteOff 0.540000 1 72 63.500000
NoteOn 0.060000 1 70 127.000000
NoteOff 0.540000 1 70 63.500000
NoteOn 0.060000 1 75 127.000000
NoteOff 0.540000 1 75 63.500000
NoteOn 0.060000 1 77 127.000000
NoteOff 0.270023 1 77 63.500000
NoteOn 0.030023 1 70 127.000000
ControlChange 0.000000 1 2 96.000000
NoteOff 0.299728 1 70 63.500000
NoteOn 0.000317 1 79 127.000000
NoteOff 0.540000 1 79 63.500000
NoteOn 0.060000 1 77 127.000000
NoteOff 0.270023 1 77 63.500000
NoteOn 0.030023 1 70 127.000000
ControlChange 0.000000 1 2 96.000000
NoteOff 0.299728 1 70 63.500000
NoteOn 0.000317 1 79 127.000000
NoteOff 0.540000 1 79 63.500000
NoteOn 0.060000 1 75 127.000000
NoteOff 0.540000 1 75 63.500000
NoteOn 0.060000 1 77 127.000000
NoteOff 0.540000 1 77 63.500000
NoteOn 0.060000 1 72 127.000000
NoteOff 0.540000 1 72 63.500000
NoteOn 0.060000 1 70 127.000000
NoteOff 0.540000 1 70 63.500000
NoteOff 0.060000 1 70 63.500000

View File

@@ -1,63 +1,63 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
ControlChange 0.000000 1 1 50.000000
NoteOn 0.000000 1 60 114.299997
NoteOff 0.480045 1 60 88.899998
NoteOn 0.120045 1 60 76.200003
NoteOff 0.150023 1 60 63.500000
NoteOn 0.150023 1 62 101.600002
NoteOff 0.720000 1 62 88.899998
NoteOn 0.180000 1 62 76.200003
NoteOff 0.150023 1 62 63.500000
NoteOn 0.150023 1 63 101.600002
NoteOff 0.720000 1 63 88.899998
NoteOn 0.180000 1 63 38.100002
NoteOff 0.150023 1 63 63.500000
NoteOn 0.150023 1 62 101.600002
NoteOff 0.720000 1 62 88.899998
NoteOn 0.180000 1 62 76.200003
NoteOff 0.480045 1 62 88.899998
NoteOn 0.120045 1 48 114.299997
NoteOff 0.480045 1 48 88.899998
NoteOn 0.120045 1 48 76.200003
NoteOff 0.150023 1 48 63.500000
NoteOn 0.150023 1 50 101.600002
NoteOff 0.720000 1 50 88.899998
NoteOn 0.180000 1 50 76.200003
NoteOff 0.150023 1 50 63.500000
NoteOn 0.150023 1 51 101.600002
NoteOff 0.720000 1 51 88.899998
NoteOn 0.180000 1 51 38.100002
NoteOff 0.150023 1 51 63.500000
NoteOn 0.150023 1 50 101.600002
NoteOff 0.720000 1 50 88.899998
NoteOn 0.180000 1 48 76.200003
NoteOff 0.240045 1 48 88.899998
NoteOn 0.060045 1 72 88.899998
NoteOff 0.240045 1 72 88.899998
NoteOn 0.060045 1 77 114.299997
NoteOff 0.240045 1 77 88.899998
NoteOn 0.060045 1 77 101.600002
NoteOff 0.240045 1 77 88.899998
NoteOn 0.060045 1 77 88.899998
NoteOff 0.240045 1 77 88.899998
NoteOn 0.060045 1 75 76.200003
NoteOff 0.240045 1 75 88.899998
NoteOn 0.060045 1 77 88.899998
NoteOff 0.480045 1 77 88.899998
NoteOn 0.120045 1 77 88.899998
NoteOff 0.150023 1 77 63.500000
NoteOn 0.150023 1 77 88.899998
NoteOff 0.150023 1 77 63.500000
NoteOn 0.150023 1 87 101.600002
NoteOff 0.240045 1 87 88.899998
NoteOn 0.060045 1 84 76.200003
NoteOff 0.150023 1 84 63.500000
NoteOn 0.150023 1 84 76.200003
NoteOff 0.240045 1 84 88.899998
NoteOn 0.060045 1 82 76.200003
NoteOff 0.240045 1 82 88.899998
NoteOn 0.060045 1 84 88.899998
NoteOff 0.960045 1 84 88.899998
NoteOn 0.240045 1 48 127.000000
ControlChange 0.000000 1 1 127.000000
NoteOff 1.300000 1 48 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
ControlChange 0.000000 1 1 50.000000
NoteOn 0.000000 1 60 114.299997
NoteOff 0.480045 1 60 88.899998
NoteOn 0.120045 1 60 76.200003
NoteOff 0.150023 1 60 63.500000
NoteOn 0.150023 1 62 101.600002
NoteOff 0.720000 1 62 88.899998
NoteOn 0.180000 1 62 76.200003
NoteOff 0.150023 1 62 63.500000
NoteOn 0.150023 1 63 101.600002
NoteOff 0.720000 1 63 88.899998
NoteOn 0.180000 1 63 38.100002
NoteOff 0.150023 1 63 63.500000
NoteOn 0.150023 1 62 101.600002
NoteOff 0.720000 1 62 88.899998
NoteOn 0.180000 1 62 76.200003
NoteOff 0.480045 1 62 88.899998
NoteOn 0.120045 1 48 114.299997
NoteOff 0.480045 1 48 88.899998
NoteOn 0.120045 1 48 76.200003
NoteOff 0.150023 1 48 63.500000
NoteOn 0.150023 1 50 101.600002
NoteOff 0.720000 1 50 88.899998
NoteOn 0.180000 1 50 76.200003
NoteOff 0.150023 1 50 63.500000
NoteOn 0.150023 1 51 101.600002
NoteOff 0.720000 1 51 88.899998
NoteOn 0.180000 1 51 38.100002
NoteOff 0.150023 1 51 63.500000
NoteOn 0.150023 1 50 101.600002
NoteOff 0.720000 1 50 88.899998
NoteOn 0.180000 1 48 76.200003
NoteOff 0.240045 1 48 88.899998
NoteOn 0.060045 1 72 88.899998
NoteOff 0.240045 1 72 88.899998
NoteOn 0.060045 1 77 114.299997
NoteOff 0.240045 1 77 88.899998
NoteOn 0.060045 1 77 101.600002
NoteOff 0.240045 1 77 88.899998
NoteOn 0.060045 1 77 88.899998
NoteOff 0.240045 1 77 88.899998
NoteOn 0.060045 1 75 76.200003
NoteOff 0.240045 1 75 88.899998
NoteOn 0.060045 1 77 88.899998
NoteOff 0.480045 1 77 88.899998
NoteOn 0.120045 1 77 88.899998
NoteOff 0.150023 1 77 63.500000
NoteOn 0.150023 1 77 88.899998
NoteOff 0.150023 1 77 63.500000
NoteOn 0.150023 1 87 101.600002
NoteOff 0.240045 1 87 88.899998
NoteOn 0.060045 1 84 76.200003
NoteOff 0.150023 1 84 63.500000
NoteOn 0.150023 1 84 76.200003
NoteOff 0.240045 1 84 88.899998
NoteOn 0.060045 1 82 76.200003
NoteOff 0.240045 1 82 88.899998
NoteOn 0.060045 1 84 88.899998
NoteOff 0.960045 1 84 88.899998
NoteOn 0.240045 1 48 127.000000
ControlChange 0.000000 1 1 127.000000
NoteOff 1.300000 1 48 63.500000

View File

@@ -1,72 +1,72 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
PlayerSkill 0.0 2 100
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
PlayerSkill 0.0 2 10
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
Strumming 0.0 2 127
PlayerSkill 0.0 2 127
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
PlayerSkill 0.0 2 0
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 67 64
NoteOff 2.0 2 67 0
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
PlayerSkill 0.0 2 100
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
PlayerSkill 0.0 2 10
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
Strumming 0.0 2 127
PlayerSkill 0.0 2 127
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
PlayerSkill 0.0 2 0
NoteOn 0.0 2 67 64
NoteOff 0.5 2 67 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 74 64
NoteOff 0.5 2 74 0
NoteOn 0.0 2 72 64
NoteOff 0.5 2 72 0
NoteOn 0.0 2 71 64
NoteOff 0.5 2 71 0
NoteOn 0.0 2 69 64
NoteOff 0.5 2 69 0
NoteOn 0.0 2 67 64
NoteOff 2.0 2 67 0

View File

@@ -1,64 +1,64 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
Maraca 0.000000 1
NoteOn 0.500000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
ControlChange 0.500000 1 1 1
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 1 40
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 1 80
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 1 120
NoteOn 0.000000 1 80 64.000000
Maraca 0.500000 1
ControlChange 0.000000 1 4 1
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 4 40
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 4 80
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 4 120
NoteOn 0.000000 1 80 64.000000
Maraca 0.500000 1
ControlChange 0.000000 1 11 1
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 4
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 16
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 64
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 128
NoteOn 0.000000 1 80 64.000000
Cabasa 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Sekere 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Tambourn 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Sleighbl 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Exit
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
Maraca 0.000000 1
NoteOn 0.500000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
ControlChange 0.500000 1 1 1
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 1 40
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 1 80
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 1 120
NoteOn 0.000000 1 80 64.000000
Maraca 0.500000 1
ControlChange 0.000000 1 4 1
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 4 40
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 4 80
NoteOn 0.000000 1 80 64.000000
ControlChange 0.500000 1 4 120
NoteOn 0.000000 1 80 64.000000
Maraca 0.500000 1
ControlChange 0.000000 1 11 1
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 4
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 16
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 64
NoteOn 0.000000 1 80 64.000000
ControlChange 1.000000 1 11 128
NoteOn 0.000000 1 80 64.000000
Cabasa 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Sekere 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Tambourn 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Sleighbl 0.500000 1
NoteOn 0.000000 1 80 10.000000
NoteOn 0.500000 1 80 50.000000
NoteOn 0.500000 1 80 90.000000
NoteOn 0.500000 1 80 127.000000
Exit

View File

@@ -1,47 +1,47 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 127.000000
NoteOff 0.475011 1 60 63.500000
NoteOn 0.025034 1 65 127.000000
NoteOff 0.475011 1 65 63.500000
NoteOn 0.025034 1 65 127.000000
NoteOff 0.124989 1 65 63.500000
NoteOn 0.124989 1 67 127.000000
NoteOff 0.124989 1 67 63.500000
NoteOn 0.124989 1 69 127.000000
NoteOff 0.237506 1 69 63.500000
NoteOn 0.012517 1 65 127.000000
NoteOff 0.124989 1 65 63.500000
NoteOn 0.124989 1 69 127.000000
NoteOff 0.124989 1 69 63.500000
NoteOn 0.124989 1 70 127.000000
NoteOff 0.237506 1 70 63.500000
NoteOn 0.012517 1 72 127.000000
NoteOff 0.475011 1 72 63.500000
NoteOn 0.025034 1 72 127.000000
NoteOff 0.237506 1 72 63.500000
NoteOn 0.012517 1 70 127.000000
NoteOff 0.124989 1 70 63.500000
NoteOn 0.124989 1 69 127.000000
NoteOff 0.475011 1 69 63.500000
NoteOn 0.025034 1 79 127.000000
NoteOff 0.124989 1 79 63.500000
NoteOn 0.124989 1 77 127.000000
NoteOff 0.124989 1 77 63.500000
NoteOn 0.124989 1 79 127.000000
NoteOff 0.475011 1 79 63.500000
NoteOn 0.025034 1 79 127.000000
NoteOff 0.475011 1 79 63.500000
NoteOn 0.025034 1 81 127.000000
NoteOff 0.475011 1 81 63.500000
NoteOn 0.025034 1 81 127.000000
NoteOff 0.124989 1 81 63.500000
NoteOn 0.124989 1 79 127.000000
NoteOff 0.124989 1 79 63.500000
NoteOn 0.124989 1 77 127.000000
ControlChange 0.000000 1 1 32.000000
NoteOff 0.475011 1 77 63.500000
NoteOn 0.025034 1 65 127.000000
NoteOff 0.475011 1 65 63.500000
NoteOn 0.025034 1 41 127.000000
NoteOff 0.950023 1 41 63.500000
NoteOff 0.050023 1 41 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 127.000000
NoteOff 0.475011 1 60 63.500000
NoteOn 0.025034 1 65 127.000000
NoteOff 0.475011 1 65 63.500000
NoteOn 0.025034 1 65 127.000000
NoteOff 0.124989 1 65 63.500000
NoteOn 0.124989 1 67 127.000000
NoteOff 0.124989 1 67 63.500000
NoteOn 0.124989 1 69 127.000000
NoteOff 0.237506 1 69 63.500000
NoteOn 0.012517 1 65 127.000000
NoteOff 0.124989 1 65 63.500000
NoteOn 0.124989 1 69 127.000000
NoteOff 0.124989 1 69 63.500000
NoteOn 0.124989 1 70 127.000000
NoteOff 0.237506 1 70 63.500000
NoteOn 0.012517 1 72 127.000000
NoteOff 0.475011 1 72 63.500000
NoteOn 0.025034 1 72 127.000000
NoteOff 0.237506 1 72 63.500000
NoteOn 0.012517 1 70 127.000000
NoteOff 0.124989 1 70 63.500000
NoteOn 0.124989 1 69 127.000000
NoteOff 0.475011 1 69 63.500000
NoteOn 0.025034 1 79 127.000000
NoteOff 0.124989 1 79 63.500000
NoteOn 0.124989 1 77 127.000000
NoteOff 0.124989 1 77 63.500000
NoteOn 0.124989 1 79 127.000000
NoteOff 0.475011 1 79 63.500000
NoteOn 0.025034 1 79 127.000000
NoteOff 0.475011 1 79 63.500000
NoteOn 0.025034 1 81 127.000000
NoteOff 0.475011 1 81 63.500000
NoteOn 0.025034 1 81 127.000000
NoteOff 0.124989 1 81 63.500000
NoteOn 0.124989 1 79 127.000000
NoteOff 0.124989 1 79 63.500000
NoteOn 0.124989 1 77 127.000000
ControlChange 0.000000 1 1 32.000000
NoteOff 0.475011 1 77 63.500000
NoteOn 0.025034 1 65 127.000000
NoteOff 0.475011 1 65 63.500000
NoteOn 0.025034 1 41 127.000000
NoteOff 0.950023 1 41 63.500000
NoteOff 0.050023 1 41 63.500000

View File

@@ -1,23 +1,23 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 48 88.899998
NoteOff 0.416009 1 48 63.500000
NoteOn 0.104036 1 53 101.600002
NoteOff 0.312018 1 53 63.500000
NoteOn 0.078005 1 56 63.500000
NoteOn 0.130023 1 55 101.600002
NoteOn 0.260000 1 51 76.200003
NoteOn 0.130023 1 48 38.100002
NoteOn 0.130023 1 53 101.600002
NoteOn 0.520000 1 58 127.000000
NoteOff 0.312018 1 58 63.500000
NoteOn 0.078005 1 63 76.200003
NoteOn 0.130023 1 62 114.299997
NoteOff 0.416009 1 62 63.500000
NoteOn 0.104036 1 58 127.000000
NoteOn 0.130023 1 60 50.800001
NoteOn 0.260000 1 56 88.899998
NoteOn 0.260000 1 56 63.500000
NoteOn 0.130023 1 63 76.200003
NoteOn 0.260000 1 41 127.000000
ControlChange 0.000000 1 1 127.000000
NoteOff 1.950023 1 41 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 48 88.899998
NoteOff 0.416009 1 48 63.500000
NoteOn 0.104036 1 53 101.600002
NoteOff 0.312018 1 53 63.500000
NoteOn 0.078005 1 56 63.500000
NoteOn 0.130023 1 55 101.600002
NoteOn 0.260000 1 51 76.200003
NoteOn 0.130023 1 48 38.100002
NoteOn 0.130023 1 53 101.600002
NoteOn 0.520000 1 58 127.000000
NoteOff 0.312018 1 58 63.500000
NoteOn 0.078005 1 63 76.200003
NoteOn 0.130023 1 62 114.299997
NoteOff 0.416009 1 62 63.500000
NoteOn 0.104036 1 58 127.000000
NoteOn 0.130023 1 60 50.800001
NoteOn 0.260000 1 56 88.899998
NoteOn 0.260000 1 56 63.500000
NoteOn 0.130023 1 63 76.200003
NoteOn 0.260000 1 41 127.000000
ControlChange 0.000000 1 1 127.000000
NoteOff 1.950023 1 41 63.500000

View File

@@ -1,56 +1,56 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 127.000000
NoteOff 0.126032 1 60 63.500000
NoteOn 0.014014 1 60 127.000000
NoteOff 0.252018 1 60 63.500000
NoteOn 0.028027 1 60 127.000000
NoteOff 0.252018 1 60 63.500000
NoteOn 0.028027 1 60 127.000000
NoteOff 0.126032 1 60 63.500000
NoteOn 0.014014 1 63 127.000000
NoteOff 0.126032 1 63 63.500000
NoteOn 0.014014 1 60 127.000000
NoteOff 0.126032 1 60 63.500000
NoteOn 0.014014 1 65 127.000000
NoteOff 0.252018 1 65 63.500000
NoteOn 0.028027 1 67 127.000000
NoteOff 0.756009 1 67 63.500000
NoteOn 0.084036 1 72 127.000000
NoteOff 0.252018 1 72 63.500000
NoteOn 0.028027 1 75 127.000000
NoteOff 0.126032 1 75 63.500000
NoteOn 0.014014 1 72 127.000000
NoteOff 0.378005 1 72 63.500000
NoteOn 0.042041 1 70 127.000000
NoteOff 0.126032 1 70 63.500000
NoteOn 0.014014 1 67 127.000000
NoteOff 0.126032 1 67 63.500000
NoteOn 0.014014 1 72 127.000000
NoteOff 0.252018 1 72 63.500000
NoteOn 0.028027 1 70 127.000000
NoteOff 0.252018 1 70 63.500000
NoteOn 0.028027 1 67 127.000000
NoteOff 0.126032 1 67 63.500000
NoteOn 0.014014 1 65 127.000000
NoteOff 0.126032 1 65 63.500000
NoteOn 0.014014 1 63 127.000000
NoteOff 0.252018 1 63 63.500000
NoteOn 0.028027 1 48 127.000000
NoteOff 0.126032 1 48 63.500000
NoteOn 0.014014 1 48 127.000000
NoteOff 0.252018 1 48 63.500000
NoteOn 0.028027 1 48 127.000000
NoteOff 0.252018 1 48 63.500000
NoteOn 0.028027 1 48 127.000000
NoteOff 0.126032 1 48 63.500000
NoteOn 0.014014 1 51 127.000000
NoteOff 0.126032 1 51 63.500000
NoteOn 0.014014 1 48 127.000000
NoteOff 0.126032 1 48 63.500000
NoteOn 0.014014 1 53 127.000000
NoteOff 0.252018 1 53 63.500000
NoteOn 0.028027 1 51 127.000000
NoteOff 1.260000 1 51 63.500000
NoteOn 0.140000 1 84 127.000000
NoteOff 0.630023 1 84 63.500000
NoteOff 0.070023 1 84 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 60 127.000000
NoteOff 0.126032 1 60 63.500000
NoteOn 0.014014 1 60 127.000000
NoteOff 0.252018 1 60 63.500000
NoteOn 0.028027 1 60 127.000000
NoteOff 0.252018 1 60 63.500000
NoteOn 0.028027 1 60 127.000000
NoteOff 0.126032 1 60 63.500000
NoteOn 0.014014 1 63 127.000000
NoteOff 0.126032 1 63 63.500000
NoteOn 0.014014 1 60 127.000000
NoteOff 0.126032 1 60 63.500000
NoteOn 0.014014 1 65 127.000000
NoteOff 0.252018 1 65 63.500000
NoteOn 0.028027 1 67 127.000000
NoteOff 0.756009 1 67 63.500000
NoteOn 0.084036 1 72 127.000000
NoteOff 0.252018 1 72 63.500000
NoteOn 0.028027 1 75 127.000000
NoteOff 0.126032 1 75 63.500000
NoteOn 0.014014 1 72 127.000000
NoteOff 0.378005 1 72 63.500000
NoteOn 0.042041 1 70 127.000000
NoteOff 0.126032 1 70 63.500000
NoteOn 0.014014 1 67 127.000000
NoteOff 0.126032 1 67 63.500000
NoteOn 0.014014 1 72 127.000000
NoteOff 0.252018 1 72 63.500000
NoteOn 0.028027 1 70 127.000000
NoteOff 0.252018 1 70 63.500000
NoteOn 0.028027 1 67 127.000000
NoteOff 0.126032 1 67 63.500000
NoteOn 0.014014 1 65 127.000000
NoteOff 0.126032 1 65 63.500000
NoteOn 0.014014 1 63 127.000000
NoteOff 0.252018 1 63 63.500000
NoteOn 0.028027 1 48 127.000000
NoteOff 0.126032 1 48 63.500000
NoteOn 0.014014 1 48 127.000000
NoteOff 0.252018 1 48 63.500000
NoteOn 0.028027 1 48 127.000000
NoteOff 0.252018 1 48 63.500000
NoteOn 0.028027 1 48 127.000000
NoteOff 0.126032 1 48 63.500000
NoteOn 0.014014 1 51 127.000000
NoteOff 0.126032 1 51 63.500000
NoteOn 0.014014 1 48 127.000000
NoteOff 0.126032 1 48 63.500000
NoteOn 0.014014 1 53 127.000000
NoteOff 0.252018 1 53 63.500000
NoteOn 0.028027 1 51 127.000000
NoteOff 1.260000 1 51 63.500000
NoteOn 0.140000 1 84 127.000000
NoteOff 0.630023 1 84 63.500000
NoteOff 0.070023 1 84 63.500000

View File

@@ -1,3 +1,3 @@
/* Howdy!! SKINI File, Perry Cook */
NoteOn 0.2 1 60 127.000000
NoteOff 0.6 1 60 63.500000
/* Howdy!! SKINI File, Perry Cook */
NoteOn 0.2 1 60 127.000000
NoteOff 0.6 1 60 63.500000

View File

@@ -1,38 +1,38 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 48 127.000000
NoteOff 0.380000 1 48 63.500000
NoteOn 0.020000 1 48 127.000000
NoteOff 0.100000 1 48 63.500000
NoteOn 0.100000 1 48 127.000000
NoteOff 0.100000 1 48 63.500000
NoteOn 0.100000 1 51 127.000000
NoteOff 0.100000 1 51 63.500000
NoteOn 0.100000 1 51 127.000000
NoteOff 0.570023 1 51 63.500000
NoteOn 0.030023 1 50 127.000000
NoteOff 0.100000 1 50 63.500000
NoteOn 0.100000 1 46 127.000000
NoteOff 0.200000 1 46 63.500000
NoteOn 0.200000 1 60 127.000000
NoteOff 0.950023 1 60 63.500000
NoteOn 0.050023 1 77 127.000000
NoteOff 0.190023 1 77 63.500000
NoteOn 0.010023 1 72 127.000000
NoteOff 0.190023 1 72 63.500000
NoteOn 0.010023 1 69 127.000000
NoteOff 0.100000 1 69 63.500000
NoteOn 0.100000 1 75 127.000000
NoteOff 0.380000 1 75 63.500000
NoteOn 0.020000 1 70 127.000000
NoteOff 0.100000 1 70 63.500000
NoteOn 0.100000 1 67 127.000000
NoteOff 0.100000 1 67 63.500000
NoteOn 0.100000 1 74 127.000000
NoteOff 0.380000 1 74 63.500000
NoteOn 0.020000 1 70 127.000000
NoteOff 0.100000 1 70 63.500000
NoteOn 0.100000 1 65 127.000000
NoteOff 0.100000 1 65 63.500000
NoteOn 0.100000 1 72 127.000000
ControlChange 0.000000 1 1 20.000000
NoteOff 1.000000 1 72 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 48 127.000000
NoteOff 0.380000 1 48 63.500000
NoteOn 0.020000 1 48 127.000000
NoteOff 0.100000 1 48 63.500000
NoteOn 0.100000 1 48 127.000000
NoteOff 0.100000 1 48 63.500000
NoteOn 0.100000 1 51 127.000000
NoteOff 0.100000 1 51 63.500000
NoteOn 0.100000 1 51 127.000000
NoteOff 0.570023 1 51 63.500000
NoteOn 0.030023 1 50 127.000000
NoteOff 0.100000 1 50 63.500000
NoteOn 0.100000 1 46 127.000000
NoteOff 0.200000 1 46 63.500000
NoteOn 0.200000 1 60 127.000000
NoteOff 0.950023 1 60 63.500000
NoteOn 0.050023 1 77 127.000000
NoteOff 0.190023 1 77 63.500000
NoteOn 0.010023 1 72 127.000000
NoteOff 0.190023 1 72 63.500000
NoteOn 0.010023 1 69 127.000000
NoteOff 0.100000 1 69 63.500000
NoteOn 0.100000 1 75 127.000000
NoteOff 0.380000 1 75 63.500000
NoteOn 0.020000 1 70 127.000000
NoteOff 0.100000 1 70 63.500000
NoteOn 0.100000 1 67 127.000000
NoteOff 0.100000 1 67 63.500000
NoteOn 0.100000 1 74 127.000000
NoteOff 0.380000 1 74 63.500000
NoteOn 0.020000 1 70 127.000000
NoteOff 0.100000 1 70 63.500000
NoteOn 0.100000 1 65 127.000000
NoteOff 0.100000 1 65 63.500000
NoteOn 0.100000 1 72 127.000000
ControlChange 0.000000 1 1 20.000000
NoteOff 1.000000 1 72 63.500000

View File

@@ -1,19 +1,19 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 65 63.500000
NoteOn 0.200000 1 73 101.600002
NoteOn 0.200000 1 65 76.200003
NoteOn 0.200000 1 75 114.299997
NoteOn 0.200000 1 65 63.500000
NoteOn 0.200000 1 72 76.200003
NoteOn 0.200000 1 73 114.299997
NoteOn 0.200000 1 65 50.800001
NoteOn 0.200000 1 72 114.299997
NoteOn 0.200000 1 65 63.500000
NoteOn 0.200000 1 70 114.299997
NoteOn 0.200000 1 65 50.800001
NoteOn 0.200000 1 85 127.000000
NoteOn 0.200000 1 65 76.200003
NoteOn 0.200000 1 80 76.200003
NoteOn 0.200000 1 46 127.000000
ControlChange 0.000000 1 1 120.000000
NoteOff 2.000000 1 46 63.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
NoteOn 0.000000 1 65 63.500000
NoteOn 0.200000 1 73 101.600002
NoteOn 0.200000 1 65 76.200003
NoteOn 0.200000 1 75 114.299997
NoteOn 0.200000 1 65 63.500000
NoteOn 0.200000 1 72 76.200003
NoteOn 0.200000 1 73 114.299997
NoteOn 0.200000 1 65 50.800001
NoteOn 0.200000 1 72 114.299997
NoteOn 0.200000 1 65 63.500000
NoteOn 0.200000 1 70 114.299997
NoteOn 0.200000 1 65 50.800001
NoteOn 0.200000 1 85 127.000000
NoteOn 0.200000 1 65 76.200003
NoteOn 0.200000 1 80 76.200003
NoteOn 0.200000 1 46 127.000000
ControlChange 0.000000 1 1 120.000000
NoteOff 2.000000 1 46 63.500000

View File

@@ -1,158 +1,158 @@
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
/**** BASS ****/
ControlChange 0.000000 1 1 20.000000
ControlChange 0.000000 1 4 8.000000
NoteOn 0.000000 1 40 64.000000
NoteOff 0.500000 1 40 64.500000
NoteOn 0.000000 1 44 74.000000
NoteOff 0.500000 1 44 64.500000
NoteOn 0.000000 1 47 84.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 52 94.000000
NoteOff 0.500000 1 52 64.500000
ControlChange 0.000000 1 4 0.000000
NoteOn 0.000000 1 51 84.000000
NoteOff 0.500000 1 51 64.500000
NoteOn 0.000000 1 47 74.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 42 54.000000
NoteOff 0.500000 1 42 64.500000
ControlChange 0.000000 1 4 20.000000
NoteOn 0.000000 1 40 64.000000
NoteOff 0.500000 1 40 64.500000
NoteOn 0.000000 1 44 74.000000
NoteOff 0.500000 1 44 64.500000
NoteOn 0.000000 1 47 84.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 52 94.000000
NoteOff 0.500000 1 52 64.500000
ControlChange 0.000000 1 4 12.000000
NoteOn 0.000000 1 51 84.000000
NoteOff 0.500000 1 51 64.500000
NoteOn 0.000000 1 47 74.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 42 54.000000
NoteOff 0.500000 1 42 64.500000
NoteOn 0.000000 1 40 64.000000
NoteOff 1.000000 1 40 64.500000
/**** TENOR ****/
ControlChange 0.000000 1 4 40.000000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 49 74.000000
NoteOff 0.500000 1 49 64.500000
NoteOn 0.000000 1 52 84.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 57 94.000000
NoteOff 0.500000 1 57 64.500000
ControlChange 0.000000 1 4 32.000000
NoteOn 0.000000 1 56 84.000000
NoteOff 0.500000 1 56 64.500000
NoteOn 0.000000 1 52 74.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 47 54.000000
NoteOff 0.500000 1 47 64.500000
ControlChange 0.000000 1 4 52.000000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 49 74.000000
NoteOff 0.500000 1 49 64.500000
NoteOn 0.000000 1 52 84.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 57 94.000000
NoteOff 0.500000 1 57 64.500000
ControlChange 0.000000 1 4 44.000000
NoteOn 0.000000 1 56 84.000000
NoteOff 0.500000 1 56 64.500000
NoteOn 0.000000 1 52 74.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 47 54.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 45 64.000000
NoteOff 1.000000 1 45 64.500000
/**** ALTO ****/
ControlChange 0.000000 1 4 72.000000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 54 74.000000
NoteOff 0.500000 1 54 64.500000
NoteOn 0.000000 1 57 84.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 62 94.000000
NoteOff 0.500000 1 62 64.500000
ControlChange 0.000000 1 4 64.000000
NoteOn 0.000000 1 61 84.000000
NoteOff 0.500000 1 61 64.500000
NoteOn 0.000000 1 57 74.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 55 64.000000
NoteOff 0.500000 1 55 64.500000
NoteOn 0.000000 1 52 54.000000
NoteOff 0.500000 1 52 64.500000
ControlChange 0.000000 1 4 84.000000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 54 74.000000
NoteOff 0.500000 1 54 64.500000
NoteOn 0.000000 1 57 84.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 62 94.000000
NoteOff 0.500000 1 62 64.500000
ControlChange 0.000000 1 4 76.000000
NoteOn 0.000000 1 61 84.000000
NoteOff 0.500000 1 61 64.500000
NoteOn 0.000000 1 57 74.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 55 64.000000
NoteOff 0.500000 1 55 64.500000
NoteOn 0.000000 1 52 54.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 50 64.000000
NoteOff 1.000000 1 50 64.500000
/**** SOPRANO ****/
ControlChange 0.000000 1 4 104.000000
NoteOn 0.000000 1 70 64.000000
NoteOff 0.500000 1 70 64.500000
NoteOn 0.000000 1 74 74.000000
NoteOff 0.500000 1 74 64.500000
NoteOn 0.000000 1 77 84.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 82 94.000000
NoteOff 0.500000 1 82 64.500000
ControlChange 0.000000 1 4 96.000000
NoteOn 0.000000 1 81 84.000000
NoteOff 0.500000 1 81 64.500000
NoteOn 0.000000 1 77 74.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 75 64.000000
NoteOff 0.500000 1 75 64.500000
NoteOn 0.000000 1 72 54.000000
NoteOff 0.500000 1 72 64.500000
ControlChange 0.000000 1 4 116.000000
NoteOn 0.000000 1 70 64.000000
NoteOff 0.500000 1 70 64.500000
NoteOn 0.000000 1 74 74.000000
NoteOff 0.500000 1 74 64.500000
NoteOn 0.000000 1 77 84.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 82 94.000000
NoteOff 0.500000 1 82 64.500000
ControlChange 0.000000 1 4 108.000000
NoteOn 0.000000 1 81 84.000000
NoteOff 0.500000 1 81 64.500000
NoteOn 0.000000 1 77 74.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 75 64.000000
NoteOff 0.500000 1 75 64.500000
NoteOn 0.000000 1 72 54.000000
NoteOff 0.500000 1 72 64.500000
NoteOn 0.000000 1 70 64.000000
NoteOff 1.000000 1 70 64.500000
/* Howdy!! ToolKit96cpp SKINI File, Perry Cook */
/**** BASS ****/
ControlChange 0.000000 1 1 20.000000
ControlChange 0.000000 1 4 8.000000
NoteOn 0.000000 1 40 64.000000
NoteOff 0.500000 1 40 64.500000
NoteOn 0.000000 1 44 74.000000
NoteOff 0.500000 1 44 64.500000
NoteOn 0.000000 1 47 84.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 52 94.000000
NoteOff 0.500000 1 52 64.500000
ControlChange 0.000000 1 4 0.000000
NoteOn 0.000000 1 51 84.000000
NoteOff 0.500000 1 51 64.500000
NoteOn 0.000000 1 47 74.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 42 54.000000
NoteOff 0.500000 1 42 64.500000
ControlChange 0.000000 1 4 20.000000
NoteOn 0.000000 1 40 64.000000
NoteOff 0.500000 1 40 64.500000
NoteOn 0.000000 1 44 74.000000
NoteOff 0.500000 1 44 64.500000
NoteOn 0.000000 1 47 84.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 52 94.000000
NoteOff 0.500000 1 52 64.500000
ControlChange 0.000000 1 4 12.000000
NoteOn 0.000000 1 51 84.000000
NoteOff 0.500000 1 51 64.500000
NoteOn 0.000000 1 47 74.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 42 54.000000
NoteOff 0.500000 1 42 64.500000
NoteOn 0.000000 1 40 64.000000
NoteOff 1.000000 1 40 64.500000
/**** TENOR ****/
ControlChange 0.000000 1 4 40.000000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 49 74.000000
NoteOff 0.500000 1 49 64.500000
NoteOn 0.000000 1 52 84.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 57 94.000000
NoteOff 0.500000 1 57 64.500000
ControlChange 0.000000 1 4 32.000000
NoteOn 0.000000 1 56 84.000000
NoteOff 0.500000 1 56 64.500000
NoteOn 0.000000 1 52 74.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 47 54.000000
NoteOff 0.500000 1 47 64.500000
ControlChange 0.000000 1 4 52.000000
NoteOn 0.000000 1 45 64.000000
NoteOff 0.500000 1 45 64.500000
NoteOn 0.000000 1 49 74.000000
NoteOff 0.500000 1 49 64.500000
NoteOn 0.000000 1 52 84.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 57 94.000000
NoteOff 0.500000 1 57 64.500000
ControlChange 0.000000 1 4 44.000000
NoteOn 0.000000 1 56 84.000000
NoteOff 0.500000 1 56 64.500000
NoteOn 0.000000 1 52 74.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 47 54.000000
NoteOff 0.500000 1 47 64.500000
NoteOn 0.000000 1 45 64.000000
NoteOff 1.000000 1 45 64.500000
/**** ALTO ****/
ControlChange 0.000000 1 4 72.000000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 54 74.000000
NoteOff 0.500000 1 54 64.500000
NoteOn 0.000000 1 57 84.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 62 94.000000
NoteOff 0.500000 1 62 64.500000
ControlChange 0.000000 1 4 64.000000
NoteOn 0.000000 1 61 84.000000
NoteOff 0.500000 1 61 64.500000
NoteOn 0.000000 1 57 74.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 55 64.000000
NoteOff 0.500000 1 55 64.500000
NoteOn 0.000000 1 52 54.000000
NoteOff 0.500000 1 52 64.500000
ControlChange 0.000000 1 4 84.000000
NoteOn 0.000000 1 50 64.000000
NoteOff 0.500000 1 50 64.500000
NoteOn 0.000000 1 54 74.000000
NoteOff 0.500000 1 54 64.500000
NoteOn 0.000000 1 57 84.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 62 94.000000
NoteOff 0.500000 1 62 64.500000
ControlChange 0.000000 1 4 76.000000
NoteOn 0.000000 1 61 84.000000
NoteOff 0.500000 1 61 64.500000
NoteOn 0.000000 1 57 74.000000
NoteOff 0.500000 1 57 64.500000
NoteOn 0.000000 1 55 64.000000
NoteOff 0.500000 1 55 64.500000
NoteOn 0.000000 1 52 54.000000
NoteOff 0.500000 1 52 64.500000
NoteOn 0.000000 1 50 64.000000
NoteOff 1.000000 1 50 64.500000
/**** SOPRANO ****/
ControlChange 0.000000 1 4 104.000000
NoteOn 0.000000 1 70 64.000000
NoteOff 0.500000 1 70 64.500000
NoteOn 0.000000 1 74 74.000000
NoteOff 0.500000 1 74 64.500000
NoteOn 0.000000 1 77 84.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 82 94.000000
NoteOff 0.500000 1 82 64.500000
ControlChange 0.000000 1 4 96.000000
NoteOn 0.000000 1 81 84.000000
NoteOff 0.500000 1 81 64.500000
NoteOn 0.000000 1 77 74.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 75 64.000000
NoteOff 0.500000 1 75 64.500000
NoteOn 0.000000 1 72 54.000000
NoteOff 0.500000 1 72 64.500000
ControlChange 0.000000 1 4 116.000000
NoteOn 0.000000 1 70 64.000000
NoteOff 0.500000 1 70 64.500000
NoteOn 0.000000 1 74 74.000000
NoteOff 0.500000 1 74 64.500000
NoteOn 0.000000 1 77 84.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 82 94.000000
NoteOff 0.500000 1 82 64.500000
ControlChange 0.000000 1 4 108.000000
NoteOn 0.000000 1 81 84.000000
NoteOff 0.500000 1 81 64.500000
NoteOn 0.000000 1 77 74.000000
NoteOff 0.500000 1 77 64.500000
NoteOn 0.000000 1 75 64.000000
NoteOff 0.500000 1 75 64.500000
NoteOn 0.000000 1 72 54.000000
NoteOff 0.500000 1 72 64.500000
NoteOn 0.000000 1 70 64.000000
NoteOff 1.000000 1 70 64.500000

View File

@@ -168,7 +168,7 @@ proc changePress {value} {
proc changePitch {value} {
global outID
puts $outID [format "PitchBend 0.0 1 %.3f" $value]
puts $outID [format "PitchChange 0.0 1 %.3f" $value]
flush $outID
}

View File

@@ -1,233 +0,0 @@
# Tcl/Tk Bowed Bar Model GUI for the Synthesis Toolkit (STK)
set press 64.0
set pitch 64.0
set cont1 127.0
set cont2 20.0
set cont4 127.0
set cont11 0.0
set outID "stdout"
set commtype "stdout"
set struckbow 0
# Configure main window
wm title . "STK Bowed Bar Controller"
wm iconname . "bowedbar"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
frame .leftsid -bg black
proc myExit {} {
global pitch outID
puts $outID [format "NoteOff -1.0 1 %f 127" $pitch ]
flush $outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn -1.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc noteOff {pitchVal pressVal} {
global outID
puts $outID [format "NoteOff -1.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc patchChange {value} {
global outID press cont1 cont4 cont11
set patch $value
puts $outID [format "ProgramChange -1.0 1 %i" $value]
flush $outID
set cont1 64.0
set cont4 64.0
set cont11 64.0
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %i %f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID
puts $outID [format "AfterTouch -1.0 1 %f" $value]
flush $outID
}
proc changePitch {value} {
global outID
puts $outID [format "PitchBend -1.0 1 %.3f" $value]
flush $outID
}
proc activateVel {} {
global pitch
noteOn $pitch 127
printWhatz "ControlChange -1.0 1 " 65 0
}
# Configure sliders
frame .press -bg grey66
button .press.pos -text Pos. -bg grey66 \
-command {printWhatz "ControlChange -1.0 1 " 65 127}
button .press.vel -text Vel. -bg grey66 \
-command activateVel
scale .press.bPressure -from 0 -to 128 -length 200 \
-command {changePress } -variable press\
-orient horizontal -label "Pos on Bow / Vel of Bow" \
-tickinterval 32 -showvalue true -bg grey66
scale .pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
scale .cont2 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 2} \
-orient horizontal -label "Bowing Pressure" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont2
scale .cont4 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 4} \
-orient horizontal -label "Strike/Bow Position" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .cont11 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 11} \
-orient horizontal -label "Integration" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11
scale .reson -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 1} \
-orient horizontal -label "Mode Resonance" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont1
. config -bg grey20
frame .bowstruk -bg black
radiobutton .bowstruk.bowed -text Bowed -bg grey66 \
-command {printWhatz "ControlChange -1.0 1 " 64 127} \
-value 1 -variable struckbow
radiobutton .bowstruk.struck -text Struck -bg grey66 \
-command {printWhatz "ControlChange -1.0 1 " 64 0} \
-value 0 -variable struckbow
pack .press.pos -side left
pack .press.bPressure -side left
pack .press.vel -side left
pack .press -padx 10 -pady 10
pack .pitch -padx 10 -pady 10
pack .cont2 -padx 10 -pady 10
pack .cont4 -padx 10 -pady 10
pack .cont11 -padx 10 -pady 10
pack .reson -padx 10 -pady 10
pack .bowstruk.bowed -side left -padx 5
pack .bowstruk.struck -side left -padx 5
pack .bowstruk -pady 10
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
button .noteOn.off -text NoteOff -bg grey66 -command { noteOff $pitch 127.0 }
button .noteOn.exit -text "Exit Program" -bg grey66 -command myExit
pack .noteOn.on -side left -padx 5
pack .noteOn.off -side left -padx 5 -pady 10
pack .noteOn.exit -side left -padx 5 -pady 10
pack .noteOn -pady 10
bind all <KeyPress> {
noteOn $pitch $press
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,177 +1,177 @@
# Tcl/Tk Drum GUI for the Synthesis Toolkit (STK)
# Set initial control values
set press 127
set outID "stdout"
set commtype "stdout"
# Turn down the reverb
puts $outID "ControlChange 0.0 1 44.0 0.0"
# Configure main window
wm title . "STK Drum Controller"
wm iconname . "drum"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure slider
scale .bPressure -from 0 -to 128 -length 100 \
-command {changePress } -variable press\
-orient horizontal -label "Velocity" \
-tickinterval 64 -showvalue true -bg grey66
pack .bPressure -pady 5 -padx 5
# Configure buttons
frame .buttons -bg black
frame .buttons.left -bg black
frame .buttons.right -bg black
button .buttons.left.bass -text Bass -bg grey66 \
-command { playDrum 36 } -width 7
button .buttons.left.snare -text Snare -bg grey66 \
-command { playDrum 38 } -width 7
button .buttons.left.tomlo -text LoTom -bg grey66 \
-command { playDrum 41 } -width 7
button .buttons.left.tommid -text MidTom -bg grey66 \
-command { playDrum 45 } -width 7
button .buttons.left.tomhi -text HiTom -bg grey66 \
-command { playDrum 50 } -width 7
button .buttons.left.homer -text Homer -bg grey66 \
-command { playDrum 90 } -width 7
button .buttons.right.hat -text Hat -bg grey66 \
-command { playDrum 42 } -width 7
button .buttons.right.ride -text Ride -bg grey66 \
-command { playDrum 46 } -width 7
button .buttons.right.crash -text Crash -bg grey66 \
-command { playDrum 49 } -width 7
button .buttons.right.cowbel -text CowBel -bg grey66 \
-command { playDrum 56 } -width 7
button .buttons.right.tamb -text Tamb -bg grey66 \
-command { playDrum 54 } -width 7
button .buttons.right.homer -text Homer -bg grey66 \
-command { playDrum 90 } -width 7
pack .buttons.left.bass -pady 5
pack .buttons.left.snare -pady 5
pack .buttons.left.tomlo -pady 5
pack .buttons.left.tommid -pady 5
pack .buttons.left.tomhi -pady 5
pack .buttons.left.homer -pady 5
pack .buttons.right.hat -pady 5
pack .buttons.right.ride -pady 5
pack .buttons.right.crash -pady 5
pack .buttons.right.cowbel -pady 5
pack .buttons.right.tamb -pady 5
pack .buttons.right.homer -pady 5
pack .buttons.left -side left -pady 5 -padx 5
pack .buttons.right -side right -pady 5 -padx 5
pack .buttons -pady 5 -padx 5
# Configure exit button
button .exit -text "Exit Program" -bg grey66 -command myExit
pack .exit -side bottom -pady 20
#bind all <KeyPress> {
bind . <KeyPress> {
noteOn $pitch $press
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc playDrum {value} {
global press
global outID
puts $outID [format "NoteOn 0.0 1 %i %f" $value $press]
flush $outID
}
proc changePress {value} {
global press
set press $value
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}
# Tcl/Tk Drum GUI for the Synthesis Toolkit (STK)
# Set initial control values
set press 127
set outID "stdout"
set commtype "stdout"
# Turn down the reverb
puts $outID "ControlChange 0.0 1 44.0 0.0"
# Configure main window
wm title . "STK Drum Controller"
wm iconname . "drum"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure slider
scale .bPressure -from 0 -to 128 -length 100 \
-command {changePress } -variable press\
-orient horizontal -label "Velocity" \
-tickinterval 64 -showvalue true -bg grey66
pack .bPressure -pady 5 -padx 5
# Configure buttons
frame .buttons -bg black
frame .buttons.left -bg black
frame .buttons.right -bg black
button .buttons.left.bass -text Bass -bg grey66 \
-command { playDrum 36 } -width 7
button .buttons.left.snare -text Snare -bg grey66 \
-command { playDrum 38 } -width 7
button .buttons.left.tomlo -text LoTom -bg grey66 \
-command { playDrum 41 } -width 7
button .buttons.left.tommid -text MidTom -bg grey66 \
-command { playDrum 45 } -width 7
button .buttons.left.tomhi -text HiTom -bg grey66 \
-command { playDrum 50 } -width 7
button .buttons.left.homer -text Homer -bg grey66 \
-command { playDrum 90 } -width 7
button .buttons.right.hat -text Hat -bg grey66 \
-command { playDrum 42 } -width 7
button .buttons.right.ride -text Ride -bg grey66 \
-command { playDrum 46 } -width 7
button .buttons.right.crash -text Crash -bg grey66 \
-command { playDrum 49 } -width 7
button .buttons.right.cowbel -text CowBel -bg grey66 \
-command { playDrum 56 } -width 7
button .buttons.right.tamb -text Tamb -bg grey66 \
-command { playDrum 54 } -width 7
button .buttons.right.homer -text Homer -bg grey66 \
-command { playDrum 90 } -width 7
pack .buttons.left.bass -pady 5
pack .buttons.left.snare -pady 5
pack .buttons.left.tomlo -pady 5
pack .buttons.left.tommid -pady 5
pack .buttons.left.tomhi -pady 5
pack .buttons.left.homer -pady 5
pack .buttons.right.hat -pady 5
pack .buttons.right.ride -pady 5
pack .buttons.right.crash -pady 5
pack .buttons.right.cowbel -pady 5
pack .buttons.right.tamb -pady 5
pack .buttons.right.homer -pady 5
pack .buttons.left -side left -pady 5 -padx 5
pack .buttons.right -side right -pady 5 -padx 5
pack .buttons -pady 5 -padx 5
# Configure exit button
button .exit -text "Exit Program" -bg grey66 -command myExit
pack .exit -side bottom -pady 20
#bind all <KeyPress> {
bind . <KeyPress> {
noteOn $pitch $press
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc playDrum {value} {
global press
global outID
puts $outID [format "NoteOn 0.0 1 %i %f" $value $press]
flush $outID
}
proc changePress {value} {
global press
set press $value
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}

View File

@@ -1,264 +1,264 @@
set pitch 64.0
set press 64.0
set cont1 0.0
set cont2 64.0
set cont4 64.0
set cont11 64.0
set cont44 24.0
set outID "stdout"
set commtype "stdout"
set preset 0
# Configure main window
wm title . "STK Modal Bar GUI"
wm iconname . "modal"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
# Configure preset radio buttons
frame .radio1 -bg black
frame .radio2 -bg black
radiobutton .radio1.0 -text Marimba -bg grey66 \
-variable preset -value 0 -command { patchChange $preset }
radiobutton .radio1.1 -text Vibraphone -bg grey66 \
-variable preset -value 1 -command { patchChange $preset }
radiobutton .radio1.2 -text Agogo -bg grey66 \
-variable preset -value 2 -command { patchChange $preset }
radiobutton .radio1.3 -text Wood1 -bg grey66 \
-variable preset -value 3 -command { patchChange $preset }
radiobutton .radio2.4 -text Reso -bg grey66 \
-variable preset -value 4 -command { patchChange $preset }
radiobutton .radio2.5 -text Wood2 -bg grey66 \
-variable preset -value 5 -command { patchChange $preset }
radiobutton .radio2.6 -text Beats -bg grey66 \
-variable preset -value 6 -command { patchChange $preset }
radiobutton .radio2.7 -text 2Fix -bg grey66 \
-variable preset -value 7 -command { patchChange $preset }
radiobutton .radio2.8 -text Clump -bg grey66 \
-variable preset -value 8 -command { patchChange $preset }
pack .radio1.0 -side left -padx 5
pack .radio1.1 -side left -padx 5 -pady 10
pack .radio1.2 -side left -padx 5 -pady 10
pack .radio1.3 -side left -padx 5 -pady 10
pack .radio1
pack .radio2.4 -side left -padx 5
pack .radio2.5 -side left -padx 5
pack .radio2.6 -side left -padx 5 -pady 10
pack .radio2.7 -side left -padx 5 -pady 10
pack .radio2.8 -side left -padx 5 -pady 10
pack .radio2
# Configure bitmap display
if {[file isdirectory bitmaps]} {
set bitmappath bitmaps
} else {
set bitmappath tcl/bitmaps
}
button .pretty -bitmap @$bitmappath/KModal.xbm \
-background white -foreground black
pack .pretty -padx 5 -pady 10
# Configure "note-on" buttons
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
button .noteOn.off -text NoteOff -bg grey66 -command { noteOff $pitch 127.0 }
button .noteOn.exit -text "Exit Program" -bg grey66 -command myExit
pack .noteOn.on -side left -padx 5
pack .noteOn.off -side left -padx 5 -pady 10
pack .noteOn.exit -side left -padx 5 -pady 10
pack .noteOn
# Configure reverb slider
frame .reverb -bg black
scale .reverb.mix -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 44} \
-orient horizontal -label "Reverb Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont44
pack .reverb.mix -padx 10 -pady 10
pack .reverb
# Configure sliders
frame .left -bg black
frame .right -bg black
scale .left.bPressure -from 0 -to 128 -length 200 \
-command {changePress } -variable press \
-orient horizontal -label "Strike Vigor" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.cont2 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 2} \
-orient horizontal -label "Stick Hardness" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont2
scale .right.cont4 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 4} \
-orient horizontal -label "Stick Position" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont11 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 11} \
-orient horizontal -label "Disabled" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11 -state disabled
scale .right.cont1 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 1} \
-orient horizontal -label "Direct Stick Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont1
pack .left.bPressure -padx 10 -pady 10
pack .left.pitch -padx 10 -pady 10
pack .left.cont2 -padx 10 -pady 10
pack .right.cont4 -padx 10 -pady 10
pack .right.cont11 -padx 10 -pady 10
pack .right.cont1 -padx 10 -pady 10
pack .left -side left
pack .right -side right
#bind all <KeyPress> {
bind . <KeyPress> {
noteOn $pitch $press
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn 0.0 1 %3.2f %3.2f" $pitchVal $pressVal]
flush $outID
}
proc noteOff {pitchVal pressVal} {
global outID
puts $outID [format "NoteOff 0.0 1 %3.2f %3.2f" $pitchVal $pressVal]
flush $outID
}
proc patchChange {value} {
global outID preset
if {$preset == 1} {
.right.cont11 config -state normal -label "Vibrato Gain"
} else {
.right.cont11 config -state disabled -label "Disabled"
}
printWhatz "ControlChange 0.0 1 " 16 $preset
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %2i %3.2f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID
puts $outID [format "AfterTouch 0.0 1 %3.2f" $value]
flush $outID
}
proc changePitch {value} {
global outID
puts $outID [format "PitchBend 0.0 1 %3.2f" $value]
flush $outID
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID commtype d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}
set pitch 64.0
set press 64.0
set cont1 0.0
set cont2 64.0
set cont4 64.0
set cont11 64.0
set cont44 24.0
set outID "stdout"
set commtype "stdout"
set preset 0
# Configure main window
wm title . "STK Modal Bar Interface"
wm iconname . "modal"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
# Configure preset radio buttons
frame .radio1 -bg black
frame .radio2 -bg black
radiobutton .radio1.0 -text Marimba -bg grey66 \
-variable preset -value 0 -command { patchChange $preset }
radiobutton .radio1.1 -text Vibraphone -bg grey66 \
-variable preset -value 1 -command { patchChange $preset }
radiobutton .radio1.2 -text Agogo -bg grey66 \
-variable preset -value 2 -command { patchChange $preset }
radiobutton .radio1.3 -text Wood1 -bg grey66 \
-variable preset -value 3 -command { patchChange $preset }
radiobutton .radio2.4 -text Reso -bg grey66 \
-variable preset -value 4 -command { patchChange $preset }
radiobutton .radio2.5 -text Wood2 -bg grey66 \
-variable preset -value 5 -command { patchChange $preset }
radiobutton .radio2.6 -text Beats -bg grey66 \
-variable preset -value 6 -command { patchChange $preset }
radiobutton .radio2.7 -text 2Fix -bg grey66 \
-variable preset -value 7 -command { patchChange $preset }
radiobutton .radio2.8 -text Clump -bg grey66 \
-variable preset -value 8 -command { patchChange $preset }
pack .radio1.0 -side left -padx 5
pack .radio1.1 -side left -padx 5 -pady 10
pack .radio1.2 -side left -padx 5 -pady 10
pack .radio1.3 -side left -padx 5 -pady 10
pack .radio1
pack .radio2.4 -side left -padx 5
pack .radio2.5 -side left -padx 5
pack .radio2.6 -side left -padx 5 -pady 10
pack .radio2.7 -side left -padx 5 -pady 10
pack .radio2.8 -side left -padx 5 -pady 10
pack .radio2
# Configure bitmap display
if {[file isdirectory bitmaps]} {
set bitmappath bitmaps
} else {
set bitmappath tcl/bitmaps
}
button .pretty -bitmap @$bitmappath/KModal.xbm \
-background white -foreground black
pack .pretty -padx 5 -pady 10
# Configure "note-on" buttons
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
button .noteOn.off -text NoteOff -bg grey66 -command { noteOff $pitch 127.0 }
button .noteOn.exit -text "Exit Program" -bg grey66 -command myExit
pack .noteOn.on -side left -padx 5
pack .noteOn.off -side left -padx 5 -pady 10
pack .noteOn.exit -side left -padx 5 -pady 10
pack .noteOn
# Configure reverb slider
frame .reverb -bg black
scale .reverb.mix -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 44} \
-orient horizontal -label "Reverb Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont44
pack .reverb.mix -padx 10 -pady 10
pack .reverb
# Configure sliders
frame .left -bg black
frame .right -bg black
scale .left.bPressure -from 0 -to 128 -length 200 \
-command {changePress } -variable press \
-orient horizontal -label "Strike Vigor" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.cont2 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 2} \
-orient horizontal -label "Stick Hardness" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont2
scale .right.cont4 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 4} \
-orient horizontal -label "Stick Position" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont11 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 11} \
-orient horizontal -label "Disabled" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11 -state disabled
scale .right.cont1 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 1} \
-orient horizontal -label "Direct Stick Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont1
pack .left.bPressure -padx 10 -pady 10
pack .left.pitch -padx 10 -pady 10
pack .left.cont2 -padx 10 -pady 10
pack .right.cont4 -padx 10 -pady 10
pack .right.cont11 -padx 10 -pady 10
pack .right.cont1 -padx 10 -pady 10
pack .left -side left
pack .right -side right
#bind all <KeyPress> {
bind . <KeyPress> {
noteOn $pitch $press
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn 0.0 1 %3.2f %3.2f" $pitchVal $pressVal]
flush $outID
}
proc noteOff {pitchVal pressVal} {
global outID
puts $outID [format "NoteOff 0.0 1 %3.2f %3.2f" $pitchVal $pressVal]
flush $outID
}
proc patchChange {value} {
global outID preset
if {$preset == 1} {
.right.cont11 config -state normal -label "Vibrato Gain"
} else {
.right.cont11 config -state disabled -label "Disabled"
}
printWhatz "ControlChange 0.0 1 " 16 $preset
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %2i %3.2f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID
puts $outID [format "AfterTouch 0.0 1 %3.2f" $value]
flush $outID
}
proc changePitch {value} {
global outID
puts $outID [format "PitchChange 0.0 1 %3.2f" $value]
flush $outID
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID commtype d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}

View File

@@ -1,445 +1,445 @@
# Tcl/Tk Physical Model GUI for the Synthesis Toolkit (STK)
# Set initial control values
set pitch 64.0
set press 64.0
set cont1 0.0
set cont2 20.0
set cont4 64.0
set cont11 64.0
set cont44 24.0
set outID "stdout"
set commtype "stdout"
set oldpatch 0
set patchnum 0
# Configure main window
wm title . "STK Physical Model Controller"
wm iconname . "physical"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure patch change buttons
frame .radios1 -bg black
frame .radios2 -bg black
radiobutton .radios1.clar -text "Clarinet" -bg grey66 \
-variable patchnum -value 0 -command { patchChange $patchnum }
radiobutton .radios1.hole -text "BlowHole" -bg grey66 \
-variable patchnum -value 1 -command { patchChange $patchnum }
radiobutton .radios1.fony -text "Saxofony" -bg grey66 \
-variable patchnum -value 2 -command { patchChange $patchnum }
radiobutton .radios1.flut -text "Flute" -bg grey66 \
-variable patchnum -value 3 -command { patchChange $patchnum }
radiobutton .radios1.bras -text "Brass" -bg grey66 \
-variable patchnum -value 4 -command { patchChange $patchnum }
radiobutton .radios1.botl -text "BlowBotl" -bg grey66 \
-variable patchnum -value 5 -command { patchChange $patchnum }
radiobutton .radios2.bowd -text "Bowed" -bg grey66 \
-variable patchnum -value 6 -command { patchChange $patchnum }
radiobutton .radios2.pluk -text "Plucked" -bg grey66 \
-variable patchnum -value 7 -command { patchChange $patchnum }
radiobutton .radios2.karp -text "StifKarp" -bg grey66 \
-variable patchnum -value 8 -command { patchChange $patchnum }
radiobutton .radios2.sitr -text "Sitar" -bg grey66 \
-variable patchnum -value 9 -command { patchChange $patchnum }
radiobutton .radios2.mand -text "Mandolin" -bg grey66 \
-variable patchnum -value 10 -command { patchChange $patchnum }
pack .radios1.clar -side left -padx 5 -pady 10
pack .radios1.hole -side left -padx 5 -pady 10
pack .radios1.fony -side left -padx 5 -pady 10
pack .radios1.flut -side left -padx 5 -pady 10
pack .radios1.bras -side left -padx 5 -pady 10
pack .radios1.botl -side left -padx 5 -pady 10
pack .radios2.bowd -side left -padx 5 -pady 10
pack .radios2.pluk -side left -padx 5 -pady 10
pack .radios2.karp -side left -padx 5 -pady 10
pack .radios2.sitr -side left -padx 5 -pady 10
pack .radios2.mand -side left -padx 5 -pady 10
pack .radios1
pack .radios2
# Configure bitmap display
if {[file isdirectory bitmaps]} {
set bitmappath bitmaps
} else {
set bitmappath tcl/bitmaps
}
button .pretty -bitmap @$bitmappath/Klar.xbm \
-background white -foreground black
pack .pretty -padx 5 -pady 10
# Configure "note-on" buttons
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
button .noteOn.off -text NoteOff -bg grey66 -command { noteOff $pitch 127.0 }
button .noteOn.exit -text "Exit Program" -bg grey66 -command myExit
pack .noteOn.on -side left -padx 5
pack .noteOn.off -side left -padx 5 -pady 10
pack .noteOn.exit -side left -padx 5 -pady 10
pack .noteOn
# Configure reverb slider
frame .reverb -bg black
scale .reverb.mix -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 44} \
-orient horizontal -label "Reverb Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont44
pack .reverb.mix -padx 10 -pady 10
pack .reverb
# Configure sliders
frame .left -bg black
frame .right -bg black
scale .left.bPressure -from 0 -to 128 -length 200 \
-command {changePress } -variable press \
-orient horizontal -label "Breath Pressure" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.cont2 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 2} \
-orient horizontal -label "Reed Stiffness" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont2
scale .right.cont4 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 4} \
-orient horizontal -label "Breath Noise" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont11 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 11} \
-orient horizontal -label "Vibrato Rate" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11
scale .right.cont1 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 1} \
-orient horizontal -label "Vibrato Amount" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont1
pack .left.bPressure -padx 10 -pady 10
pack .left.pitch -padx 10 -pady 10
pack .left.cont2 -padx 10 -pady 10
pack .right.cont4 -padx 10 -pady 10
pack .right.cont11 -padx 10 -pady 10
pack .right.cont1 -padx 10 -pady 10
pack .left -side left
pack .right -side right
#bind all <KeyPress> {
bind . <KeyPress> {
noteOn $pitch $press
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc noteOff {pitchVal pressVal} {
global outID
puts $outID [format "NoteOff 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc patchChange {value} {
global outID bitmappath cont1 cont2 cont4 cont11 pitch oldpatch
puts $outID [format "ProgramChange 0.0 1 %i" $value]
if {$value==0} { # Clarinet
.pretty config -bitmap @$bitmappath/Klar.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Reed Stiffness"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont2 64.0
set cont4 20.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==1} { # BlowHole
.pretty config -bitmap @$bitmappath/Klar.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Reed Stiffness"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Tonehole Openness"
.right.cont1 config -state normal -label "Register Vent Openness"
set cont1 0.0
set cont2 64.0
set cont4 20.0
set cont11 0.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==2} { # Saxofony
.pretty config -bitmap @$bitmappath/prcFunny.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Reed Stiffness"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Blow Position"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont2 64.0
set cont4 20.0
set cont11 26.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==3} { # Flute
.pretty config -bitmap @$bitmappath/KFloot.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Embouchure Adjustment"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont2 64.0
set cont4 20.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==4} { # Brass
.pretty config -bitmap @$bitmappath/KHose.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Lip Adjustment"
.right.cont4 config -state normal -label "Slide Length"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 0.0
set cont2 64.0
set cont4 20.0
set cont11 64.0
set press 80.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
puts $outID [format "NoteOn 0.0 1 %3.2f %3.2f" $pitch $press]
}
if {$value==5} { # Bottle
.pretty config -bitmap @$bitmappath/prcFunny.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont4 20.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==6} { # Bowed String
.pretty config -bitmap @$bitmappath/KFiddl.xbm
.left.bPressure config -state normal -label "Volume"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Bow Pressure"
.right.cont4 config -state normal -label "Bow Position"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 4.0
set cont2 64.0
set cont4 64.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==7} { # Yer Basic Pluck
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Pluck Strength"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state disabled -label "Disabled"
.right.cont11 config -state disabled -label "Disabled"
.right.cont1 config -state disabled -label "Disabled"
}
if {$value==8} { # Stiff String
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Pluck Strength"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state normal -label "Pickup Position"
.right.cont11 config -state normal -label "String Sustain"
.right.cont1 config -state normal -label "String Stretch"
set cont1 10.0
set cont4 64.0
set cont11 96.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==9} { # Sitar
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Pluck Strength"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state disabled -label "Disabled"
.right.cont11 config -state disabled -label "Disabled"
.right.cont1 config -state disabled -label "Disabled"
}
if {$value==10} { # Mandolin
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Microphone Position and Gain"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Mandolin Body Size"
.right.cont4 config -state normal -label "Pick Position"
.right.cont11 config -state normal -label "String Sustain"
.right.cont1 config -state normal -label "String Detune"
set cont1 10.0
set cont2 64.0
set cont4 64.0
set cont11 96.0
set press 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
changePress $press
}
set oldpatch $value
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %i %f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID patchnum
if { $patchnum<7 || $patchnum>9 } {
puts $outID [format "AfterTouch 0.0 1 %f" $value]
flush $outID
}
}
proc changePitch {value} {
global outID
puts $outID [format "PitchBend 0.0 1 %.3f" $value]
flush $outID
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}
# Tcl/Tk Physical Model GUI for the Synthesis Toolkit (STK)
# Set initial control values
set pitch 64.0
set press 64.0
set cont1 0.0
set cont2 20.0
set cont4 64.0
set cont11 64.0
set cont44 24.0
set outID "stdout"
set commtype "stdout"
set oldpatch 0
set patchnum 0
# Configure main window
wm title . "STK Physical Model Controller"
wm iconname . "physical"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure patch change buttons
frame .radios1 -bg black
frame .radios2 -bg black
radiobutton .radios1.clar -text "Clarinet" -bg grey66 \
-variable patchnum -value 0 -command { patchChange $patchnum }
radiobutton .radios1.hole -text "BlowHole" -bg grey66 \
-variable patchnum -value 1 -command { patchChange $patchnum }
radiobutton .radios1.fony -text "Saxofony" -bg grey66 \
-variable patchnum -value 2 -command { patchChange $patchnum }
radiobutton .radios1.flut -text "Flute" -bg grey66 \
-variable patchnum -value 3 -command { patchChange $patchnum }
radiobutton .radios1.bras -text "Brass" -bg grey66 \
-variable patchnum -value 4 -command { patchChange $patchnum }
radiobutton .radios1.botl -text "BlowBotl" -bg grey66 \
-variable patchnum -value 5 -command { patchChange $patchnum }
radiobutton .radios2.bowd -text "Bowed" -bg grey66 \
-variable patchnum -value 6 -command { patchChange $patchnum }
radiobutton .radios2.pluk -text "Plucked" -bg grey66 \
-variable patchnum -value 7 -command { patchChange $patchnum }
radiobutton .radios2.karp -text "StifKarp" -bg grey66 \
-variable patchnum -value 8 -command { patchChange $patchnum }
radiobutton .radios2.sitr -text "Sitar" -bg grey66 \
-variable patchnum -value 9 -command { patchChange $patchnum }
radiobutton .radios2.mand -text "Mandolin" -bg grey66 \
-variable patchnum -value 10 -command { patchChange $patchnum }
pack .radios1.clar -side left -padx 5 -pady 10
pack .radios1.hole -side left -padx 5 -pady 10
pack .radios1.fony -side left -padx 5 -pady 10
pack .radios1.flut -side left -padx 5 -pady 10
pack .radios1.bras -side left -padx 5 -pady 10
pack .radios1.botl -side left -padx 5 -pady 10
pack .radios2.bowd -side left -padx 5 -pady 10
pack .radios2.pluk -side left -padx 5 -pady 10
pack .radios2.karp -side left -padx 5 -pady 10
pack .radios2.sitr -side left -padx 5 -pady 10
pack .radios2.mand -side left -padx 5 -pady 10
pack .radios1
pack .radios2
# Configure bitmap display
if {[file isdirectory bitmaps]} {
set bitmappath bitmaps
} else {
set bitmappath tcl/bitmaps
}
button .pretty -bitmap @$bitmappath/Klar.xbm \
-background white -foreground black
pack .pretty -padx 5 -pady 10
# Configure "note-on" buttons
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
button .noteOn.off -text NoteOff -bg grey66 -command { noteOff $pitch 127.0 }
button .noteOn.exit -text "Exit Program" -bg grey66 -command myExit
pack .noteOn.on -side left -padx 5
pack .noteOn.off -side left -padx 5 -pady 10
pack .noteOn.exit -side left -padx 5 -pady 10
pack .noteOn
# Configure reverb slider
frame .reverb -bg black
scale .reverb.mix -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 44} \
-orient horizontal -label "Reverb Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont44
pack .reverb.mix -padx 10 -pady 10
pack .reverb
# Configure sliders
frame .left -bg black
frame .right -bg black
scale .left.bPressure -from 0 -to 128 -length 200 \
-command {changePress } -variable press \
-orient horizontal -label "Breath Pressure" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.cont2 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 2} \
-orient horizontal -label "Reed Stiffness" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont2
scale .right.cont4 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 4} \
-orient horizontal -label "Breath Noise" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont11 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 11} \
-orient horizontal -label "Vibrato Rate" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11
scale .right.cont1 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange 0.0 1 " 1} \
-orient horizontal -label "Vibrato Amount" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont1
pack .left.bPressure -padx 10 -pady 10
pack .left.pitch -padx 10 -pady 10
pack .left.cont2 -padx 10 -pady 10
pack .right.cont4 -padx 10 -pady 10
pack .right.cont11 -padx 10 -pady 10
pack .right.cont1 -padx 10 -pady 10
pack .left -side left
pack .right -side right
#bind all <KeyPress> {
bind . <KeyPress> {
noteOn $pitch $press
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc noteOff {pitchVal pressVal} {
global outID
puts $outID [format "NoteOff 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc patchChange {value} {
global outID bitmappath cont1 cont2 cont4 cont11 pitch oldpatch
puts $outID [format "ProgramChange 0.0 1 %i" $value]
if {$value==0} { # Clarinet
.pretty config -bitmap @$bitmappath/Klar.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Reed Stiffness"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont2 64.0
set cont4 20.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==1} { # BlowHole
.pretty config -bitmap @$bitmappath/Klar.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Reed Stiffness"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Tonehole Openness"
.right.cont1 config -state normal -label "Register Vent Openness"
set cont1 0.0
set cont2 64.0
set cont4 20.0
set cont11 0.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==2} { # Saxofony
.pretty config -bitmap @$bitmappath/prcFunny.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Reed Stiffness"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Blow Position"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont2 64.0
set cont4 20.0
set cont11 26.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==3} { # Flute
.pretty config -bitmap @$bitmappath/KFloot.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Embouchure Adjustment"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont2 64.0
set cont4 20.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==4} { # Brass
.pretty config -bitmap @$bitmappath/KHose.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Lip Adjustment"
.right.cont4 config -state normal -label "Slide Length"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 0.0
set cont2 64.0
set cont4 20.0
set cont11 64.0
set press 80.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
puts $outID [format "NoteOn 0.0 1 %3.2f %3.2f" $pitch $press]
}
if {$value==5} { # Bottle
.pretty config -bitmap @$bitmappath/prcFunny.xbm
.left.bPressure config -state normal -label "Breath Pressure"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state normal -label "Breath Noise"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 20.0
set cont4 20.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==6} { # Bowed String
.pretty config -bitmap @$bitmappath/KFiddl.xbm
.left.bPressure config -state normal -label "Volume"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Bow Pressure"
.right.cont4 config -state normal -label "Bow Position"
.right.cont11 config -state normal -label "Vibrato Rate"
.right.cont1 config -state normal -label "Vibrato Amount"
set cont1 4.0
set cont2 64.0
set cont4 64.0
set cont11 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==7} { # Yer Basic Pluck
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Pluck Strength"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state disabled -label "Disabled"
.right.cont11 config -state disabled -label "Disabled"
.right.cont1 config -state disabled -label "Disabled"
}
if {$value==8} { # Stiff String
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Pluck Strength"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state normal -label "Pickup Position"
.right.cont11 config -state normal -label "String Sustain"
.right.cont1 config -state normal -label "String Stretch"
set cont1 10.0
set cont4 64.0
set cont11 96.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
}
if {$value==9} { # Sitar
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Pluck Strength"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state disabled -label "Disabled"
.right.cont4 config -state disabled -label "Disabled"
.right.cont11 config -state disabled -label "Disabled"
.right.cont1 config -state disabled -label "Disabled"
}
if {$value==10} { # Mandolin
.pretty config -bitmap @$bitmappath/KPluk.xbm
.left.bPressure config -state normal -label "Microphone Position and Gain"
.left.pitch config -state normal -label "MIDI Note Number"
.left.cont2 config -state normal -label "Mandolin Body Size"
.right.cont4 config -state normal -label "Pick Position"
.right.cont11 config -state normal -label "String Sustain"
.right.cont1 config -state normal -label "String Detune"
set cont1 10.0
set cont2 64.0
set cont4 64.0
set cont11 96.0
set press 64.0
printWhatz "ControlChange 0.0 1 " 1 $cont1
printWhatz "ControlChange 0.0 1 " 2 $cont2
printWhatz "ControlChange 0.0 1 " 4 $cont4
printWhatz "ControlChange 0.0 1 " 11 $cont11
changePress $press
}
set oldpatch $value
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %i %f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID patchnum
if { $patchnum<7 || $patchnum>9 } {
puts $outID [format "AfterTouch 0.0 1 %f" $value]
flush $outID
}
}
proc changePitch {value} {
global outID
puts $outID [format "PitchChange 0.0 1 %.3f" $value]
flush $outID
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}

View File

@@ -1,275 +1,277 @@
# Tcl/Tk Shakers GUI for the Synthesis Toolkit (STK)
# Set initial control values
set press 64.0
set cont1 64.0
set cont4 64.0
set cont11 64.0
set cont99 24.0
set outID "stdout"
set commtype "stdout"
set patchnum 0
# Configure main window
wm title . "STK Shakers Controller"
wm iconname . "shakers"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure sliders
frame .right -bg black
scale .right.bPressure -from 0 -to 128 -length 300 \
-command {changePress } -variable press\
-orient horizontal -label "Shake Energy" \
-tickinterval 32 -showvalue true -bg grey66
scale .right.cont2 -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 11} \
-orient horizontal -label "(<--High) System Damping (Low-->)" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont3 -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 4} \
-orient horizontal -label "Number of Objects" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11
scale .right.vibrato -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 1} \
-orient horizontal -label "Resonance Center Freq." \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont1
scale .right.reverb -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 44} \
-orient horizontal -label "Reverb Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont99
pack .right.bPressure -padx 10 -pady 10
pack .right.vibrato -padx 10 -pady 10
pack .right.cont2 -padx 10 -pady 10
pack .right.cont3 -padx 10 -pady 10
pack .right.reverb -padx 10 -pady 10
pack .right -side right -padx 5 -pady 5
# Configure radio buttons
frame .buttons -bg black
frame .buttons.columns -bg black
frame .buttons.columns.left1 -bg black
frame .buttons.columns.left2 -bg black
radiobutton .buttons.columns.left1.maraca -text Maraca -bg grey66 \
-command { patchChange 0 } -variable patchnum -width 12 \
-justify left -value 0
radiobutton .buttons.columns.left1.sekere -text Sekere -bg grey66 \
-command { patchChange 2 } -variable patchnum -width 12 \
-justify left -value 2
radiobutton .buttons.columns.left1.cabasa -text Cabasa -bg grey66 \
-command { patchChange 1 } -variable patchnum -width 12 \
-justify left -value 1
radiobutton .buttons.columns.left1.bamboo -text Bamboo -bg grey66 \
-command { patchChange 5 } -variable patchnum -width 12 \
-justify left -value 5
radiobutton .buttons.columns.left1.waterdrp -text "Water Drops" -bg grey66 \
-command { patchChange 4 } -variable patchnum -width 12 \
-justify left -value 4
radiobutton .buttons.columns.left1.tambourn -text Tambourine -bg grey66 \
-command { patchChange 6 } -variable patchnum -width 12 \
-justify left -value 6
radiobutton .buttons.columns.left1.sleighbl -text "Sleigh Bells" -bg grey66 \
-command { patchChange 7 } -variable patchnum -width 12 \
-justify left -value 7
radiobutton .buttons.columns.left1.guiro -text Guiro -bg grey66 \
-command { patchChange 3 } -variable patchnum -width 12 \
-justify left -value 3
radiobutton .buttons.columns.left1.stix1 -text Sticks -bg grey66 \
-command { patchChange 8 } -variable patchnum -width 12 \
-justify left -value 8
radiobutton .buttons.columns.left1.crunch1 -text Crunch -bg grey66 \
-command { patchChange 9 } -variable patchnum -width 12 \
-justify left -value 9
radiobutton .buttons.columns.left1.wrench -text Wrench -bg grey66 \
-command { patchChange 10 } -variable patchnum -width 12 \
-justify left -value 10
radiobutton .buttons.columns.left2.sandpapr -text "Sand Paper" -bg grey66 \
-command { patchChange 11 } -variable patchnum -width 12 \
-justify left -value 11
radiobutton .buttons.columns.left2.cokecan -text "Coke Can" -bg grey66 \
-command { patchChange 12 } -variable patchnum -width 12 \
-justify left -value 12
radiobutton .buttons.columns.left2.nextmug -text "NeXT Mug" -bg grey66 \
-command { patchChange 13 } -variable patchnum -width 12 \
-justify left -value 13
radiobutton .buttons.columns.left2.pennymug -text "Mug & Penny" -bg grey66 \
-command { patchChange 14 } -variable patchnum -width 12 \
-justify left -value 14
radiobutton .buttons.columns.left2.nicklemug -text "Mug & Nickle" -bg grey66 \
-command { patchChange 15 } -variable patchnum -width 12 \
-justify left -value 15
radiobutton .buttons.columns.left2.dimemug -text "Mug & Dime" -bg grey66 \
-command { patchChange 16 } -variable patchnum -width 12 \
-justify left -value 16
radiobutton .buttons.columns.left2.quartermug -text "Mug & Quarter" -bg grey66 \
-command { patchChange 17 } -variable patchnum -width 12 \
-justify left -value 17
radiobutton .buttons.columns.left2.francmug -text "Mug & Franc" -bg grey66 \
-command { patchChange 18 } -variable patchnum -width 12 \
-justify left -value 18
radiobutton .buttons.columns.left2.pesomug -text "Mug & Peso" -bg grey66 \
-command { patchChange 19 } -variable patchnum -width 12 \
-justify left -value 19
radiobutton .buttons.columns.left2.bigrocks -text "Big Rocks" -bg grey66 \
-command { patchChange 20 } -variable patchnum -width 12 \
-justify left -value 20
radiobutton .buttons.columns.left2.littlerocks -text "Little Rocks" -bg grey66 \
-command { patchChange 21 } -variable patchnum -width 12 \
-justify left -value 21
radiobutton .buttons.columns.left1.tunedbamboo -text "Tuned Bamboo" -bg grey66 \
-command { patchChange 22 } -variable patchnum -width 12 \
-justify left -value 22
pack .buttons.columns.left1.maraca -pady 5
pack .buttons.columns.left1.sekere -pady 5
pack .buttons.columns.left1.cabasa -pady 5
pack .buttons.columns.left1.bamboo -pady 5
pack .buttons.columns.left1.tunedbamboo -pady 5
pack .buttons.columns.left1.waterdrp -pady 5
pack .buttons.columns.left1.tambourn -pady 5
pack .buttons.columns.left1.sleighbl -pady 5
pack .buttons.columns.left1.guiro -pady 5
pack .buttons.columns.left1.stix1 -pady 5
pack .buttons.columns.left1.crunch1 -pady 5
pack .buttons.columns.left1.wrench -pady 5
pack .buttons.columns.left2.sandpapr -pady 5
pack .buttons.columns.left2.cokecan -pady 5
pack .buttons.columns.left2.nextmug -pady 5
pack .buttons.columns.left2.pennymug -pady 5
pack .buttons.columns.left2.nicklemug -pady 5
pack .buttons.columns.left2.dimemug -pady 5
pack .buttons.columns.left2.quartermug -pady 5
pack .buttons.columns.left2.francmug -pady 5
pack .buttons.columns.left2.pesomug -pady 5
pack .buttons.columns.left2.bigrocks -pady 5
pack .buttons.columns.left2.littlerocks -pady 5
pack .buttons.columns.left1 -side left -padx 10
pack .buttons.columns.left2 -side left -padx 10
pack .buttons.columns -padx 10 -side top
# Configure exit button
button .buttons.exit -text "Exit Program" -bg grey66 -command myExit
pack .buttons.exit -pady 10 -side bottom
pack .buttons -pady 5
#bind all <KeyPress> {
bind . <KeyPress> {
patchChange $patchnum
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc patchChange {value} {
global outID press
puts $outID [format "NoteOn -1.0 1 %i $press" $value]
flush $outID
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %i %f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID
puts $outID [format "AfterTouch -1.0 1 %f" $value]
flush $outID
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}
# Tcl/Tk Shakers GUI for the Synthesis Toolkit (STK)
# Set initial control values
set press 64.0
set cont1 64.0
set cont4 64.0
set cont11 64.0
set cont99 24.0
set outID "stdout"
set commtype "stdout"
set patchnum 0
# Configure main window
wm title . "STK Shakers Controller"
wm iconname . "shakers"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure sliders
frame .right -bg black
scale .right.bPressure -from 0 -to 128 -length 300 \
-command {changePress } -variable press\
-orient horizontal -label "Shake Energy" \
-tickinterval 32 -showvalue true -bg grey66
scale .right.cont2 -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 11} \
-orient horizontal -label "(<--High) System Damping (Low-->)" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont3 -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 4} \
-orient horizontal -label "Number of Objects" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11
scale .right.vibrato -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 1} \
-orient horizontal -label "Resonance Center Freq." \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont1
scale .right.reverb -from 0 -to 128 -length 300 \
-command {printWhatz "ControlChange -1.0 1 " 44} \
-orient horizontal -label "Reverb Mix" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont99
pack .right.bPressure -padx 10 -pady 10
pack .right.vibrato -padx 10 -pady 10
pack .right.cont2 -padx 10 -pady 10
pack .right.cont3 -padx 10 -pady 10
pack .right.reverb -padx 10 -pady 10
pack .right -side right -padx 5 -pady 5
# Configure radio buttons
frame .buttons -bg black
frame .buttons.columns -bg black
frame .buttons.columns.left1 -bg black
frame .buttons.columns.left2 -bg black
radiobutton .buttons.columns.left1.maraca -text Maraca -bg grey66 \
-command { patchChange 0 } -variable patchnum -width 12 \
-justify left -value 0
radiobutton .buttons.columns.left1.sekere -text Sekere -bg grey66 \
-command { patchChange 2 } -variable patchnum -width 12 \
-justify left -value 2
radiobutton .buttons.columns.left1.cabasa -text Cabasa -bg grey66 \
-command { patchChange 1 } -variable patchnum -width 12 \
-justify left -value 1
radiobutton .buttons.columns.left1.bamboo -text Bamboo -bg grey66 \
-command { patchChange 5 } -variable patchnum -width 12 \
-justify left -value 5
radiobutton .buttons.columns.left1.waterdrp -text "Water Drops" -bg grey66 \
-command { patchChange 4 } -variable patchnum -width 12 \
-justify left -value 4
radiobutton .buttons.columns.left1.tambourn -text Tambourine -bg grey66 \
-command { patchChange 6 } -variable patchnum -width 12 \
-justify left -value 6
radiobutton .buttons.columns.left1.sleighbl -text "Sleigh Bells" -bg grey66 \
-command { patchChange 7 } -variable patchnum -width 12 \
-justify left -value 7
radiobutton .buttons.columns.left1.guiro -text Guiro -bg grey66 \
-command { patchChange 3 } -variable patchnum -width 12 \
-justify left -value 3
radiobutton .buttons.columns.left1.stix1 -text Sticks -bg grey66 \
-command { patchChange 8 } -variable patchnum -width 12 \
-justify left -value 8
radiobutton .buttons.columns.left1.crunch1 -text Crunch -bg grey66 \
-command { patchChange 9 } -variable patchnum -width 12 \
-justify left -value 9
radiobutton .buttons.columns.left1.wrench -text Wrench -bg grey66 \
-command { patchChange 10 } -variable patchnum -width 12 \
-justify left -value 10
radiobutton .buttons.columns.left2.sandpapr -text "Sand Paper" -bg grey66 \
-command { patchChange 11 } -variable patchnum -width 12 \
-justify left -value 11
radiobutton .buttons.columns.left2.cokecan -text "Coke Can" -bg grey66 \
-command { patchChange 12 } -variable patchnum -width 12 \
-justify left -value 12
radiobutton .buttons.columns.left2.nextmug -text "NeXT Mug" -bg grey66 \
-command { patchChange 13 } -variable patchnum -width 12 \
-justify left -value 13
radiobutton .buttons.columns.left2.pennymug -text "Mug & Penny" -bg grey66 \
-command { patchChange 14 } -variable patchnum -width 12 \
-justify left -value 14
radiobutton .buttons.columns.left2.nicklemug -text "Mug & Nickle" -bg grey66 \
-command { patchChange 15 } -variable patchnum -width 12 \
-justify left -value 15
radiobutton .buttons.columns.left2.dimemug -text "Mug & Dime" -bg grey66 \
-command { patchChange 16 } -variable patchnum -width 12 \
-justify left -value 16
radiobutton .buttons.columns.left2.quartermug -text "Mug & Quarter" -bg grey66 \
-command { patchChange 17 } -variable patchnum -width 12 \
-justify left -value 17
radiobutton .buttons.columns.left2.francmug -text "Mug & Franc" -bg grey66 \
-command { patchChange 18 } -variable patchnum -width 12 \
-justify left -value 18
radiobutton .buttons.columns.left2.pesomug -text "Mug & Peso" -bg grey66 \
-command { patchChange 19 } -variable patchnum -width 12 \
-justify left -value 19
radiobutton .buttons.columns.left2.bigrocks -text "Big Rocks" -bg grey66 \
-command { patchChange 20 } -variable patchnum -width 12 \
-justify left -value 20
radiobutton .buttons.columns.left2.littlerocks -text "Little Rocks" -bg grey66 \
-command { patchChange 21 } -variable patchnum -width 12 \
-justify left -value 21
radiobutton .buttons.columns.left1.tunedbamboo -text "Tuned Bamboo" -bg grey66 \
-command { patchChange 22 } -variable patchnum -width 12 \
-justify left -value 22
pack .buttons.columns.left1.maraca -pady 5
pack .buttons.columns.left1.sekere -pady 5
pack .buttons.columns.left1.cabasa -pady 5
pack .buttons.columns.left1.bamboo -pady 5
pack .buttons.columns.left1.tunedbamboo -pady 5
pack .buttons.columns.left1.waterdrp -pady 5
pack .buttons.columns.left1.tambourn -pady 5
pack .buttons.columns.left1.sleighbl -pady 5
pack .buttons.columns.left1.guiro -pady 5
pack .buttons.columns.left1.stix1 -pady 5
pack .buttons.columns.left1.crunch1 -pady 5
pack .buttons.columns.left1.wrench -pady 5
pack .buttons.columns.left2.sandpapr -pady 5
pack .buttons.columns.left2.cokecan -pady 5
pack .buttons.columns.left2.nextmug -pady 5
pack .buttons.columns.left2.pennymug -pady 5
pack .buttons.columns.left2.nicklemug -pady 5
pack .buttons.columns.left2.dimemug -pady 5
pack .buttons.columns.left2.quartermug -pady 5
pack .buttons.columns.left2.francmug -pady 5
pack .buttons.columns.left2.pesomug -pady 5
pack .buttons.columns.left2.bigrocks -pady 5
pack .buttons.columns.left2.littlerocks -pady 5
pack .buttons.columns.left1 -side left -padx 10
pack .buttons.columns.left2 -side left -padx 10
pack .buttons.columns -padx 10 -side top
# Configure exit button
button .buttons.exit -text "Exit Program" -bg grey66 -command myExit
pack .buttons.exit -pady 10 -side bottom
pack .buttons -pady 5
#bind all <KeyPress> {
bind . <KeyPress> {
patchChange $patchnum
}
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc patchChange {value} {
global outID press
puts $outID [format "NoteOn -1.0 1 %i $press" $value]
flush $outID
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %i %f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID
puts $outID [format "AfterTouch -1.0 1 %f" $value]
flush $outID
}
eval patchChange $patchnum
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}

View File

@@ -1,240 +1,233 @@
# Tcl/Tk Voice GUI for the Synthesis Toolkit (STK)
# Set initial control values
set pitch 64.0
set press 64.0
set cont1 20.0
set cont2 64.0
set cont4 64.0
set cont11 64.0
set outID "stdout"
set commtype "stdout"
set patchnum 16
# Configure main window
wm title . "STK Voice Model Controller"
wm iconname . "voice"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure patch change buttons
frame .instChoice -bg black
radiobutton .instChoice.fm -text "FMVoice" -bg grey66 \
-command { patchChange 14 } -value 14 -variable patchnum
radiobutton .instChoice.form -text "Formant" -bg grey66 \
-command { patchChange 15 } -value 15 -variable patchnum
pack .instChoice.fm -side left -padx 5
pack .instChoice.form -side left -padx 5 -pady 10
pack .instChoice -side top
# Configure bitmap display
if {[file isdirectory bitmaps]} {
set bitmappath bitmaps
} else {
set bitmappath tcl/bitmaps
}
button .pretty -bitmap @$bitmappath/prcFunny.xbm \
-background white -foreground black
.pretty config -bitmap @$bitmappath/prc.xbm
pack .pretty -padx 5 -pady 10
# Configure "note-on" buttons
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
button .noteOn.off -text NoteOff -bg grey66 -command { noteOff $pitch 127.0 }
button .noteOn.exit -text "Exit Program" -bg grey66 -command myExit
pack .noteOn.on -side left -padx 5
pack .noteOn.off -side left -padx 5 -pady 10
pack .noteOn.exit -side left -padx 5 -pady 10
pack .noteOn
# Configure sliders
frame .left -bg black
frame .right -bg black
scale .left.bPressure -from 0 -to 128 -length 200 \
-command {changePress } -variable press \
-orient horizontal -label "Loudness (Spectral Tilt)" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.cont1 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 2} \
-orient horizontal -label "Formant Q / Voiced/Un." \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont2
scale .right.cont2 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 4} \
-orient horizontal -label "Vowel (Bass, Tenor, Alto, Sop.)" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont3 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 11} \
-orient horizontal -label "Vibrato Rate" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11
scale .right.vibrato -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 1} \
-orient horizontal -label "Vibrato Amount" \
-tickinterval 32 -showvalue true -bg grey66\
-variable cont1
pack .left.bPressure -padx 10 -pady 10
pack .left.pitch -padx 10 -pady 10
pack .left.cont1 -padx 10 -pady 10
pack .right.cont2 -padx 10 -pady 10
pack .right.cont3 -padx 10 -pady 10
pack .right.vibrato -padx 10 -pady 10
pack .left -side left
pack .right -side right
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch
global outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn -1.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc noteOff {pitchVal pressVal} {
global outID
puts $outID [format "NoteOff -1.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc patchChange {value} {
global outID
global bitmappath
global cont1
global cont2
global cont4
global cont11
puts $outID [format "ProgramChange -1.0 1 %i" $value]
if {$value==16} {
.pretty config -bitmap @$bitmappath/KVoiceFM.xbm
}
if {$value==17} {
.pretty config -bitmap @$bitmappath/KVoicForm.xbm
}
flush $outID
set cont1 0.0
set cont2 20.0
set cont4 64.0
set cont11 64.0
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %i %f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID
puts $outID [format "AfterTouch -1.0 1 %f" $value]
flush $outID
}
proc changePitch {value} {
global outID
puts $outID [format "PitchBend -1.0 1 %.3f" $value]
flush $outID
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}
# Tcl/Tk Voice GUI for the Synthesis Toolkit (STK)
# Set initial control values
set pitch 64.0
set press 64.0
set cont1 20.0
set cont2 64.0
set cont4 64.0
set cont11 64.0
set outID "stdout"
set commtype "stdout"
set patchnum 17
# Configure main window
wm title . "STK Voice Model Controller"
wm iconname . "voice"
. config -bg black
# Configure "communications" menu
menu .menu -tearoff 0
menu .menu.communication -tearoff 0
.menu add cascade -label "Communication" -menu .menu.communication \
-underline 0
.menu.communication add radio -label "Console" -variable commtype \
-value "stdout" -command { setComm }
.menu.communication add radio -label "Socket" -variable commtype \
-value "socket" -command { setComm }
. configure -menu .menu
# Configure patch change buttons
frame .instChoice -bg black
radiobutton .instChoice.fm -text "FMVoice" -bg grey66 \
-command { patchChange 17 } -value 17 -variable patchnum
radiobutton .instChoice.form -text "Formant" -bg grey66 \
-command { patchChange 18 } -value 18 -variable patchnum
pack .instChoice.fm -side left -padx 5
pack .instChoice.form -side left -padx 5 -pady 10
pack .instChoice -side top
# Configure bitmap display
if {[file isdirectory bitmaps]} {
set bitmappath bitmaps
} else {
set bitmappath tcl/bitmaps
}
button .pretty -bitmap @$bitmappath/KVoiceFM.xbm \
-background white -foreground black
pack .pretty -padx 5 -pady 10
# Configure "note-on" buttons
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
button .noteOn.off -text NoteOff -bg grey66 -command { noteOff $pitch 127.0 }
button .noteOn.exit -text "Exit Program" -bg grey66 -command myExit
pack .noteOn.on -side left -padx 5
pack .noteOn.off -side left -padx 5 -pady 10
pack .noteOn.exit -side left -padx 5 -pady 10
pack .noteOn
# Configure sliders
frame .left -bg black
frame .right -bg black
scale .left.bPressure -from 0 -to 128 -length 200 \
-command {changePress } -variable press \
-orient horizontal -label "Loudness (Spectral Tilt)" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
scale .left.cont1 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 2} \
-orient horizontal -label "Formant Q / Voiced/Un." \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont2
scale .right.cont2 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 4} \
-orient horizontal -label "Vowel (Bass, Tenor, Alto, Sop.)" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont4
scale .right.cont3 -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 11} \
-orient horizontal -label "Vibrato Rate" \
-tickinterval 32 -showvalue true -bg grey66 \
-variable cont11
scale .right.vibrato -from 0 -to 128 -length 200 \
-command {printWhatz "ControlChange -1.0 1 " 1} \
-orient horizontal -label "Vibrato Amount" \
-tickinterval 32 -showvalue true -bg grey66\
-variable cont1
pack .left.bPressure -padx 10 -pady 10
pack .left.pitch -padx 10 -pady 10
pack .left.cont1 -padx 10 -pady 10
pack .right.cont2 -padx 10 -pady 10
pack .right.cont3 -padx 10 -pady 10
pack .right.vibrato -padx 10 -pady 10
pack .left -side left
pack .right -side right
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc noteOff {pitchVal pressVal} {
global outID
puts $outID [format "NoteOff 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc patchChange {value} {
global outID bitmappath cont1 cont2 cont4 cont11
puts $outID [format "ProgramChange 0.0 1 %i" $value]
if {$value==16} {
.pretty config -bitmap @$bitmappath/KVoiceFM.xbm
}
if {$value==17} {
.pretty config -bitmap @$bitmappath/KVoicForm.xbm
}
flush $outID
set cont1 0.0
set cont2 20.0
set cont4 64.0
set cont11 64.0
}
proc printWhatz {tag value1 value2 } {
global outID
puts $outID [format "%s %i %f" $tag $value1 $value2]
flush $outID
}
proc changePress {value} {
global outID
puts $outID [format "AfterTouch 0.0 1 %f" $value]
flush $outID
}
proc changePitch {value} {
global outID
puts $outID [format "PitchChange 0.0 1 %.3f" $value]
flush $outID
}
# Socket connection procedure
set d .socketdialog
proc setComm {} {
global outID
global commtype
global d
if {$commtype == "stdout"} {
if { [string compare "stdout" $outID] } {
set i [tk_dialog .dialog "Break Socket Connection?" {You are about to break an existing socket connection ... is this what you want to do?} "" 0 Cancel OK]
switch $i {
0 {set commtype "socket"}
1 {close $outID
set outID "stdout"}
}
}
} elseif { ![string compare "stdout" $outID] } {
set sockport 2001
set sockhost localhost
toplevel $d
wm title $d "STK Client Socket Connection"
wm resizable $d 0 0
grab $d
label $d.message -text "Specify a socket host and port number below (if different than the STK defaults shown) and then click the \"Connect\" button to invoke a socket-client connection attempt to the STK socket server." \
-background white -font {Helvetica 10 bold} \
-wraplength 3i -justify left
frame $d.sockhost
entry $d.sockhost.entry -width 15
label $d.sockhost.text -text "Socket Host:" \
-font {Helvetica 10 bold}
frame $d.sockport
entry $d.sockport.entry -width 15
label $d.sockport.text -text "Socket Port:" \
-font {Helvetica 10 bold}
pack $d.message -side top -padx 5 -pady 10
pack $d.sockhost.text -side left -padx 1 -pady 2
pack $d.sockhost.entry -side right -padx 5 -pady 2
pack $d.sockhost -side top -padx 5 -pady 2
pack $d.sockport.text -side left -padx 1 -pady 2
pack $d.sockport.entry -side right -padx 5 -pady 2
pack $d.sockport -side top -padx 5 -pady 2
$d.sockhost.entry insert 0 $sockhost
$d.sockport.entry insert 0 $sockport
frame $d.buttons
button $d.buttons.cancel -text "Cancel" -bg grey66 \
-command { set commtype "stdout"
set outID "stdout"
destroy $d }
button $d.buttons.connect -text "Connect" -bg grey66 \
-command {
set sockhost [$d.sockhost.entry get]
set sockport [$d.sockport.entry get]
set err [catch {socket $sockhost $sockport} outID]
if {$err == 0} {
destroy $d
} else {
tk_dialog $d.error "Socket Error" {Error: Unable to make socket connection. Make sure the STK socket server is first running and that the port number is correct.} "" 0 OK
} }
pack $d.buttons.cancel -side left -padx 5 -pady 10
pack $d.buttons.connect -side right -padx 5 -pady 10
pack $d.buttons -side bottom -padx 5 -pady 10
}
}

View File

@@ -0,0 +1,71 @@
#define cokecan_width 62
#define cokecan_height 126
static char cokecan_bits[] = {
0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,
0xc1,0xe0,0xff,0xff,0xff,0xff,0xff,0xff,0xc1,0xc0,0xff,0x02,0x00,0x00,0xea,
0xff,0xc1,0xc0,0x2b,0xa9,0x94,0x55,0xb5,0xfe,0xc0,0xc0,0xd5,0x02,0x00,0x80,
0x54,0xfb,0xc0,0x60,0x4b,0x09,0x21,0x5a,0xaf,0xfd,0xc1,0xe0,0x55,0x45,0x04,
0xa9,0xa4,0xee,0xc1,0xf0,0x96,0x90,0x4a,0xa4,0xda,0xfa,0xc3,0xb0,0x49,0x04,
0x11,0x4a,0x51,0xed,0xc3,0xf0,0x96,0x42,0x44,0xaa,0xac,0xfd,0xc3,0xb8,0x6b,
0x12,0x05,0x80,0xf2,0xee,0xc7,0xfc,0xbd,0x81,0x10,0xa5,0xa8,0xfb,0xc7,0xfc,
0xb7,0x24,0x42,0x00,0xf5,0xef,0xcf,0xfe,0xff,0x02,0x00,0x48,0xa0,0xff,0xdf,
0x7e,0x6f,0x01,0x00,0x00,0x55,0xff,0xdf,0xff,0xbd,0x02,0x02,0x22,0xc0,0xff,
0xff,0xff,0x77,0x00,0x00,0x00,0xaa,0xfe,0xff,0xdf,0x9f,0xfc,0xb7,0xdb,0xaf,
0xbd,0xff,0xff,0x36,0x14,0x88,0x94,0x8a,0xfe,0xfe,0xff,0x2f,0xf4,0xef,0xfa,
0x4f,0xfd,0xff,0xef,0x9d,0x04,0x00,0x02,0xa9,0xff,0xff,0xbf,0x2f,0x00,0x60,
0x08,0xa8,0xf6,0xff,0xff,0x56,0x40,0xdc,0x23,0x42,0xff,0xff,0xff,0xbb,0x04,
0x6c,0x83,0xa8,0xfa,0xff,0xff,0x4f,0x10,0xe8,0x23,0x44,0xdf,0xff,0xff,0x3f,
0x00,0x00,0x00,0xa1,0xff,0xff,0xbf,0x55,0xf6,0xb5,0xbd,0x57,0xfd,0xff,0xfb,
0x1f,0xda,0xbf,0xad,0xa7,0xff,0xff,0xff,0x2e,0x5a,0xf7,0xbf,0xcd,0xfe,0xfd,
0xff,0x27,0x10,0x09,0xa4,0x56,0xef,0xff,0xdf,0x55,0x00,0x00,0x00,0x40,0x7f,
0xff,0xff,0x0f,0x01,0x00,0x20,0xd5,0xfe,0xff,0xff,0x29,0x00,0xe8,0x07,0x50,
0xff,0xff,0x7f,0x57,0x08,0xbb,0x12,0xc5,0xfb,0xff,0xf7,0xaf,0xc0,0x80,0x48,
0x50,0xbf,0xff,0xff,0x9d,0x60,0xfc,0x63,0xd5,0xfe,0xff,0xff,0xbf,0x18,0xa3,
0x4e,0xa0,0xff,0xff,0xbf,0xab,0xd0,0xfc,0xbf,0x75,0xfb,0xff,0xff,0x5f,0x2c,
0xdf,0xb6,0xd2,0xef,0xff,0xfb,0xbf,0x94,0x6a,0xfb,0xb6,0xbf,0xff,0xdf,0x55,
0xb2,0xfb,0xde,0xd6,0xff,0xff,0xff,0x3f,0x6a,0xc9,0xf6,0xed,0xff,0xff,0xff,
0x6e,0xf3,0xff,0xb7,0xb5,0xfd,0xff,0xff,0xbb,0x1c,0xfd,0x71,0xd5,0xff,0xff,
0xdf,0x5f,0xdc,0x7f,0x1c,0xb3,0xff,0xff,0xff,0xad,0x64,0x40,0xdf,0xeb,0xdb,
0xff,0xff,0xbf,0x04,0xba,0x6b,0x67,0xff,0xff,0xef,0x57,0x54,0x9f,0xa2,0xa3,
0xff,0xff,0x7f,0xbd,0x94,0x93,0x91,0xcb,0xff,0xfd,0xff,0x5f,0x04,0x10,0x05,
0x52,0xfd,0xff,0xff,0xb7,0xec,0xff,0xff,0x8b,0xef,0xff,0xbb,0x5d,0xf1,0x98,
0xb1,0xd1,0xfe,0xff,0xff,0xf7,0xda,0xe2,0xf7,0x49,0xff,0xfd,0xff,0x3e,0x79,
0x6b,0xf4,0xd1,0xfd,0xff,0xff,0xb7,0xe1,0x99,0x71,0x44,0xff,0xfe,0xef,0xff,
0xa0,0x9a,0xdd,0x68,0xf7,0xff,0x7f,0xaf,0xc0,0xff,0x3f,0xc4,0xff,0xfe,0xff,
0xbb,0x80,0xfd,0x3b,0xa1,0xfe,0xff,0xff,0x7f,0x04,0xee,0x0f,0x54,0xdf,0xff,
0xff,0x17,0x80,0x12,0x48,0x80,0xfe,0xfe,0x6f,0x5f,0x00,0x06,0x0e,0x2a,0xfb,
0xff,0xff,0x5b,0x00,0x28,0x01,0x90,0xde,0xff,0xff,0x5f,0x02,0x00,0x90,0x44,
0xfb,0xff,0xff,0x57,0x08,0x00,0x00,0xa1,0xfe,0xff,0x7d,0x6f,0x40,0x82,0x20,
0x94,0xfb,0xff,0xef,0xb7,0xb8,0xff,0xfe,0xc1,0xfe,0xff,0xff,0xaf,0xf0,0x7f,
0xd2,0x69,0xdf,0xff,0xbf,0xbb,0xf8,0xaf,0xee,0xa4,0xfd,0xff,0xff,0x5f,0x01,
0x00,0x00,0xd8,0xff,0xff,0xff,0xb7,0x01,0x00,0x00,0xb6,0xfe,0xff,0xff,0xdd,
0x04,0x00,0x00,0xfa,0xf7,0xff,0x6f,0x7f,0x57,0x55,0xa1,0xd5,0xbf,0xfb,0xff,
0xab,0xa9,0xaa,0x8a,0xfe,0xfe,0xff,0xff,0xff,0x57,0xb5,0xf5,0xf6,0xff,0xff,
0xff,0xbd,0xde,0xd6,0x56,0xbf,0xff,0xfb,0xff,0xef,0xb7,0x7f,0xff,0xfb,0xfb,
0xff,0xf7,0x7f,0xe5,0xd5,0x05,0x4e,0xff,0xfb,0xbf,0xed,0x5b,0xff,0x57,0xb8,
0xff,0xff,0xff,0xff,0xf4,0x6d,0xf9,0xcd,0xef,0xff,0xff,0xb6,0xac,0x56,0xdd,
0xeb,0xfe,0xfb,0xff,0x7f,0x3a,0xab,0xa4,0xf3,0xff,0xff,0xef,0x57,0xb3,0x6b,
0xfe,0xfd,0xff,0xff,0xff,0x3d,0x8b,0x74,0xb3,0x4a,0xf7,0xfb,0xfd,0x3f,0x59,
0x20,0xdd,0xd6,0xff,0xff,0xf7,0x36,0x99,0x90,0x09,0x6e,0xff,0xff,0xdf,0x3f,
0x7f,0x3f,0x7f,0xf9,0xff,0xff,0xff,0x2e,0x0b,0x98,0x65,0xe9,0xfb,0xfb,0xff,
0xfb,0xfc,0x65,0x6e,0xf2,0xdf,0xff,0xff,0xbf,0xf7,0xde,0xfd,0x7f,0xff,0xff,
0xff,0xef,0xad,0x6a,0xa7,0xfe,0xff,0xfb,0xbf,0x7d,0x7f,0xaa,0xa8,0xdb,0xff,
0xff,0xff,0xef,0xad,0xb5,0xff,0xff,0xfd,0xff,0xff,0xbf,0xff,0xff,0x6a,0xff,
0xf7,0xfb,0x7f,0xfb,0xb5,0xad,0xff,0xdb,0xff,0xfe,0xef,0x6f,0x7f,0xff,0xdb,
0xfe,0xff,0xff,0xbf,0xff,0xeb,0x20,0xea,0x3b,0xfd,0xfb,0xff,0xfb,0xbd,0xdf,
0x57,0x4f,0xff,0xff,0x7f,0x0f,0xf6,0xd6,0xee,0xf5,0xf5,0xff,0xff,0xbf,0x5d,
0xfd,0xdd,0x9b,0x7a,0xf5,0xff,0x66,0xfd,0x73,0xdf,0x75,0xff,0xff,0xff,0xff,
0xdb,0xaa,0x60,0xaf,0xfa,0xff,0xef,0x5b,0x77,0x29,0xdc,0xcb,0xfe,0xfe,0x7f,
0xb7,0xdc,0x43,0xe9,0x2d,0xfe,0xff,0xff,0x8b,0x75,0xff,0xa7,0xc7,0xff,0xfb,
0xff,0xf3,0xf6,0xd8,0xfe,0x6b,0xf3,0xff,0x7f,0x5f,0xdb,0x22,0xc5,0xf6,0xff,
0xfe,0xfb,0x5f,0x7b,0xef,0xf7,0xeb,0xf9,0xff,0xff,0xf6,0xed,0xfe,0xdf,0x4f,
0xfd,0xfd,0xff,0xef,0xfe,0xa2,0x6a,0xaf,0xfe,0xff,0xdf,0xff,0xaf,0xff,0xfd,
0xff,0xff,0xff,0xff,0x7b,0xfb,0x5d,0x6f,0xfb,0xf7,0xfa,0x7f,0xef,0x6f,0xf7,
0xfd,0xdf,0xff,0xff,0xff,0xbf,0xdf,0xbd,0xf7,0x7f,0xff,0xff,0xfb,0xff,0xfa,
0xf7,0xde,0xfe,0xff,0xff,0xef,0xfb,0xdf,0xde,0xff,0xfb,0xff,0xff,0x7f,0x7f,
0xbb,0xfb,0xf6,0xef,0xfd,0xff,0x97,0x80,0x00,0x00,0x00,0x14,0x55,0xff,0x7e,
0x5b,0x6d,0x55,0xad,0xd5,0xf6,0xfd,0xf6,0xff,0xff,0xff,0xff,0xff,0xff,0xdf,
0xfe,0xef,0xbf,0xbf,0xf7,0xff,0xff,0xdf,0xfc,0xbf,0xed,0xf6,0xbd,0xfd,0xff,
0xc7,0xf0,0xff,0xff,0x7f,0xff,0xf7,0xff,0xc3,0xc0,0xff,0x7f,0xdb,0xff,0xff,
0xff,0xc1,0xc0,0xff,0xee,0xff,0x77,0xff,0xff,0xc0,0x80,0xaf,0xbb,0xaa,0xfa,
0xed,0x7f,0xc0};

View File

@@ -2,8 +2,9 @@
//
// Gary P. Scavone, 1999.
#include <stdlib.h>
#include <string.h>
#include "utilities.h"
#include "Messager.h"
// STK Instrument Classes
#include "Clarinet.h"
@@ -24,6 +25,7 @@
#include "PercFlut.h"
#include "BeeThree.h"
#include "FMVoices.h"
#include "VoicForm.h"
#include "Moog.h"
#include "Simple.h"
#include "Drummer.h"
@@ -32,13 +34,13 @@
#include "ModalBar.h"
#include "Mesh2D.h"
#include "Resonate.h"
#include "Whistle.h"
// STK WvOut classes
#if defined(__STK_REALTIME__)
#include "RtWvOut.h"
#endif
#define NUM_INSTS 26
#define NUM_INSTS 28
// The order of the following list is important. The location of a particular
// instrument in the list should correspond to that instrument's ProgramChange
@@ -46,14 +48,14 @@
char insts[NUM_INSTS][10] = { "Clarinet", "BlowHole", "Saxofony", "Flute", "Brass",
"BlowBotl", "Bowed", "Plucked", "StifKarp", "Sitar", "Mandolin",
"Rhodey", "Wurley", "TubeBell", "HevyMetl", "PercFlut",
"BeeThree", "FMVoices", "Moog", "Simple", "Drummer",
"BandedWG", "Shakers", "ModalBar", "Mesh2D", "Resonate" };
"BeeThree", "FMVoices", "VoicForm", "Moog", "Simple", "Drummer",
"BandedWG", "Shakers", "ModalBar", "Mesh2D", "Resonate", "Whistle" };
int voiceByNumber(int number, Instrmnt **instrument)
{
int temp = number;
if (number==0) *instrument = new Clarinet(10.0);
if (number==0) *instrument = new Clarinet(10.0);
else if (number==1) *instrument = new BlowHole(10.0);
else if (number==2) *instrument = new Saxofony(10.0);
else if (number==3) *instrument = new Flute(10.0);
@@ -73,14 +75,16 @@ int voiceByNumber(int number, Instrmnt **instrument)
else if (number==16) *instrument = new BeeThree;
else if (number==17) *instrument = new FMVoices;
else if (number==18) *instrument = new Moog();
else if (number==19) *instrument = new Simple();
else if (number==20) *instrument = new Drummer();
else if (number==21) *instrument = new BandedWG();
else if (number==22) *instrument = new Shakers();
else if (number==23) *instrument = new ModalBar();
else if (number==24) *instrument = new Mesh2D(10, 10);
else if (number==25) *instrument = new Resonate();
else if (number==18) *instrument = new VoicForm();
else if (number==19) *instrument = new Moog();
else if (number==20) *instrument = new Simple();
else if (number==21) *instrument = new Drummer();
else if (number==22) *instrument = new BandedWG();
else if (number==23) *instrument = new Shakers();
else if (number==24) *instrument = new ModalBar();
else if (number==25) *instrument = new Mesh2D(10, 10);
else if (number==26) *instrument = new Resonate();
else if (number==27) *instrument = new Whistle();
else {
printf("\nUnknown instrument or program change requested!\n");
@@ -113,15 +117,17 @@ void usage(char *function) {
int i, j;
printf("\nuseage: %s Instrument flag(s) \n", function);
printf(" where flag = -os <file name> for .snd audio output file,\n");
printf(" where flag = -s RATE to specify a sample rate,\n");
printf(" -n NUMBER specifies the number of voices to allocate,\n");
printf(" -ow <file name> for .wav audio output file,\n");
printf(" -os <file name> for .snd audio output file,\n");
printf(" -om <file name> for .mat audio output file,\n");
printf(" -oa <file name> for .aif audio output file,\n");
#if defined(__STK_REALTIME__)
printf(" -or for realtime audio output,\n");
printf(" -ip for realtime control input by pipe,\n");
printf(" (won't work under Win95/98),\n");
printf(" -is for realtime control input by socket,\n");
printf(" -is <port> for realtime control input by socket,\n");
printf(" -im for realtime control input by MIDI,\n");
#endif
printf(" and Instrument = one of these:\n");
@@ -145,9 +151,9 @@ int checkArgs(int numArgs, char *args[])
{
int w, i = 2, j = 0;
int numOutputs = 0;
char flags[16] = "";
char flags[2][50] = {""};
if (numArgs < 3 || numArgs > 10) usage(args[0]);
if (numArgs < 3 || numArgs > 17) usage(args[0]);
while (i < numArgs) {
if (args[i][0] == '-') {
@@ -156,14 +162,23 @@ int checkArgs(int numArgs, char *args[])
(args[i][2] == 'w') || (args[i][2] == 'm')
|| (args[i][2] == 'a') )
numOutputs++;
flags[0][j] = 'o';
flags[1][j++] = args[i][2];
}
else if (args[i][1] == 'i') {
if ( (args[i][2] != 's') && (args[i][2] != 'p') &&
(args[i][2] != 'm') ) usage(args[0]);
flags[0][j] = 'i';
flags[1][j++] = args[i][2];
}
else if (args[i][1] == 's' && (i+1 < numArgs) && args[i+1][0] != '-' ) {
Stk::setSampleRate( atoi(args[i+1]) );
flags[0][j++] = 's';
}
else if (args[i][1] == 'n' && (i+1 < numArgs) && args[i+1][0] != '-' ) {
flags[0][j++] = 'n';
}
else usage(args[0]);
flags[j] = args[i][2];
j++;
}
i++;
}
@@ -172,7 +187,7 @@ int checkArgs(int numArgs, char *args[])
for (i=0; i<=j; i++) {
w = i+1;
while (w <= j) {
if (flags[i] == flags[w]) {
if (flags[0][i] == flags[0][w] && flags[1][i] == flags[1][w] ) {
printf("\nError: Multiple command line flags of the same type specified.\n\n");
usage(args[0]);
}
@@ -186,10 +201,28 @@ int checkArgs(int numArgs, char *args[])
return numOutputs;
}
int parseArgs(int numArgs, char *args[], WvOut **output)
int countVoices(int nArgs, char *args[])
{
int i = 2, nInstruments = 1;
while (i < nArgs) {
if ( strncmp( args[i], "-n", 2) == 0 ) {
if ( i+1 < nArgs && args[i+1][0] != '-' ) {
nInstruments = atoi( args[i+1] );
if ( nInstruments < 1 ) nInstruments = 1;
}
}
i++;
}
return nInstruments;
}
void parseArgs(int numArgs, char *args[], WvOut **output, Messager **messager)
{
int i = 2, j = 0;
int inputMask = 0;
int port = -1;
char fileName[256];
while (i < numArgs) {
@@ -207,6 +240,9 @@ int parseArgs(int numArgs, char *args[], WvOut **output)
case 's':
#if defined(__STK_REALTIME__)
inputMask |= STK_SOCKET;
// Check for an optional socket port argument.
if ((i+1 < numArgs) && args[i+1][0] != '-')
port = atoi(args[++i]);
break;
#else
usage(args[0]);
@@ -230,7 +266,7 @@ int parseArgs(int numArgs, char *args[], WvOut **output)
case 'r':
#if defined(__STK_REALTIME__)
output[j] = (WvOut *) new RtWvOut();
output[j] = (WvOut *) new RtWvOut(2);
j++;
break;
#else
@@ -284,5 +320,11 @@ int parseArgs(int numArgs, char *args[], WvOut **output)
}
i++;
}
return inputMask;
// Instantiate the messager.
if ( inputMask & STK_SOCKET && port >= 0 )
*messager = new Messager( inputMask, port );
else
*messager = new Messager( inputMask );
}

View File

@@ -4,6 +4,7 @@
#include "Instrmnt.h"
#include "WvOut.h"
#include "Messager.h"
int voiceByNumber(int number, Instrmnt **instrument);
@@ -13,4 +14,6 @@ void usage(char *function);
int checkArgs(int numArgs, char *args[]);
int parseArgs(int numArgs, char *args[], WvOut **output);
int countVoices(int nArgs, char *args[]);
void parseArgs(int numArgs, char *args[], WvOut **output, Messager **messager);

View File

View File

@@ -1,51 +0,0 @@
# Effects Makefile
OS = $(shell uname)
# The following definition indicates the relative location of
# the core STK classes.
STK_PATH = ../../src/
O_FILES = Stk.o Reverb.o PRCRev.o JCRev.o \
NRev.o RtAudio.o Delay.o Filter.o \
RtDuplex.o SKINI.o Envelope.o Echo.o \
PitShift.o DelayL.o Chorus.o WvIn.o \
WaveLoop.o Messager.o Thread.o Socket.o \
RtMidi.o
RM = /bin/rm
ifeq ($(OS),IRIX) # These are for SGI
INSTR = effects
CC = CC -O2 -D__IRIX_AL__ # -g -fullwarn -D__SGI_CC__
LIBRARY = -L/usr/sgitcl/lib -laudio -lmd -lm -lpthread
INCLUDE = -I../../include
endif
ifeq ($(OS),Linux) # These are for Linux
INSTR = effects
CC = g++ -O3 -Wall -D__LINUX_OSS__ -D__LITTLE_ENDIAN__ # -g
LIBRARY = -lpthread -lm #-lasound
INCLUDE = -I../../include
endif
%.o : $(STK_PATH)%.cpp
$(CC) $(INCLUDE) -c $(<) -o $@
all: $(INSTR)
clean :
rm *.o
rm $(INSTR)
cleanIns :
rm $(INSTR)
strip :
strip $(INSTR)
effects: effects.cpp $(O_FILES)
$(CC) $(INCLUDE) -o effects effects.cpp $(O_FILES) $(LIBRARY)
# $(O_FILES) :

View File

@@ -0,0 +1,57 @@
### STK effects Makefile - for various flavors of unix
PROGRAMS = effects
RM = /bin/rm
SRC_PATH = ../../src
OBJECT_PATH = @object_path@
vpath %.o $(OBJECT_PATH)
OBJECTS = Stk.o Reverb.o PRCRev.o JCRev.o \
NRev.o Delay.o Filter.o \
SKINI.o Envelope.o Echo.o \
PitShift.o DelayL.o Chorus.o \
WvIn.o WaveLoop.o Messager.o
INCLUDE = @include@
ifeq ($(strip $(INCLUDE)), )
INCLUDE = ../../include
endif
vpath %.h $(INCLUDE)
CC = @CXX@
DEFS = @byte_order@
DEFS += @debug@
CFLAGS = @cflags@
CFLAGS += @warn@ -I$(INCLUDE)
LIBRARY = @LIBS@
LIBRARY += @frameworks@
REALTIME = @realtime@
ifeq ($(REALTIME),yes)
OBJECTS += RtMidi.o RtAudio.o RtDuplex.o Thread.o Socket.o
DEFS += @sound_api@
DEFS += @midiator@
endif
RAWWAVES = @rawwaves@
ifeq ($(strip $(RAWWAVES)), )
RAWWAVES = ../../rawwaves/
endif
DEFS += -DRAWWAVE_PATH=\"$(RAWWAVES)\"
%.o : $(SRC_PATH)/%.cpp
$(CC) $(CFLAGS) $(DEFS) -c $(<) -o $(OBJECT_PATH)/$@
all : $(PROGRAMS)
effects: effects.cpp $(OBJECTS)
$(CC) $(CFLAGS) $(DEFS) -o effects effects.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
$(OBJECTS) : Stk.h
clean :
-rm $(OBJECT_PATH)/*.o
-rm $(PROGRAMS)
strip :
strip $(PROGRAMS)

View File

@@ -4,43 +4,40 @@
# the core STK classes.
STK_PATH = ../../src/
O_FILES = $(STK_PATH)Stk.o $(STK_PATH)Envelope.o $(STK_PATH)Filter.o \
$(STK_PATH)DelayL.o $(STK_PATH)Delay.o $(STK_PATH)SKINI.o \
$(STK_PATH)WvIn.o $(STK_PATH)Reverb.o $(STK_PATH)PRCRev.o \
$(STK_PATH)JCRev.o $(STK_PATH)NRev.o $(STK_PATH)RtAudio.o \
$(STK_PATH)RtMidi.o $(STK_PATH)RtDuplex.o $(STK_PATH)Messager.o \
$(STK_PATH)WaveLoop.o $(STK_PATH)Thread.o $(STK_PATH)Socket.o
OBJECTS = $(STK_PATH)Stk.o $(STK_PATH)Envelope.o $(STK_PATH)Filter.o \
$(STK_PATH)DelayL.o $(STK_PATH)Delay.o $(STK_PATH)SKINI.o \
$(STK_PATH)WvIn.o $(STK_PATH)Reverb.o $(STK_PATH)PRCRev.o \
$(STK_PATH)JCRev.o $(STK_PATH)NRev.o $(STK_PATH)RtAudio.o \
$(STK_PATH)RtMidi.o $(STK_PATH)RtDuplex.o $(STK_PATH)Messager.o \
$(STK_PATH)WaveLoop.o $(STK_PATH)Thread.o $(STK_PATH)Socket.o
O_LOCAL_FILES = Echo.o PitShift.o Chorus.o
RM = /bin/rm
INSTR = effects
PROGRAMS = effects
CC = CC -O2 -D__IRIX_AL__ # -g -fullwarn -D__SGI_CC__
LIBRARY = -L/usr/sgitcl/lib -laudio -lmd -lm -lpthread
INCLUDE = -I../../include/
.SUFFIXES: .cpp
.cpp.o: $(O_FILES)
.cpp.o: $(OBJECTS)
$(CC) $(INCLUDE) -c -o $@ $<
all: $(INSTR)
all: $(PROGRAMS)
effects: effects.cpp $(O_FILES) $(O_LOCAL_FILES)
$(CC) -o effects effects.cpp $(O_FILES) $(O_LOCAL_FILES) $(LIBRARY) $(INCLUDE)
effects: effects.cpp $(OBJECTS) $(O_LOCAL_FILES)
$(CC) -o effects effects.cpp $(OBJECTS) $(O_LOCAL_FILES) $(LIBRARY) $(INCLUDE)
clean :
rm *.o
rm $(STK_PATH)*.o
rm $(INSTR)
cleanIns :
rm $(INSTR)
rm $(PROGRAMS)
strip :
strip $(INSTR)
strip $(PROGRAMS)
# $(O_FILES) :
# Project specific objects:
Echo.o: Echo.cpp
$(CC) $(INCLUDE) -c Echo.cpp

View File

@@ -16,29 +16,38 @@
void usage(void) {
/* Error function in case of incorrect command-line argument specifications */
printf("\nuseage: effects flag \n");
printf(" where flag = -ip for realtime SKINI input by pipe\n");
printf(" (won't work under Win95/98),\n");
printf(" and flag = -is for realtime SKINI input by socket.\n");
printf("\nuseage: effects flags \n");
printf(" where flag = -s RATE to specify a sample rate,\n");
printf(" flag = -ip for realtime SKINI input by pipe\n");
printf(" (won't work under Win95/98),\n");
printf(" and flag = -is <port> for realtime SKINI input by socket.\n");
exit(0);
}
int main(int argc,char *argv[])
{
if (argc != 2) usage();
int controlMask = 0;
if (!strcmp(argv[1],"-is") )
controlMask |= STK_SOCKET;
else if (!strcmp(argv[1],"-ip") )
controlMask |= STK_PIPE;
else
usage();
if (argc < 2 || argc > 6) usage();
// If you want to change the default sample rate (set in Stk.h), do
// it before instantiating any objects!!
// it before instantiating any objects! If the sample rate is
// specified in the command line, it will override this setting.
Stk::setSampleRate(22050.0);
int port = -1;
int controlMask = 0;
for (int k=1; k<argc; k++ ) {
if (!strcmp(argv[k],"-is") ) {
controlMask |= STK_SOCKET;
if (k+1 < argc && argv[k+1][0] != '-' ) port = atoi(argv[++k]);
}
else if (!strcmp(argv[k],"-ip") )
controlMask |= STK_PIPE;
else if (!strcmp(argv[k],"-s") && (k+1 < argc) && argv[k+1][0] != '-')
Stk::setSampleRate( atoi(argv[++k]) );
else
usage();
}
bool done;
int effect = 0;
MY_FLOAT lastSample, inSample;
@@ -58,7 +67,10 @@ int main(int argc,char *argv[])
inout = new RtDuplex(1, Stk::sampleRate(), 0, RT_BUFFER_SIZE, 10);
// Instantiate the input message controller.
messager = new Messager( controlMask );
if ( controlMask & STK_SOCKET && port >= 0 )
messager = new Messager( controlMask, port );
else
messager = new Messager( controlMask );
}
catch (StkError &) {
goto cleanup;

View File

View File

@@ -1,58 +0,0 @@
# Examples Makefile - Global version for Unix systems which have GNU
# Makefile utilities installed.
OS = $(shell uname)
# You might have to modify the following path if you move things
# around on your system.
STK_SRC = ../../src/
INCLUDE = -I../../include
RM = /bin/rm
INSTR = sine play record io tcpIn tcpOut Moogy
ifeq ($(OS),Linux) # These are for Linux
CC = g++ -O3 -Wall -D__LITTLE_ENDIAN__ -D__LINUX_OSS__
LIBRARY = -lpthread -lm #-lasound
endif
ifeq ($(OS),IRIX) # These are for SGI
CC = CC -D__IRIX_AL__ # -g -fullwarn -O2
LIBRARY = -L/usr/sgitcl/lib -laudio -lmd -lm -lpthread
endif
%.o : $(STK_SRC)%.cpp
$(CC) $(INCLUDE) -c $(<) -o $@
all: $(INSTR)
clean :
rm *.o
rm $(INSTR)
cleanIns :
rm $(INSTR)
strip :
strip $(INSTR)
play: play.cpp Stk.o WvIn.o WvOut.o RtWvOut.o RtAudio.o
$(CC) -o play play.cpp Stk.o WvIn.o WvOut.o RtWvOut.o RtAudio.o $(LIBRARY) $(INCLUDE)
record: record.cpp Stk.o WvIn.o WvOut.o RtWvIn.o RtAudio.o
$(CC) -o record record.cpp Stk.o WvIn.o WvOut.o RtWvIn.o RtAudio.o $(LIBRARY) $(INCLUDE)
sine: sine.cpp Stk.o WvIn.o WvOut.o WaveLoop.o
$(CC) -o sine sine.cpp Stk.o WvIn.o WvOut.o WaveLoop.o $(LIBRARY) $(INCLUDE)
io: io.cpp Stk.o RtAudio.o RtDuplex.o
$(CC) -o io io.cpp Stk.o RtAudio.o RtDuplex.o $(LIBRARY) $(INCLUDE)
tcpIn: tcpIn.cpp Stk.o WvIn.o TcpWvIn.o WvOut.o RtWvOut.o RtAudio.o Socket.o Thread.o
$(CC) -o tcpIn tcpIn.cpp Stk.o WvIn.o Socket.o Thread.o TcpWvIn.o WvOut.o RtWvOut.o RtAudio.o $(LIBRARY) $(INCLUDE)
tcpOut: tcpOut.cpp Stk.o WvIn.o WvOut.o TcpWvOut.o Socket.o Thread.o
$(CC) -o tcpOut tcpOut.cpp Stk.o WvIn.o WvOut.o Socket.o Thread.o TcpWvOut.o $(LIBRARY) $(INCLUDE)
Moogy: Moogy.cpp Stk.o WvIn.o WaveLoop.o WvOut.o RtWvOut.o RtAudio.o Instrmnt.o Sampler.o FormSwep.o Filter.o BiQuad.o Envelope.o ADSR.o OnePole.o Moog.o
$(CC) -o Moogy Stk.o WvIn.o WaveLoop.o WvOut.o RtWvOut.o RtAudio.o Instrmnt.o Sampler.o FormSwep.o Filter.o BiQuad.o Envelope.o ADSR.o OnePole.o Moog.o Moogy.cpp $(LIBRARY) $(INCLUDE)

View File

@@ -0,0 +1,68 @@
### STK examples Makefile - for various flavors of unix
PROGRAMS = sine play record io tcpIn tcpOut Moogy
RM = /bin/rm
SRC_PATH = ../../src
OBJECT_PATH = @object_path@
vpath %.o $(OBJECT_PATH)
INCLUDE = @include@
ifeq ($(strip $(INCLUDE)), )
INCLUDE = ../../include
endif
vpath %.h $(INCLUDE)
CC = @CXX@
DEFS = @byte_order@
DEFS += @debug@
CFLAGS = @cflags@
CFLAGS += @warn@ -I$(INCLUDE)
LIBRARY = @LIBS@
LIBRARY += @frameworks@
REALTIME = @realtime@
ifeq ($(REALTIME),yes)
DEFS += @sound_api@
DEFS += @midiator@
endif
RAWWAVES = @rawwaves@
ifeq ($(strip $(RAWWAVES)), )
RAWWAVES = ../../rawwaves/
endif
DEFS += -DRAWWAVE_PATH=\"$(RAWWAVES)\"
%.o : $(SRC_PATH)/%.cpp
$(CC) $(CFLAGS) $(DEFS) -c $(<) -o $(OBJECT_PATH)/$@
all : $(PROGRAMS)
$(OBJECTS) : Stk.h
clean :
-rm $(OBJECT_PATH)/*.o
-rm $(PROGRAMS)
strip :
strip $(PROGRAMS)
play: play.cpp Stk.o WvIn.o WvOut.o RtWvOut.o RtAudio.o
$(CC) $(CFLAGS) $(DEFS) -o play play.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/WvIn.o $(OBJECT_PATH)/WvOut.o $(OBJECT_PATH)/RtWvOut.o $(OBJECT_PATH)/RtAudio.o $(LIBRARY)
record: record.cpp Stk.o WvIn.o WvOut.o RtWvIn.o RtAudio.o
$(CC) $(CFLAGS) $(DEFS) -o record record.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/WvIn.o $(OBJECT_PATH)/WvOut.o $(OBJECT_PATH)/RtWvIn.o $(OBJECT_PATH)/RtAudio.o $(LIBRARY)
sine: sine.cpp Stk.o WvIn.o WvOut.o WaveLoop.o
$(CC) $(CFLAGS) $(DEFS) -o sine sine.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/WvIn.o $(OBJECT_PATH)/WvOut.o $(OBJECT_PATH)/WaveLoop.o $(LIBRARY)
io: io.cpp Stk.o RtAudio.o RtDuplex.o
$(CC) $(CFLAGS) $(DEFS) -o io io.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/RtAudio.o $(OBJECT_PATH)/RtDuplex.o $(LIBRARY)
tcpIn: tcpIn.cpp Stk.o WvIn.o TcpWvIn.o WvOut.o RtWvOut.o RtAudio.o Socket.o Thread.o
$(CC) $(CFLAGS) $(DEFS) -o tcpIn tcpIn.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/WvIn.o $(OBJECT_PATH)/Socket.o $(OBJECT_PATH)/Thread.o $(OBJECT_PATH)/TcpWvIn.o $(OBJECT_PATH)/WvOut.o $(OBJECT_PATH)/RtWvOut.o $(OBJECT_PATH)/RtAudio.o $(LIBRARY)
tcpOut: tcpOut.cpp Stk.o WvIn.o WvOut.o TcpWvOut.o Socket.o Thread.o
$(CC) $(CFLAGS) $(DEFS) -o tcpOut tcpOut.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/WvIn.o $(OBJECT_PATH)/WvOut.o $(OBJECT_PATH)/Socket.o $(OBJECT_PATH)/Thread.o $(OBJECT_PATH)/TcpWvOut.o $(LIBRARY)
Moogy: Moogy.cpp Stk.o WvIn.o WaveLoop.o WvOut.o RtWvOut.o RtAudio.o Instrmnt.o Sampler.o FormSwep.o Filter.o BiQuad.o Envelope.o ADSR.o OnePole.o Moog.o
$(CC) $(CFLAGS) $(DEFS) -o Moogy Moogy.cpp $(OBJECT_PATH)/Stk.o $(OBJECT_PATH)/WvIn.o $(OBJECT_PATH)/WaveLoop.o $(OBJECT_PATH)/WvOut.o $(OBJECT_PATH)/RtWvOut.o $(OBJECT_PATH)/RtAudio.o $(OBJECT_PATH)/Instrmnt.o $(OBJECT_PATH)/Sampler.o $(OBJECT_PATH)/FormSwep.o $(OBJECT_PATH)/Filter.o $(OBJECT_PATH)/BiQuad.o $(OBJECT_PATH)/Envelope.o $(OBJECT_PATH)/ADSR.o $(OBJECT_PATH)/OnePole.o $(OBJECT_PATH)/Moog.o $(LIBRARY)

View File

@@ -1,43 +1,43 @@
/******************************************/
/*
A very basic example program which
demonstrates how to play STK's Moog
instrument.
By Gary P. Scavone, 2001.
Thanks to Dirk Heise for the suggestion.
This particular program uses the Moog
class, though any Instrmnt subclass will
work. If you use a different instrument,
however, you may need to update the O_FILES
dependencies in the Makefile to successfully
compile it.
*/
/******************************************/
#include "WvOut.h"
#include "RtWvOut.h"
#include "Instrmnt.h"
#include "Moog.h"
int main(void)
{
Instrmnt* instrument = new Moog();
RtWvOut* output = new RtWvOut(1);
// Start the instrument with note number 60 and
// a normalized velocity of 0.9.
instrument->noteOn(70, 0.9);
// Run the instrument for 80000/SRATE seconds.
MY_FLOAT *vector = new MY_FLOAT[16];
for (int i=0; i<80000; i++) {
output->tick(instrument->tick());
}
delete vector;
delete output;
delete instrument;
return 0;
}
/******************************************/
/*
A very basic example program which
demonstrates how to play STK's Moog
instrument.
By Gary P. Scavone, 2001.
Thanks to Dirk Heise for the suggestion.
This particular program uses the Moog
class, though any Instrmnt subclass will
work. If you use a different instrument,
however, you may need to update the O_FILES
dependencies in the Makefile to successfully
compile it.
*/
/******************************************/
#include "WvOut.h"
#include "RtWvOut.h"
#include "Instrmnt.h"
#include "Moog.h"
int main(void)
{
Instrmnt* instrument = new Moog();
RtWvOut* output = new RtWvOut(1);
// Start the instrument with note number 60 and
// a normalized velocity of 0.9.
instrument->noteOn(70, 0.9);
// Run the instrument for 80000/SRATE seconds.
MY_FLOAT *vector = new MY_FLOAT[16];
for (int i=0; i<80000; i++) {
output->tick(instrument->tick());
}
delete vector;
delete output;
delete instrument;
return 0;
}

View File

View File

@@ -1,87 +1,92 @@
/******************************************/
/*
Example program for realtime input/output
by Gary P. Scavone, 2000
This program reads N channels of realtime
audio input for a specified amount of time
and immediately play them back in realtime
(duplex mode). This program also demonstrates
the use of FIFO scheduling priority. To be
run with such priority, the program must be
set suid (chmod +s) and owned by root.
*/
/******************************************/
#include "RtDuplex.h"
#include <stdio.h>
#if defined(__OS_LINUX_) || defined(__OS_IRIX__)
#include <sched.h>
#endif
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: io N time \n");
printf(" where N = number of channels,\n");
printf(" and time = the amount of time to run (in seconds).\n\n");
exit(0);
}
int
main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc != 3) usage();
unsigned int channels = (unsigned int) atoi(argv[1]);
float time = atof(argv[2]);
// Open the realtime duplex device.
RtDuplex *inout = 0;
try {
inout = new RtDuplex(channels, Stk::sampleRate(), 0, RT_BUFFER_SIZE, 10);
}
catch (StkError &) {
exit(0);
}
#if defined(__OS_LINUX__) || defined(__OS_IRIX__)
// Set schedulling priority to SCHED_FIFO.
struct sched_param p;
int min, max, priority;
if (!getuid() || !geteuid()) {
min=sched_get_priority_min(SCHED_FIFO);
max=sched_get_priority_max(SCHED_FIFO);
priority=min+(max-min)/2;
p.sched_priority=priority;
if (sched_setscheduler(0, SCHED_FIFO, &p)==-1) {
fprintf(stderr, "\nCould not activate scheduling with priority %d\n", priority);
}
seteuid(getuid());
}
#endif
// Here's the runtime loop
unsigned long i, counter = 0;
MY_FLOAT *newFrame = new MY_FLOAT[channels];
const MY_FLOAT *lastFrame = inout->lastFrame();
unsigned long samples = (unsigned long) (time * Stk::sampleRate());
while ( counter < samples ) {
for ( i=0; i<channels; i++ )
newFrame[i] = lastFrame[i];
lastFrame = inout->tickFrame( newFrame );
counter++;
#if defined(__OS_LINUX__) || defined(__OS_IRIX__)
if ( counter % 1024 == 0 )
sched_yield();
#endif
}
// Clean up
delete [] newFrame;
delete inout;
return 0;
}
/******************************************/
/*
Example program for realtime input/output
by Gary P. Scavone, 2000
This program reads N channels of realtime
audio input for a specified amount of time
and immediately play them back in realtime
(duplex mode). This program also demonstrates
the use of FIFO scheduling priority. To be
run with such priority, the program must be
set suid (chmod +s) and owned by root.
*/
/******************************************/
#include "RtDuplex.h"
#include <stdio.h>
#if defined(__OS_LINUX_) || defined(__OS_IRIX__)
#include <sched.h>
#endif
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: io N time \n");
printf(" where N = number of channels,\n");
printf(" and time = the amount of time to run (in seconds).\n\n");
exit(0);
}
int
main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc != 3) usage();
unsigned int channels = (unsigned int) atoi(argv[1]);
float time = atof(argv[2]);
// If you want to change the default sample rate (set in Stk.h), do
// it before instantiating any objects! If the sample rate is
// specified in the command line, it will override this setting.
Stk::setSampleRate( 44100.0 );
// Open the realtime duplex device.
RtDuplex *inout = 0;
try {
inout = new RtDuplex(channels, Stk::sampleRate(), 0, RT_BUFFER_SIZE, 10);
}
catch (StkError &) {
exit(0);
}
#if defined(__OS_LINUX__) || defined(__OS_IRIX__)
// Set schedulling priority to SCHED_FIFO.
struct sched_param p;
int min, max, priority;
if (!getuid() || !geteuid()) {
min=sched_get_priority_min(SCHED_FIFO);
max=sched_get_priority_max(SCHED_FIFO);
priority=min+(max-min)/2;
p.sched_priority=priority;
if (sched_setscheduler(0, SCHED_FIFO, &p)==-1) {
fprintf(stderr, "\nCould not activate scheduling with priority %d\n", priority);
}
seteuid(getuid());
}
#endif
// Here's the runtime loop
unsigned long i, counter = 0;
MY_FLOAT *newFrame = new MY_FLOAT[channels];
const MY_FLOAT *lastFrame = inout->lastFrame();
unsigned long samples = (unsigned long) (time * Stk::sampleRate());
while ( counter < samples ) {
for ( i=0; i<channels; i++ )
newFrame[i] = lastFrame[i];
lastFrame = inout->tickFrame( newFrame );
counter++;
#if defined(__OS_LINUX__) || defined(__OS_IRIX__)
if ( counter % 1024 == 0 )
sched_yield();
#endif
}
// Clean up
delete [] newFrame;
delete inout;
return 0;
}

View File

@@ -1,75 +1,75 @@
/******************************************/
/*
Example program to play an N channel
soundfile.
This program will load WAV, SND, AIF, and
MAT-file formatted files of various data
types. If the audio system does not support
the number of channels or sample rate of
the soundfile, the program will stop.
By Gary P. Scavone, 2000 - 2002.
*/
/******************************************/
#include "RtWvOut.h"
#include "WvIn.h"
#include <stdlib.h>
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: play file <rate>\n");
printf(" where file = the file to play,\n");
printf(" and rate = an optional playback rate.\n");
printf(" (default = 1.0, can be negative)\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc < 2 || argc > 3) usage();
// Initialize our WvIn/WvOut pointers.
RtWvOut *output = 0;
WvIn *input = 0;
// Try to load the soundfile.
try {
input = new WvIn( (char *)argv[1] );
}
catch (StkError &) {
exit(0);
}
// Set the global STK sample rate to the file rate.
Stk::setSampleRate( input->getFileRate() );
// Set input read rate.
float rate = 1.0;
if ( argc == 3 ) rate = atof(argv[2]);
input->setRate( rate );
// Find out how many channels we have.
int channels = input->getChannels();
// Define and open the realtime output device
try {
output = new RtWvOut( channels, Stk::sampleRate(), 0, 512, 4 );
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop.
while (!input->isFinished()) {
output->tickFrame( input->tickFrame() );
}
cleanup:
delete input;
delete output;
return 0;
}
/******************************************/
/*
Example program to play an N channel
soundfile.
This program will load WAV, SND, AIF, and
MAT-file formatted files of various data
types. If the audio system does not support
the number of channels or sample rate of
the soundfile, the program will stop.
By Gary P. Scavone, 2000 - 2002.
*/
/******************************************/
#include "RtWvOut.h"
#include "WvIn.h"
#include <stdlib.h>
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: play file <rate>\n");
printf(" where file = the file to play,\n");
printf(" and rate = an optional playback rate.\n");
printf(" (default = 1.0, can be negative)\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc < 2 || argc > 3) usage();
// Initialize our WvIn/WvOut pointers.
RtWvOut *output = 0;
WvIn *input = 0;
// Try to load the soundfile.
try {
input = new WvIn( argv[1] );
}
catch (StkError &) {
exit(0);
}
// Set the global STK sample rate to the file rate.
Stk::setSampleRate( input->getFileRate() );
// Set input read rate.
float rate = 1.0;
if ( argc == 3 ) rate = atof(argv[2]);
input->setRate( rate );
// Find out how many channels we have.
int channels = input->getChannels();
// Define and open the realtime output device
try {
output = new RtWvOut( channels, Stk::sampleRate(), 0, 512, 4 );
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop.
while (!input->isFinished()) {
output->tickFrame( input->tickFrame() );
}
cleanup:
delete input;
delete output;
return 0;
}

View File

@@ -1,70 +1,70 @@
/******************************************/
/*
Example program to record N channels of data
by Gary P. Scavone, 2000
This program is currently written to read
from a realtime audio input device and to
write to a WAV output file. However, it
is simple to replace the FILE_TYPE specifier
to WvOut with another file type.
*/
/******************************************/
#include "RtWvIn.h"
#include "WvOut.h"
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: record N file time fs \n");
printf(" where N = number of channels,\n");
printf(" file = the .wav file to create,\n");
printf(" time = the amount of time to record (in seconds),\n");
printf(" and fs = the sample rate.\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// minimal command-line checking
if (argc != 5) usage();
int channels = (int) atoi(argv[1]);
float sample_rate = atof(argv[4]);
float time = atof(argv[3]);
long samples, i;
// Set the global sample rate.
Stk::setSampleRate( sample_rate );
// Initialize our WvIn/WvOut pointers.
RtWvIn *input = 0;
WvOut *output = 0;
// Open the realtime input device
try {
input = new RtWvIn(channels);
}
catch (StkError &) {
exit(0);
}
// Open the soundfile for output.
try {
output = new WvOut(argv[2], channels, WvOut::WVOUT_WAV);
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop
samples = (long) (time * Stk::sampleRate());
for ( i=0; i<samples; i++ )
output->tickFrame( input->tickFrame() );
cleanup:
delete input;
delete output;
return 0;
}
/******************************************/
/*
Example program to record N channels of data
by Gary P. Scavone, 2000
This program is currently written to read
from a realtime audio input device and to
write to a WAV output file. However, it
is simple to replace the FILE_TYPE specifier
to WvOut with another file type.
*/
/******************************************/
#include "RtWvIn.h"
#include "WvOut.h"
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: record N file time fs \n");
printf(" where N = number of channels,\n");
printf(" file = the .wav file to create,\n");
printf(" time = the amount of time to record (in seconds),\n");
printf(" and fs = the sample rate.\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// minimal command-line checking
if (argc != 5) usage();
int channels = (int) atoi(argv[1]);
float sample_rate = atof(argv[4]);
float time = atof(argv[3]);
long samples, i;
// Set the global sample rate.
Stk::setSampleRate( sample_rate );
// Initialize our WvIn/WvOut pointers.
RtWvIn *input = 0;
WvOut *output = 0;
// Open the realtime input device
try {
input = new RtWvIn(channels);
}
catch (StkError &) {
exit(0);
}
// Open the soundfile for output.
try {
output = new WvOut(argv[2], channels, WvOut::WVOUT_WAV);
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop
samples = (long) (time * Stk::sampleRate());
for ( i=0; i<samples; i++ )
output->tickFrame( input->tickFrame() );
cleanup:
delete input;
delete output;
return 0;
}

View File

@@ -1,54 +1,54 @@
# A simple Tcl/Tk example script
# Set initial control values
set pitch 64.0
set press 64.0
set outID "stdout"
# Configure main window
wm title . "A Simple GUI"
wm iconname . "simple"
. config -bg black
# Configure a "note-on" button
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
pack .noteOn.on -side left -padx 5
pack .noteOn
# Configure sliders
frame .slider -bg black
scale .slider.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
pack .slider.pitch -padx 10 -pady 10
pack .slider -side left
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch outID
puts $outID [format "NoteOff 0.0 1 %f 127" $pitch ]
flush $outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc changePitch {value} {
global outID
puts $outID [format "PitchBend 0.0 1 %.3f" $value]
flush $outID
}
# A simple Tcl/Tk example script
# Set initial control values
set pitch 64.0
set press 64.0
set outID "stdout"
# Configure main window
wm title . "A Simple GUI"
wm iconname . "simple"
. config -bg black
# Configure a "note-on" button
frame .noteOn -bg black
button .noteOn.on -text NoteOn -bg grey66 -command { noteOn $pitch $press }
pack .noteOn.on -side left -padx 5
pack .noteOn
# Configure sliders
frame .slider -bg black
scale .slider.pitch -from 0 -to 128 -length 200 \
-command {changePitch } -variable pitch \
-orient horizontal -label "MIDI Note Number" \
-tickinterval 32 -showvalue true -bg grey66
pack .slider.pitch -padx 10 -pady 10
pack .slider -side left
# Bind an X windows "close" event with the Exit routine
bind . <Destroy> +myExit
proc myExit {} {
global pitch outID
puts $outID [format "NoteOff 0.0 1 %f 127" $pitch ]
flush $outID
puts $outID [format "ExitProgram"]
flush $outID
close $outID
exit
}
proc noteOn {pitchVal pressVal} {
global outID
puts $outID [format "NoteOn 0.0 1 %f %f" $pitchVal $pressVal]
flush $outID
}
proc changePitch {value} {
global outID
puts $outID [format "PitchChange 0.0 1 %.3f" $value]
flush $outID
}

View File

@@ -1,96 +1,96 @@
/******************************************/
/*
Example program to write N sine tones to
an N channel soundfile.
By default, the program will write an
N channel WAV file. However, it is
simple to change the file type argument
in the WvOut constructor.
By Gary P. Scavone, 2000 - 2002.
*/
/******************************************/
#include "WaveLoop.h"
#include "WvOut.h"
#include <stdlib.h>
#include <iostream.h>
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: sine N file time fs\n");
printf(" where N = number of channels (sines),\n");
printf(" file = the .wav file to create,\n");
printf(" time = the amount of time to record (in seconds),\n");
printf(" and fs = the sample rate (in Hz).\n\n");
exit(0);
}
int
main(int argc, char *argv[])
{
float base_freq = 220.0;
int samples;
int i;
// Minimal command-line checking.
if (argc != 5) usage();
int channels = (int) atoi(argv[1]);
double time = atof(argv[3]);
double srate = atof(argv[4]);
// Initialize our object and data pointers.
WvOut *output = 0;
MY_FLOAT *vector = 0;
WaveLoop **oscs = (WaveLoop **) malloc( channels * sizeof(WaveLoop *) );
for (i=0; i<channels; i++) oscs[i] = 0;
// If you want to change the default sample rate (set in Stk.h), do
// it before instantiating any objects!!
Stk::setSampleRate( srate );
// Define and load the rawwave file(s) ... the path is critical.
try {
for (i=0; i<channels; i++)
oscs[i] = new WaveLoop( "../../rawwaves/sinewave.raw", TRUE );
}
catch (StkError &) {
goto cleanup;
}
// Set oscillator frequency(ies) here ... somewhat random.
for (i=0; i<channels; i++)
oscs[i]->setFrequency( base_freq + i*(45.0) );
// Define and open the soundfile for output. Other file
// format options include: WVOUT_SND, WVOUT_AIF, WVOUT_MAT,
// and WVOUT_RAW. Other data type options include:
// STK_SINT8, STK_SINT32, STK_FLOAT32, and STK_FLOAT64.
try {
output = new WvOut( argv[2], channels, WvOut::WVOUT_WAV, Stk::STK_SINT16 );
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop
samples = (int) ( time * Stk::sampleRate() );
vector = (MY_FLOAT *) new MY_FLOAT[channels];
for ( i=0; i<samples; i++ ) {
for (int j=0; j<channels; j++) {
vector[j] = oscs[j]->tick();
}
output->tickFrame(vector);
}
cleanup:
for (i=0; i<channels; i++)
delete oscs[i];
free(oscs);
delete [] vector;
delete output;
return 0;
}
/******************************************/
/*
Example program to write N sine tones to
an N channel soundfile.
By default, the program will write an
N channel WAV file. However, it is
simple to change the file type argument
in the WvOut constructor.
By Gary P. Scavone, 2000 - 2002.
*/
/******************************************/
#include "WaveLoop.h"
#include "WvOut.h"
#include <stdlib.h>
#include <iostream.h>
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: sine N file time fs\n");
printf(" where N = number of channels (sines),\n");
printf(" file = the .wav file to create,\n");
printf(" time = the amount of time to record (in seconds),\n");
printf(" and fs = the sample rate (in Hz).\n\n");
exit(0);
}
int
main(int argc, char *argv[])
{
float base_freq = 220.0;
int samples;
int i;
// Minimal command-line checking.
if (argc != 5) usage();
int channels = (int) atoi(argv[1]);
double time = atof(argv[3]);
double srate = atof(argv[4]);
// Initialize our object and data pointers.
WvOut *output = 0;
MY_FLOAT *vector = 0;
WaveLoop **oscs = (WaveLoop **) malloc( channels * sizeof(WaveLoop *) );
for (i=0; i<channels; i++) oscs[i] = 0;
// If you want to change the default sample rate (set in Stk.h), do
// it before instantiating any objects!!
Stk::setSampleRate( srate );
// Define and load the rawwave file(s) ... the path is critical.
try {
for (i=0; i<channels; i++)
oscs[i] = new WaveLoop( "../../rawwaves/sinewave.raw", TRUE );
}
catch (StkError &) {
goto cleanup;
}
// Set oscillator frequency(ies) here ... somewhat random.
for (i=0; i<channels; i++)
oscs[i]->setFrequency( base_freq + i*(45.0) );
// Define and open the soundfile for output. Other file
// format options include: WVOUT_SND, WVOUT_AIF, WVOUT_MAT,
// and WVOUT_RAW. Other data type options include:
// STK_SINT8, STK_SINT32, STK_FLOAT32, and STK_FLOAT64.
try {
output = new WvOut( argv[2], channels, WvOut::WVOUT_WAV, Stk::STK_SINT16 );
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop
samples = (int) ( time * Stk::sampleRate() );
vector = (MY_FLOAT *) new MY_FLOAT[channels];
for ( i=0; i<samples; i++ ) {
for (int j=0; j<channels; j++) {
vector[j] = oscs[j]->tick();
}
output->tickFrame(vector);
}
cleanup:
for (i=0; i<channels; i++)
delete oscs[i];
free(oscs);
delete [] vector;
delete output;
return 0;
}

View File

@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__LITTLE_ENDIAN__" /YX /FD /c
# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__LITTLE_ENDIAN__" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -65,7 +65,7 @@ LINK32=link.exe
# PROP Intermediate_Dir "debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__LITTLE_ENDIAN__" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__LITTLE_ENDIAN__" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe

View File

@@ -1,78 +1,78 @@
/******************************************/
/*
Example program to read N channels of audio
data that are streamed over a TCP network
connection.
by Gary P. Scavone, 2000
This program is currently written to play
the input data in realtime. However, it
is simple to replace the instance of
RtWvOut with WvOut for writing to a
soundfile.
The streamed data format is assumed to be
signed 16-bit integers. However, both
TcpWvIn and TcpWvOut can be initialized
to read/write any of the defined STK_FORMATs.
The class TcpWvIn sets up a socket server
and waits for a connection. Therefore,
this program needs to be started before
the streaming client. This program will
terminate when the socket connection is
closed.
*/
/******************************************/
#include "TcpWvIn.h"
#include "RtWvOut.h"
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: tcpIn N fs \n");
printf(" where N = number of channels,\n");
printf(" and fs = the data sample rate.\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc != 3) usage();
Stk::setSampleRate( atof(argv[2]) );
int channels = (int) atoi(argv[1]);
// Initialize the object pointers.
RtWvOut *output = 0;
TcpWvIn *input = 0;
// Instantiate the TcpWvIn object.
try {
input = new TcpWvIn();
input->listen( channels, Stk::STK_SINT16 );
}
catch (StkError &) {
goto cleanup;
}
// Open the realtime output device.
try {
output = new RtWvOut(channels);
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop.
while ( input->isConnected() )
output->tickFrame( input->tickFrame() );
cleanup:
delete input;
delete output;
return 0;
}
/******************************************/
/*
Example program to read N channels of audio
data that are streamed over a TCP network
connection.
by Gary P. Scavone, 2000
This program is currently written to play
the input data in realtime. However, it
is simple to replace the instance of
RtWvOut with WvOut for writing to a
soundfile.
The streamed data format is assumed to be
signed 16-bit integers. However, both
TcpWvIn and TcpWvOut can be initialized
to read/write any of the defined STK_FORMATs.
The class TcpWvIn sets up a socket server
and waits for a connection. Therefore,
this program needs to be started before
the streaming client. This program will
terminate when the socket connection is
closed.
*/
/******************************************/
#include "TcpWvIn.h"
#include "RtWvOut.h"
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: tcpIn N fs \n");
printf(" where N = number of channels,\n");
printf(" and fs = the data sample rate.\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc != 3) usage();
Stk::setSampleRate( atof(argv[2]) );
int channels = (int) atoi(argv[1]);
// Initialize the object pointers.
RtWvOut *output = 0;
TcpWvIn *input = 0;
// Instantiate the TcpWvIn object.
try {
input = new TcpWvIn();
input->listen( channels, Stk::STK_SINT16 );
}
catch (StkError &) {
goto cleanup;
}
// Open the realtime output device.
try {
output = new RtWvOut(channels);
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop.
while ( input->isConnected() )
output->tickFrame( input->tickFrame() );
cleanup:
delete input;
delete output;
return 0;
}

View File

@@ -1,86 +1,86 @@
/******************************************/
/*
Example program to output N channels of audio
data over a TCP network socket connection.
by Gary P. Scavone, 2000
This program will load a specified WAV,
SND, AIFF, STK RAW, or MAT-file formatted
file. The output data format is set for
signed 16-bit integers. However, it is
easy to change the TcpWvOut setting to
any of the other defined STK_FORMATs.
If using tcpIn, it will be necessary to
change the expected data format there
as well.
The class StrmWvOut first attempts to
establish a socket connection to a socket
server running on port 2006. Therefore,
this program needs to be started AFTER the
streaming server.
*/
/******************************************/
#include "WvIn.h"
#include "TcpWvOut.h"
#include <stdlib.h>
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: tcpOut file host <rate>\n");
printf(" where file = the file to load,\n");
printf(" host = the hostname where the receiving\n");
printf(" application is running.\n");
printf(" and rate = an optional playback rate for the file.\n");
printf(" (default = 1.0, can be negative)\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc < 3 || argc > 4) usage();
// Initialize the object pointers.
TcpWvOut *output = 0;
WvIn *input = 0;
// Load the file.
try {
input = new WvIn( (char *)argv[1] );
}
catch (StkError &) {
exit(0);
}
// Set the global STK sample rate to the file rate.
Stk::setSampleRate( input->getFileRate() );
// Set input read rate.
double rate = 1.0;
if ( argc == 4 ) rate = atof(argv[3]);
input->setRate( rate );
// Find out how many channels we have.
int channels = input->getChannels();
// Define and open the output device
try {
output = new TcpWvOut(2006, (char *)argv[2], channels, Stk::STK_SINT16);
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop
while ( !input->isFinished() )
output->tickFrame( input->tickFrame() );
cleanup:
delete input;
delete output;
return 0;
}
/******************************************/
/*
Example program to output N channels of audio
data over a TCP network socket connection.
by Gary P. Scavone, 2000
This program will load a specified WAV,
SND, AIFF, STK RAW, or MAT-file formatted
file. The output data format is set for
signed 16-bit integers. However, it is
easy to change the TcpWvOut setting to
any of the other defined STK_FORMATs.
If using tcpIn, it will be necessary to
change the expected data format there
as well.
The class StrmWvOut first attempts to
establish a socket connection to a socket
server running on port 2006. Therefore,
this program needs to be started AFTER the
streaming server.
*/
/******************************************/
#include "WvIn.h"
#include "TcpWvOut.h"
#include <stdlib.h>
void usage(void) {
// Error function in case of incorrect command-line
// argument specifications.
printf("\nuseage: tcpOut file host <rate>\n");
printf(" where file = the file to load,\n");
printf(" host = the hostname where the receiving\n");
printf(" application is running.\n");
printf(" and rate = an optional playback rate for the file.\n");
printf(" (default = 1.0, can be negative)\n\n");
exit(0);
}
int main(int argc, char *argv[])
{
// Minimal command-line checking.
if (argc < 3 || argc > 4) usage();
// Initialize the object pointers.
TcpWvOut *output = 0;
WvIn *input = 0;
// Load the file.
try {
input = new WvIn( (char *)argv[1] );
}
catch (StkError &) {
exit(0);
}
// Set the global STK sample rate to the file rate.
Stk::setSampleRate( input->getFileRate() );
// Set input read rate.
double rate = 1.0;
if ( argc == 4 ) rate = atof(argv[3]);
input->setRate( rate );
// Find out how many channels we have.
int channels = input->getChannels();
// Define and open the output device
try {
output = new TcpWvOut(2006, (char *)argv[2], channels, Stk::STK_SINT16);
}
catch (StkError &) {
goto cleanup;
}
// Here's the runtime loop
while ( !input->isFinished() )
output->tickFrame( input->tickFrame() );
cleanup:
delete input;
delete output;
return 0;
}

View File

@@ -42,7 +42,7 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__WINDOWS_DS__" /D "__LITTLE_ENDIAN__" /YX /FD /c
# ADD CPP /nologo /MD /W3 /GX /O2 /I "../../include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__WINDOWS_DS__" /D "__LITTLE_ENDIAN__" /YX /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -66,7 +66,7 @@ LINK32=link.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__WINDOWS_DS__" /D "__LITTLE_ENDIAN__" /YX /FD /GZ /c
# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "__WINDOWS_DS__" /D "__LITTLE_ENDIAN__" /YX /FD /GZ /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe

View File

View File

@@ -1,63 +0,0 @@
# STK Makefile - Global version for Unix systems which have GNU
# Makefile utilities installed. If this Makefile does not work on
# your system, try using the platform specific Makefiles (.sgi,
# .next, and .linux).
OS = $(shell uname)
# The following definition indicates the relative location of
# the core STK classes.
STK_PATH = ../../src/
O_FILES = Stk.o Envelope.o ADSR.o Noise.o \
Filter.o DelayA.o Delay.o \
OnePole.o OneZero.o SKINI.o \
Tabla.o Instrmnt.o Sitar.o \
Drone.o VoicDrum.o WvOut.o WvIn.o \
RtAudio.o RtWvOut.o RtMidi.o Reverb.o \
JCRev.o Messager.o Socket.o Thread.o
RM = /bin/rm
ifeq ($(OS),IRIX) # These are for SGI
INSTR = ragamat
CC = CC -O2 -D__IRIX_AL__ # -g -fullwarn -D__SGI_CC__
LIBRARY = -L/usr/sgitcl/lib -laudio -lmd -lm -lpthread
INCLUDE = -I../../include
endif
ifeq ($(OS),Linux) # These are for Linux
INSTR = ragamat
CC = g++ -O3 -Wall -D__LINUX_OSS__ -D__LITTLE_ENDIAN__ # -g
LIBRARY = -lpthread -lm #-lasound
INCLUDE = -I../../include
endif
%.o : $(STK_PATH)%.cpp
$(CC) $(INCLUDE) -c $(<) -o $@
all: $(INSTR)
ragamat: ragamat.cpp $(O_FILES)
$(CC) $(INCLUDE) -o ragamat ragamat.cpp $(O_FILES) $(LIBRARY)
clean :
rm *.o
rm $(INSTR)
cleanIns :
rm $(INSTR)
strip :
strip $(INSTR)
# $(O_FILES) :
Tabla.o: Tabla.cpp
$(CC) $(INCLUDE) -c Tabla.cpp
Drone.o: Drone.cpp
$(CC) $(INCLUDE) -c Drone.cpp
VoicDrum.o: VoicDrum.cpp
$(CC) $(INCLUDE) -c VoicDrum.cpp

View File

@@ -0,0 +1,69 @@
### STK ragamatic Makefile - for various flavors of unix
PROGRAMS = ragamat
RM = /bin/rm
SRC_PATH = ../../src
OBJECT_PATH = @object_path@
vpath %.o $(OBJECT_PATH)
OBJECTS = Stk.o Envelope.o ADSR.o Noise.o \
Filter.o DelayA.o Delay.o \
OnePole.o OneZero.o SKINI.o \
Tabla.o Instrmnt.o Sitar.o \
Drone.o VoicDrum.o WvOut.o WvIn.o \
Reverb.o JCRev.o Messager.o
INCLUDE = @include@
ifeq ($(strip $(INCLUDE)), )
INCLUDE = ../../include
endif
vpath %.h $(INCLUDE)
CC = @CXX@
DEFS = @byte_order@
DEFS += @debug@
CFLAGS = @cflags@
CFLAGS += @warn@ -I$(INCLUDE)
LIBRARY = @LIBS@
LIBRARY += @frameworks@
REALTIME = @realtime@
ifeq ($(REALTIME),yes)
OBJECTS += RtMidi.o RtAudio.o RtWvOut.o Thread.o Socket.o
DEFS += @sound_api@
DEFS += @midiator@
endif
RAWWAVES = @rawwaves@
ifeq ($(strip $(RAWWAVES)), )
RAWWAVES = ../../rawwaves/
endif
DEFS += -DRAWWAVE_PATH=\"$(RAWWAVES)\"
%.o : $(SRC_PATH)/%.cpp
$(CC) $(CFLAGS) $(DEFS) -c $(<) -o $(OBJECT_PATH)/$@
all : $(PROGRAMS)
ragamat: ragamat.cpp $(OBJECTS)
$(CC) $(CFLAGS) $(DEFS) -o ragamat ragamat.cpp $(OBJECT_PATH)/*.o $(LIBRARY)
$(OBJECTS) : Stk.h
clean :
-rm $(OBJECT_PATH)/*.o
-rm $(PROGRAMS)
strip :
strip $(PROGRAMS)
# Project specific objects:
Tabla.o: Tabla.cpp
$(CC) $(CFLAGS) $(DEFS) -c Tabla.cpp -o $(OBJECT_PATH)/$@
Drone.o: Drone.cpp
$(CC) $(CFLAGS) $(DEFS) -c Drone.cpp -o $(OBJECT_PATH)/$@
VoicDrum.o: VoicDrum.cpp
$(CC) $(CFLAGS) $(DEFS) -c VoicDrum.cpp -o $(OBJECT_PATH)/$@

View File

View File

@@ -21,10 +21,11 @@ MY_FLOAT float_random(MY_FLOAT max) // Return random float between 0.0 and max
void usage(void) {
/* Error function in case of incorrect command-line argument specifications */
printf("\nuseage: ragamat flag \n");
printf(" where flag = -ip for realtime SKINI input by pipe\n");
printf(" (won't work under Win95/98),\n");
printf(" and flag = -is for realtime SKINI input by socket.\n");
printf("\nuseage: ragamat flags \n");
printf(" where flag = -s RATE to specify a sample rate,\n");
printf(" flag = -ip for realtime SKINI input by pipe\n");
printf(" (won't work under Win95/98),\n");
printf(" and flag = -is <port> for realtime SKINI input by socket.\n");
exit(0);
}
@@ -41,10 +42,6 @@ int main(int argc,char *argv[])
Messager *messager;
MY_FLOAT t60 = 4.0; // in seconds
// If you want to change the default sample rate (set in Stk.h), do
// it before instantiating any objects!!
Stk::setSampleRate( 22050.0 );
MY_FLOAT drone_prob = 0.01, note_prob = 0.0;
MY_FLOAT drum_prob = 0.0, voic_prob = 0.0;
MY_FLOAT droneFreqs[3] = {55.0,82.5,220.0};
@@ -57,21 +54,36 @@ int main(int argc,char *argv[])
int ragaDown[2][13] = {{57, 60, 62, 64, 65, 67, 69, 71, 72, 76, 79, 81},
{48, 52, 53, 55, 57, 59, 60, 64, 66, 68, 70, 72}};
if (argc != 2) usage();
// If you want to change the default sample rate (set in Stk.h), do
// it before instantiating any objects! If the sample rate is
// specified in the command line, it will override this setting.
Stk::setSampleRate(22050.0);
int controlMask = 0;
if (!strcmp(argv[1],"-is") )
controlMask |= STK_SOCKET;
else if (!strcmp(argv[1],"-ip") )
controlMask |= STK_PIPE;
else
usage();
if (argc < 2 || argc > 6) usage();
int port = -1;
int i, controlMask = 0;
for ( i=1; i<argc; i++ ) {
if (!strcmp(argv[i],"-is") ) {
controlMask |= STK_SOCKET;
if (i+1 < argc && argv[i+1][0] != '-' ) port = atoi(argv[++i]);
}
else if (!strcmp(argv[i],"-ip") )
controlMask |= STK_PIPE;
else if (!strcmp(argv[i],"-s") && (i+1 < argc) && argv[i+1][0] != '-')
Stk::setSampleRate( atoi(argv[++i]) );
else
usage();
}
try {
output = new RtWvOut(2);
// Instantiate the input message controller.
messager = new Messager( controlMask );
if ( controlMask & STK_SOCKET && port >= 0 )
messager = new Messager( controlMask, port );
else
messager = new Messager( controlMask );
}
catch (StkError &) {
exit(0);
@@ -94,7 +106,6 @@ int main(int argc,char *argv[])
drones[1]->noteOn(droneFreqs[1],0.1);
drones[2]->noteOn(droneFreqs[2],0.1);
int i;
MY_FLOAT outSamples[2];
for (i=0;i<Stk::sampleRate();i++) { /* warm everybody up a little */
outSamples[0] = reverbs[0]->tick(drones[0]->tick() + drones[2]->tick());