ftp.nice.ch/pub/next/audio/editor/edsnd.1.42.s.tar.gz#/SpectrumView.h

This is SpectrumView.h in view mode; [Download] [Up]

/* SpectrumView.h -- Interface for SpectrumView class
 *
 * This is a subclass of View that displays spectral data for a sound
 * via an FFT.  The SpectrumView handles all the computation and graphics;
 * it does not handle Sound object creation or soundfile operations.
 * External objects control the number of points in the FFT, the 
 * sound to be viewed, and the starting point within that sound.
 * The latter is expressed as a time point.  The SpectrumView also
 * manages a hairline cursor (manipulated by the mouse) and can
 * report the frequency and amplitude at the current cursor
 * location.
 *
 * In a typical usage, an Application (or other object) would
 * feed sounds, start times, and FFT window sizes to the SpectrumView,
 * and then cause computation and plotting via a 'display' message.
 *
 * smb@datran2.uunet.uu.net 
 * jwp@silverton.Princeton.edu
 * 2/90
 */

#import <appkit/View.h>

@interface SpectrumView : View
{
	id sound;		/* The sound we're looking at */
	int npoints;		/* Number of points (power of 2) */
	int slidepoints;	/* Number of points to slide the window */
	int nslices;		/* Number of slices in frame */
	id delegate;		/* Delegate for this view (if any) */
	BOOL dBflag;		/* dB display? */	
	float srate;		/* Sampling rate of sound */
	float cursorXpixel;	/* Cursor location (as pixel column) */
	float cursorYpixel;	/* Cursor location (as pixel row) */
	float cursorXpoint;	/* Cursor location (as time slice) */
	float cursorYpoint;	/* Cursor location (as FFT point) */
	
	BOOL meanDisplay;	/* Should we display the Mean Frequency Line */
	BOOL spectrumDisplay;	/* Should we display the Spectrum */
}


/* To set up the FFT:
 *	- dBdisplay:	-- Turn on/off dB display
 */
- dBdisplay:(BOOL)flag;

/* To retrieve info about the FFT:
 *	- (BOOL)dBdisplay	-- Returns dBflag
 */
- (BOOL)dBdisplay;

/* Cursor information methods:
 *	- getCursorTime:Freq:Amp:	-- Retrieve the frequency and amplitude
 *				   at the current cursor location (arguments
 *				   are pointers to floats)
 *	- setCursorTime:	-- Set the cursor to point to a particular
 *				   frequency
 */
- getCursorTime:(float *)time Freq:(float*)freq Mean:(float *)mean;
- setCursorTime:(float)time;

/* Miscellaneous lower-level methods:
 *	- setDelegate:		-- Set the delegate for cursor update messages
 *	- delegate		-- Returns pointer to the delegate
 *	- setMeanDisplay:
 *	- setSpectrumDisplay:
 */
- setDelegate:anObject;
- delegate;
- setMeanDisplay:(BOOL)flag;
- setSpectrumDisplay:(BOOL)flag;


/* Drawing methods:
 *
 *      - drawSelf::            -- (This just clears the View)
 *	- doSpectrum:Start:Dur:Npoints:Slidepoints:
 *				-- Draw the spectrum
 */
- drawSelf:(NXRect *)rects :(int)rectCount;
- doSpectrum:aSound Start:(float)start Dur:(float)dur Npoints:(int)n Slidepoints:(int)s;

/* Cursor/mouse management:
 *      - mouseDown:		-- Handle a mousedown event
 *      - acceptsFirstResponder	-- Returns YES (to get mouse events)
 */
- mouseDown:(NXEvent *)event;
- (BOOL)acceptsFirstResponder;

@end


/* The following dummy interface is used to declare the delegate
 * methods for this object.
 *
 * 	- cursorMoved:		-- Notify delegate that cursor has moved
 */
@interface DummySpectrumViewDelegate : Object
- cursorMoved:sender;
@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.