我正在制作一个钢琴测试应用程序,所有键盘现在都在播放我使用车库乐队录制的音符,但我有一些问题:
- 音符是 5 秒长(车库乐队的最短时间),所以一个音符不能重复,我必须等到实际音符大约 1 秒发声,然后静音约 4 秒,有时也不能按预期播放音符, 我使用 AVFoundation.framework,,
尝试使用 AudioToolbox.framework,但它给我的 4.1 ipod touch 带来了问题(不起作用!!)但在模拟器中看起来不错
我还检查了 OpenAL 和 ObjectAL,但只是弹奏音符似乎有点过分??
这里的代码
#import "pianoViewController.h"
@implementation pianoViewController
@synthesize myMusic;
@synthesize myMusic2;
@synthesize myMusic3;
@synthesize myMusic4;
@synthesize myMusic5;
@synthesize myMusic6;
@synthesize myMusic7;
@synthesize myMusic8;
@synthesize myMusic9;
@synthesize myMusic10;
@synthesize myMusic11;
@synthesize myMusic12;
-(IBAction)Play{
[myMusic play];
}
-(IBAction)Play2{
[myMusic2 play];
}
.
.
.
- (void)viewDidLoad {
NSString *pathToMusicFile = [[NSBundle mainBundle] pathForResource:@"c3" ofType:@"aif"];
myMusic = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile] error:NULL];
myMusic.delegate = self;
myMusic.numberOfLoops = 0;
myMusic.volume = 1.0;
NSString *pathToMusicFile2 = [[NSBundle mainBundle] pathForResource:@"c#" ofType:@"aif"];
myMusic2 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile2] error:NULL];
myMusic2.delegate = self;
myMusic2.numberOfLoops = 0;
myMusic2.volume = 1.0;
NSString *pathToMusicFile3 = [[NSBundle mainBundle] pathForResource:@"d" ofType:@"aif"];
myMusic3 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile3] error:NULL];
myMusic3.delegate = self;
myMusic3.numberOfLoops = 0;
myMusic3.volume = 1.0;
//[super viewDidLoad];
NSString *pathToMusicFile4 = [[NSBundle mainBundle] pathForResource:@"d#" ofType:@"aif"];
myMusic4 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile4] error:NULL];
myMusic4.delegate = self;
myMusic4.numberOfLoops = 0;
myMusic4.volume = 1.0;
//[super viewDidLoad];
NSString *pathToMusicFile5 = [[NSBundle mainBundle] pathForResource:@"e" ofType:@"aif"];
myMusic5 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile5] error:NULL];
myMusic5.delegate = self;
myMusic5.numberOfLoops = 0;
myMusic5.volume = 1.0;
NSString *pathToMusicFile6 = [[NSBundle mainBundle] pathForResource:@"f" ofType:@"aif"];
myMusic6 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile6] error:NULL];
myMusic6.delegate = self;
myMusic6.numberOfLoops = 0;
myMusic6.volume = 1.0;
NSString *pathToMusicFile7 = [[NSBundle mainBundle] pathForResource:@"f#" ofType:@"aif"];
myMusic7 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile7] error:NULL];
myMusic7.delegate = self;
myMusic7.numberOfLoops = 0;
myMusic7.volume = 1.0;
NSString *pathToMusicFile8 = [[NSBundle mainBundle] pathForResource:@"g" ofType:@"aif"];
myMusic8 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile8] error:NULL];
myMusic8.delegate = self;
myMusic8.numberOfLoops = 0;
myMusic8.volume = 1.0;
NSString *pathToMusicFile9 = [[NSBundle mainBundle] pathForResource:@"g#" ofType:@"aif"];
myMusic9 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile9] error:NULL];
myMusic9.delegate = self;
myMusic9.numberOfLoops = 0;
myMusic9.volume = 1.0;
NSString *pathToMusicFile10 = [[NSBundle mainBundle] pathForResource:@"a" ofType:@"aif"];
myMusic10 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile10] error:NULL];
myMusic10.delegate = self;
myMusic10.numberOfLoops = 0;
myMusic10.volume = 1.0;
NSString *pathToMusicFile11 = [[NSBundle mainBundle] pathForResource:@"a#" ofType:@"aif"];
myMusic11 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile11] error:NULL];
myMusic11.delegate = self;
myMusic11.numberOfLoops = 0;
myMusic11.volume = 1.0;
NSString *pathToMusicFile12 = [[NSBundle mainBundle] pathForResource:@"b" ofType:@"aif"];
myMusic12 = [[AVAudioPlayer alloc]initWithContentsOfURL:[NSURL fileURLWithPath:pathToMusicFile12] error:NULL];
myMusic12.delegate = self;
myMusic12.numberOfLoops = 0;
myMusic12.volume = 1.0;
[super viewDidLoad];
}
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
那么有没有办法让我可以使用 AVFoundation 快速播放多个音符?(几乎与 AudioToolbox 重叠)或者你有什么建议?
谢谢你!