我正在 IRTcmix(iphone/ipad 的 RTcmix 版本)中构建一个简单的步进音序器,使用 UI 按钮来控制序列中哪些音符是打开或关闭的。
我一直在使用其他应用程序的一组 RTcmix 示例,并尝试将我自己的示例拼凑在一起,但我不确定如何使用切换样式的 UIButton 更改 .sco(分数文件)中变量的值。
以下是工作中的 RTcmix 应用程序的一些片段:
从 RTcmix 管理器 .h:
@interface RTcmixManager : RTcmixPlayer {
RTcmixScore *polyScore;
}
@property (nonatomic, retain) RTcmixScore *polyScore;
- (void)noteOn:(int)note;
- (void)noteOff:(int)note;
@end
和 RTcmix 管理器 .m
- (void)noteOn:(int)note {
[polyScore.mainScoreParameters replaceObjectAtIndex:0 withObject:[NSNumber numberWithInt:note]];
[polyScore.mainScoreParameters replaceObjectAtIndex:1 withObject:[NSNumber numberWithInt:1]];
[self parseScoreWithRTcmixScore:polyScore];
polyScore.setupIsActive = YES;
}
- (void)noteOff:(int)note {
[polyScore.mainScoreParameters replaceObjectAtIndex:0 withObject:[NSNumber numberWithInt:note]];
[polyScore.mainScoreParameters replaceObjectAtIndex:1 withObject:[NSNumber numberWithInt:0]];
[self parseScoreWithRTcmixScore:polyScore];
}
视图控制器.h:
@interface RTPolyphonyViewController : UIViewController {
RTcmixManager *rtcmixManager;
}
- (IBAction)keyDown:(UIButton *)sender;
- (IBAction)keyUp:(UIButton *)sender;
@end
视图控制器.m:
- (IBAction)keyDown:(UIButton *)sender {
[rtcmixManager noteOn:sender.tag];
}
- (IBAction)keyUp:(UIButton *)sender {
[rtcmixManager noteOff:sender.tag];
}
以及来自 .sco 文件的片段(“%@”是用户输入更改的变量):
NoteNumber = %@
NoteVelocity = %@
alreadySounding = note_exists(oscNotes[NoteNumber])
MAXMESSAGE(0, alreadySounding)
我对目标 C 和 xcode 非常陌生,我想知道如何在乐谱文件中的两个值之间切换 UI 按钮(充当开关),例如,切换时的按钮使 NoteNumber 的值(在乐谱文件中) 设置为 1,而关闭时值为 0。因为我是 Xcode(和 Objective C)的初学者,所以我不确定使按钮能够打开和关闭的正确语法,我也不确定如何将所述按钮与我的 .sco 文件连接起来,尽管我查看示例代码,但我似乎无法弄清楚它们是如何连接的。