Programming Forums
User Name Password Register
 

RSS Feed
FORUM INDEX | TODAY'S POSTS | UNANSWERED THREADS | ADVANCED SEARCH

Reply
 
Thread Tools Display Modes
Old May 17th, 2006, 4:57 AM   #1
Jamesgregson
Newbie
 
Join Date: Apr 2006
Posts: 5
Rep Power: 0 Jamesgregson is on a distinguished road
XCode-increase amplitude code required

hello

i have an XCode prgram which i have started. I want to get the program to read AIFF file (which i have working now), and increse the amplitude by a slider variable. Basically the slider will control how much the amplitude will be increased OR decreased (by a MAXIMUM of 3 times).

I WOULD REALLY APPRECIATE THE HELP!!!!

Can any PLEASE give me the code for this i have the following code to show you what i have so far:


CARBON APPLICATION BY JAMES GREGSON

#include <Carbon/Carbon.h>

#define kControlSignature '????'

// menus

#define kFileMenuID 20
#define kFileOpenMenuID 2
#define kOpenFile 'open'
#define kSaveAsFile 'svas'

#define kQuit 'quit'


// Text boxes

#define kFORM_ID_Id 1
#define kFORM_ID 'fmid'
#define kFORM_chunksizeID 2
#define kFORM_chunksize 'fmcs'
#define kFORM_typeId 3
#define kFORM_type 'fmtp'

#define kCOMM_ID_Id 4
#define kCOMM_ID 'cmid'
#define kCOMM_chunksizeID 5
#define kCOMM_chunksize 'cmcs'

#define kCOMM_numChannelsID 6
#define kCOMM_numChannels 'numc'
#define kCOMM_numSampleFramesID 7
#define kCOMM_numSampleFrames 'numf'
#define kCOMM_bitDepthID 8
#define kCOMM_bitDepth 'bitd'
#define kCOMM_sampleRateID 9
#define kCOMM_sampleRate 'sprt'

// took from ieee

# define UnsignedToFloat(u) (((double)((long)(u - 2147483647L - 1))) + 2147483648.0)
// this is needed for the sample rate


// global variables

NavEventUPP gNavEventHandlerPtr;

ControlHandle FORM_ID_ControlHandle;
ControlID FORM_ID_Id = { kControlSignature, kFORM_ID_Id };
ControlHandle FORM_chunksizeControlHandle;
ControlID FORM_chunksizeID = { kControlSignature, kFORM_chunksizeID };
ControlHandle FORM_typeControlHandle;
ControlID FORM_typeId = { kControlSignature, kFORM_typeId };

ControlHandle COMM_ID_ControlHandle;
ControlID COMM_ID_Id = { kControlSignature, kCOMM_ID_Id };
ControlHandle COMM_chunksizeControlHandle;
ControlID COMM_chunksizeID = { kControlSignature, kCOMM_chunksizeID };
ControlHandle COMM_numChannelsControlHandle;
ControlID COMM_numChannelsID = { kControlSignature, kCOMM_numChannelsID };
ControlHandle COMM_numSampleFramesControlHandle;
ControlID COMM_numSampleFramesID = { kControlSignature, kCOMM_numSampleFramesID };
ControlHandle COMM_bitDepthControlHandle;
ControlID COMM_bitDepthID = { kControlSignature, kCOMM_bitDepthID };
ControlHandle COMM_sampleRateControlHandle;
ControlID COMM_sampleRateID = { kControlSignature, kCOMM_sampleRateID };


pascal OSStatus CommandEventHandler ( EventHandlerCallRef handlerRef, EventRef event, void *userData);
//OSStatus DisplayOpenInputFileDialog(void);
pascal void ThisOpenDialogEventCallback(NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms,
void* callBackUD);
short OpenMyInputfile( NavReplyRecord *reply );
void ReadMyInputFile(short MyInputFileRefNum);
/*pascal void ThisSaveDialogEventCallback(NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms,
void* callBackUD);*/

/**********/

