iosobjective-ctouchavaudioplayerpiano

Play multiple media same time on touch event like Piano


I want to play media on touch event. In my application have 4 button. When user click on 1st button using 1st finger then want to start play music1 on button1. Immediate click on button 2 using 2nd finger then want to start play music2 on button2(still user has not release his 1st finger). Immediate click on button 3 using 3nd finger then want to start play music3 on button3(still user has not release his 1st finger & 2nd finger). How can I implement this? I have no idea about this. Please help me.

I know only how to play music using AVAudioPlayer.

Thanks in advance


Solution

  • This code is working for me. ViewController.h

    #import <UIKit/UIKit.h>
    #import <AVFoundation/AVFoundation.h>
    #import <AudioToolbox/AudioServices.h>
    
    @interface ViewController : UIViewController
    {
        NSString *filePath;
    }
    @property(strong,nonatomic) AVAudioPlayer *playerAudio1;
    @property(strong,nonatomic) AVAudioPlayer *playerAudio2;
    @property(strong,nonatomic) AVAudioPlayer *playerAudio3;
    @property(strong,nonatomic) AVAudioPlayer *playerAudio4;
    -(IBAction)btnDownload:(id)sender;
    -(IBAction)btn1_DownAction:(id)sender;
    -(IBAction)btn2_DownAction:(id)sender;
    -(IBAction)btn3_DownAction:(id)sender;
    -(IBAction)btn4_DownAction:(id)sender;
    -(IBAction)btn_Action:(id)sender;
    
    @end
    

    ViewController.m

    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
    }
    
    -(IBAction)btnDownload:(id)sender
    {
        NSString *urlToDownload = @"http://leocan.co/Salon/images/album/videos/b.mp3";
    
        filePath= [appObj downloadFile:urlToDownload filename:@"myAudio.mp3"];
    }
    
    -(IBAction)btn1_DownAction:(id)sender
    {
        NSString *soundFile;
        soundFile = [[NSBundle mainBundle] pathForResource:@"demo1" ofType:@"mp3"];
        NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
        self.playerAudio1 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
        [[AVAudioSession sharedInstance] setActive: YES error: nil];
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        self.playerAudio1.numberOfLoops = -1;
        self.playerAudio1.volume=1;
        [self.playerAudio1 play];
        NSLog(@"hold Down");
    
    }
    
    -(IBAction)btn2_DownAction:(id)sender
    {
        NSString *soundFile;
        soundFile = [[NSBundle mainBundle] pathForResource:@"demo2" ofType:@"mp3"];
        NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
        self.playerAudio2 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
        [[AVAudioSession sharedInstance] setActive: YES error: nil];
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        self.playerAudio2.numberOfLoops = -1;
        self.playerAudio2.volume=1;
        [self.playerAudio2 play];
        NSLog(@"hold Down");
        }
    
    -(IBAction)btn3_DownAction:(id)sender
    {
        NSString *soundFile;
        soundFile = [[NSBundle mainBundle] pathForResource:@"demo3" ofType:@"mp3"];
        NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
        self.playerAudio3 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
        [[AVAudioSession sharedInstance] setActive: YES error: nil];
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        self.playerAudio3.numberOfLoops = -1;
        self.playerAudio3.volume=1;
        [self.playerAudio3 play];
        NSLog(@"hold Down");
    
    }
    
    -(IBAction)btn4_DownAction:(id)sender
    {
        NSString *soundFile;
        soundFile = [[NSBundle mainBundle] pathForResource:@"demo6" ofType:@"mp3"];
        NSURL *fileURL = [NSURL fileURLWithPath:soundFile];
        self.playerAudio4 = [[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:nil];
        [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
        [[AVAudioSession sharedInstance] setActive: YES error: nil];
        [[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
        self.playerAudio4.numberOfLoops = -1;
        self.playerAudio4.volume=1;
        [self.playerAudio4 play];
        NSLog(@"hold Down");
      }
    
    -(IBAction)btn_Action:(id)sender
    {
        NSLog(@"hold release");
        if([sender tag]==1)
        {
            [self.playerAudio1 stop];
        }
        else if([sender tag]==2)
        {
            [self.playerAudio2 stop];
        }
        else if([sender tag]==3)
        {
            [self.playerAudio3 stop];
        }
        else
        {
            [self.playerAudio4 stop];
        }
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }