mirror of
https://git.FreeBSD.org/ports.git
synced 2024-11-15 23:50:44 +00:00
802 lines
23 KiB
Plaintext
802 lines
23 KiB
Plaintext
|
***************
|
||
|
Sun Aug 25 10:17:47 PDT 1996
|
||
|
***************
|
||
|
diff -c -r old/channelview.C ./channelview.C
|
||
|
*** old/channelview.C Mon Aug 14 14:42:15 1995
|
||
|
--- ./channelview.C Sun Jul 14 20:31:15 1996
|
||
|
***************
|
||
|
*** 323,331 ****
|
||
|
framesVisible.set(point - margin, point + margin);
|
||
|
setVisibleFrameRange(framesVisible);
|
||
|
}
|
||
|
! if(!chansVisible.includes(chansToSelect) && scroll == true) {
|
||
|
! Range displayChans = chansToSelect;
|
||
|
! displayChans.expandBy(1);
|
||
|
setChannelRange(displayChans);
|
||
|
}
|
||
|
struct InsertSetter : public ChannelRangeBlock {
|
||
|
--- 323,344 ----
|
||
|
framesVisible.set(point - margin, point + margin);
|
||
|
setVisibleFrameRange(framesVisible);
|
||
|
}
|
||
|
! if(scroll && !chansVisible.includes(chansToSelect)) {
|
||
|
! Range displayChans;
|
||
|
! if(chansVisible.spread() >= chansToSelect.spread()) {
|
||
|
! // keep same number of visible channels, but shift up
|
||
|
! displayChans = chansVisible;
|
||
|
! int shift = chansToSelect.intMax() -
|
||
|
! chansVisible.intMax();
|
||
|
! displayChans += shift;
|
||
|
! // make sure range is non-negative
|
||
|
! while(displayChans.includes(-1)) displayChans += 1;
|
||
|
! }
|
||
|
! else {
|
||
|
! // use requested channels plus one on each side
|
||
|
! displayChans = chansToSelect;
|
||
|
! displayChans.expandBy(1);
|
||
|
! }
|
||
|
setChannelRange(displayChans);
|
||
|
}
|
||
|
struct InsertSetter : public ChannelRangeBlock {
|
||
|
diff -c -r old/dataview.C ./dataview.C
|
||
|
*** old/dataview.C Mon Aug 14 14:42:16 1995
|
||
|
--- ./dataview.C Sat Jul 13 22:43:40 1996
|
||
|
***************
|
||
|
*** 434,439 ****
|
||
|
--- 434,441 ----
|
||
|
DataView::addGraph(Graph *graph) {
|
||
|
if(graphsShown == maxGraphs)
|
||
|
expandGraphArray();
|
||
|
+ if(graphsShown == maxGraphs)
|
||
|
+ return; // failed to expand!
|
||
|
graphs[graphsShown] = graph; // add to array
|
||
|
Scale *vscale = new VScale(
|
||
|
graph->verticalScaleLabel(),
|
||
|
***************
|
||
|
*** 452,465 ****
|
||
|
DataView::expandGraphArray() {
|
||
|
int newMax = maxGraphs + 4;
|
||
|
Graph **newGraphs = new Graph *[newMax + 1]; // plus 1 for EOA
|
||
|
! int i;
|
||
|
! for(i=0; i < maxGraphs; i++)
|
||
|
! newGraphs[i] = graphs[i]; // copy existing graphs if any
|
||
|
! for(i = maxGraphs; i <= newMax; i++)
|
||
|
! newGraphs[i] = nil;
|
||
|
! delete [] graphs;
|
||
|
! graphs = newGraphs;
|
||
|
! maxGraphs = newMax;
|
||
|
}
|
||
|
|
||
|
// remove one graph and its associated scale from frame
|
||
|
--- 454,469 ----
|
||
|
DataView::expandGraphArray() {
|
||
|
int newMax = maxGraphs + 4;
|
||
|
Graph **newGraphs = new Graph *[newMax + 1]; // plus 1 for EOA
|
||
|
! if(newGraphs) {
|
||
|
! int i;
|
||
|
! for(i=0; i < maxGraphs; i++)
|
||
|
! newGraphs[i] = graphs[i]; // copy existing graphs if any
|
||
|
! for(i = maxGraphs; i <= newMax; i++)
|
||
|
! newGraphs[i] = nil;
|
||
|
! delete [] graphs;
|
||
|
! graphs = newGraphs;
|
||
|
! maxGraphs = newMax;
|
||
|
! }
|
||
|
}
|
||
|
|
||
|
// remove one graph and its associated scale from frame
|
||
|
diff -c -r old/edit_menus.C ./edit_menus.C
|
||
|
*** old/edit_menus.C Sun Mar 24 19:14:18 1996
|
||
|
--- ./edit_menus.C Sun Jul 14 20:37:12 1996
|
||
|
***************
|
||
|
*** 61,68 ****
|
||
|
{ "Channel Display", "", 0L, false, channelSubmenu },
|
||
|
{ "display copy buffer", "I", XK_I },
|
||
|
{ "close current view", "W", XK_W },
|
||
|
- { "show program version", " ", XK_yen },
|
||
|
- { "quit program", "Q", XK_Q },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
--- 61,66 ----
|
||
|
***************
|
||
|
*** 86,91 ****
|
||
|
--- 84,91 ----
|
||
|
{ "change file comment...", "\"", XK_quotedbl },
|
||
|
{ "file information...", "?", XK_question },
|
||
|
{ "data dump of selection...", "}", XK_braceright },
|
||
|
+ { "show program version", " ", XK_yen },
|
||
|
+ { "quit program", "Q", XK_Q },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
***************
|
||
|
*** 124,129 ****
|
||
|
--- 124,137 ----
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
+ static MenuInfo analysisMenu[] = {
|
||
|
+ { "locate next zero crossing", "0", XK_0 },
|
||
|
+ { "find slope change", "1", XK_1 },
|
||
|
+ { "show maxamp sample location","2", XK_2 },
|
||
|
+ { "extract amplitude envelope", "3", XK_3 },
|
||
|
+ { nil }
|
||
|
+ };
|
||
|
+
|
||
|
static MenuInfo styleSubmenu[] = {
|
||
|
{ "line", "%", XK_percent },
|
||
|
{ "bar", "^", XK_asciicircum },
|
||
|
***************
|
||
|
*** 241,262 ****
|
||
|
// And now the structs containing the various menu templates
|
||
|
|
||
|
static MenuBarInfo defaultChannelMenuBar[] = {
|
||
|
- { " View ", viewMenu },
|
||
|
{ " File ", fileMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo soundMenuBar[] = {
|
||
|
- { " View ", viewMenu },
|
||
|
{ " File ", fileMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", soundModifyMenu },
|
||
|
! { " Sound ", soundSpecialMenu },
|
||
|
! { " Analysis ", soundAnalysisMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
--- 249,271 ----
|
||
|
// And now the structs containing the various menu templates
|
||
|
|
||
|
static MenuBarInfo defaultChannelMenuBar[] = {
|
||
|
{ " File ", fileMenu },
|
||
|
+ { " View ", viewMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Analysis ", analysisMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo soundMenuBar[] = {
|
||
|
{ " File ", fileMenu },
|
||
|
+ { " View ", viewMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", soundModifyMenu },
|
||
|
! { " Sound ", soundSpecialMenu },
|
||
|
! { " Analysis ", soundAnalysisMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
***************
|
||
|
*** 273,285 ****
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo lpcMenuBar[] = {
|
||
|
- { " View ", viewMenu },
|
||
|
{ " File ", fileMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
{ " LPC ", lpcSpecialMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
--- 282,295 ----
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo lpcMenuBar[] = {
|
||
|
{ " File ", fileMenu },
|
||
|
+ { " View ", viewMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
{ " LPC ", lpcSpecialMenu },
|
||
|
! { " Analysis ", analysisMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
***************
|
||
|
*** 293,305 ****
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo envelopeMenuBar[] = {
|
||
|
- { " View ", viewMenu },
|
||
|
{ " File ", fileMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
! { " Envelope ", envelopeSpecialMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
--- 303,316 ----
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo envelopeMenuBar[] = {
|
||
|
{ " File ", fileMenu },
|
||
|
+ { " View ", viewMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
! { " Envelope ", envelopeSpecialMenu },
|
||
|
! { " Analysis ", analysisMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
***************
|
||
|
*** 310,322 ****
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo pitchMenuBar[] = {
|
||
|
- { " View ", viewMenu },
|
||
|
{ " File ", fileMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
! { " Pitch ", pitchSpecialMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
--- 321,334 ----
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo pitchMenuBar[] = {
|
||
|
{ " File ", fileMenu },
|
||
|
+ { " View ", viewMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
! { " Pitch ", pitchSpecialMenu },
|
||
|
! { " Analysis ", analysisMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
***************
|
||
|
*** 339,354 ****
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo defaultFrameMenuBar[] = {
|
||
|
- { " View ", viewMenu },
|
||
|
{ " File ", fileMenu },
|
||
|
! { " Display ", frameDisplayMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
static MenuInfo pvocSpecialMenu[] = {
|
||
|
! { "harmonically shift spectrum", "0", XK_0 },
|
||
|
! { "stretch/shrink shift spectrum", "1", XK_1 },
|
||
|
! { "expand/compress spectrum", "2", XK_2, Inactive },
|
||
|
{ "change file length...", "l", XK_l },
|
||
|
{ "pvoc options...", " ", XK_degree, Inactive },
|
||
|
{ nil }
|
||
|
--- 351,366 ----
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo defaultFrameMenuBar[] = {
|
||
|
{ " File ", fileMenu },
|
||
|
! { " View ", viewMenu },
|
||
|
! { " Display ", frameDisplayMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
static MenuInfo pvocSpecialMenu[] = {
|
||
|
! { "harmonically shift spectrum", "t", XK_t },
|
||
|
! { "stretch/shrink shift spectrum", "T", XK_T },
|
||
|
! { "expand/compress spectrum", "X", XK_X, Inactive },
|
||
|
{ "change file length...", "l", XK_l },
|
||
|
{ "pvoc options...", " ", XK_degree, Inactive },
|
||
|
{ nil }
|
||
|
***************
|
||
|
*** 355,367 ****
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo pvocMenuBar[] = {
|
||
|
- { " View ", viewMenu },
|
||
|
{ " File ", fileMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
{ " PVoc ", pvocSpecialMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
--- 367,380 ----
|
||
|
};
|
||
|
|
||
|
static MenuBarInfo pvocMenuBar[] = {
|
||
|
{ " File ", fileMenu },
|
||
|
+ { " View ", viewMenu },
|
||
|
{ " Edit ", editMenu },
|
||
|
! { " Modify ", modifyMenu },
|
||
|
{ " PVoc ", pvocSpecialMenu },
|
||
|
! { " Analysis ", analysisMenu },
|
||
|
! { " Display ", channelDisplayMenu },
|
||
|
! { " Options ", optionsMenu },
|
||
|
{ nil }
|
||
|
};
|
||
|
|
||
|
diff -c -r old/editor.C ./editor.C
|
||
|
*** old/editor.C Sat May 11 21:38:27 1996
|
||
|
--- ./editor.C Sat Jul 13 15:38:38 1996
|
||
|
***************
|
||
|
*** 861,867 ****
|
||
|
int peakchan, peakloc;
|
||
|
data->maxValue(&peakchan, &peakloc);
|
||
|
Range chan(peakchan, peakchan);
|
||
|
! controller->showInsertPoint(peakloc, chan);
|
||
|
return Succeed;
|
||
|
}
|
||
|
|
||
|
--- 861,867 ----
|
||
|
int peakchan, peakloc;
|
||
|
data->maxValue(&peakchan, &peakloc);
|
||
|
Range chan(peakchan, peakchan);
|
||
|
! controller->showInsertPoint(peakloc, chan, true);
|
||
|
return Succeed;
|
||
|
}
|
||
|
|
||
|
***************
|
||
|
*** 1001,1007 ****
|
||
|
PulseGenerator pgen(pulses, pulseFrameSize/pulsePerFrame);
|
||
|
pgen.apply();
|
||
|
FormantFilter filter(pulses, pulses, selected, 1.0);
|
||
|
! filter.apply();
|
||
|
Envelope* amplitudes = new Envelope(lpcLen * pulsePerFrame);
|
||
|
amplitudes->setFrameRangeLabel("LPC Analysis Frames");
|
||
|
amplitudes->setRangeFactor(1.0/pulsePerFrame);
|
||
|
--- 1001,1008 ----
|
||
|
PulseGenerator pgen(pulses, pulseFrameSize/pulsePerFrame);
|
||
|
pgen.apply();
|
||
|
FormantFilter filter(pulses, pulses, selected, 1.0);
|
||
|
! if(!filter.apply())
|
||
|
! return Fail;
|
||
|
Envelope* amplitudes = new Envelope(lpcLen * pulsePerFrame);
|
||
|
amplitudes->setFrameRangeLabel("LPC Analysis Frames");
|
||
|
amplitudes->setRangeFactor(1.0/pulsePerFrame);
|
||
|
***************
|
||
|
*** 1026,1032 ****
|
||
|
Application::inform("Creating test pattern...");
|
||
|
pgen.apply();
|
||
|
FormantFilter filter(pulses, pulses, selected, 1.0);
|
||
|
! filter.apply();
|
||
|
Application::inform("Analyzing formants...");
|
||
|
// fft size depends on npoles
|
||
|
FFT_Function analyzer(
|
||
|
--- 1027,1034 ----
|
||
|
Application::inform("Creating test pattern...");
|
||
|
pgen.apply();
|
||
|
FormantFilter filter(pulses, pulses, selected, 1.0);
|
||
|
! if(!filter.apply())
|
||
|
! return Fail;
|
||
|
Application::inform("Analyzing formants...");
|
||
|
// fft size depends on npoles
|
||
|
FFT_Function analyzer(
|
||
|
diff -c -r old/filecommand.C ./filecommand.C
|
||
|
*** old/filecommand.C Sun Mar 10 13:35:00 1996
|
||
|
--- ./filecommand.C Mon Aug 5 23:45:29 1996
|
||
|
***************
|
||
|
*** 132,138 ****
|
||
|
request->appendValue("Duration (seconds):", &client->duration,
|
||
|
PositiveIntegers);
|
||
|
request->appendValue("Sample rate:", &client->sampleRate, PositiveIntegers);
|
||
|
! request->appendChoice("Channels:", "|1|2|4|", &client->channels, true);
|
||
|
FormatRequester::configureRequest(request);
|
||
|
}
|
||
|
|
||
|
--- 132,138 ----
|
||
|
request->appendValue("Duration (seconds):", &client->duration,
|
||
|
PositiveIntegers);
|
||
|
request->appendValue("Sample rate:", &client->sampleRate, PositiveIntegers);
|
||
|
! request->appendValue("Channels:", &client->channels, PositiveIntegers);
|
||
|
FormatRequester::configureRequest(request);
|
||
|
}
|
||
|
|
||
|
diff -c -r old/header.h ./header.h
|
||
|
*** old/header.h Tue Mar 5 09:53:28 1996
|
||
|
--- ./header.h Mon Aug 5 23:43:58 1996
|
||
|
***************
|
||
|
*** 110,116 ****
|
||
|
int data_offset;
|
||
|
int data_size;
|
||
|
unsigned short data_type;
|
||
|
! unsigned short nchans;
|
||
|
Comment *comment;
|
||
|
private:
|
||
|
boolean forceSwapped; // used to override header default during raw read
|
||
|
--- 110,116 ----
|
||
|
int data_offset;
|
||
|
int data_size;
|
||
|
unsigned short data_type;
|
||
|
! int nchans;
|
||
|
Comment *comment;
|
||
|
private:
|
||
|
boolean forceSwapped; // used to override header default during raw read
|
||
|
diff -c -r old/header_config.C ./header_config.C
|
||
|
*** old/header_config.C Sat Jun 8 14:49:21 1996
|
||
|
--- ./header_config.C Mon Aug 5 23:42:51 1996
|
||
|
***************
|
||
|
*** 94,102 ****
|
||
|
void
|
||
|
SoundHeader::SoundConfigRequester::configureRequest(Request* request) {
|
||
|
SoundHeader* sh = (SoundHeader *) myHeader;
|
||
|
! request->appendValue("Sample rate:", &sh->samprate,
|
||
|
! PositiveIntegers);
|
||
|
! request->appendChoice("Channels:", "|1|2|4|", &sh->nchans, true);
|
||
|
FormatRequester::configureRequest(request);
|
||
|
ConfigRequester::configureRequest(request);
|
||
|
}
|
||
|
--- 94,101 ----
|
||
|
void
|
||
|
SoundHeader::SoundConfigRequester::configureRequest(Request* request) {
|
||
|
SoundHeader* sh = (SoundHeader *) myHeader;
|
||
|
! request->appendValue("Sample rate:", &sh->samprate, PositiveIntegers);
|
||
|
! request->appendValue("Channels:", &sh->nchans, PositiveIntegers);
|
||
|
FormatRequester::configureRequest(request);
|
||
|
ConfigRequester::configureRequest(request);
|
||
|
}
|
||
|
diff -c -r old/pvoceditor.C ./pvoceditor.C
|
||
|
*** old/pvoceditor.C Sun Mar 24 19:14:47 1996
|
||
|
--- ./pvoceditor.C Sat Jul 13 15:00:58 1996
|
||
|
***************
|
||
|
*** 40,49 ****
|
||
|
PvocEditor::keyCommand(unsigned long sym) {
|
||
|
boolean interested = true;
|
||
|
switch (sym) {
|
||
|
! case XK_0:
|
||
|
harmonicShift();
|
||
|
break;
|
||
|
! case XK_1:
|
||
|
stretchShift();
|
||
|
break;
|
||
|
default:
|
||
|
--- 40,49 ----
|
||
|
PvocEditor::keyCommand(unsigned long sym) {
|
||
|
boolean interested = true;
|
||
|
switch (sym) {
|
||
|
! case XK_t:
|
||
|
harmonicShift();
|
||
|
break;
|
||
|
! case XK_T:
|
||
|
stretchShift();
|
||
|
break;
|
||
|
default:
|
||
|
diff -c -r old/soundheader.C ./soundheader.C
|
||
|
*** old/soundheader.C Tue Apr 30 20:29:59 1996
|
||
|
--- ./soundheader.C Mon Aug 5 23:05:47 1996
|
||
|
***************
|
||
|
*** 122,129 ****
|
||
|
char msg[64];
|
||
|
msg[0] = '\0'; // null for later check
|
||
|
int retcode = 0;
|
||
|
! if(nchans != 1 && nchans != 2 && nchans != 4)
|
||
|
! sprintf(msg, "%d-channel sounds not supported", nchans);
|
||
|
else if(samprate < 1000 || samprate > 128000)
|
||
|
sprintf(msg, "Invalid sound samp rate (%d)", samprate);
|
||
|
else if(data_type == NoData)
|
||
|
--- 122,130 ----
|
||
|
char msg[64];
|
||
|
msg[0] = '\0'; // null for later check
|
||
|
int retcode = 0;
|
||
|
! if(!isRaw() && !validChannels(nchans))
|
||
|
! sprintf(msg, "Illegal channel count for this header type: %d",
|
||
|
! nchans);
|
||
|
else if(samprate < 1000 || samprate > 128000)
|
||
|
sprintf(msg, "Invalid sound samp rate (%d)", samprate);
|
||
|
else if(data_type == NoData)
|
||
|
diff -c -r old/soundheader.h ./soundheader.h
|
||
|
*** old/soundheader.h Tue Apr 30 20:29:11 1996
|
||
|
--- ./soundheader.h Mon Aug 5 23:02:26 1996
|
||
|
***************
|
||
|
*** 71,76 ****
|
||
|
--- 71,77 ----
|
||
|
redefined int secondsToBytes(double);
|
||
|
redefined int checkHeader();
|
||
|
virtual boolean isValid(DataType)=0;
|
||
|
+ virtual boolean validChannels(int chans) { return chans > 0; }
|
||
|
SoundHeader(DataType, int rate, int chans, double peak, int magic);
|
||
|
class SoundConfigRequester
|
||
|
: public Header::ConfigRequester, public FormatRequester {
|
||
|
***************
|
||
|
*** 198,203 ****
|
||
|
--- 199,207 ----
|
||
|
redefined boolean isMagic();
|
||
|
redefined boolean isValid(DataType t) {
|
||
|
return (t == ShortData || t == FloatData);
|
||
|
+ }
|
||
|
+ redefined boolean validChannels(int chans) {
|
||
|
+ return chans == 1 || chans == 2 || chans == 4;
|
||
|
}
|
||
|
redefined int writeInfo(DataFile *);
|
||
|
};
|
||
|
diff -c -r old/version.C ./version.C
|
||
|
*** old/version.C Fri Dec 22 23:22:26 1995
|
||
|
--- ./version.C Sun Aug 25 10:17:39 1996
|
||
|
***************
|
||
|
*** 24,27 ****
|
||
|
|
||
|
#include "version.h"
|
||
|
|
||
|
! const char MXV_version_string[] = "MiXViews (mxv) version 1.1 pl 00";
|
||
|
--- 24,27 ----
|
||
|
|
||
|
#include "version.h"
|
||
|
|
||
|
! const char MXV_version_string[] = "MiXViews (mxv) version 1.1 pl 01";
|
||
|
diff -c -r old/viewchanger.C ./viewchanger.C
|
||
|
*** old/viewchanger.C Tue Mar 19 21:26:41 1996
|
||
|
--- ./viewchanger.C Sat Jul 13 23:23:15 1996
|
||
|
***************
|
||
|
*** 41,48 ****
|
||
|
class MinMaxRequester : public TitledRequester {
|
||
|
public:
|
||
|
MinMaxRequester(const char* title,
|
||
|
! const char* minlabel, T& minval, const Range &,
|
||
|
! const char* maxlabel, T& maxval, const Range &);
|
||
|
protected:
|
||
|
redefined void configureRequest(Request *);
|
||
|
protected:
|
||
|
--- 41,48 ----
|
||
|
class MinMaxRequester : public TitledRequester {
|
||
|
public:
|
||
|
MinMaxRequester(const char* title,
|
||
|
! const char* minlabel, T& minval, const Range,
|
||
|
! const char* maxlabel, T& maxval, const Range);
|
||
|
protected:
|
||
|
redefined void configureRequest(Request *);
|
||
|
protected:
|
||
|
***************
|
||
|
*** 50,63 ****
|
||
|
const char* maxLabel;
|
||
|
T &minVal;
|
||
|
T &maxVal;
|
||
|
! const Range &minRange;
|
||
|
! const Range &maxRange;
|
||
|
};
|
||
|
|
||
|
template <class T>
|
||
|
MinMaxRequester<T>::MinMaxRequester(const char* title,
|
||
|
! const char* minlabel, T& minval, const Range& minrange,
|
||
|
! const char* maxlabel, T& maxval, const Range& maxrange)
|
||
|
: TitledRequester(title), minLabel(minlabel), maxLabel(maxlabel),
|
||
|
minVal(minval), maxVal(maxval),
|
||
|
minRange(minrange), maxRange(maxrange) {}
|
||
|
--- 50,63 ----
|
||
|
const char* maxLabel;
|
||
|
T &minVal;
|
||
|
T &maxVal;
|
||
|
! const Range minRange;
|
||
|
! const Range maxRange;
|
||
|
};
|
||
|
|
||
|
template <class T>
|
||
|
MinMaxRequester<T>::MinMaxRequester(const char* title,
|
||
|
! const char* minlabel, T& minval, const Range minrange,
|
||
|
! const char* maxlabel, T& maxval, const Range maxrange)
|
||
|
: TitledRequester(title), minLabel(minlabel), maxLabel(maxlabel),
|
||
|
minVal(minval), maxVal(maxval),
|
||
|
minRange(minrange), maxRange(maxrange) {}
|
||
|
***************
|
||
|
*** 248,254 ****
|
||
|
|
||
|
class EditFramesRequester : public MinMaxRequester<int> {
|
||
|
public:
|
||
|
! EditFramesRequester(int&, int&, int&, int&, const Range&);
|
||
|
protected:
|
||
|
redefined void configureRequest(Request *);
|
||
|
private:
|
||
|
--- 248,254 ----
|
||
|
|
||
|
class EditFramesRequester : public MinMaxRequester<int> {
|
||
|
public:
|
||
|
! EditFramesRequester(int&, int&, int&, int&, const Range);
|
||
|
protected:
|
||
|
redefined void configureRequest(Request *);
|
||
|
private:
|
||
|
***************
|
||
|
*** 258,264 ****
|
||
|
|
||
|
EditFramesRequester::EditFramesRequester(int& minframe, int& maxframe,
|
||
|
int& startchan, int& endchan,
|
||
|
! const Range& channelRange)
|
||
|
: MinMaxRequester<int>(
|
||
|
"Set Edit Region:",
|
||
|
"Start Channel:", startchan, channelRange,
|
||
|
--- 258,264 ----
|
||
|
|
||
|
EditFramesRequester::EditFramesRequester(int& minframe, int& maxframe,
|
||
|
int& startchan, int& endchan,
|
||
|
! const Range channelRange)
|
||
|
: MinMaxRequester<int>(
|
||
|
"Set Edit Region:",
|
||
|
"Start Channel:", startchan, channelRange,
|
||
|
***************
|
||
|
*** 274,280 ****
|
||
|
|
||
|
class EditTimeRequester : public MinMaxRequester<int> {
|
||
|
public:
|
||
|
! EditTimeRequester(double&, double&, int&, int&, const Range &);
|
||
|
protected:
|
||
|
redefined void configureRequest(Request *);
|
||
|
private:
|
||
|
--- 274,280 ----
|
||
|
|
||
|
class EditTimeRequester : public MinMaxRequester<int> {
|
||
|
public:
|
||
|
! EditTimeRequester(double&, double&, int&, int&, const Range);
|
||
|
protected:
|
||
|
redefined void configureRequest(Request *);
|
||
|
private:
|
||
|
***************
|
||
|
*** 285,291 ****
|
||
|
EditTimeRequester::EditTimeRequester(
|
||
|
double& mintime, double& maxtime,
|
||
|
int& startchan, int& endchan,
|
||
|
! const Range& channelRange)
|
||
|
: MinMaxRequester<int>(
|
||
|
"Set Edit Region:",
|
||
|
"Start Channel:", startchan, channelRange,
|
||
|
--- 285,291 ----
|
||
|
EditTimeRequester::EditTimeRequester(
|
||
|
double& mintime, double& maxtime,
|
||
|
int& startchan, int& endchan,
|
||
|
! const Range channelRange)
|
||
|
: MinMaxRequester<int>(
|
||
|
"Set Edit Region:",
|
||
|
"Start Channel:", startchan, channelRange,
|
||
|
diff -c -r old/vw_converter.C ./vw_converter.C
|
||
|
*** old/vw_converter.C Sun Jan 28 20:26:05 1996
|
||
|
--- ./vw_converter.C Mon Aug 5 22:44:36 1996
|
||
|
***************
|
||
|
*** 43,49 ****
|
||
|
|
||
|
boolean
|
||
|
VW_Converter::isPlayableFormat(DataType type) {
|
||
|
! return (type < FloatData && type != SignedCharData);
|
||
|
}
|
||
|
|
||
|
// what is best format to play (if given choice)
|
||
|
--- 45,51 ----
|
||
|
|
||
|
boolean
|
||
|
VW_Converter::isPlayableFormat(DataType type) {
|
||
|
! return (type < IntData && type != SignedCharData);
|
||
|
}
|
||
|
|
||
|
// what is best format to play (if given choice)
|
||
|
***************
|
||
|
*** 60,70 ****
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
- // add any specific code needed to stop play or record
|
||
|
-
|
||
|
int
|
||
|
VW_Converter::stop() {
|
||
|
! return Super::stop();
|
||
|
}
|
||
|
|
||
|
int
|
||
|
--- 62,70 ----
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
int
|
||
|
VW_Converter::stop() {
|
||
|
! return ioctl(SNDCTL_DSP_RESET, 0) && Super::stop();
|
||
|
}
|
||
|
|
||
|
int
|
||
|
***************
|
||
|
*** 87,92 ****
|
||
|
--- 87,93 ----
|
||
|
int sampleFormat = 0;
|
||
|
switch(dataType()) {
|
||
|
case UnsignedCharData: sampleFormat = AFMT_U8; break;
|
||
|
+ case SignedCharData: sampleFormat = AFMT_S8; break;
|
||
|
// case ALawData: sampleFormat = AFMT_A_LAW; break;
|
||
|
case MuLawData: sampleFormat = AFMT_MU_LAW; break;
|
||
|
case ShortData: sampleFormat = AFMT_S16_LE; break;
|
||
|
***************
|
||
|
*** 93,119 ****
|
||
|
default: break;
|
||
|
};
|
||
|
int confirmedFormat = sampleFormat;
|
||
|
! if (!ioctl (SNDCTL_DSP_SPEED, (char *) &dsp_speed))
|
||
|
! error("Unable to set converter sample rate.");
|
||
|
else if (!ioctl(SNDCTL_DSP_STEREO, (char *) &dsp_stereo))
|
||
|
! error("Unable to set converter channel attribute.");
|
||
|
! else if (!ioctl(SNDCTL_DSP_SETFMT, (char *) &confirmedFormat)
|
||
|
! || confirmedFormat != sampleFormat)
|
||
|
! error("Unable to set sample size.");
|
||
|
else if(!ioctl(SNDCTL_DSP_GETBLKSIZE, (char *) &audioBufferSize))
|
||
|
error("Unable to get audio buffer size.");
|
||
|
- else if(audioBufferSize < 1024 || audioBufferSize > (2*65536)) {
|
||
|
- char msg[128];
|
||
|
- sprintf(msg, "Invalid audio buffer size %d", audioBufferSize);
|
||
|
- error(msg);
|
||
|
- }
|
||
|
else status = true;
|
||
|
}
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
// return size of buffer, in bytes, to be written to the device during play
|
||
|
- // this can either be computed or just a static value
|
||
|
|
||
|
int
|
||
|
VW_Converter::writeSize() {
|
||
|
--- 94,141 ----
|
||
|
default: break;
|
||
|
};
|
||
|
int confirmedFormat = sampleFormat;
|
||
|
!
|
||
|
! int sizeCode = 0x1;
|
||
|
! // desired buffer size is 1/10 of a second's worth of sound
|
||
|
! int bufferSize = type_to_sampsize(dataType()) *
|
||
|
! round(float(channels()) * sampleRate() / 10.0);
|
||
|
! #ifdef DEBUG
|
||
|
! fprintf(stderr, "requesting buffer size %d\n", bufferSize);
|
||
|
! #endif
|
||
|
! while(pow(double(2.0), long(sizeCode)) < double(bufferSize))
|
||
|
! sizeCode <<= 1;
|
||
|
!
|
||
|
! sizeCode >>= 1; // back out by one
|
||
|
! sizeCode |= 2 << 16;
|
||
|
!
|
||
|
! // sizeCode = 0x0002XXXX where XXXX is (int) log2(bufsize)
|
||
|
! // and 0002 is 2 max number of fragments
|
||
|
!
|
||
|
! #ifdef DEBUG
|
||
|
! fprintf(stderr, "setting frag size code to 0x%x\n", sizeCode);
|
||
|
! #endif
|
||
|
!
|
||
|
! if (!ioctl (SNDCTL_DSP_SETFRAGMENT, (char *) &sizeCode))
|
||
|
! error("Unable to set fragment size.");
|
||
|
! else if (!ioctl(SNDCTL_DSP_SETFMT, (char *) &confirmedFormat))
|
||
|
! error("Unable to set sample format.");
|
||
|
! else if(confirmedFormat != sampleFormat)
|
||
|
! error("This sample format not supported by hardware.");
|
||
|
else if (!ioctl(SNDCTL_DSP_STEREO, (char *) &dsp_stereo))
|
||
|
! error("Unable to set channel attribute.");
|
||
|
! else if (!ioctl (SNDCTL_DSP_SPEED, (char *) &dsp_speed))
|
||
|
! error("Unable to set sample rate.");
|
||
|
else if(!ioctl(SNDCTL_DSP_GETBLKSIZE, (char *) &audioBufferSize))
|
||
|
error("Unable to get audio buffer size.");
|
||
|
else status = true;
|
||
|
+ #ifdef DEBUG
|
||
|
+ fprintf(stderr, "audio buffer size is %d\n", audioBufferSize);
|
||
|
+ #endif
|
||
|
}
|
||
|
return status;
|
||
|
}
|
||
|
|
||
|
// return size of buffer, in bytes, to be written to the device during play
|
||
|
|
||
|
int
|
||
|
VW_Converter::writeSize() {
|
||
|
***************
|
||
|
*** 121,127 ****
|
||
|
}
|
||
|
|
||
|
// return size of buffer, in bytes, to be read from the device during record
|
||
|
- // this can either be computed or just a static value
|
||
|
|
||
|
int
|
||
|
VW_Converter::readSize() {
|
||
|
--- 143,148 ----
|