pascal void ThisSaveDialogEventCallback(NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms,
void* callBackUD)
{
OSStatus err = 0;
NavReplyRecord reply;
NavUserAction UserAction = 0;

switch (callBackSelector)
{
case kNavCBUserAction :err= NavDialogGetReply
(callBackParms->context, & reply);
UserAction=
NavDialogGetUserAction(callBackParms->context );

switch ( UserAction )
{
case kNavUserActionSaveAs :
err = CreateOutputAIFFfile( &reply );
break;
}

err = NavDisposeReply( &reply );
break;
case kNavCBTerminate : NavDialogDispose (callBackParms->context);
DisposeNavEventUPP(gNavEventHandlerPtr);
break;

}
return err;
}

/**********/




// put this in 2

double ConvertFromIeeeExtended(unsigned char* bytes);
WindowRef window;


int main(int argc, char* argv[])
{
IBNibRef nibRef;
WindowRef window;

OSStatus err;

EventTargetRef target;
EventHandlerUPP handlerUPP;
EventTypeSpec cmdEvent = { kEventClassCommand, kEventProcessCommand };

// Create a Nib reference passing the name of the nib file (without the .nib extension)
// CreateNibReference only searches into the application bundle.
err = CreateNibReference(CFSTR("main"), &nibRef);
require_noerr( err, CantGetNibRef );

// Once the nib reference is created, set the menu bar. "MainMenu" is the name of the menu bar
// object. This name is set in InterfaceBuilder when the nib is created.
err = SetMenuBarFromNib(nibRef, CFSTR("MenuBar"));
require_noerr( err, CantSetMenuBar );

// Then create a window. "MainWindow" is the name of the window object. This name is set in
// InterfaceBuilder when the nib is created.
err = CreateWindowFromNib(nibRef, CFSTR("MainWindow"), &window);
require_noerr( err, CantCreateWindow );

// We don't need the nib reference anymore.
DisposeNibReference(nibRef);

target = GetWindowEventTarget ( window );
handlerUPP = NewEventHandlerUPP ( CommandEventHandler );
InstallEventHandler ( target, handlerUPP, 1, &cmdEvent, (void *)window, NULL );

// The window was created hidden so show it.
ShowWindow( window );

// Call the event loop
RunApplicationEventLoop();

CantCreateWindow:
CantSetMenuBar:
CantGetNibRef:
return err;
}

pascal OSStatus CommandEventHandler ( EventHandlerCallRef handlerRef, EventRef event, void *userData)
{
OSStatus result = eventNotHandledErr;
HICommand command;
WindowRef window;

window = ( WindowRef ) userData;


GetControlByID ( window,&FORM_ID_Id, &FORM_ID_ControlHandle);
GetControlByID ( window,&FORM_chunksizeID, &FORM_chunksizeControlHandle);
GetControlByID ( window,&FORM_typeId ,&FORM_typeControlHandle);
GetControlByID ( window,&COMM_ID_Id ,&COMM_ID_ControlHandle);
GetControlByID ( window,&COMM_chunksizeID, &COMM_chunksizeControlHandle);
GetControlByID ( window,&COMM_numChannelsID, &COMM_numChannelsControlHandle);
GetControlByID ( window,&COMM_numSampleFramesID,&COMM_numSampleFramesControlHandle);
GetControlByID ( window,&COMM_bitDepthID, &COMM_bitDepthControlHandle);
GetControlByID ( window,&COMM_sampleRateID, &COMM_sampleRateControlHandle);


GetEventParameter (event, kEventParamDirectObject, typeHICommand, NULL, sizeof (HICommand), NULL, &command);

switch (command.commandID )
{
case kOpenFile: result = DisplayOpenInputFileDialog();
break;

case kSaveAsFile: result = DisplaySaveAsOutputFileDialog();
break;
}
return result;
}

