Professional Documents
Culture Documents
C Program Is A Low Pass Filter Design
C Program Is A Low Pass Filter Design
C Program Is A Low Pass Filter Design
The stop
frequence of this filter is 800hz.This digtal filter chooses 19 points FIR
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@end
#import "AppDelegate.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
}
- (void)applicationWillTerminate:(NSNotification *)aNotification {
// Insert code here to tear down your application
}
@end
#import <Cocoa/Cocoa.h>
@interface ViewController : NSViewController
@end
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
- (void)updateViewsWithFilteredAcceleration:(CMAcceleration)acceleration
static CGFloat x0 = 0;
static CGFloat y0 = 0;
const NSTimeInterval dt = (1.0 / 20);
const double RC = 0.3;
const double alpha = dt / (RC + dt);
CMAcceleration smoothed;
smoothed.x = (alpha * acceleration.x) + (1.0 - alpha) * x0;
smoothed.y = (alpha * acceleration.y) + (1.0 - alpha) * y0;
[self updateViewsWithAcceleration:smoothed];
x0 = smoothed.x;
y0 = smoothed.y;
}
}
- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];
- (void)updateViewsWithAcceleration:(CMAcceleration)acceleration;
{
CGPoint center = self.view.center;
const CGFloat maxOffset = 200;
CGPoint frontCenter
acceleration.x),
acceleration.y));
acceleration.y));
self.frontView.center = frontCenter;
self.middleView.center = middleCenter;
self.backView.center = backCenter;
}
// Update the view, if already loaded.
}
@end
#include <stdio.h>
const int length = 180
void filter(int xin[ ],int xout[ ],int n,float h[ ]);
static float h[19]=
{0.01218354,-0.009012882,-0.02881839,-0.04743239,-0.04584568,
-0.008692503,0.06446265,0.1544655,0.2289794,0.257883,
0.2289794,0.1544655,0.06446265,-0.008692503,-0.04584568,
-0.04743239,-0.02881839,-0.009012882,0.01218354};
static int x1[length+20];
void
{
int i,j;
float sum;
for(i=0;i<length;i++) x1[n+i-1]=xin[i];
for (i=0;i<length;i++)
{
sum=0.0;
for(j=0;j<n;j++) sum+=h[j]*x1[i-j+n-1];
xout[i]=(int)sum;
}
for(i=0;i<(n-1);i++) x1[n-i-2]=xin[length-1-i];
}
void
{
main( )
FILE
*fp1,*fp2;
int
frame,indata[length],outdata[length];
fp1=fopen(insp.dat,"rb");
fp2=fopen(outsp.dat,"wb");
frame=0;
while(feof(fp1)==0)
{
frame++;
printf("frame=%d\n",frame);
for(i=0;i<length;i++) indata[i]=getw(fp1);
filter(indata,outdata,19,h);
for(i=0;i<length;i++)
fcloseall( );
return(0);
}
- (float) getVolume
{
float
b_vol;
OSStatus
err;
MediaDeviceID
device;
UInt32
size;
UInt32
channels[5];
float
volume[2];
// get device
size = sizeof device;
putw(outdata[i],fp2);
err = MediaObjectGetPropertyData(kMediaHardwarePropertyDefaultOutputDevice,
&device, <#UInt32 inQualifierDataSize#>, <#const void *inQualifierData#>,
&size, <#void *outData#>);
if(err!=noErr)
{
NSLog(@"Media-volume error get device");
return 0.0;
}
// try set master volume (channel 0)
size = sizeof b_vol;
err = MediaDeviceGetProperty(device, 0, 0, kMediaDevicePropertyVolumeScalar,
&size, &b_vol);
//kMediaDevicePropertyVolumeScalarToDecibels
if(noErr==err) return b_vol;
// otherwise, try seperate channels
// get channel numbers 1-5
size = sizeof(channels);
err = MediaDeviceGetProperty(device, 0,
0,kMediaDevicePropertyPreferredChannelsForStereo, &size,&channels);
if(err!=noErr) NSLog(@"error getting channel-numbers");
size = sizeof(float);
err = MediaDeviceGetProperty(device, channels[0], 0,
kMediaDevicePropertyVolumeScalar, &size, &volume[0]);
if(noErr!=err) NSLog(@"error getting volume of channel %d",channels[0]);
err = MediaDeviceGetProperty(device, channels[1], 0,
kMediaDevicePropertyVolumeScalar, &size, &volume[1]);
if(noErr!=err) NSLog(@"error getting volume of channel %d",channels[1]);
b_vol = (volume[0]+volume[1])/2.00;
return
}
b_vol;
- (void)setVolume:(float)involume {
OSStatus
err;
MediaDeviceID
device;
UInt32
size;
Boolean
canset
= false;
UInt32
channels[2];
//float
volume[2];
// get default device
size = sizeof device;
printf("setVolume:: value of the volume set =%lf", involume);
err = MediaHardwareGetProperty(kMediaHardwarePropertyDefaultOutputDevice,
&size, &device);
if(err!=noErr) {
NSLog(@"Media-volume error get device");
return;
}
// try set master-channel (0) volume
size = sizeof canset;