Приложение для пианино для 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) или что вы предлагаете?

спасибо!


person manuelBetancurt    schedule 06.01.2011    source источник


Ответы (1)


Вместо того, чтобы пытаться исправить то, что не должно быть проблемой, я предлагаю вместо этого использовать какое-нибудь программное обеспечение для редактирования аудио, которое не имеет ограничения на минимальную длину дорожки.

Одним из таких примеров, совместимых с Mac и бесплатных, является Audacity: http://audacity.sourceforge.net/.

Кроме того, OpenAL идеально подходит для воспроизведения множества коротких звуков, которые могут перекрываться. Я думаю, вы можете иметь 32 игры одновременно, если хотите.

person badgerr    schedule 06.01.2011
comment
Большое спасибо, это было оно !!, просто удалив тишину, теперь мое пианино работает идеально, спасибо! - person manuelBetancurt; 06.01.2011