OSStatus DisplayOpenInputFileDialog()
{
OSStatus err;
NavDialogRef openDialog;
NavDialogCreationOptions dialogAttributes;

err = noErr;
err = NavGetDefaultDialogCreationOptions(&dialogAttributes);

dialogAttributes.modality = kWindowModalityAppModal;

gNavEventHandlerPtr = NewNavEventUPP(ThisOpenDialogEventCallback);

err = NavCreateGetFileDialog(&dialogAttributes, NULL, gNavEventHandlerPtr,
NULL, NULL, NULL, &openDialog);

err = NavDialogRun( openDialog);

if (err != noErr)
{
NavDialogDispose( openDialog);
DisposeNavEventUPP(gNavEventHandlerPtr);
}
}

OSStatus DisplaySaveAsOutputFileDialog()
{
OSStatus err;
NavDialogRef saveDialog;
NavDialogCreationOptions dialogAttributes;

err = NavGetDefaultDialogCreationOptions(&dialogAttributes);
dialogAttributes.modality = kWindowModalityAppModal;

gNavEventHandlerPtr = NewNavEventUPP(ThisSaveDialogEventCallback);

err = NavCreatePutFileDialog(&dialogAttributes, 'AIFF', '????',
gNavEventHandlerPtr, NULL, &saveDialog);

err = NavDialogRun( saveDialog);

if (err != noErr)
{
NavDialogDispose( saveDialog);
DisposeNavEventUPP(gNavEventHandlerPtr);

}

return err;

}


pascal void ThisOpenDialogEventCallback(NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms,
void* callBackUD)
{

OSStatus err = 0;
NavReplyRecord reply;
NavUserAction userAction = 0;
short MyInputFileRefNum;

switch (callBackSelector)
{
case kNavCBUserAction : err = NavDialogGetReply
(callBackParms->context, &reply);

userAction = NavDialogGetUserAction
(callBackParms->context );

switch ( userAction )
{
case kNavUserActionOpen : MyInputFileRefNum = OpenMyInputfile( &reply );
ReadMyInputFile(MyInputFileRefNum);
break;
}

err = NavDisposeReply( &reply );

break;

case kNavCBTerminate : NavDialogDispose (callBackParms->context);
DisposeNavEventUPP(gNavEventHandlerPtr);
break;

}
}

/*pascal void ThisSaveDialogEventCallback(NavEventCallbackMessage callBackSelector,
NavCBRecPtr callBackParms,
void* callBackUD)
{
OSStatus err = 0;
NavReplyRecord reply;
NavUserAction UserAction = 0;

switch (callBackSelector)
{
case kNavCBUserAction :err= NavDialogGetReply
(callBackParms->context, & reply);
UserAction=
NavDialogGetUserAction(callBackParms->context );

switch ( UserAction )
{
case kNavUserActionSaveAs :
err = CreateOutputAIFFfile( &reply );
break;
}

err = NavDisposeReply( &reply );
break;
case kNavCBTerminate : NavDialogDispose (callBackParms->context);
DisposeNavEventUPP(gNavEventHandlerPtr);
break;

}
return err;
}*/





short OpenMyInputfile( NavReplyRecord *reply )
{

OSStatus err;
AEDesc newDescriptor;
FSRef MyfileRef;
short MyInputFileRefNum;
FSSpec MyfileFSSpec;

err = AECoerceDesc(&reply->selection, typeFSRef, &newDescriptor);
err = AEGetDescData(&newDescriptor, (void *) (&MyfileRef), sizeof(FSRef) );
err = FSGetCatalogInfo(&MyfileRef, kFSCatInfoNone, NULL, NULL, &MyfileFSSpec, NULL);
err = FSpOpenDF (&MyfileFSSpec, fsCurPerm, &MyInputFileRefNum);

return MyInputFileRefNum;
}


