Приложение для iphone фортепьяно не воспроизводит заметки, как ожидалось
Я делаю тестовое приложение для фортепиано, теперь звучит вся клавиатура, играя ноты, которые я записал с помощью гаражной группы, но у меня есть некоторые проблемы:
- ноты имеют длину 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) или что вы предлагаете?
благодарю вас!
1 ответ
Вместо того, чтобы готовить что-то, что не должно вызывать проблем, я предлагаю вместо этого использовать программное обеспечение для редактирования звука, которое не имеет ограничения по минимальной длине дорожки.
Одним из таких примеров, который совместим с Mac и является бесплатным, является Audacity: http://audacity.sourceforge.net/
Кроме того, OpenAL идеально подходит для воспроизведения множества коротких звуков, которые могут частично совпадать. Я думаю, что вы можете играть 32 одновременно, если хотите.