diff options
author | David Nugent <davidn@FreeBSD.org> | 1997-04-17 07:05:40 +0000 |
---|---|---|
committer | David Nugent <davidn@FreeBSD.org> | 1997-04-17 07:05:40 +0000 |
commit | b63958f2e9f5d0d696eaef941d1a75beb0c9a6a9 (patch) | |
tree | 2a0d6fccc6c33cebc18a68f5dd9a238f44228da7 /audio | |
parent | Add Net/OpenBSD compatible MAN= macros to makefiles. (diff) |
MiXViews audio file editor/player/recorder.
Notes
Notes:
svn path=/head/; revision=6225
Diffstat (limited to 'audio')
-rw-r--r-- | audio/mxv/Makefile | 32 | ||||
-rw-r--r-- | audio/mxv/distinfo | 2 | ||||
-rw-r--r-- | audio/mxv/files/patch-aa | 801 | ||||
-rw-r--r-- | audio/mxv/files/patch-ab | 40 | ||||
-rw-r--r-- | audio/mxv/files/patch-ac | 30 | ||||
-rw-r--r-- | audio/mxv/files/patch-ad | 19 | ||||
-rw-r--r-- | audio/mxv/files/patch-ae | 33 | ||||
-rw-r--r-- | audio/mxv/files/patch-af | 40 | ||||
-rw-r--r-- | audio/mxv/files/patch-ag | 16 | ||||
-rw-r--r-- | audio/mxv/files/patch-ah | 16 | ||||
-rw-r--r-- | audio/mxv/files/patch-ai | 37 | ||||
-rw-r--r-- | audio/mxv/pkg-comment | 1 | ||||
-rw-r--r-- | audio/mxv/pkg-descr | 6 | ||||
-rw-r--r-- | audio/mxv/pkg-plist | 2 |
14 files changed, 1075 insertions, 0 deletions
diff --git a/audio/mxv/Makefile b/audio/mxv/Makefile new file mode 100644 index 000000000000..b19f36ad64a3 --- /dev/null +++ b/audio/mxv/Makefile @@ -0,0 +1,32 @@ +# New ports collection makefile for: mxv +# Version required: 1.10 +# Date created: 17 March 1997 +# Whom: davidn@blaze.net.au +# +# $Id$ +# + +DISTNAME= mxv-v1.10-source +PKGNAME= mxv-1.10 +CATEGORIES= audio +MASTER_SITES= ftp://ftp.ccmrc.ucsb.edu/pub/MixViews/source/ + +#PATCH_SITES= ftp://ftp.ccmrc.ucsb.edu/pub/MixViews/source/ +#PATCHFILES= mxv-v1.10-patch01 +#Unfortunately, the above vendor patch does not apply cleanly, +#and and a hand-edited version is supplied in the patches subdir + +MAINTAINER= davidn@blaze.net.au +#From InterViews 3.1 +BUILD_DEPENDS= ivmkmf + +USE_IMAKE= yes +WRKSRC= $(WRKDIR) +#ivmkmf -a (with makedepend) not recommended by documentation +XMKMF= env CPU=FREEBSD ivmkmf;make Makefiles + +do-install: + ${INSTALL_PROGRAM} ${WRKSRC}/FREEBSD/mxv ${PREFIX}/bin + ${INSTALL_DATA} ${WRKSRC}/MiXViews.res ${PREFIX}/lib/X11/app-defaults/MiXViews + +.include <bsd.port.mk> diff --git a/audio/mxv/distinfo b/audio/mxv/distinfo new file mode 100644 index 000000000000..64e98dccf4ba --- /dev/null +++ b/audio/mxv/distinfo @@ -0,0 +1,2 @@ +MD5 (mxv-v1.10-source.tar.gz) = 77096555999e83008146f0f2e19eec14 +#MD5 (mxv-v1.10-patch01) = 2fee3ffc776103a72817676564880a74 diff --git a/audio/mxv/files/patch-aa b/audio/mxv/files/patch-aa new file mode 100644 index 000000000000..79eb90aefe94 --- /dev/null +++ b/audio/mxv/files/patch-aa @@ -0,0 +1,801 @@ +*************** +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 ---- diff --git a/audio/mxv/files/patch-ab b/audio/mxv/files/patch-ab new file mode 100644 index 000000000000..ff04b54ed639 --- /dev/null +++ b/audio/mxv/files/patch-ab @@ -0,0 +1,40 @@ +*** Imakefile.orig Wed Feb 28 16:16:02 1996 +--- Imakefile Thu Apr 17 15:14:45 1997 +*************** +*** 139,144 **** +--- 139,159 ---- + ARCH_OBJS = utils.o + #endif + ++ #if defined(FreeBSDArchitecture) ++ XCOMM Extra defines, include directories, loading flags, and libraries needed ++ XCOMM for the FreeBSD version. The assumption is that you are using Gnu gcc/g++ ++ ++ ARCH_CCDEFINES = -DVOXWARE_DACS -DXDisplay=_XDisplay ++ ARCH_CCFLAGS = ++ ARCH_CCINCLUDES = ++ ARCH_CCLDFLAGS = ++ ARCH_CCLDLIBS = $(APP_FORTLIBS) -lm ++ DEBUG_CCFLAGS = -Ddebug ++ ++ DAC_OBJS = conv_config.o conv_device.o vw_converter.o ++ ARCH_OBJS = utils.o ++ #endif ++ + #if defined(i386SVR4Architecture) + XCOMM This assumes you have the SoundBlaster card on your machine + ARCH_CCDEFINES = -DSOUNDBLASTER +*************** +*** 253,258 **** +--- 268,278 ---- + MakeObjectFromSrcFlags(sgi_dac, $(OPTIMIZE_CCFLAGS)) + #endif + #if defined(LinuxArchitecture) ++ MakeObjectFromSrcFlags(utils, $(OPTIMIZE_CCFLAGS)) ++ MakeObjectFromSrcFlags(conv_device, $(OPTIMIZE_CCFLAGS)) ++ MakeObjectFromSrcFlags(vw_converter, $(OPTIMIZE_CCFLAGS)) ++ #endif ++ #if defined(FreeBSDArchitecture) + MakeObjectFromSrcFlags(utils, $(OPTIMIZE_CCFLAGS)) + MakeObjectFromSrcFlags(conv_device, $(OPTIMIZE_CCFLAGS)) + MakeObjectFromSrcFlags(vw_converter, $(OPTIMIZE_CCFLAGS)) diff --git a/audio/mxv/files/patch-ac b/audio/mxv/files/patch-ac new file mode 100644 index 000000000000..cb048d9a8028 --- /dev/null +++ b/audio/mxv/files/patch-ac @@ -0,0 +1,30 @@ +*** application.C.orig Thu Apr 17 15:23:34 1997 +--- application.C Thu Apr 17 15:26:03 1997 +*************** +*** 41,47 **** + #include <iostream.h> + #include "localdefs.h" + +! #ifndef NeXT + #include <errno.h> + extern char *sys_errlist[]; + char *strerror(int errn) { +--- 41,48 ---- + #include <iostream.h> + #include "localdefs.h" + +! #if !defined(__FreeBSD__) +! #if !defined(NeXT) + #include <errno.h> + extern char *sys_errlist[]; + char *strerror(int errn) { +*************** +*** 53,58 **** +--- 54,60 ---- + int sleep(unsigned); + } + #endif /* NeXT */ ++ #endif + + class GlobalResourceList { + friend Application; diff --git a/audio/mxv/files/patch-ad b/audio/mxv/files/patch-ad new file mode 100644 index 000000000000..8e113a9090d4 --- /dev/null +++ b/audio/mxv/files/patch-ad @@ -0,0 +1,19 @@ +*** device.h.orig Thu Apr 17 14:53:39 1997 +--- device.h Thu Apr 17 14:57:57 1997 +*************** +*** 33,39 **** + #include "InterViews/resource.h" + #include "localdefs.h" + +! #ifndef sgi + extern "C" int ioctl(int, unsigned long, char*); + #endif + +--- 33,39 ---- + #include "InterViews/resource.h" + #include "localdefs.h" + +! #if !defined( sgi ) && !defined( __FreeBSD__ ) + extern "C" int ioctl(int, unsigned long, char*); + #endif + diff --git a/audio/mxv/files/patch-ae b/audio/mxv/files/patch-ae new file mode 100644 index 000000000000..b2d7aeb502a2 --- /dev/null +++ b/audio/mxv/files/patch-ae @@ -0,0 +1,33 @@ +*** diskfile.C.orig Thu Apr 17 14:57:15 1997 +--- diskfile.C Thu Apr 17 15:06:28 1997 +*************** +*** 50,56 **** + #if defined(linux) + extern "C" void setbuffer(FILE*, char*, int); + #else +! #if !defined( sgi ) && !defined( sun ) + extern "C" int setbuffer(FILE*, char*, int); + #endif + #endif +--- 50,56 ---- + #if defined(linux) + extern "C" void setbuffer(FILE*, char*, int); + #else +! #if !defined( sgi ) && !defined( sun ) && !defined( __FreeBSD__ ) + extern "C" int setbuffer(FILE*, char*, int); + #endif + #endif +*************** +*** 193,198 **** +--- 193,203 ---- + rw &= ~01; + if (fp->_flags & _IO_NO_WRITES) + rw &= ~02; ++ #elif defined(__FreeBSD__) ++ if (fp->_flags & (__SRD|__SRW)) ++ rw |= 01; ++ if (fp->_flags & (__SWR|__SRW|__SAPP)) ++ rw |= 02; + #else + if (fp->_flag & (_IOREAD|_IORW)) + rw |= 01; diff --git a/audio/mxv/files/patch-af b/audio/mxv/files/patch-af new file mode 100644 index 000000000000..0edbba9c4815 --- /dev/null +++ b/audio/mxv/files/patch-af @@ -0,0 +1,40 @@ +*** settergetter.h.orig Thu Apr 17 15:07:13 1997 +--- settergetter.h Thu Apr 17 15:17:30 1997 +*************** +*** 64,69 **** +--- 64,70 ---- + Status (Object::*setfunc)(Type), + Type (Object::*getfunc)() const) + : obj(objptr), setter(setfunc), getter(getfunc) {} ++ ~MethodSetterGetter() {} + redefined boolean set(Type value) { + return boolean((obj->*setter)(value)); + } +*************** +*** 82,94 **** + return new MethodSetterGetter<Object, Status, Type>(objptr, setfunc, getfunc); + } + +- //******** +- + template <class Status, class Type> + class FunctionSetterGetter : public SetterGetter<Type> { + public: + FunctionSetterGetter(Status (*setfunc)(Type), Type (*getfunc)()) + : setter(setfunc), getter(getfunc) {} + redefined boolean set(Type value) { (*setter)(value); return true; } + redefined Type get() const { return (*getter)(); } + private: +--- 83,94 ---- + return new MethodSetterGetter<Object, Status, Type>(objptr, setfunc, getfunc); + } + + template <class Status, class Type> + class FunctionSetterGetter : public SetterGetter<Type> { + public: + FunctionSetterGetter(Status (*setfunc)(Type), Type (*getfunc)()) + : setter(setfunc), getter(getfunc) {} ++ ~FunctionSetterGetter() {} + redefined boolean set(Type value) { (*setter)(value); return true; } + redefined Type get() const { return (*getter)(); } + private: diff --git a/audio/mxv/files/patch-ag b/audio/mxv/files/patch-ag new file mode 100644 index 000000000000..4454c809a56d --- /dev/null +++ b/audio/mxv/files/patch-ag @@ -0,0 +1,16 @@ +*** smartmem.C.orig Thu Apr 17 15:32:03 1997 +--- smartmem.C Thu Apr 17 15:33:41 1997 +*************** +*** 64,70 **** +--- 64,74 ---- + void + SmartMemory::free(void* ptr, unsigned size) { + if(ptr) { ++ #ifdef __FreeBSD__ ++ ::free(ptr); ++ #else + ::cfree(ptr); ++ #endif + totalBytes_Allocated -= size; + } + } diff --git a/audio/mxv/files/patch-ah b/audio/mxv/files/patch-ah new file mode 100644 index 000000000000..24754efa97f6 --- /dev/null +++ b/audio/mxv/files/patch-ah @@ -0,0 +1,16 @@ +*** vw_converter.C.orig Thu Apr 17 14:49:48 1997 +--- vw_converter.C Thu Apr 17 14:50:17 1997 +*************** +*** 27,33 **** +--- 27,37 ---- + #pragma implementation + #endif + ++ #ifdef __FreeBSD__ ++ #include <machine/soundcard.h> ++ #else + #include <sys/soundcard.h> ++ #endif + #include "localdefs.h" + #include "application.h" + #include "vw_converter.h" diff --git a/audio/mxv/files/patch-ai b/audio/mxv/files/patch-ai new file mode 100644 index 000000000000..14e1b53e89b6 --- /dev/null +++ b/audio/mxv/files/patch-ai @@ -0,0 +1,37 @@ +*** /dev/null Thu Apr 17 15:41:53 1997 +--- MiXViews.res Thu Apr 17 16:08:47 1997 +*************** +*** 0 **** +--- 1,32 ---- ++ ! This file must be renamed "MiXViews", and installed either in your home ++ ! directory (if you are the only one using mxv) or in the X res dir ++ ! (/usr/lib/X11/app-defaults) or in the InterViews res dir ++ ! (<installed InterViews dir>/lib/app-defaults). ++ ++ MiXViews*font: -*-times-medium-r-normal--14-* ++ MiXViews*PulldownCommandMenu*background: light blue ++ MiXViews*Command*background: lightskyblue2 ++ MiXViews*PullrightCommandMenu*background: lightskyblue ++ MiXViews*MenuBar*font: -*-helvetica-bold-r-normal--17-* ++ MiXViews*MenuItem*font: -*-helvetica-medium-r-normal--14-* ++ MiXViews*PullrightMenu*font: -*-helvetica-medium-r-normal--14-* ++ MiXViews*DialogBox*Title*font: -*-helvetica-bold-r-normal--14-* ++ MiXViews*DialogBox*Subtitle*font: -*-helvetica-medium-r-normal--12-* ++ MiXViews*Alert*Title*foreground: Red ++ MiXViews*InputDialog*FileSelector*font: -*-times-medium-r-normal--14-* ++ MiXViews*PushButton*font: -*-helvetica-medium-r-normal--14-* ++ MiXViews*HorizontalScale*font: -*-helvetica-medium-r-normal--8-* ++ MiXViews*VerticalScale*font: -*-helvetica-medium-r-normal--8-* ++ MiXViews*StatusBar*font: -*-helvetica-medium-r-normal--12-* ++ MiXViews*FrameGraph*font: -*-helvetica-medium-r-normal--8-* ++ MiXViews*HorizontalScaleLabel*foreground: White ++ MiXViews*HorizontalScaleLabel*background: Black ++ MiXViews*VerticalScaleLabel*foreground: White ++ MiXViews*VerticalScaleLabel*background: Black ++ MiXViews*LPCWindowDisplayChannels: 4 ++ MiXViews*FFTWindowDisplayChannels: 4 ++ MiXViews*FFTWindow*PlotStyle: Line ++ MiXViews*PvocWindowDisplayChannels: 4 ++ MiXViews*PvocWindow*VerticalScaleLabel*font: -*-helvetica-medium-r-normal--10-* ++ MiXViews*malloc_debug: off ++ diff --git a/audio/mxv/pkg-comment b/audio/mxv/pkg-comment new file mode 100644 index 000000000000..e25cacb75dba --- /dev/null +++ b/audio/mxv/pkg-comment @@ -0,0 +1 @@ +Sound file editor/player/recorder/converter for X Window System. diff --git a/audio/mxv/pkg-descr b/audio/mxv/pkg-descr new file mode 100644 index 000000000000..2935d50f6d28 --- /dev/null +++ b/audio/mxv/pkg-descr @@ -0,0 +1,6 @@ +This is the MiXViews sound file editor/recorder/player that supports +FreeBSD's voxware sound drivers written by doug@ccmrc.ucsb.edu. +It supports the following sound file formats: IRCAM, SND/AU, Hybrid (CMIX), +AIF-C, WAVE, and raw (headerless) + +Version 1.10. diff --git a/audio/mxv/pkg-plist b/audio/mxv/pkg-plist new file mode 100644 index 000000000000..efe061fd454f --- /dev/null +++ b/audio/mxv/pkg-plist @@ -0,0 +1,2 @@ +bin/mxv +lib/X11/app-defaults/MiXViews |