Chương trình chạy nhạc phần 2 (Nâng cấp tuỳ chỉnh lúc nghe nhạc)

I. Thông tin chung:

– Chạy nhạc chỉ sử dụng chương trình của Apple sẽ không cho chúng ta tùy chọn nhiều thứ nên chúng ta có thể thay thế những thuộc tính căn bản của phần nhạc để cho chương trình có thể tùy biến cao hơn. Cụ thể ở đây tôi sẽ chỉ các bạn thay đổi những tốc độ và  âm lượng của bài hát đang chạy. Tôi cũng chỉ các bạn cách lấy một vài chỉ số của bài nhạc đang chạy ra để xem xét.

II. Nội dung chính:

1. Những phần cần chuẩn bị cho việc tạo chương trình:

– Chúng ta bắt đầu:
* Cần phải thêm một vài điều khiển để thể hiện những dữ liệu có được lên màn hình bao gồm:
– 3 UISliders để điều khiển 3 cái là Rate (tốc độ bài hát), Pan () và Volumne (Âm lượng)

– 2 UILabel dùng để thể hiện AVG và Peak

2. Mã nguồn của chương trình:

* Đây là file .h

#import <UIKit/UIKit.h>

#import <AVFoundation/AVFoundation.h>

#import <AudioToolbox/AudioToolbox.h>

@interface MainMindViewController : UIViewController <AVAudioPlayerDelegate>

@property (strong, nonatomic) AVAudioPlayer *LKplayer;

@property (strong, nonatomic) IBOutlet UIButton *LKVibrateButton;

@property (strong, nonatomic) IBOutlet UIButton *LKPlayButton;

@property (strong, nonatomic) IBOutlet UIButton *LKPauseButton;

@property (strong, nonatomic) IBOutlet UISlider *LKSliderVolumne;

@property (strong, nonatomic) IBOutlet UISlider *LKSliderPan;

@property (strong, nonatomic) IBOutlet UISlider *LKSliderRate;

@property (strong, nonatomic) IBOutlet UILabel *LKPeakLabel;

@property (strong, nonatomic) IBOutlet UILabel *LKAverageLabel;

– (IBAction)LKVibratePressed:(id)sender;

– (IBAction)LKPlayPressed:(id)sender;

– (IBAction)LKPausePressed:(id)sender;

– (IBAction)LKVolumneChange:(id)sender;

– (IBAction)LKPanChange:(id)sender;

– (IBAction)LKRateChange:(id)sender;

@end

Đây là file .m

#import “MainMindViewController.h”

@interface MainMindViewController ()

@end

@implementation MainMindViewController

– (void)viewDidLoad

{

[super viewDidLoad];

NSString *fileName = @”MoiHongXaoXuyen”;

NSString *fileType = @”mp3″;

NSString *soundFilePath = [[NSBundle mainBundle] pathForResource:fileName ofType:fileType];

NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];

NSError *error;

self.LKplayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileURL error:&error];

if (error)

{

NSLog(@”Khong chay duoc file nhac Da bit loi: %@”, error);

}

self.LKplayer.enableRate = YES;

self.LKplayer.meteringEnabled = YES;

self.LKplayer.delegate = self;

self.LKSliderVolumne.value = self.LKplayer.volume;

self.LKSliderRate.value = self.LKplayer.rate;

self.LKSliderPan.value = self.LKplayer.pan;

[self.LKplayer prepareToPlay];

[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(updateLabels) userInfo:nil repeats:YES];

}

-(void)updateLabels

{

[self.LKplayer updateMeters];

self.LKAverageLabel.text = [NSString stringWithFormat:@”%f”, [self.LKplayer averagePowerForChannel:0]];

self.LKPeakLabel.text = [NSString stringWithFormat:@”%f”, [self.LKplayer peakPowerForChannel:0]];

}

– (void)didReceiveMemoryWarning

{

[super didReceiveMemoryWarning];

}

– (IBAction)LKVibratePressed:(id)sender {

AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);

}

– (IBAction)LKPlayPressed:(id)sender {

[self.LKplayer play];

}

– (IBAction)LKPausePressed:(id)sender {

[self.LKplayer pause];

}

– (IBAction)LKVolumneChange:(id)sender {

self.LKplayer.volume = self.LKSliderVolumne.value;

}

– (IBAction)LKPanChange:(id)sender {

self.LKplayer.pan = self.LKSliderPan.value;

}

– (IBAction)LKRateChange:(id)sender {

self.LKplayer.rate = self.LKSliderRate.value;

}

– (void)audioPlayerEndInterruption:(AVAudioPlayer *)player withOptions:(NSUInteger)flags

{

if (flags == AVAudioSessionInterruptionOptionShouldResume)

{

[self.LKplayer play];

}

}

@end

3. Giải thích mã nguồn:

– Chương trình dùng Audio của Apple để chạy nhạc và dùng NSTimer để cập nhật thông tin cho các nhãn (UILabel) hiển thị.

– Ngoài ra, nó còn bắt sự kiện thay đổi của từng UISlider để có sự điều chỉnh những gì đang phát trên Player.

* Lưu ý: Các số Max và Min bạn nên tuỳ chỉnh lại cho phù hợp vì nếu để mặc định sẽ là (Max: 1 và Min: 0) sẽ bị lỗi nếu bạn để Rate của trình phát nhạc xuống còn 0.

Với Rate nên là 0.5 -> 2

Với Pan nên là -1 -> 1

Với Volumne nên là 0 -> 1

=> Như vậy thì việc tuỳ chọn mới không phát sinh lỗi và có hiệu quả (Rate x2 tức là chương trình phát nhạc nhanh gấp đôi)

III. Kết luận:

– Đây là những bước đầu cho các bạn muốn điều chỉnh nhạc phát ra theo sở thích và mục đích của mỗi người. Những hàm chuẩn của chương trình là thế nhưng bạn có thể tuỳ biến để thực hiện theo đung mục đích của bạn ví dụ như hiệu ứng khi đang xem hay xem xét nhạc sắp hết hay muốn dừng lại đấy là tuỳ bạn.

* Source Code:

– Google Drive: https://docs.google.com/file/d/0B3v7a0gMgVkBSmlxNTJGMTU5NFE/edit?usp=sharing

– Mediafire: http://www.mediafire.com/?nc1m8ezd8b4pv1u

=> Mãi mới có người comment🙂 Có người quan tâm thì mình post source.

Tagged: , , , , , , , , , , , , , , , , ,

One thought on “Chương trình chạy nhạc phần 2 (Nâng cấp tuỳ chỉnh lúc nghe nhạc)

  1. jsdfjsdb January 31, 2013 at 6:46 pm Reply

    post source di cau

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: