iOS节拍器开发

作者: 否极泰来_L | 来源:发表于2018-11-07 15:51 被阅读30次

Demo&效果图

191541572782_.pic_hd.jpg

我将节拍器View部分分成了四部分,负责处理各自操作。


201541576346_.pic_hd.jpg

View

HLRhythmSpotView负责展示节拍数,会根据节拍显示闪烁动画
HLChoiceRhythmView负责切换节拍数
HLChangeSpeedView负责切换频率
HLPlaySwitchView负责播放、暂停、切换频率

节拍管理类

HLMetronomeAudioManager负责管理节拍的播放、暂停、频率

typedef NS_ENUM(NSInteger, HLMetronomeType) {
    
    HLMetronomeType1V4 =0,     // 1/4
    HLMetronomeType2V4,        // 2/4
    HLMetronomeType3V4,        // 3/4
    HLMetronomeType4V4,        // 4/4
    HLMetronomeType3V8,        // 3/8
    HLMetronomeType6V8         // 6/8
};

// 代理
@protocol HLMetronomeAudioManagerDelegate <NSObject>

/** 当前播放音频的总次数(用来处理上部圆View那个显示高亮状态) */
- (void)hlMetronomeAudioCurrentTotalNo:(int)currentTotalNo;

@end

@interface HLMetronomeAudioManager : NSObject

+ (instancetype)sharedAudioManager;

/** 代理 */
@property (nonatomic, weak) id <HLMetronomeAudioManagerDelegate> delegate;

/** 节拍类型 */
@property (nonatomic, assign) HLMetronomeType metronomeStat;

/** 播放速率,范围40~240 */
@property (nonatomic, assign) int rate;

/** 播放 */
- (void)play;

/** 暂停 */
- (void)pause;

@end

每个View通过代理将用户操作事件传回HLMetronomeViewController,由HLMetronomeViewController调用HLMetronomeAudioManager的方法操作节拍音频。

#pragma mark -- 初始化节拍器播放器
- (void)initMetronomeAudio{
    
    [HLMetronomeAudioManager sharedAudioManager].delegate = self;
    [[HLMetronomeAudioManager sharedAudioManager] setMetronomeStat:HLMetronomeType1V4];
    [[HLMetronomeAudioManager sharedAudioManager] setRate:40];
    [self.rhythmSpotView updateSpotView:HLMetronomeType1V4];
}

#pragma mark -- HLChoiceRhythmViewDelegate
- (void)hlChangeRhythm:(HLMetronomeType)metronomeStat{
    
    [self.rhythmSpotView updateSpotView:metronomeStat];
    [[HLMetronomeAudioManager sharedAudioManager] setMetronomeStat:metronomeStat];
}

#pragma mark -- HLChangeSpeedViewDelegate
- (void)hlChangeSpeed:(int)speed{
    
    [[HLMetronomeAudioManager sharedAudioManager] setRate:speed];
}

#pragma mark -- HLPlaySwitchViewDelegate
- (void)hlPlay{
    
    [[HLMetronomeAudioManager sharedAudioManager] play];
}

- (void)hlPause{
    
    [[HLMetronomeAudioManager sharedAudioManager] pause];
}

- (void)hlChangeSpeedWithIsAdd:(BOOL)isAdd speed:(int)speed{
    
    [self.changeSpeedView changeSpeedWithIsAdd:isAdd speed:speed];
}

#pragma mark -- HLMetronomeAudioManagerDelegate
- (void)hlMetronomeAudioCurrentTotalNo:(int)currentTotalNo{
    
    [self.rhythmSpotView updateSpotViewHeightState:currentTotalNo];
}

具体代码可以下载Demo查看

相关文章

  • iOS节拍器开发

    Demo&效果图 我将节拍器View部分分成了四部分,负责处理各自操作。 View HLRhythmSpotVie...

  • 学钢琴,节拍器什么时候用?怎么用才正确?| 钢琴知识

    学钢琴必备的神器-节拍器,节拍器是什么呢?节拍器什么时候用?怎么用才正确?下面诺英德曼钢琴与大家介绍节拍器的使用方...

  • 使用AudioKit框架的一点总结

    AudioKit是目前iOS端下关于音乐处理最全面的框架 涵盖音乐播放与录制, midi文件的处理, 节拍器, 各...

  • 快速阅读11/21

    第九章:加快阅读节奏 本章将对开发大脑节拍器的观点进行探究。节拍器的使用方法是多种多样,一种是每一拍就表示一次敲击...

  • iOS开发优秀博客和软件推荐

    iOSBlogAndTools iOS开发优秀博客和软件推荐 iOS开发中文博客 iOS开发工具 iOS开发网站 ...

  • 节拍器

    节拍器 作者:王语澜 看到“节拍器”这个名字,大家一定都...

  • 收录 : iOS支付开发

    iOS 银联支付开发流程iOS 微信支付开发流程iOS 支付宝支付开发流程iOS Apple Pay开发流程App...

  • 我家也有节拍器

    我家也有节拍器了,我像个孩子似的欢呼雀跃,本来买节拍器是给儿子练习钢琴用的,而此刻,我仿佛觉得这个节拍器...

  • IOS开发问题索引(四)

    全系列文章索引: IOS开发问题索引(一) IOS开发问题索引(二) IOS开发问题索引(三) IOS开发问题索引...

  • IOS开发问题索引(八)

    全系列文章索引: IOS开发问题索引(一) IOS开发问题索引(二) IOS开发问题索引(三) IOS开发问题索引...

网友评论

  • cute赵:感谢分享(企业账号买卖,打包,分发平台,有需要或者疑问都可联系我,qq:859463295)
  • 対伱偲淰:git上的demo什么都没有,能上传一下吗?:grin:
    否极泰来_L:有的啊:flushed:

本文标题:iOS节拍器开发

本文链接:https://www.haomeiwen.com/subject/gqlvxqtx.html