void ReadMyInputFile(short MyInputFileRefNum)
{
OSStatus err;
long count = 2;
CFStringRef theCFString;
Str255 formTypeString, channelTypeString, chunksizeString, SampleFramesString, bitDepthString, sampleRateString;
int i;
char byte, string[5];
long formType, chunkSize, SampleFrames;
double sampleRate;
short numOfChannels, bitDepth;

// read the FORM chunk

// first the ID...

count = 1;

for (i=0;i<4;i++)
{
FSRead(MyInputFileRefNum,&count, &byte);
string[i] = byte;
}

string[4] = '\0' ;

theCFString = CFStringCreateWithCString (kCFAllocatorDefault, &string, kCFStringEncodingASCII);
SetControlData( FORM_ID_ControlHandle, kControlEntireControl, kControlEditTextCFStringTag,
sizeof(CFStringRef), &theCFString );
//dont need to display these we have to READ and WRITE at the same time



// then the chunk size

count = 4;

FSRead(MyInputFileRefNum,&count, &formType);

NumToString(formType, formTypeString );
SetControlData( FORM_chunksizeControlHandle, 0, kControlEditTextTextTag,
formTypeString[0], (Ptr)(formTypeString+1) );

// then the type

count = 1;
for (i=0;i<4;i++)
{
FSRead(MyInputFileRefNum,&count, &byte);
string[i] = byte;
}

string[4] = '\0' ;

theCFString = CFStringCreateWithCString (kCFAllocatorDefault, &string, kCFStringEncodingASCII);
SetControlData( FORM_typeControlHandle, kControlEntireControl, kControlEditTextCFStringTag,
sizeof(CFStringRef), &theCFString );

// we've finished with the FORM chunk


// put the details on screen

DrawOneControl (FORM_ID_ControlHandle);
DrawOneControl (FORM_chunksizeControlHandle);
DrawOneControl (FORM_typeControlHandle);




// read the comm chunk....???
// first the chunk id?? ?

count = 1;

for (i=0;i<4;i++)
{
FSRead(MyInputFileRefNum,&count, &byte);
string[i] = byte;
}

string[4] = '\0' ;

theCFString = CFStringCreateWithCString (kCFAllocatorDefault, &string, kCFStringEncodingASCII);
SetControlData( COMM_ID_ControlHandle, kControlEntireControl, kControlEditTextCFStringTag,
sizeof(CFStringRef), &theCFString );


// comm chunk size

count = 4;

FSRead(MyInputFileRefNum,&count, &chunkSize);

NumToString(chunkSize, chunksizeString );
SetControlData( COMM_chunksizeControlHandle, 0, kControlEditTextTextTag,
chunksizeString[0], (Ptr)(chunksizeString+1) );


// num channels

count = 2;

FSRead(MyInputFileRefNum,&count, &numOfChannels);


NumToString(numOfChannels, channelTypeString );
SetControlData( COMM_numChannelsControlHandle, 0, kControlEditTextTextTag,
channelTypeString[0], (Ptr)(channelTypeString+1) );


// num sample frames

count = 4;

FSRead(MyInputFileRefNum,&count, &SampleFrames);

NumToString(SampleFrames, SampleFramesString );
SetControlData( COMM_numSampleFramesControlHandle, 0, kControlEditTextTextTag,
SampleFramesString[0], (Ptr)(SampleFramesString+1) );



// num sample size (bitdepth)

count = 2;

FSRead(MyInputFileRefNum,&count, &bitDepth);


NumToString(bitDepth, bitDepthString );
SetControlData( COMM_bitDepthControlHandle, 0, kControlEditTextTextTag,
bitDepthString[0], (Ptr)(bitDepthString+1) );


// sample rate... ... ...



count = 1;

for (i=0;i<10;i++)
{
FSRead(MyInputFileRefNum,&count, &byte);
sampleRate = byte;
}

sampleRate = ConvertFromIeeeExtended(&sampleRate);

NumToString(sampleRate, sampleRateString );
SetControlData( COMM_sampleRateControlHandle, 0, kControlEditTextTextTag,
sampleRateString[0], (Ptr)(sampleRateString+1) );



// the sound data chunk must be taken care of next


}

// put this bit in from convert to Ieee

double ConvertFromIeeeExtended(unsigned char* bytes)
{
double f;
int expon;
unsigned long hiMant, loMant;

expon = ((bytes[0] & 0x7F) << 8) | (bytes[1] & 0xFF);
hiMant = ((unsigned long)(bytes[2] & 0xFF) << 24)
| ((unsigned long)(bytes[3] & 0xFF) << 16)
| ((unsigned long)(bytes[4] & 0xFF) << 8)
| ((unsigned long)(bytes[5] & 0xFF));
loMant = ((unsigned long)(bytes[6] & 0xFF) << 24)
| ((unsigned long)(bytes[7] & 0xFF) << 16)
| ((unsigned long)(bytes[8] & 0xFF) << 8)
| ((unsigned long)(bytes[9] & 0xFF));

if (expon == 0 && hiMant == 0 && loMant == 0) {
f = 0;
}
else {
if (expon == 0x7FFF) { /* Infinity or NaN */
f = HUGE_VAL;
}
else {
expon -= 16383;
f = ldexp(UnsignedToFloat(hiMant), expon-=31);
f += ldexp(UnsignedToFloat(loMant), expon-=32);
}
}

if (bytes[0] & 0x80)
return -f;
else
return f;


}


THANKYOU FOR READING!! I WOULD REALLY APPRECIATE THE HELP
Jamesgregson is offline   Reply With Quote
Old May 17th, 2006, 5:28 AM   #2
ReggaetonKing
Sexy Programmer
 
ReggaetonKing's Avatar
 
Join Date: Nov 2005
Location: New Jersey
Posts: 891
Rep Power: 3 ReggaetonKing is on a distinguished road
Send a message via AIM to ReggaetonKing
some [code] tag would help improve readability and add clarity to your code. Please use them.
__________________
I would love to change the world, but they won't give me the source code!
ReggaetonKing is offline   Reply With Quote
Old May 17th, 2006, 7:42 AM   #3
DaWei
Resident Grouch
 
DaWei's Avatar
 
Join Date: Jun 2005
Posts: 6,453
Rep Power: 10 DaWei is on a distinguished road
You'll learn about them by reading the forum's rules/FAQ. Read a "How to Post..." while you're at it. Bear in mind that the help here is voluntary. The use of the word, "required", might not be the best choice in many dialects. All that said, bear in mind that dinking with the amplitude up to 3x may very well cause clipping and distortion, depending upon the source's existing amplitude.
__________________
Abstraction doesn't make it impossible to write bad code; it makes it possible to write superior code.
Contributor's Corner: Grumpy on C++ Exceptions DaWei on Pointers
DaWei is offline   Reply With Quote
Old May 17th, 2006, 10:38 AM   #4
Jamesgregson
Newbie
 
Join Date: Apr 2006
Posts: 5
Rep Power: 0 Jamesgregson is on a distinguished road
Smile hey

hey

sorry about the 'required' thing didnt mean to annoy anyone...

i am an absolute BEGINNER at this-it is for my uni assignment-i know i probably should do it all myself but the teacher here atmy uni is TERRIBLE and is only ewver one lecture ahead of us in learning!!!!!!!!!!!!!!!!!!!!

PLEEEEEEEAAAAAASE help

the amplitude modification doesnt matter if it makes it distort as long as the program works...also i am not goin to use a slider anymore i am going to use an input box to enter either + or - 2,3,4,5 and 6 maybe (or maybe only to 3 if easier!!)

THANKYOU for reading all this-have a good day
James
Jamesgregson is offline   Reply With Quote
Old May 17th, 2006, 12:37 PM   #5
Ooble
I eat cake for breakfast.
 
Ooble's Avatar
 
Join Date: Jul 2004
Location: In my box.
Posts: 4,434
Rep Power: 9 Ooble is on a distinguished road
PLEEEEEEEAAAAAASE read the bloody How To Post thread.
__________________
Me :: You :: Them
Ooble is offline   Reply With Quote
Old May 17th, 2006, 4:49 PM   #6
Jamesgregson
Newbie
 
Join Date: Apr 2006
Posts: 5
Rep Power: 0 Jamesgregson is on a distinguished road
Thumbs up sorry

sorry bout that-didnt realise... :o :o
Jamesgregson is offline   Reply With Quote
Reply

Bookmarks

« Previous Thread in Forum | Next Thread in Forum »

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump




DaniWeb IT Discussion Community
All times are GMT -5. The time now is 1:46 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC