|
- /*
- ZynAddSubFX - a software synthesizer
-
- Dump.cpp - It dumps the notes to a text file
-
- Copyright (C) 2002-2005 Nasca Octavian Paul
- Author: Nasca Octavian Paul
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License
- as published by the Free Software Foundation.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License (version 2 or later) for more details.
-
- You should have received a copy of the GNU General Public License (version 2)
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- */
- #include <stdlib.h>
- #include <time.h>
- #include "Util.h"
- #include "Dump.h"
-
- Dump dump;
-
- Dump::Dump()
- {
- file = NULL;
- tick = 0;
- k = 0;
- keyspressed = 0;
- }
-
- Dump::~Dump()
- {
- if(file != NULL) {
- int duration = tick * synth->buffersize_f / synth->samplerate_f;
- fprintf(
- file,
- "\n# statistics: duration = %d seconds; keyspressed = %d\n\n\n\n",
- duration,
- keyspressed);
- fclose(file);
- }
- }
-
- void Dump::startnow()
- {
- if(file != NULL)
- return; //the file is already open
-
- if(config.cfg.DumpNotesToFile != 0) {
- if(config.cfg.DumpAppend != 0)
- file = fopen(config.cfg.DumpFile.c_str(), "a");
- else
- file = fopen(config.cfg.DumpFile.c_str(), "w");
- if(file == NULL)
- return;
- if(config.cfg.DumpAppend != 0)
- fprintf(file, "%s", "#************************************\n");
-
- time_t tm = time(NULL);
-
- fprintf(file, "#date/time = %s\n", ctime(&tm));
- fprintf(file, "#1 tick = %g milliseconds\n",
- synth->buffersize_f * 1000.0f / synth->samplerate_f);
- fprintf(file, "SAMPLERATE = %d\n", synth->samplerate);
- fprintf(file, "TICKSIZE = %d #samples\n", synth->buffersize);
- fprintf(file, "\n\nSTART\n");
- }
- }
-
- void Dump::inctick()
- {
- tick++;
- }
-
-
- void Dump::dumpnote(char chan, char note, char vel)
- {
- if(file == NULL)
- return;
- if(note == 0)
- return;
- if(vel == 0)
- fprintf(file, "n %d -> %d %d \n", tick, chan, note); //note off
- else
- fprintf(file, "N %d -> %d %d %d \n", tick, chan, note, vel); //note on
-
- if(vel != 0)
- keyspressed++;
- #ifndef JACKAUDIOOUT
- if(k++ > 25) {
- fflush(file);
- k = 0;
- }
- #endif
- }
-
- void Dump::dumpcontroller(char chan, unsigned int type, int par)
- {
- if(file == NULL)
- return;
- switch(type) {
- case C_pitchwheel:
- fprintf(file, "P %d -> %d %d\n", tick, chan, par);
- break;
- default:
- fprintf(file, "C %d -> %d %d %d\n", tick, chan, type, par);
- break;
- }
- #ifndef JACKAUDIOOUT
- if(k++ > 25) {
- fflush(file);
- k = 0;
- }
- #endif
- }
|