Browse Source

调音器添加播放音叉功能

Steven 2 years ago
parent
commit
691ba8ef8c
27 changed files with 1386 additions and 22 deletions
  1. 24 0
      KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj
  2. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchChoosed.imageset/Contents.json
  3. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchChoosed.imageset/fork_pitchChoosed@2x.png
  4. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchChoosed.imageset/fork_pitchChoosed@3x.png
  5. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchUnChoosed.imageset/Contents.json
  6. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchUnChoosed.imageset/fork_pitchUnChoosed@2x.png
  7. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchUnChoosed.imageset/fork_pitchUnChoosed@3x.png
  8. 22 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_warning.imageset/Contents.json
  9. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_warning.imageset/fork_warning@2x.png
  10. BIN
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_warning.imageset/fork_warning@3x.png
  11. 0 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_setting.imageset/Contents.json
  12. 0 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_setting.imageset/tuning_setting@2x.png
  13. 0 0
      KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_setting.imageset/tuning_setting@3x.png
  14. 3 2
      KulexiuForStudent/KulexiuForStudent/Module/Chat/Group/View/GroupMemberListCell.m
  15. 7 0
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/VideoCourseCell.m
  16. 4 4
      KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/VideoCourseCell.xib
  17. 96 14
      KulexiuForStudent/KulexiuForStudent/Module/Widget/Controller/ToneTuningViewController.m
  18. 48 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/TunerForkManager.swift
  19. 15 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.h
  20. 57 2
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.m
  21. 13 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.xib
  22. 16 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TunerSettingView.h
  23. 20 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TunerSettingView.m
  24. 18 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TunerSettingView.xib
  25. 29 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TuningForkSettingView.h
  26. 202 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TuningForkSettingView.m
  27. 768 0
      KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TuningForkSettingView.xib

+ 24 - 0
KulexiuForStudent/KulexiuForStudent.xcodeproj/project.pbxproj

@@ -595,6 +595,8 @@
 		BC7663162827E49900C91A1D /* NotiferHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7663102827E49800C91A1D /* NotiferHeadView.xib */; };
 		BC7663162827E49900C91A1D /* NotiferHeadView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7663102827E49800C91A1D /* NotiferHeadView.xib */; };
 		BC7663172827E49900C91A1D /* NotiferMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7663122827E49800C91A1D /* NotiferMessageCell.m */; };
 		BC7663172827E49900C91A1D /* NotiferMessageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7663122827E49800C91A1D /* NotiferMessageCell.m */; };
 		BC7663182827E49900C91A1D /* NotiferMessageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7663132827E49900C91A1D /* NotiferMessageCell.xib */; };
 		BC7663182827E49900C91A1D /* NotiferMessageCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7663132827E49900C91A1D /* NotiferMessageCell.xib */; };
+		BC7E770F2900F38F00EB37AF /* TuningForkSettingView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7E770E2900F38F00EB37AF /* TuningForkSettingView.m */; };
+		BC7E77112900F39700EB37AF /* TuningForkSettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC7E77102900F39700EB37AF /* TuningForkSettingView.xib */; };
 		BC802D8528B872AB0079E350 /* KSLiveAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC802D8428B872AB0079E350 /* KSLiveAlertView.m */; };
 		BC802D8528B872AB0079E350 /* KSLiveAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC802D8428B872AB0079E350 /* KSLiveAlertView.m */; };
 		BC802D8728B872B40079E350 /* KSLiveAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC802D8628B872B40079E350 /* KSLiveAlertView.xib */; };
 		BC802D8728B872B40079E350 /* KSLiveAlertView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC802D8628B872B40079E350 /* KSLiveAlertView.xib */; };
 		BC802D8A28B876720079E350 /* LiveRoomAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC802D8928B876720079E350 /* LiveRoomAlertView.m */; };
 		BC802D8A28B876720079E350 /* LiveRoomAlertView.m in Sources */ = {isa = PBXBuildFile; fileRef = BC802D8928B876720079E350 /* LiveRoomAlertView.m */; };
@@ -696,6 +698,9 @@
 		BCA193B8282B6094004A585D /* RecentCourseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA193B7282B6094004A585D /* RecentCourseModel.m */; };
 		BCA193B8282B6094004A585D /* RecentCourseModel.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA193B7282B6094004A585D /* RecentCourseModel.m */; };
 		BCA353F12859BB2900377661 /* MusicRoomCourseCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA353EF2859BB2700377661 /* MusicRoomCourseCell.xib */; };
 		BCA353F12859BB2900377661 /* MusicRoomCourseCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA353EF2859BB2700377661 /* MusicRoomCourseCell.xib */; };
 		BCA353F22859BB2900377661 /* MusicRoomCourseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA353F02859BB2900377661 /* MusicRoomCourseCell.m */; };
 		BCA353F22859BB2900377661 /* MusicRoomCourseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA353F02859BB2900377661 /* MusicRoomCourseCell.m */; };
+		BCA3DBBD29014B9800AE1C49 /* TunerForkManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCA3DBBC29014B9800AE1C49 /* TunerForkManager.swift */; };
+		BCA3DBC029015E2500AE1C49 /* TunerSettingView.m in Sources */ = {isa = PBXBuildFile; fileRef = BCA3DBBF29015E2500AE1C49 /* TunerSettingView.m */; };
+		BCA3DBC229015E2C00AE1C49 /* TunerSettingView.xib in Resources */ = {isa = PBXBuildFile; fileRef = BCA3DBC129015E2C00AE1C49 /* TunerSettingView.xib */; };
 		BCB6345D27F6D29600ACFDCF /* KSLiveChatroomWelcome.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340D27F6D29500ACFDCF /* KSLiveChatroomWelcome.m */; };
 		BCB6345D27F6D29600ACFDCF /* KSLiveChatroomWelcome.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340D27F6D29500ACFDCF /* KSLiveChatroomWelcome.m */; };
 		BCB6345E27F6D29600ACFDCF /* KSLiveChatroomLeave.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340E27F6D29500ACFDCF /* KSLiveChatroomLeave.m */; };
 		BCB6345E27F6D29600ACFDCF /* KSLiveChatroomLeave.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340E27F6D29500ACFDCF /* KSLiveChatroomLeave.m */; };
 		BCB6345F27F6D29600ACFDCF /* KSLiveChatroomEnter.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340F27F6D29500ACFDCF /* KSLiveChatroomEnter.m */; };
 		BCB6345F27F6D29600ACFDCF /* KSLiveChatroomEnter.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB6340F27F6D29500ACFDCF /* KSLiveChatroomEnter.m */; };
@@ -1998,6 +2003,9 @@
 		BC7663122827E49800C91A1D /* NotiferMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotiferMessageCell.m; sourceTree = "<group>"; };
 		BC7663122827E49800C91A1D /* NotiferMessageCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotiferMessageCell.m; sourceTree = "<group>"; };
 		BC7663132827E49900C91A1D /* NotiferMessageCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NotiferMessageCell.xib; sourceTree = "<group>"; };
 		BC7663132827E49900C91A1D /* NotiferMessageCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NotiferMessageCell.xib; sourceTree = "<group>"; };
 		BC7663142827E49900C91A1D /* NotiferHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotiferHeadView.h; sourceTree = "<group>"; };
 		BC7663142827E49900C91A1D /* NotiferHeadView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotiferHeadView.h; sourceTree = "<group>"; };
+		BC7E770D2900F38F00EB37AF /* TuningForkSettingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TuningForkSettingView.h; sourceTree = "<group>"; };
+		BC7E770E2900F38F00EB37AF /* TuningForkSettingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TuningForkSettingView.m; sourceTree = "<group>"; };
+		BC7E77102900F39700EB37AF /* TuningForkSettingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TuningForkSettingView.xib; sourceTree = "<group>"; };
 		BC802D8328B872AB0079E350 /* KSLiveAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSLiveAlertView.h; sourceTree = "<group>"; };
 		BC802D8328B872AB0079E350 /* KSLiveAlertView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KSLiveAlertView.h; sourceTree = "<group>"; };
 		BC802D8428B872AB0079E350 /* KSLiveAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSLiveAlertView.m; sourceTree = "<group>"; };
 		BC802D8428B872AB0079E350 /* KSLiveAlertView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KSLiveAlertView.m; sourceTree = "<group>"; };
 		BC802D8628B872B40079E350 /* KSLiveAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KSLiveAlertView.xib; sourceTree = "<group>"; };
 		BC802D8628B872B40079E350 /* KSLiveAlertView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = KSLiveAlertView.xib; sourceTree = "<group>"; };
@@ -2161,6 +2169,10 @@
 		BCA353EE2859BB2600377661 /* MusicRoomCourseCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MusicRoomCourseCell.h; sourceTree = "<group>"; };
 		BCA353EE2859BB2600377661 /* MusicRoomCourseCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MusicRoomCourseCell.h; sourceTree = "<group>"; };
 		BCA353EF2859BB2700377661 /* MusicRoomCourseCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MusicRoomCourseCell.xib; sourceTree = "<group>"; };
 		BCA353EF2859BB2700377661 /* MusicRoomCourseCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MusicRoomCourseCell.xib; sourceTree = "<group>"; };
 		BCA353F02859BB2900377661 /* MusicRoomCourseCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MusicRoomCourseCell.m; sourceTree = "<group>"; };
 		BCA353F02859BB2900377661 /* MusicRoomCourseCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MusicRoomCourseCell.m; sourceTree = "<group>"; };
+		BCA3DBBC29014B9800AE1C49 /* TunerForkManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TunerForkManager.swift; sourceTree = "<group>"; };
+		BCA3DBBE29015E2500AE1C49 /* TunerSettingView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TunerSettingView.h; sourceTree = "<group>"; };
+		BCA3DBBF29015E2500AE1C49 /* TunerSettingView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = TunerSettingView.m; sourceTree = "<group>"; };
+		BCA3DBC129015E2C00AE1C49 /* TunerSettingView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = TunerSettingView.xib; sourceTree = "<group>"; };
 		BCB6340C27F6D29500ACFDCF /* KSRCMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRCMessageModel.h; sourceTree = "<group>"; };
 		BCB6340C27F6D29500ACFDCF /* KSRCMessageModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = KSRCMessageModel.h; sourceTree = "<group>"; };
 		BCB6340D27F6D29500ACFDCF /* KSLiveChatroomWelcome.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSLiveChatroomWelcome.m; sourceTree = "<group>"; };
 		BCB6340D27F6D29500ACFDCF /* KSLiveChatroomWelcome.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSLiveChatroomWelcome.m; sourceTree = "<group>"; };
 		BCB6340E27F6D29500ACFDCF /* KSLiveChatroomLeave.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSLiveChatroomLeave.m; sourceTree = "<group>"; };
 		BCB6340E27F6D29500ACFDCF /* KSLiveChatroomLeave.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = KSLiveChatroomLeave.m; sourceTree = "<group>"; };
@@ -6235,6 +6247,12 @@
 				BCD9295328F90209006793E4 /* ToneTuningBodyView.xib */,
 				BCD9295328F90209006793E4 /* ToneTuningBodyView.xib */,
 				BC2BE91A28F951DE00CB5F92 /* DialPlateView.h */,
 				BC2BE91A28F951DE00CB5F92 /* DialPlateView.h */,
 				BC2BE91B28F951DE00CB5F92 /* DialPlateView.m */,
 				BC2BE91B28F951DE00CB5F92 /* DialPlateView.m */,
+				BC7E770D2900F38F00EB37AF /* TuningForkSettingView.h */,
+				BC7E770E2900F38F00EB37AF /* TuningForkSettingView.m */,
+				BC7E77102900F39700EB37AF /* TuningForkSettingView.xib */,
+				BCA3DBBE29015E2500AE1C49 /* TunerSettingView.h */,
+				BCA3DBBF29015E2500AE1C49 /* TunerSettingView.m */,
+				BCA3DBC129015E2C00AE1C49 /* TunerSettingView.xib */,
 			);
 			);
 			path = toneTuning;
 			path = toneTuning;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -6243,6 +6261,7 @@
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				BCFEED7B28F810D70078A2B7 /* Tuner.swift */,
 				BCFEED7B28F810D70078A2B7 /* Tuner.swift */,
+				BCA3DBBC29014B9800AE1C49 /* TunerForkManager.swift */,
 				BCFEED7A28F810D60078A2B7 /* KulexiuForStudent-Bridging-Header.h */,
 				BCFEED7A28F810D60078A2B7 /* KulexiuForStudent-Bridging-Header.h */,
 			);
 			);
 			path = TuningFunction;
 			path = TuningFunction;
@@ -6472,6 +6491,7 @@
 				275FA1AD27E734C600CFEA2E /* KSImageAlert.xib in Resources */,
 				275FA1AD27E734C600CFEA2E /* KSImageAlert.xib in Resources */,
 				BC71D251288804CD0010F14B /* img_17.png in Resources */,
 				BC71D251288804CD0010F14B /* img_17.png in Resources */,
 				BC71D268288804CD0010F14B /* img_25.png in Resources */,
 				BC71D268288804CD0010F14B /* img_25.png in Resources */,
+				BC7E77112900F39700EB37AF /* TuningForkSettingView.xib in Resources */,
 				BCC583C928A9EC6400BAB4CF /* cloud_animation_11.png in Resources */,
 				BCC583C928A9EC6400BAB4CF /* cloud_animation_11.png in Resources */,
 				BC71D264288804CD0010F14B /* img_41.png in Resources */,
 				BC71D264288804CD0010F14B /* img_41.png in Resources */,
 				BC71D267288804CD0010F14B /* img_42.png in Resources */,
 				BC71D267288804CD0010F14B /* img_42.png in Resources */,
@@ -6553,6 +6573,7 @@
 				BCC583C628A9EC6400BAB4CF /* cloud_animation_13.png in Resources */,
 				BCC583C628A9EC6400BAB4CF /* cloud_animation_13.png in Resources */,
 				BCC583C428A9EC6400BAB4CF /* cloud_animation_16.png in Resources */,
 				BCC583C428A9EC6400BAB4CF /* cloud_animation_16.png in Resources */,
 				BCFDA65828BCA2000022B497 /* live_animation.json in Resources */,
 				BCFDA65828BCA2000022B497 /* live_animation.json in Resources */,
+				BCA3DBC229015E2C00AE1C49 /* TunerSettingView.xib in Resources */,
 				BC71D259288804CD0010F14B /* img_48.png in Resources */,
 				BC71D259288804CD0010F14B /* img_48.png in Resources */,
 				BCB6355927F6D2A300ACFDCF /* class_stop.mp3 in Resources */,
 				BCB6355927F6D2A300ACFDCF /* class_stop.mp3 in Resources */,
 				BC71D274288804CD0010F14B /* img_37.png in Resources */,
 				BC71D274288804CD0010F14B /* img_37.png in Resources */,
@@ -6865,6 +6886,7 @@
 				BCB909132852EF0000F5FF69 /* KSDragWindowManager.m in Sources */,
 				BCB909132852EF0000F5FF69 /* KSDragWindowManager.m in Sources */,
 				2779359827E324A80010E277 /* TZAssetModel.m in Sources */,
 				2779359827E324A80010E277 /* TZAssetModel.m in Sources */,
 				277935A027E324A80010E277 /* UIView+TZLayout.m in Sources */,
 				277935A027E324A80010E277 /* UIView+TZLayout.m in Sources */,
+				BCA3DBBD29014B9800AE1C49 /* TunerForkManager.swift in Sources */,
 				2779351227E324A50010E277 /* KSNetworkAccessibleManager.m in Sources */,
 				2779351227E324A50010E277 /* KSNetworkAccessibleManager.m in Sources */,
 				BCB6346827F6D29600ACFDCF /* KSLiveChatroomClose.m in Sources */,
 				BCB6346827F6D29600ACFDCF /* KSLiveChatroomClose.m in Sources */,
 				2779357227E324A70010E277 /* SearchView.m in Sources */,
 				2779357227E324A70010E277 /* SearchView.m in Sources */,
@@ -7292,6 +7314,7 @@
 				275FA23327E7356B00CFEA2E /* VefiCodeLoginController.m in Sources */,
 				275FA23327E7356B00CFEA2E /* VefiCodeLoginController.m in Sources */,
 				BCB6359C27F6D2AB00ACFDCF /* ClassVideoListCell.m in Sources */,
 				BCB6359C27F6D2AB00ACFDCF /* ClassVideoListCell.m in Sources */,
 				2723B61B27F157D500E0B90B /* KSSearchRCLabel.m in Sources */,
 				2723B61B27F157D500E0B90B /* KSSearchRCLabel.m in Sources */,
+				BC7E770F2900F38F00EB37AF /* TuningForkSettingView.m in Sources */,
 				275FA23B27E7356B00CFEA2E /* PasswordBodyView.m in Sources */,
 				275FA23B27E7356B00CFEA2E /* PasswordBodyView.m in Sources */,
 				BCB9090B2852EE9600F5FF69 /* KSLiveWebViewController.m in Sources */,
 				BCB9090B2852EE9600F5FF69 /* KSLiveWebViewController.m in Sources */,
 				277935C527E324A90010E277 /* UIView+SDExtension.m in Sources */,
 				277935C527E324A90010E277 /* UIView+SDExtension.m in Sources */,
@@ -7444,6 +7467,7 @@
 				BCB6354027F6D2A300ACFDCF /* ClassroomTitleView.m in Sources */,
 				BCB6354027F6D2A300ACFDCF /* ClassroomTitleView.m in Sources */,
 				BC11921C280ED6A900A716F7 /* NewClassPopView.m in Sources */,
 				BC11921C280ED6A900A716F7 /* NewClassPopView.m in Sources */,
 				BCA193B8282B6094004A585D /* RecentCourseModel.m in Sources */,
 				BCA193B8282B6094004A585D /* RecentCourseModel.m in Sources */,
+				BCA3DBC029015E2500AE1C49 /* TunerSettingView.m in Sources */,
 				BC8C2C572823F57100FBA5D5 /* AddressDetailViewController.m in Sources */,
 				BC8C2C572823F57100FBA5D5 /* AddressDetailViewController.m in Sources */,
 				BCB6359627F6D2AB00ACFDCF /* LocalRenderManager.m in Sources */,
 				BCB6359627F6D2AB00ACFDCF /* LocalRenderManager.m in Sources */,
 				2723B66927F15CFC00E0B90B /* PhoneChangeBodyView.m in Sources */,
 				2723B66927F15CFC00E0B90B /* PhoneChangeBodyView.m in Sources */,

+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchChoosed.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "fork_pitchChoosed@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "fork_pitchChoosed@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchChoosed.imageset/fork_pitchChoosed@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchChoosed.imageset/fork_pitchChoosed@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchUnChoosed.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "fork_pitchUnChoosed@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "fork_pitchUnChoosed@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchUnChoosed.imageset/fork_pitchUnChoosed@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_pitchUnChoosed.imageset/fork_pitchUnChoosed@3x.png


+ 22 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_warning.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "fork_warning@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "fork_warning@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_warning.imageset/fork_warning@2x.png


BIN
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/fork_warning.imageset/fork_warning@3x.png


+ 0 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/tuning_setting.imageset/Contents.json → KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_setting.imageset/Contents.json


+ 0 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/tuning_setting.imageset/tuning_setting@2x.png → KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_setting.imageset/tuning_setting@2x.png


+ 0 - 0
KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/tuning_setting.imageset/tuning_setting@3x.png → KulexiuForStudent/KulexiuForStudent/Assets.xcassets/Home/TuningImage/tuning_setting.imageset/tuning_setting@3x.png


+ 3 - 2
KulexiuForStudent/KulexiuForStudent/Module/Chat/Group/View/GroupMemberListCell.m

@@ -52,7 +52,7 @@
         else {
         else {
             self.memberName.text = model.nickname;
             self.memberName.text = model.nickname;
         }
         }
-        NSString *userId = model.userId;
+        NSString *userId = model.imUserId;
         if ([userId isEqualToString:UserDefault(RongCloudID)]) {
         if ([userId isEqualToString:UserDefault(RongCloudID)]) {
             self.chatButton.hidden = YES;
             self.chatButton.hidden = YES;
             self.chatButton.userInteractionEnabled = NO;
             self.chatButton.userInteractionEnabled = NO;
@@ -75,6 +75,7 @@
         }
         }
     }
     }
 }
 }
+
 - (IBAction)chatAction:(id)sender {
 - (IBAction)chatAction:(id)sender {
     if (self.callback && self.sourceModel) {
     if (self.callback && self.sourceModel) {
         NSString *name = @"";
         NSString *name = @"";
@@ -84,7 +85,7 @@
         else {
         else {
             name = self.sourceModel.nickname;
             name = self.sourceModel.nickname;
         }
         }
-        self.callback(self.sourceModel.userId, name);
+        self.callback(self.sourceModel.imUserId, name);
     }
     }
 }
 }
 
 

+ 7 - 0
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/VideoCourseCell.m

@@ -58,6 +58,13 @@
         }
         }
     }
     }
     self.subjectLabel.text = [NSString returnNoNullStringWithString:model.lessonSubjectName];
     self.subjectLabel.text = [NSString returnNoNullStringWithString:model.lessonSubjectName];
+    
+    if (model.lessonPrice > 0) {
+        self.courseMessage.text = [NSString  stringWithFormat:@"¥%.2f/%.0f课时",model.lessonPrice,model.lessonCount];
+    }
+    else {
+        self.courseMessage.text = [NSString stringWithFormat:@"免费/%.0f课时",model.lessonCount];
+    }
 }
 }
 
 
 @end
 @end

+ 4 - 4
KulexiuForStudent/KulexiuForStudent/Module/Mine/MineCourse/View/VideoCourseCell.xib

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <device id="retina6_1" orientation="portrait" appearance="light"/>
     <dependencies>
     <dependencies>
         <deployment identifier="iOS"/>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="System colors in document resources" minToolsVersion="11.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
@@ -59,8 +59,8 @@
                                 <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="0.84705882352941175" colorSpace="calibratedRGB"/>
                                 <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="0.84705882352941175" colorSpace="calibratedRGB"/>
                                 <nil key="highlightedColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             </label>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="¥120/4课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yib-mA-6Ou">
-                                <rect key="frame" x="9" y="164" width="81" height="20"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="免费/4课时" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yib-mA-6Ou">
+                                <rect key="frame" x="9" y="164" width="70.5" height="20"/>
                                 <constraints>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="20" id="fo4-3I-tde"/>
                                     <constraint firstAttribute="height" constant="20" id="fo4-3I-tde"/>
                                 </constraints>
                                 </constraints>

+ 96 - 14
KulexiuForStudent/KulexiuForStudent/Module/Widget/Controller/ToneTuningViewController.m

@@ -10,6 +10,8 @@
 #import "KulexiuForStudent-swift.h"
 #import "KulexiuForStudent-swift.h"
 #import "ToneTuningBodyView.h"
 #import "ToneTuningBodyView.h"
 #import "DialPlateView.h"
 #import "DialPlateView.h"
+#import "TuningForkSettingView.h"
+#import <AVFoundation/AVFoundation.h>
 
 
 @interface ToneTuningViewController ()<TunerDelegate>
 @interface ToneTuningViewController ()<TunerDelegate>
 
 
@@ -19,13 +21,18 @@
 
 
 @property (nonatomic, strong) Tuner *tuner;
 @property (nonatomic, strong) Tuner *tuner;
 
 
-
 @property (nonatomic, strong) ToneTuningBodyView *bodyView;
 @property (nonatomic, strong) ToneTuningBodyView *bodyView;
 
 
 @property (nonatomic, strong) DialPlateView *plateView;
 @property (nonatomic, strong) DialPlateView *plateView;
 
 
 @property (nonatomic, assign) BOOL isTransfer;
 @property (nonatomic, assign) BOOL isTransfer;
 
 
+@property (nonatomic, strong) TuningForkSettingView *forkView;
+
+@property (nonatomic, assign) NSInteger chooseFrequence;
+
+@property (nonatomic, strong) TunerForkManager *forkManager;
+
 @end
 @end
 
 
 @implementation ToneTuningViewController
 @implementation ToneTuningViewController
@@ -34,7 +41,23 @@
     [super viewDidLoad];
     [super viewDidLoad];
     // Do any additional setup after loading the view.
     // Do any additional setup after loading the view.
     self.ks_prefersNavigationBarHidden = YES;
     self.ks_prefersNavigationBarHidden = YES;
+    self.chooseFrequence = 440;
     [self configUI];
     [self configUI];
+    [self setupAudioSession];
+}
+
+- (void)setupAudioSession {
+    
+    AVAudioSession *audioSession = [AVAudioSession sharedInstance];
+    NSError *err = nil;
+    AVAudioSessionCategory category = AVAudioSessionCategoryPlayAndRecord;
+    if (@available(iOS 10.0, *)) {
+        [audioSession setCategory:category mode:AVAudioSessionModeDefault options:AVAudioSessionCategoryOptionAllowBluetooth|AVAudioSessionCategoryOptionAllowBluetoothA2DP|AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionMixWithOthers error:&err];
+    }
+    else {
+        [audioSession setCategory:category withOptions:AVAudioSessionCategoryOptionAllowBluetooth|AVAudioSessionCategoryOptionDefaultToSpeaker|AVAudioSessionCategoryOptionMixWithOthers error:&err];
+    }
+    [audioSession setActive:YES error:&err];
 }
 }
 
 
 - (void)configUI {
 - (void)configUI {
@@ -51,6 +74,7 @@
     }];
     }];
 
 
     [self.view addSubview:self.bodyView];
     [self.view addSubview:self.bodyView];
+    self.bodyView.A4Frequence = self.chooseFrequence;
     [self.bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
     [self.bodyView mas_makeConstraints:^(MASConstraintMaker *make) {
         make.left.right.mas_equalTo(self.view);
         make.left.right.mas_equalTo(self.view);
         make.top.mas_equalTo(self.navView.mas_bottom);
         make.top.mas_equalTo(self.navView.mas_bottom);
@@ -70,17 +94,7 @@
 - (void)viewWillDisappear:(BOOL)animated {
 - (void)viewWillDisappear:(BOOL)animated {
     [super viewWillDisappear:animated];
     [super viewWillDisappear:animated];
     [self stopTuner];
     [self stopTuner];
-}
-
-- (void)clickAction:(UIButton *)sender {
-    if (self.isRuning) {
-        [sender setTitle:@"Stop" forState:UIControlStateNormal];
-        [self stopTuner];
-    }
-    else {
-        [sender setTitle:@"Start" forState:UIControlStateNormal];
-        [self startTuner];
-    }
+    [self stopForkPlay];
 }
 }
 
 
 - (void)startTuner {
 - (void)startTuner {
@@ -150,7 +164,7 @@
             
             
         }
         }
     }
     }
-    NSLog(@"-------- %@%zd --- distance :%f frequence : %f" , output.pitch, output.octave, output.distance, output.frequency);
+//    NSLog(@"-------- %@%zd --- distance :%f frequence : %f" , output.pitch, output.octave, output.distance, output.frequency);
     
     
 }
 }
 
 
@@ -159,17 +173,85 @@
     if (!_bodyView) {
     if (!_bodyView) {
         _bodyView = [ToneTuningBodyView shareInstance];
         _bodyView = [ToneTuningBodyView shareInstance];
         MJWeakSelf;
         MJWeakSelf;
-        
+        [_bodyView tuningViewAction:^(TUNINGACTION action, NSInteger frequence) {
+            [weakSelf tuningAction:action frequence:frequence];
+        }];
     }
     }
     return _bodyView;
     return _bodyView;
 }
 }
 
 
+
+- (void)tuningAction:(TUNINGACTION)action frequence:(NSInteger)frequence {
+    switch (action) {
+        case TUNINGACTION_SETTING: // 乐器选择
+        {
+            
+        }
+            break;
+        case TUNINGACTION_FORKSETTING:  // 音叉设置
+        {
+            [self.forkView showView];
+        }
+            break;
+        case TUNINGACTION_FREQUENCE: // 调整频率
+        {
+            
+        }
+            break;
+        case TUNINGACTION_PLAY:      // 播放音叉
+        {
+            [self startForkPlay];
+        }
+            break;
+        case TUNINGACTION_STOP:      // 停止音叉
+        {
+            [self stopForkPlay];
+        }
+            break;
+        default:
+            break;
+    }
+}
+
+- (void)startForkPlay {
+    [self.forkManager setupWithFrequence:self.chooseFrequence];
+}
+
+- (void)stopForkPlay {
+    [self.forkManager stop];
+}
+
 - (DialPlateView *)plateView {
 - (DialPlateView *)plateView {
     if (!_plateView) {
     if (!_plateView) {
         _plateView = [[DialPlateView alloc] init];
         _plateView = [[DialPlateView alloc] init];
     }
     }
     return _plateView;
     return _plateView;
 }
 }
+
+
+#pragma mark ------ forkSetting
+- (TuningForkSettingView *)forkView {
+    if (!_forkView) {
+        _forkView = [TuningForkSettingView shareInstance];
+        MJWeakSelf;
+        [_forkView forkSettingAction:^(NSInteger frequence) {
+            NSLog(@"----- frequence %zd", frequence);
+            weakSelf.chooseFrequence = frequence;
+            if (weakSelf.forkManager.isPlay) {
+                [weakSelf.forkManager changeFrequenceWithFrequence:frequence];
+            }
+        }];
+    }
+    return _forkView;
+}
+
+- (TunerForkManager *)forkManager {
+    if (!_forkManager) {
+        _forkManager = [[TunerForkManager alloc] init];
+    }
+    return _forkManager;
+}
+
 /*
 /*
 #pragma mark - Navigation
 #pragma mark - Navigation
 
 

+ 48 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/Model/TuningFunction/TunerForkManager.swift

@@ -0,0 +1,48 @@
+//
+//  TunerForkManager.swift
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/20.
+//
+
+import Foundation
+import AudioKit
+
+@objc public class TunerForkManager : NSObject {
+    
+    let engine = AudioEngine()
+    let osc = Oscillator();
+    @objc public var isPlay = false
+    
+    @objc public override init() {
+        super.init()
+    }
+    
+    @objc public func setup(frequence: Float) {
+        osc.amplitude = 1.0
+        engine.output = osc
+        do {
+            try engine.start()
+        } catch {
+            print("Couldn't start AudioEngine.")
+        }
+        if osc.isPlaying {
+            osc.stop()
+        }
+        osc.frequency = frequence
+        osc.start()
+        self.isPlay = true
+    }
+    
+    @objc public func changeFrequence (frequence : Float) {
+        osc.frequency = frequence
+    }
+    
+    @objc public func stop() {
+        if osc.isStarted {
+            osc.stop()
+            self.isPlay = false
+        }
+    }
+    
+}

+ 15 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.h

@@ -7,6 +7,19 @@
 
 
 #import <UIKit/UIKit.h>
 #import <UIKit/UIKit.h>
 
 
+#define MAXFREQUENCE (445)
+#define MINFREQUENCE (415)
+
+typedef NS_ENUM(NSInteger, TUNINGACTION) {
+    TUNINGACTION_SETTING,     // 设置
+    TUNINGACTION_FREQUENCE,   // 调节频率
+    TUNINGACTION_FORKSETTING, // 音叉设置
+    TUNINGACTION_PLAY,        // 播放音叉
+    TUNINGACTION_STOP,        // 停止播放
+};
+
+typedef void(^TuningActionCallback)(TUNINGACTION action, NSInteger frequence);
+
 NS_ASSUME_NONNULL_BEGIN
 NS_ASSUME_NONNULL_BEGIN
 
 
 @interface ToneTuningBodyView : UIView
 @interface ToneTuningBodyView : UIView
@@ -31,9 +44,11 @@ NS_ASSUME_NONNULL_BEGIN
 
 
 @property (nonatomic, assign) NSInteger A4Frequence;
 @property (nonatomic, assign) NSInteger A4Frequence;
 
 
+@property (nonatomic, assign) BOOL isPlaying;
 
 
 + (instancetype)shareInstance;
 + (instancetype)shareInstance;
 
 
+- (void)tuningViewAction:(TuningActionCallback)callback;
 
 
 @end
 @end
 
 

+ 57 - 2
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.m

@@ -17,6 +17,9 @@
 
 
 @property (weak, nonatomic) IBOutlet UIButton *addButton;
 @property (weak, nonatomic) IBOutlet UIButton *addButton;
 
 
+@property (weak, nonatomic) IBOutlet UIButton *playButton;
+
+@property (nonatomic, copy) TuningActionCallback callback;
 
 
 @end
 @end
 
 
@@ -48,8 +51,6 @@
     return view;
     return view;
 }
 }
 
 
-
-
 - (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
 - (CAGradientLayer *)createGradientLayerFromColor:(UIColor *)fromColor startPoint:(CGPoint)startPoint endColor:(UIColor *)endColor endPoint:(CGPoint)endPoint bounds:(CGRect)bounds {
     CAGradientLayer *gradientLayer = [CAGradientLayer layer];
     CAGradientLayer *gradientLayer = [CAGradientLayer layer];
     gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];
     gradientLayer.colors = @[(__bridge id)fromColor.CGColor, (__bridge id)endColor.CGColor];
@@ -61,6 +62,60 @@
 }
 }
 
 
 
 
+- (void)tuningViewAction:(TuningActionCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (IBAction)frequenceMinus:(id)sender {
+    NSInteger frequence = self.A4Frequence;
+    if (self.A4Frequence <= MINFREQUENCE) {
+        return;
+    }
+    self.A4Frequence = frequence - 1;
+    if (self.callback) {
+        self.callback(TUNINGACTION_FREQUENCE, self.A4Frequence);
+    }
+}
+
+- (IBAction)frequenceAdd:(id)sender {
+    NSInteger frequence = self.A4Frequence;
+    if (self.A4Frequence >= MAXFREQUENCE) {
+        return;
+    }
+    self.A4Frequence = frequence + 1;
+    if (self.callback) {
+        self.callback(TUNINGACTION_FREQUENCE, self.A4Frequence);
+    }
+}
+
+
+- (void)setA4Frequence:(NSInteger)A4Frequence {
+    _A4Frequence = A4Frequence;
+    self.A4FrequenceLabel.text = [NSString stringWithFormat:@"A4=%zdHz",A4Frequence];
+}
+
+- (IBAction)forkSetting:(id)sender {
+    if (self.callback) {
+        self.callback(TUNINGACTION_FORKSETTING, self.A4Frequence);
+    }
+}
+
+- (IBAction)playButtonAction:(id)sender {
+    self.isPlaying = !self.isPlaying;
+    TUNINGACTION action = self.isPlaying ? TUNINGACTION_PLAY : TUNINGACTION_STOP;
+    if (self.callback) {
+        self.callback(action, self.A4Frequence);
+    }
+}
+
+- (void)setIsPlaying:(BOOL)isPlaying {
+    _isPlaying = isPlaying;
+    NSString *playImage = isPlaying ? @"fork_play" : @"fork_unPlay";
+    [self.playButton setImage:[UIImage imageNamed:playImage] forState:UIControlStateNormal];
+}
+
 /*
 /*
 // Only override drawRect: if you perform custom drawing.
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.
 // An empty implementation adversely affects performance during animation.

+ 13 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/ToneTuningBodyView.xib

@@ -73,6 +73,9 @@
                             <real key="value" value="15.5"/>
                             <real key="value" value="15.5"/>
                         </userDefinedRuntimeAttribute>
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                     </userDefinedRuntimeAttributes>
+                    <connections>
+                        <action selector="frequenceMinus:" destination="iN0-l3-epB" eventType="touchUpInside" id="BeR-xr-RYR"/>
+                    </connections>
                 </button>
                 </button>
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uwR-ra-cDH">
                 <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="uwR-ra-cDH">
                     <rect key="frame" x="233" y="322.66666666666669" width="50" height="31"/>
                     <rect key="frame" x="233" y="322.66666666666669" width="50" height="31"/>
@@ -100,6 +103,9 @@
                             <real key="value" value="15.5"/>
                             <real key="value" value="15.5"/>
                         </userDefinedRuntimeAttribute>
                         </userDefinedRuntimeAttribute>
                     </userDefinedRuntimeAttributes>
                     </userDefinedRuntimeAttributes>
+                    <connections>
+                        <action selector="frequenceAdd:" destination="iN0-l3-epB" eventType="touchUpInside" id="k9j-Rr-TnO"/>
+                    </connections>
                 </button>
                 </button>
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CALIB" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sZj-ZO-VHR">
                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CALIB" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sZj-ZO-VHR">
                     <rect key="frame" x="174" y="328" width="42" height="20"/>
                     <rect key="frame" x="174" y="328" width="42" height="20"/>
@@ -239,6 +245,9 @@
                     </constraints>
                     </constraints>
                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                     <state key="normal" image="fork_unchoose" backgroundImage="forkButton_bg"/>
                     <state key="normal" image="fork_unchoose" backgroundImage="forkButton_bg"/>
+                    <connections>
+                        <action selector="forkSetting:" destination="iN0-l3-epB" eventType="touchUpInside" id="wcc-Y0-dc2"/>
+                    </connections>
                 </button>
                 </button>
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="p0z-qL-bMm">
                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="p0z-qL-bMm">
                     <rect key="frame" x="195" y="562" width="189" height="90"/>
                     <rect key="frame" x="195" y="562" width="189" height="90"/>
@@ -247,6 +256,9 @@
                     </constraints>
                     </constraints>
                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                     <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
                     <state key="normal" image="fork_unPlay" backgroundImage="playButton_bg"/>
                     <state key="normal" image="fork_unPlay" backgroundImage="playButton_bg"/>
+                    <connections>
+                        <action selector="playButtonAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="xnp-kV-r78"/>
+                    </connections>
                 </button>
                 </button>
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="toning_bottom" translatesAutoresizingMaskIntoConstraints="NO" id="IXi-hL-in1">
                 <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="toning_bottom" translatesAutoresizingMaskIntoConstraints="NO" id="IXi-hL-in1">
                     <rect key="frame" x="26" y="659" width="338" height="29"/>
                     <rect key="frame" x="26" y="659" width="338" height="29"/>
@@ -350,6 +362,7 @@
                 <outlet property="pitchBgView" destination="7Em-FC-3EL" id="0rG-SE-app"/>
                 <outlet property="pitchBgView" destination="7Em-FC-3EL" id="0rG-SE-app"/>
                 <outlet property="pitchFrequenceLabel" destination="PnS-Ku-vsa" id="LlJ-w5-az7"/>
                 <outlet property="pitchFrequenceLabel" destination="PnS-Ku-vsa" id="LlJ-w5-az7"/>
                 <outlet property="plateView" destination="Zrx-Pe-2NT" id="ppk-X8-oX5"/>
                 <outlet property="plateView" destination="Zrx-Pe-2NT" id="ppk-X8-oX5"/>
+                <outlet property="playButton" destination="p0z-qL-bMm" id="DsB-sp-PJ7"/>
                 <outlet property="transferDesc" destination="tD3-d1-rfd" id="vBI-n9-F5P"/>
                 <outlet property="transferDesc" destination="tD3-d1-rfd" id="vBI-n9-F5P"/>
                 <outlet property="transferNomalPitch" destination="MNR-s0-re6" id="sVk-tj-gtm"/>
                 <outlet property="transferNomalPitch" destination="MNR-s0-re6" id="sVk-tj-gtm"/>
                 <outlet property="transferPitch" destination="vku-Yz-AEN" id="ca0-HH-hao"/>
                 <outlet property="transferPitch" destination="vku-Yz-AEN" id="ca0-HH-hao"/>

+ 16 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TunerSettingView.h

@@ -0,0 +1,16 @@
+//
+//  TunerSettingView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/20.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface TunerSettingView : UIView
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 20 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TunerSettingView.m

@@ -0,0 +1,20 @@
+//
+//  TunerSettingView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/20.
+//
+
+#import "TunerSettingView.h"
+
+@implementation TunerSettingView
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 18 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TunerSettingView.xib

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13142" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+    <dependencies>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="12042"/>
+        <capability name="Safe area layout guides" minToolsVersion="9.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB">
+            <rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
+            <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+            <color key="backgroundColor" systemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
+            <viewLayoutGuide key="safeArea" id="vUN-kp-3ea"/>
+        </view>
+    </objects>
+</document>

+ 29 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TuningForkSettingView.h

@@ -0,0 +1,29 @@
+//
+//  TuningForkSettingView.h
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/20.
+//
+
+#import <UIKit/UIKit.h>
+
+typedef void(^ForkSettingCallback)(NSInteger frequence);
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface TuningForkSettingView : UIView
+
+@property (nonatomic, assign) BOOL isFallingTone; // 是否降调
+
+@property (nonatomic, assign) NSInteger A4Frequence; // A4频率
+
++ (instancetype)shareInstance;
+
+- (void)forkSettingAction:(ForkSettingCallback)callback;
+
+- (void)showView;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 202 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TuningForkSettingView.m

@@ -0,0 +1,202 @@
+//
+//  TuningForkSettingView.m
+//  KulexiuForStudent
+//
+//  Created by 王智 on 2022/10/20.
+//
+
+#import "TuningForkSettingView.h"
+#import "UIView+Animation.h"
+
+
+@interface TuningForkSettingView ()
+
+@property (nonatomic, assign) NSInteger musicalScale;
+
+@property (weak, nonatomic) IBOutlet UILabel *frequenceLabel;
+@property (weak, nonatomic) IBOutlet UILabel *musicalScaleLabel;
+
+@property (weak, nonatomic) IBOutlet UIImageView *pitchCImage;
+@property (weak, nonatomic) IBOutlet UIImageView *pitchDImage;
+@property (weak, nonatomic) IBOutlet UIImageView *pitchEImage;
+@property (weak, nonatomic) IBOutlet UIImageView *pitchFImage;
+@property (weak, nonatomic) IBOutlet UIImageView *pitchGImage;
+@property (weak, nonatomic) IBOutlet UIImageView *pitchAImage;
+@property (weak, nonatomic) IBOutlet UIImageView *pitchBImage;
+
+@property (weak, nonatomic) IBOutlet UIImageView *pitchDhalfImage;
+@property (weak, nonatomic) IBOutlet UILabel *pitchDhalfLabel;
+@property (weak, nonatomic) IBOutlet UILabel *pitchDhalfDesc;
+
+@property (weak, nonatomic) IBOutlet UIImageView *pitchEhalfImage;
+@property (weak, nonatomic) IBOutlet UILabel *pitchEhalfLabel;
+@property (weak, nonatomic) IBOutlet UILabel *pitchEhalfDesc;
+
+@property (weak, nonatomic) IBOutlet UIImageView *pitchGhalfImage;
+@property (weak, nonatomic) IBOutlet UILabel *pitchGhalfLabel;
+@property (weak, nonatomic) IBOutlet UILabel *pitchGhalfDesc;
+
+
+@property (weak, nonatomic) IBOutlet UIImageView *pitchAhalfImage;
+@property (weak, nonatomic) IBOutlet UILabel *pitchAhalfLabel;
+@property (weak, nonatomic) IBOutlet UILabel *pitchAhalfDesc;
+
+@property (weak, nonatomic) IBOutlet UIImageView *pitchBhalfImage;
+@property (weak, nonatomic) IBOutlet UILabel *pitchBhalfLabel;
+@property (weak, nonatomic) IBOutlet UILabel *pitchBhalfDesc;
+
+@property (nonatomic, assign) NSInteger chooseIndex;
+
+
+@property (nonatomic, strong) NSMutableArray *imageArray;
+
+@property (nonatomic, strong) NSMutableArray *frequenceArray;
+
+@property (nonatomic, copy) ForkSettingCallback callback;
+
+@end
+
+@implementation TuningForkSettingView
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    [self configDefaultSource];
+}
+
+- (void)forkSettingAction:(ForkSettingCallback)callback {
+    if (callback) {
+        self.callback = callback;
+    }
+}
+
+- (void)showView {
+    [[NSObject getKeyWindow] addSubview:self];
+    [self setPopAnimation];
+}
+
+- (void)removeView {
+    [self removeFromSuperview];
+}
+
+- (void)configDefaultSource {
+    self.A4Frequence = 440;
+    self.musicalScale = 4;
+    self.isFallingTone = NO;
+    self.imageArray = [NSMutableArray arrayWithArray:@[self.pitchCImage,self.pitchDhalfImage,self.pitchDImage,self.pitchEhalfImage,self.pitchEImage,self.pitchFImage,self.pitchGhalfImage,self.pitchGImage,self.pitchAhalfImage,self.pitchAImage,self.pitchBhalfImage,self.pitchBImage]];
+    self.chooseIndex = 0;
+    self.frequenceArray = [NSMutableArray arrayWithArray:@[
+        @16.35, @17.32, @18.35, @19.45, @20.60, @21.83, @23.12, @24.50, @25.96, @27.50, @29.14, @30.87, // 0
+        @32.70, @34.65, @36.71, @38.89, @41.20, @43.65, @46.25, @49.00, @51.91, @55.00, @58.27, @61.74, // 1
+        @65.41, @69.30, @73.42, @77.78, @82.41, @87.31, @92.50, @98.00, @103.8, @110.0, @116.5, @123.5, // 2
+        @130.8, @138.6, @146.8, @155.6, @164.8, @174.6, @185.0, @196.0, @207.7, @220.0, @233.1, @246.9, // 3
+        @261.6, @277.2, @293.7, @311.1, @329.6, @349.2, @370.0, @392.0, @415.3, @440.0, @466.2, @493.9, // 4
+        @523.3, @554.4, @587.3, @622.3, @659.3, @698.5, @740.0, @784.0, @830.6, @880.0, @932.3, @987.8, // 5
+        @1047, @1109, @1175, @1245, @1319, @1397, @1480, @1568, @1661, @1760, @1865, @1976,             // 6
+        @2093, @2217, @2349, @2489, @2637, @2794, @2960, @3136, @3322, @3520, @3729, @3951,             // 7
+        @4186, @4435, @4699, @4978, @5274, @5588, @5920, @6272, @6645, @7040, @7459, @7902              // 8
+    ]];
+}
+
++ (instancetype)shareInstance {
+    TuningForkSettingView *view = [[[NSBundle mainBundle] loadNibNamed:@"TuningForkSettingView" owner:nil options:nil] firstObject];
+    return view;
+}
+
+
+- (void)setIsFallingTone:(BOOL)isFallingTone {
+    _isFallingTone = isFallingTone;
+    if (isFallingTone) {
+        self.pitchDhalfLabel.text = @"D";
+        self.pitchEhalfLabel.text = @"E";
+        self.pitchGhalfLabel.text = @"G";
+        self.pitchAhalfLabel.text = @"A";
+        self.pitchBhalfLabel.text = @"B";
+        
+        self.pitchDhalfDesc.text = @"♭";
+        self.pitchEhalfDesc.text = @"♭";
+        self.pitchGhalfDesc.text = @"♭";
+        self.pitchAhalfDesc.text = @"♭";
+        self.pitchBhalfDesc.text = @"♭";
+    }
+    else {
+        
+        self.pitchDhalfLabel.text = @"C";
+        self.pitchEhalfLabel.text = @"D";
+        self.pitchGhalfLabel.text = @"F";
+        self.pitchAhalfLabel.text = @"G";
+        self.pitchBhalfLabel.text = @"A";
+        
+        self.pitchDhalfDesc.text = @"#";
+        self.pitchEhalfDesc.text = @"#";
+        self.pitchGhalfDesc.text = @"#";
+        self.pitchAhalfDesc.text = @"#";
+        self.pitchBhalfDesc.text = @"#";
+        
+    }
+}
+
+- (void)setA4Frequence:(NSInteger)A4Frequence {
+    _A4Frequence = A4Frequence;
+    self.frequenceLabel.text = [NSString stringWithFormat:@"A4=%zdHz",A4Frequence];
+}
+
+- (IBAction)pitchChooseAction:(UIButton *)sender {
+    NSInteger index = sender.tag - 1000;
+    NSLog(@"----- %zd",index);
+    if (self.chooseIndex == index) {
+        return;
+    }
+    // 修改
+    UIImageView *preChooseImage = self.imageArray[self.chooseIndex];
+    [preChooseImage setImage:[UIImage imageNamed:@"fork_pitchUnChoosed"]];
+    
+    UIImageView *chooseImageView = self.imageArray[index];
+    [chooseImageView setImage:[UIImage imageNamed:@"fork_pitchChoosed"]];
+    self.chooseIndex = index;
+}
+
+
+
+// 音阶+
+- (IBAction)musicalScaleAdd:(id)sender {
+    if (self.musicalScale >= 6) {
+        return;
+    }
+    self.musicalScale++;
+}
+// 音阶-
+- (IBAction)musicalScaleMinus:(id)sender {
+    if (self.musicalScale <= 4) {
+        return;
+    }
+    self.musicalScale--;
+}
+
+// 设置保存
+- (IBAction)forkSettingSureAction:(id)sender {
+    if (self.callback) {
+        // 获取频率
+        NSInteger index = self.musicalScale * 12 + self.chooseIndex;
+        if (self.frequenceArray.count > index) {
+            NSInteger frequence = [self.frequenceArray[index] integerValue];
+            self.callback(frequence);
+        }
+    }
+    [self removeView];
+}
+
+// 设置音阶
+- (void)setMusicalScale:(NSInteger)musicalScale {
+    _musicalScale = musicalScale;
+    self.musicalScaleLabel.text = [NSString stringWithFormat:@"%zd",musicalScale];
+}
+
+
+/*
+// Only override drawRect: if you perform custom drawing.
+// An empty implementation adversely affects performance during animation.
+- (void)drawRect:(CGRect)rect {
+    // Drawing code
+}
+*/
+
+@end

+ 768 - 0
KulexiuForStudent/KulexiuForStudent/Module/Widget/View/toneTuning/TuningForkSettingView.xib

@@ -0,0 +1,768 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
+    <device id="retina6_0" orientation="portrait" appearance="light"/>
+    <dependencies>
+        <deployment identifier="iOS"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
+        <capability name="System colors in document resources" minToolsVersion="11.0"/>
+        <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
+    </dependencies>
+    <objects>
+        <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
+        <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
+        <view contentMode="scaleToFill" id="iN0-l3-epB" customClass="TuningForkSettingView">
+            <rect key="frame" x="0.0" y="0.0" width="390" height="844"/>
+            <autoresizingMask key="autoresizingMask"/>
+            <subviews>
+                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ip2-Qv-Yar">
+                    <rect key="frame" x="59.666666666666657" y="207" width="271" height="430"/>
+                    <subviews>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="音叉" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="M5Y-mG-3VG">
+                            <rect key="frame" x="118" y="14" width="35" height="24"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="24" id="Ogo-h9-fgv"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                            <color key="textColor" red="0.10196078431372549" green="0.10196078431372549" blue="0.10196078431372549" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A4=440Hz" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Bhh-r7-n9J">
+                            <rect key="frame" x="18.000000000000007" y="46" width="71" height="20"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="20" id="dRA-mi-FA2"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <nil key="highlightedColor"/>
+                        </label>
+                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_warning" translatesAutoresizingMaskIntoConstraints="NO" id="a4p-9E-C7P">
+                            <rect key="frame" x="94" y="50" width="13" height="12"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="12" id="0si-Jb-XVE"/>
+                                <constraint firstAttribute="width" constant="13" id="tQO-gq-KGl"/>
+                            </constraints>
+                        </imageView>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="AlX-o1-xtB">
+                            <rect key="frame" x="21" y="71" width="229" height="236"/>
+                            <subviews>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="QaI-So-iYb">
+                                    <rect key="frame" x="0.0" y="0.0" width="114.33333333333333" height="33.666666666666664"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="7tD-sj-An5">
+                                            <rect key="frame" x="0.0" y="8" width="18" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="18" id="Qe6-0z-7Dy"/>
+                                                <constraint firstAttribute="height" constant="18" id="jGw-6f-xYc"/>
+                                            </constraints>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="C" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="q0D-qH-qHW">
+                                            <rect key="frame" x="28" y="7" width="15" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="J3x-5e-Weo"/>
+                                                <constraint firstAttribute="width" constant="15" id="v13-0K-Jrj"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1000" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SFN-Jd-vwS">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="4fL-Sk-1lq"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="HIx-Lv-I3Q"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstAttribute="bottom" secondItem="SFN-Jd-vwS" secondAttribute="bottom" id="9Tl-bg-PHr"/>
+                                        <constraint firstItem="q0D-qH-qHW" firstAttribute="centerY" secondItem="QaI-So-iYb" secondAttribute="centerY" id="K9H-jH-FSL"/>
+                                        <constraint firstItem="7tD-sj-An5" firstAttribute="centerY" secondItem="QaI-So-iYb" secondAttribute="centerY" id="Qzv-b7-cIQ"/>
+                                        <constraint firstItem="SFN-Jd-vwS" firstAttribute="top" secondItem="QaI-So-iYb" secondAttribute="top" id="U3y-Xn-eNr"/>
+                                        <constraint firstItem="7tD-sj-An5" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="Vag-Gd-27Z"/>
+                                        <constraint firstItem="SFN-Jd-vwS" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="dr2-EP-PpS"/>
+                                        <constraint firstItem="q0D-qH-qHW" firstAttribute="leading" secondItem="7tD-sj-An5" secondAttribute="trailing" constant="10" id="sBP-d8-p2R"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jwK-E6-xjZ">
+                                    <rect key="frame" x="0.0" y="33.666666666666686" width="114.33333333333333" height="33.666666666666657"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="hKC-PS-LdR">
+                                            <rect key="frame" x="0.0" y="8" width="18" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="18" id="0bk-Gl-XWB"/>
+                                                <constraint firstAttribute="height" constant="18" id="Nt9-u1-tpO"/>
+                                            </constraints>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="D" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RST-7S-DcE">
+                                            <rect key="frame" x="28" y="7" width="11" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="JZT-Hv-Emb"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1002" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="d4u-1b-vP7">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="a2C-4k-prK"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="7pz-pX-Tvc"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="d4u-1b-vP7" firstAttribute="leading" secondItem="jwK-E6-xjZ" secondAttribute="leading" id="2Mc-WQ-oyF"/>
+                                        <constraint firstAttribute="bottom" secondItem="d4u-1b-vP7" secondAttribute="bottom" id="Amd-L6-NN1"/>
+                                        <constraint firstItem="RST-7S-DcE" firstAttribute="leading" secondItem="hKC-PS-LdR" secondAttribute="trailing" constant="10" id="GRj-iX-Z55"/>
+                                        <constraint firstItem="hKC-PS-LdR" firstAttribute="leading" secondItem="jwK-E6-xjZ" secondAttribute="leading" id="N8d-MX-ZOj"/>
+                                        <constraint firstItem="RST-7S-DcE" firstAttribute="centerY" secondItem="jwK-E6-xjZ" secondAttribute="centerY" id="hv9-aM-693"/>
+                                        <constraint firstItem="hKC-PS-LdR" firstAttribute="centerY" secondItem="jwK-E6-xjZ" secondAttribute="centerY" id="ntA-ih-w1a"/>
+                                        <constraint firstItem="d4u-1b-vP7" firstAttribute="top" secondItem="jwK-E6-xjZ" secondAttribute="top" id="uEC-JW-fj0"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="WNU-wF-T23">
+                                    <rect key="frame" x="0.0" y="67.333333333333314" width="114.33333333333333" height="33.666666666666657"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="33L-TD-Ua1">
+                                            <rect key="frame" x="0.0" y="8" width="18" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="18" id="BwL-MR-3cV"/>
+                                                <constraint firstAttribute="height" constant="18" id="VwG-ON-pFW"/>
+                                            </constraints>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="E" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F44-Np-VSD">
+                                            <rect key="frame" x="28" y="7" width="9" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="p9U-Lm-V19"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1004" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4rZ-Fm-jWg">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="Sr6-eQ-Dbu"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="tEV-w3-t1W"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstAttribute="bottom" secondItem="4rZ-Fm-jWg" secondAttribute="bottom" id="Uoz-c0-hMs"/>
+                                        <constraint firstItem="F44-Np-VSD" firstAttribute="leading" secondItem="33L-TD-Ua1" secondAttribute="trailing" constant="10" id="X4J-Un-mUn"/>
+                                        <constraint firstItem="33L-TD-Ua1" firstAttribute="leading" secondItem="WNU-wF-T23" secondAttribute="leading" id="im4-SY-tp7"/>
+                                        <constraint firstItem="4rZ-Fm-jWg" firstAttribute="leading" secondItem="WNU-wF-T23" secondAttribute="leading" id="uQj-Ek-VjV"/>
+                                        <constraint firstItem="33L-TD-Ua1" firstAttribute="centerY" secondItem="WNU-wF-T23" secondAttribute="centerY" id="wbV-z8-t91"/>
+                                        <constraint firstItem="4rZ-Fm-jWg" firstAttribute="top" secondItem="WNU-wF-T23" secondAttribute="top" id="xHc-qL-PpH"/>
+                                        <constraint firstItem="F44-Np-VSD" firstAttribute="centerY" secondItem="WNU-wF-T23" secondAttribute="centerY" id="xM7-cb-oa8"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="vHa-XQ-6ny">
+                                    <rect key="frame" x="0.0" y="101" width="114.33333333333333" height="34"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="DUO-ro-JJn">
+                                            <rect key="frame" x="0.0" y="8" width="18" height="18"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="18" id="6IK-nG-GNi"/>
+                                                <constraint firstAttribute="width" constant="18" id="pYl-hk-Ryc"/>
+                                            </constraints>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="F" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qhy-ZJ-VDs">
+                                            <rect key="frame" x="28" y="7" width="8" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="TYL-32-VIw"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1005" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8G5-fB-XwN">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="34"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="Q9N-P1-rIC"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="Rps-r1-8M6"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="8G5-fB-XwN" firstAttribute="leading" secondItem="vHa-XQ-6ny" secondAttribute="leading" id="2WW-9i-vQA"/>
+                                        <constraint firstItem="DUO-ro-JJn" firstAttribute="centerY" secondItem="vHa-XQ-6ny" secondAttribute="centerY" id="8Ig-Iy-ioV"/>
+                                        <constraint firstItem="qhy-ZJ-VDs" firstAttribute="leading" secondItem="DUO-ro-JJn" secondAttribute="trailing" constant="10" id="Tcn-Nf-ez1"/>
+                                        <constraint firstItem="qhy-ZJ-VDs" firstAttribute="centerY" secondItem="vHa-XQ-6ny" secondAttribute="centerY" id="V4i-pe-i30"/>
+                                        <constraint firstAttribute="bottom" secondItem="8G5-fB-XwN" secondAttribute="bottom" id="euO-7K-fiR"/>
+                                        <constraint firstItem="DUO-ro-JJn" firstAttribute="leading" secondItem="vHa-XQ-6ny" secondAttribute="leading" id="gmN-12-926"/>
+                                        <constraint firstItem="8G5-fB-XwN" firstAttribute="top" secondItem="vHa-XQ-6ny" secondAttribute="top" id="wWZ-BJ-9oH"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="u4x-Ff-czP">
+                                    <rect key="frame" x="0.0" y="135" width="114.33333333333333" height="33.666666666666657"/>
+                                    <subviews>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="G" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="G6r-gZ-B47">
+                                            <rect key="frame" x="28" y="6.6666666666666856" width="11" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="n7U-Vx-xgz"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="XKV-Rp-Jta">
+                                            <rect key="frame" x="0.0" y="7.6666666666666856" width="18" height="18"/>
+                                        </imageView>
+                                        <button opaque="NO" tag="1007" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="BRS-TJ-pWC">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="Jue-kh-Ft3"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="INX-d0-e7L"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="XKV-Rp-Jta" firstAttribute="leading" secondItem="u4x-Ff-czP" secondAttribute="leading" id="7Yf-05-act"/>
+                                        <constraint firstAttribute="bottom" secondItem="BRS-TJ-pWC" secondAttribute="bottom" id="Fjs-To-qCh"/>
+                                        <constraint firstItem="G6r-gZ-B47" firstAttribute="centerY" secondItem="XKV-Rp-Jta" secondAttribute="centerY" id="SVc-jH-VxW"/>
+                                        <constraint firstItem="BRS-TJ-pWC" firstAttribute="top" secondItem="u4x-Ff-czP" secondAttribute="top" id="cvx-OE-0AM"/>
+                                        <constraint firstItem="BRS-TJ-pWC" firstAttribute="leading" secondItem="u4x-Ff-czP" secondAttribute="leading" id="jx0-RL-gWF"/>
+                                        <constraint firstItem="G6r-gZ-B47" firstAttribute="leading" secondItem="XKV-Rp-Jta" secondAttribute="trailing" constant="10" id="rYg-Ho-QaA"/>
+                                        <constraint firstItem="XKV-Rp-Jta" firstAttribute="centerY" secondItem="u4x-Ff-czP" secondAttribute="centerY" id="v6S-og-SBA"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="udJ-Lp-A7n">
+                                    <rect key="frame" x="0.0" y="168.66666666666669" width="114.33333333333333" height="33.666666666666657"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="NVg-Ou-bSm">
+                                            <rect key="frame" x="0.0" y="7.6666666666666288" width="18" height="18"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8xs-rP-O2t">
+                                            <rect key="frame" x="28" y="6.6666666666666288" width="10" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="6cf-CB-kXe"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1009" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qlH-wo-fVt">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="5u0-cd-H82"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="eil-Qt-Bif"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="qlH-wo-fVt" firstAttribute="leading" secondItem="udJ-Lp-A7n" secondAttribute="leading" id="MAi-oC-SHA"/>
+                                        <constraint firstItem="8xs-rP-O2t" firstAttribute="leading" secondItem="NVg-Ou-bSm" secondAttribute="trailing" constant="10" id="O2p-h9-Dvw"/>
+                                        <constraint firstItem="NVg-Ou-bSm" firstAttribute="centerY" secondItem="udJ-Lp-A7n" secondAttribute="centerY" id="Vxt-J6-7gs"/>
+                                        <constraint firstItem="NVg-Ou-bSm" firstAttribute="leading" secondItem="udJ-Lp-A7n" secondAttribute="leading" id="a3e-me-pyX"/>
+                                        <constraint firstAttribute="bottom" secondItem="qlH-wo-fVt" secondAttribute="bottom" id="gfx-iM-aFz"/>
+                                        <constraint firstItem="qlH-wo-fVt" firstAttribute="top" secondItem="udJ-Lp-A7n" secondAttribute="top" id="guc-ib-WAW"/>
+                                        <constraint firstItem="8xs-rP-O2t" firstAttribute="centerY" secondItem="NVg-Ou-bSm" secondAttribute="centerY" id="wws-Ut-fEQ"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="p4w-Gf-bLk">
+                                    <rect key="frame" x="0.0" y="202.33333333333331" width="114.33333333333333" height="33.666666666666657"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="4Lk-07-pwR">
+                                            <rect key="frame" x="0.0" y="7.6666666666666856" width="18" height="18"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="B" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w2x-kg-EP3">
+                                            <rect key="frame" x="28" y="6.6666666666666856" width="10" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="jMT-Le-vI2"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1011" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Mdw-nL-CxU">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="vtL-S9-0eJ"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="5Jg-tN-wQu"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstAttribute="bottom" secondItem="Mdw-nL-CxU" secondAttribute="bottom" id="DfS-hF-dyP"/>
+                                        <constraint firstItem="Mdw-nL-CxU" firstAttribute="top" secondItem="p4w-Gf-bLk" secondAttribute="top" id="Ggs-ma-lX4"/>
+                                        <constraint firstItem="4Lk-07-pwR" firstAttribute="centerY" secondItem="p4w-Gf-bLk" secondAttribute="centerY" id="Nxs-gI-Nt4"/>
+                                        <constraint firstItem="w2x-kg-EP3" firstAttribute="centerY" secondItem="4Lk-07-pwR" secondAttribute="centerY" id="PvM-pR-45d"/>
+                                        <constraint firstItem="w2x-kg-EP3" firstAttribute="leading" secondItem="4Lk-07-pwR" secondAttribute="trailing" constant="10" id="ZiK-Zx-hpp"/>
+                                        <constraint firstItem="4Lk-07-pwR" firstAttribute="leading" secondItem="p4w-Gf-bLk" secondAttribute="leading" id="am8-h6-Voc"/>
+                                        <constraint firstItem="Mdw-nL-CxU" firstAttribute="leading" secondItem="p4w-Gf-bLk" secondAttribute="leading" id="tY4-62-Z2g"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W4E-Jy-6SS">
+                                    <rect key="frame" x="144.33333333333331" y="0.0" width="84.666666666666686" height="33.666666666666664"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="kNP-fB-Sgb">
+                                            <rect key="frame" x="0.0" y="8" width="18" height="18"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="D" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sEP-7X-ajC">
+                                            <rect key="frame" x="28" y="7" width="10" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="1Vd-rK-UkG"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="♭" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CI4-Gl-Mnk">
+                                            <rect key="frame" x="38" y="12" width="10" height="10"/>
+                                            <fontDescription key="fontDescription" name="HiraginoSans-W3" family="Hiragino Sans" pointSize="10"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1001" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4km-0o-jtK">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="YFW-Mz-Owq"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="zni-tU-9hb"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstAttribute="bottom" secondItem="4km-0o-jtK" secondAttribute="bottom" id="BJY-4P-rY3"/>
+                                        <constraint firstItem="4km-0o-jtK" firstAttribute="leading" secondItem="W4E-Jy-6SS" secondAttribute="leading" id="OdR-s3-Jss"/>
+                                        <constraint firstItem="CI4-Gl-Mnk" firstAttribute="centerY" secondItem="sEP-7X-ajC" secondAttribute="centerY" id="SuH-1J-dYC"/>
+                                        <constraint firstItem="sEP-7X-ajC" firstAttribute="centerY" secondItem="kNP-fB-Sgb" secondAttribute="centerY" id="ajy-sb-rOU"/>
+                                        <constraint firstItem="sEP-7X-ajC" firstAttribute="leading" secondItem="kNP-fB-Sgb" secondAttribute="trailing" constant="10" id="c2W-U3-bUE"/>
+                                        <constraint firstItem="4km-0o-jtK" firstAttribute="top" secondItem="W4E-Jy-6SS" secondAttribute="top" id="hpk-kF-EKL"/>
+                                        <constraint firstItem="kNP-fB-Sgb" firstAttribute="centerY" secondItem="W4E-Jy-6SS" secondAttribute="centerY" id="jpM-oj-R2h"/>
+                                        <constraint firstItem="kNP-fB-Sgb" firstAttribute="leading" secondItem="W4E-Jy-6SS" secondAttribute="leading" id="nhj-UK-MA8"/>
+                                        <constraint firstItem="CI4-Gl-Mnk" firstAttribute="leading" secondItem="sEP-7X-ajC" secondAttribute="trailing" id="r4q-Ww-tAf"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="4RW-LV-gXm">
+                                    <rect key="frame" x="144.33333333333331" y="33.666666666666686" width="84.666666666666686" height="33.666666666666657"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="TD9-gX-SSD">
+                                            <rect key="frame" x="0.0" y="8" width="18" height="18"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="E" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nYG-4s-3Me">
+                                            <rect key="frame" x="27.999999999999996" y="7" width="8.3333333333333321" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="QCQ-jA-eH8"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="♭" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Au-70-poU">
+                                            <rect key="frame" x="36.333333333333314" y="12" width="10" height="10"/>
+                                            <fontDescription key="fontDescription" name="HiraginoSans-W3" family="Hiragino Sans" pointSize="10"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1003" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ym0-Ph-9xJ">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="iwC-Pn-Pl3"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="sfw-lD-73v"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="nYG-4s-3Me" firstAttribute="leading" secondItem="TD9-gX-SSD" secondAttribute="trailing" constant="10" id="I9G-eM-Bpk"/>
+                                        <constraint firstItem="ym0-Ph-9xJ" firstAttribute="leading" secondItem="4RW-LV-gXm" secondAttribute="leading" id="IaA-BH-Naw"/>
+                                        <constraint firstItem="0Au-70-poU" firstAttribute="leading" secondItem="nYG-4s-3Me" secondAttribute="trailing" id="K7i-PY-qeC"/>
+                                        <constraint firstItem="nYG-4s-3Me" firstAttribute="centerY" secondItem="TD9-gX-SSD" secondAttribute="centerY" id="KXN-oq-f01"/>
+                                        <constraint firstItem="TD9-gX-SSD" firstAttribute="leading" secondItem="4RW-LV-gXm" secondAttribute="leading" id="Sba-x6-Vv7"/>
+                                        <constraint firstItem="ym0-Ph-9xJ" firstAttribute="top" secondItem="4RW-LV-gXm" secondAttribute="top" id="Sft-Yd-3Tu"/>
+                                        <constraint firstItem="TD9-gX-SSD" firstAttribute="centerY" secondItem="4RW-LV-gXm" secondAttribute="centerY" id="gHI-EL-cH9"/>
+                                        <constraint firstItem="0Au-70-poU" firstAttribute="centerY" secondItem="nYG-4s-3Me" secondAttribute="centerY" id="hht-jR-RiV"/>
+                                        <constraint firstAttribute="bottom" secondItem="ym0-Ph-9xJ" secondAttribute="bottom" id="kRZ-7s-l0x"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X4H-Fh-dFX">
+                                    <rect key="frame" x="144.33333333333331" y="101" width="84.666666666666686" height="34"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="ejK-gv-bn7">
+                                            <rect key="frame" x="0.0" y="8" width="18" height="18"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="G" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="gUd-Pa-98x">
+                                            <rect key="frame" x="27.999999999999996" y="7" width="10.333333333333332" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="FJQ-n0-rIS"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="♭" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5a7-xm-jfY">
+                                            <rect key="frame" x="38.333333333333314" y="12" width="10" height="10"/>
+                                            <fontDescription key="fontDescription" name="HiraginoSans-W3" family="Hiragino Sans" pointSize="10"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1006" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LsY-5b-xv1">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="34"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="scl-dU-BWw"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="mQt-Pd-nIa"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="gUd-Pa-98x" firstAttribute="centerY" secondItem="ejK-gv-bn7" secondAttribute="centerY" id="4yg-jN-nrU"/>
+                                        <constraint firstItem="LsY-5b-xv1" firstAttribute="leading" secondItem="X4H-Fh-dFX" secondAttribute="leading" id="7Q2-Dy-IEE"/>
+                                        <constraint firstItem="LsY-5b-xv1" firstAttribute="top" secondItem="X4H-Fh-dFX" secondAttribute="top" id="Dsd-ff-wTD"/>
+                                        <constraint firstItem="gUd-Pa-98x" firstAttribute="leading" secondItem="ejK-gv-bn7" secondAttribute="trailing" constant="10" id="GjT-FC-gc9"/>
+                                        <constraint firstItem="ejK-gv-bn7" firstAttribute="centerY" secondItem="X4H-Fh-dFX" secondAttribute="centerY" id="MrA-JC-u3H"/>
+                                        <constraint firstItem="5a7-xm-jfY" firstAttribute="leading" secondItem="gUd-Pa-98x" secondAttribute="trailing" id="Rk2-T2-2XE"/>
+                                        <constraint firstAttribute="bottom" secondItem="LsY-5b-xv1" secondAttribute="bottom" id="ieJ-IX-DBc"/>
+                                        <constraint firstItem="5a7-xm-jfY" firstAttribute="centerY" secondItem="gUd-Pa-98x" secondAttribute="centerY" id="pgg-65-Syf"/>
+                                        <constraint firstItem="ejK-gv-bn7" firstAttribute="leading" secondItem="X4H-Fh-dFX" secondAttribute="leading" id="sCB-MC-pdb"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Swe-Ry-qdg">
+                                    <rect key="frame" x="144.33333333333331" y="135" width="84.666666666666686" height="33.666666666666657"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="F6U-1L-QNJ">
+                                            <rect key="frame" x="0.0" y="7.6666666666666856" width="18" height="18"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="A" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Pqy-zd-oA9">
+                                            <rect key="frame" x="27.999999999999996" y="6.6666666666666856" width="9.3333333333333321" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="PKU-Nt-dD1"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="♭" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="t9g-qn-BnE">
+                                            <rect key="frame" x="37.333333333333314" y="11.666666666666686" width="10" height="10"/>
+                                            <fontDescription key="fontDescription" name="HiraginoSans-W3" family="Hiragino Sans" pointSize="10"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1008" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="W5f-GN-alG">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="Pqc-pD-DWx"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="xQw-y1-U8Q"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="t9g-qn-BnE" firstAttribute="leading" secondItem="Pqy-zd-oA9" secondAttribute="trailing" id="6Am-Of-9DK"/>
+                                        <constraint firstItem="W5f-GN-alG" firstAttribute="leading" secondItem="Swe-Ry-qdg" secondAttribute="leading" id="DXF-73-evP"/>
+                                        <constraint firstItem="F6U-1L-QNJ" firstAttribute="leading" secondItem="Swe-Ry-qdg" secondAttribute="leading" id="Fnk-m5-aeV"/>
+                                        <constraint firstAttribute="bottom" secondItem="W5f-GN-alG" secondAttribute="bottom" id="LAw-i3-7qt"/>
+                                        <constraint firstItem="Pqy-zd-oA9" firstAttribute="leading" secondItem="F6U-1L-QNJ" secondAttribute="trailing" constant="10" id="UyP-fl-n41"/>
+                                        <constraint firstItem="t9g-qn-BnE" firstAttribute="centerY" secondItem="Pqy-zd-oA9" secondAttribute="centerY" id="c3d-KF-3DS"/>
+                                        <constraint firstItem="Pqy-zd-oA9" firstAttribute="centerY" secondItem="F6U-1L-QNJ" secondAttribute="centerY" id="hXE-BY-rnB"/>
+                                        <constraint firstItem="W5f-GN-alG" firstAttribute="top" secondItem="Swe-Ry-qdg" secondAttribute="top" id="l5l-25-MKS"/>
+                                        <constraint firstItem="F6U-1L-QNJ" firstAttribute="centerY" secondItem="Swe-Ry-qdg" secondAttribute="centerY" id="pFY-qO-S7S"/>
+                                    </constraints>
+                                </view>
+                                <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8fc-ui-TRO">
+                                    <rect key="frame" x="144.33333333333331" y="168.66666666666669" width="84.666666666666686" height="33.666666666666657"/>
+                                    <subviews>
+                                        <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="fork_pitchUnChoosed" translatesAutoresizingMaskIntoConstraints="NO" id="Csb-9e-UUh">
+                                            <rect key="frame" x="0.0" y="7.6666666666666288" width="18" height="18"/>
+                                        </imageView>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="B" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iBu-od-lwB">
+                                            <rect key="frame" x="27.999999999999996" y="6.6666666666666288" width="9.3333333333333321" height="20"/>
+                                            <constraints>
+                                                <constraint firstAttribute="height" constant="20" id="VNf-5n-GF1"/>
+                                            </constraints>
+                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="♭" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cSB-cy-6zq">
+                                            <rect key="frame" x="37.333333333333314" y="11.666666666666629" width="10" height="10"/>
+                                            <fontDescription key="fontDescription" name="HiraginoSans-W3" family="Hiragino Sans" pointSize="10"/>
+                                            <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                            <nil key="highlightedColor"/>
+                                        </label>
+                                        <button opaque="NO" tag="1010" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0Sz-yn-Kz6">
+                                            <rect key="frame" x="0.0" y="0.0" width="60" height="33.666666666666664"/>
+                                            <constraints>
+                                                <constraint firstAttribute="width" constant="60" id="Jx3-uf-8AG"/>
+                                            </constraints>
+                                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                                            <connections>
+                                                <action selector="pitchChooseAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="kkV-OC-KRe"/>
+                                            </connections>
+                                        </button>
+                                    </subviews>
+                                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                    <constraints>
+                                        <constraint firstItem="0Sz-yn-Kz6" firstAttribute="top" secondItem="8fc-ui-TRO" secondAttribute="top" id="9rm-aC-dvf"/>
+                                        <constraint firstItem="Csb-9e-UUh" firstAttribute="centerY" secondItem="8fc-ui-TRO" secondAttribute="centerY" id="AVb-Xx-jd6"/>
+                                        <constraint firstItem="cSB-cy-6zq" firstAttribute="centerY" secondItem="iBu-od-lwB" secondAttribute="centerY" id="EI1-2d-JFa"/>
+                                        <constraint firstItem="iBu-od-lwB" firstAttribute="leading" secondItem="Csb-9e-UUh" secondAttribute="trailing" constant="10" id="H83-7v-j0m"/>
+                                        <constraint firstItem="Csb-9e-UUh" firstAttribute="leading" secondItem="8fc-ui-TRO" secondAttribute="leading" id="L8C-bd-Zrb"/>
+                                        <constraint firstAttribute="bottom" secondItem="0Sz-yn-Kz6" secondAttribute="bottom" id="OY2-vz-SDh"/>
+                                        <constraint firstItem="0Sz-yn-Kz6" firstAttribute="leading" secondItem="8fc-ui-TRO" secondAttribute="leading" id="RfG-83-RYA"/>
+                                        <constraint firstItem="iBu-od-lwB" firstAttribute="centerY" secondItem="Csb-9e-UUh" secondAttribute="centerY" id="tLg-Io-vUd"/>
+                                        <constraint firstItem="cSB-cy-6zq" firstAttribute="leading" secondItem="iBu-od-lwB" secondAttribute="trailing" id="yPO-dA-zKb"/>
+                                    </constraints>
+                                </view>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstItem="p4w-Gf-bLk" firstAttribute="top" secondItem="udJ-Lp-A7n" secondAttribute="bottom" id="0F2-9S-1MV"/>
+                                <constraint firstItem="Swe-Ry-qdg" firstAttribute="height" secondItem="4RW-LV-gXm" secondAttribute="height" id="298-1R-vhl"/>
+                                <constraint firstItem="8fc-ui-TRO" firstAttribute="trailing" secondItem="4RW-LV-gXm" secondAttribute="trailing" id="4Oz-wR-Yti"/>
+                                <constraint firstItem="udJ-Lp-A7n" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="4wb-0w-ky8"/>
+                                <constraint firstItem="8fc-ui-TRO" firstAttribute="height" secondItem="4RW-LV-gXm" secondAttribute="height" id="8M9-Tf-bRP"/>
+                                <constraint firstItem="8fc-ui-TRO" firstAttribute="leading" secondItem="4RW-LV-gXm" secondAttribute="leading" id="Axf-hG-ZST"/>
+                                <constraint firstItem="WNU-wF-T23" firstAttribute="top" secondItem="jwK-E6-xjZ" secondAttribute="bottom" id="BB3-8i-nFo"/>
+                                <constraint firstItem="jwK-E6-xjZ" firstAttribute="top" secondItem="QaI-So-iYb" secondAttribute="bottom" id="DbK-67-90q"/>
+                                <constraint firstItem="WNU-wF-T23" firstAttribute="height" secondItem="QaI-So-iYb" secondAttribute="height" id="EeN-Qx-Fp1"/>
+                                <constraint firstItem="4RW-LV-gXm" firstAttribute="top" secondItem="W4E-Jy-6SS" secondAttribute="bottom" id="G8h-Mx-gZF"/>
+                                <constraint firstItem="X4H-Fh-dFX" firstAttribute="leading" secondItem="4RW-LV-gXm" secondAttribute="leading" id="HfH-4X-Scd"/>
+                                <constraint firstItem="jwK-E6-xjZ" firstAttribute="width" secondItem="QaI-So-iYb" secondAttribute="width" id="Ju2-Xx-VP2"/>
+                                <constraint firstItem="p4w-Gf-bLk" firstAttribute="width" secondItem="QaI-So-iYb" secondAttribute="width" id="NJE-Vq-6U4"/>
+                                <constraint firstItem="vHa-XQ-6ny" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="NOr-gE-kAI"/>
+                                <constraint firstItem="u4x-Ff-czP" firstAttribute="top" secondItem="vHa-XQ-6ny" secondAttribute="bottom" id="Nfw-fA-Rtb"/>
+                                <constraint firstItem="Swe-Ry-qdg" firstAttribute="leading" secondItem="4RW-LV-gXm" secondAttribute="leading" id="OxX-AZ-Hem"/>
+                                <constraint firstItem="p4w-Gf-bLk" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="R6G-T7-Rve"/>
+                                <constraint firstItem="4RW-LV-gXm" firstAttribute="height" secondItem="W4E-Jy-6SS" secondAttribute="height" id="S0j-6R-nvt"/>
+                                <constraint firstItem="jwK-E6-xjZ" firstAttribute="height" secondItem="QaI-So-iYb" secondAttribute="height" id="T9x-CT-SkB"/>
+                                <constraint firstItem="W4E-Jy-6SS" firstAttribute="height" secondItem="QaI-So-iYb" secondAttribute="height" id="UaF-Jh-3NP"/>
+                                <constraint firstItem="QaI-So-iYb" firstAttribute="leading" secondItem="AlX-o1-xtB" secondAttribute="leading" id="Vsi-uc-sJI"/>
+                                <constraint firstItem="W4E-Jy-6SS" firstAttribute="top" secondItem="AlX-o1-xtB" secondAttribute="top" id="XDH-4n-vKb"/>
+                                <constraint firstItem="vHa-XQ-6ny" firstAttribute="width" secondItem="QaI-So-iYb" secondAttribute="width" id="XHq-Ps-MHk"/>
+                                <constraint firstItem="X4H-Fh-dFX" firstAttribute="height" secondItem="4RW-LV-gXm" secondAttribute="height" id="YqO-QZ-x7m"/>
+                                <constraint firstItem="Swe-Ry-qdg" firstAttribute="top" secondItem="X4H-Fh-dFX" secondAttribute="bottom" id="aTh-hI-sBG"/>
+                                <constraint firstItem="8fc-ui-TRO" firstAttribute="top" secondItem="Swe-Ry-qdg" secondAttribute="bottom" id="b5p-Yr-eme"/>
+                                <constraint firstItem="vHa-XQ-6ny" firstAttribute="height" secondItem="QaI-So-iYb" secondAttribute="height" id="baD-Il-kHJ"/>
+                                <constraint firstAttribute="trailing" secondItem="W4E-Jy-6SS" secondAttribute="trailing" id="cNC-SE-Ffg"/>
+                                <constraint firstItem="p4w-Gf-bLk" firstAttribute="height" secondItem="QaI-So-iYb" secondAttribute="height" id="dXh-F6-p3e"/>
+                                <constraint firstItem="WNU-wF-T23" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="dfN-iX-k9b"/>
+                                <constraint firstItem="QaI-So-iYb" firstAttribute="trailing" secondItem="AlX-o1-xtB" secondAttribute="centerX" id="eKw-1d-eeZ"/>
+                                <constraint firstItem="u4x-Ff-czP" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="eoz-h6-RWg"/>
+                                <constraint firstItem="X4H-Fh-dFX" firstAttribute="trailing" secondItem="4RW-LV-gXm" secondAttribute="trailing" id="fNa-Gf-2Rq"/>
+                                <constraint firstItem="udJ-Lp-A7n" firstAttribute="width" secondItem="QaI-So-iYb" secondAttribute="width" id="fOj-qz-pT0"/>
+                                <constraint firstItem="WNU-wF-T23" firstAttribute="width" secondItem="QaI-So-iYb" secondAttribute="width" id="ghS-Fi-b0h"/>
+                                <constraint firstItem="X4H-Fh-dFX" firstAttribute="top" secondItem="vHa-XQ-6ny" secondAttribute="top" id="gqE-Dk-JzW"/>
+                                <constraint firstAttribute="trailing" secondItem="4RW-LV-gXm" secondAttribute="trailing" id="ia6-0t-8qX"/>
+                                <constraint firstItem="Swe-Ry-qdg" firstAttribute="trailing" secondItem="4RW-LV-gXm" secondAttribute="trailing" id="jDs-ud-Ja6"/>
+                                <constraint firstItem="W4E-Jy-6SS" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="trailing" constant="30" id="paI-dH-D6C"/>
+                                <constraint firstItem="W4E-Jy-6SS" firstAttribute="leading" secondItem="4RW-LV-gXm" secondAttribute="leading" id="q25-8H-YjE"/>
+                                <constraint firstItem="vHa-XQ-6ny" firstAttribute="top" secondItem="WNU-wF-T23" secondAttribute="bottom" id="qpA-yw-FyY"/>
+                                <constraint firstItem="u4x-Ff-czP" firstAttribute="height" secondItem="QaI-So-iYb" secondAttribute="height" id="rnT-mp-Y59"/>
+                                <constraint firstItem="udJ-Lp-A7n" firstAttribute="height" secondItem="QaI-So-iYb" secondAttribute="height" id="tTa-Yp-lhQ"/>
+                                <constraint firstItem="jwK-E6-xjZ" firstAttribute="leading" secondItem="QaI-So-iYb" secondAttribute="leading" id="tXa-Wh-PbP"/>
+                                <constraint firstAttribute="bottom" secondItem="p4w-Gf-bLk" secondAttribute="bottom" id="tjz-Wm-URv"/>
+                                <constraint firstItem="QaI-So-iYb" firstAttribute="top" secondItem="AlX-o1-xtB" secondAttribute="top" id="xLq-Wy-6oH"/>
+                                <constraint firstItem="udJ-Lp-A7n" firstAttribute="top" secondItem="u4x-Ff-czP" secondAttribute="bottom" id="xRx-3R-ynL"/>
+                                <constraint firstItem="u4x-Ff-czP" firstAttribute="width" secondItem="QaI-So-iYb" secondAttribute="width" id="zBL-7s-hP4"/>
+                            </constraints>
+                        </view>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="L5h-Ny-1au">
+                            <rect key="frame" x="18" y="365" width="235" height="40"/>
+                            <color key="backgroundColor" red="0.1764705882352941" green="0.7803921568627451" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="40" id="Cj4-4L-fBx"/>
+                            </constraints>
+                            <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" title="确认"/>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="6"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="forkSettingSureAction:" destination="iN0-l3-epB" eventType="touchUpInside" id="tVz-M3-Jtq"/>
+                            </connections>
+                        </button>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="7Bu-fJ-Eb8">
+                            <rect key="frame" x="23.333333333333336" y="312" width="63.000000000000007" height="45"/>
+                            <color key="backgroundColor" red="0.87450980392156863" green="0.87450980392156863" blue="0.87450980392156863" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="63" id="XUH-Jp-vQU"/>
+                            </constraints>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" image="speed_add">
+                                <color key="titleColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </state>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="6"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="musicalScaleAdd:" destination="iN0-l3-epB" eventType="touchUpInside" id="Owv-Ey-QE1"/>
+                            </connections>
+                        </button>
+                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ezm-DJ-9xp">
+                            <rect key="frame" x="184.33333333333334" y="312" width="63" height="45"/>
+                            <color key="backgroundColor" red="0.87450980392156863" green="0.87450980392156863" blue="0.87450980392156863" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            <constraints>
+                                <constraint firstAttribute="width" constant="63" id="YVj-x6-Ebd"/>
+                            </constraints>
+                            <inset key="imageEdgeInsets" minX="0.0" minY="0.0" maxX="2.2250738585072014e-308" maxY="0.0"/>
+                            <state key="normal" image="speed_minus">
+                                <color key="titleColor" red="0.1764705882" green="0.78039215689999997" blue="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                            </state>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="6"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                            <connections>
+                                <action selector="musicalScaleMinus:" destination="iN0-l3-epB" eventType="touchUpInside" id="BVO-ik-vxs"/>
+                            </connections>
+                        </button>
+                        <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dJJ-CJ-edB">
+                            <rect key="frame" x="95.333333333333343" y="312" width="80" height="45"/>
+                            <subviews>
+                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="4" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="aKX-xG-USM">
+                                    <rect key="frame" x="35.666666666666657" y="14" width="9" height="17"/>
+                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                    <color key="textColor" red="0.20000000000000001" green="0.20000000000000001" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    <nil key="highlightedColor"/>
+                                </label>
+                            </subviews>
+                            <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                            <constraints>
+                                <constraint firstItem="aKX-xG-USM" firstAttribute="centerY" secondItem="dJJ-CJ-edB" secondAttribute="centerY" id="GGy-UY-htL"/>
+                                <constraint firstAttribute="width" constant="80" id="HRi-cq-610"/>
+                                <constraint firstAttribute="height" constant="45" id="KLx-Z3-S5m"/>
+                                <constraint firstItem="aKX-xG-USM" firstAttribute="centerX" secondItem="dJJ-CJ-edB" secondAttribute="centerX" id="TbK-1g-05a"/>
+                            </constraints>
+                            <userDefinedRuntimeAttributes>
+                                <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                                    <real key="value" value="6"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="number" keyPath="borderWidth">
+                                    <real key="value" value="1"/>
+                                </userDefinedRuntimeAttribute>
+                                <userDefinedRuntimeAttribute type="color" keyPath="borderColor">
+                                    <color key="value" red="0.59215686274509804" green="0.59215686274509804" blue="0.59215686274509804" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                </userDefinedRuntimeAttribute>
+                            </userDefinedRuntimeAttributes>
+                        </view>
+                    </subviews>
+                    <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                    <constraints>
+                        <constraint firstItem="AlX-o1-xtB" firstAttribute="top" secondItem="Bhh-r7-n9J" secondAttribute="bottom" constant="5" id="9OS-CT-d64"/>
+                        <constraint firstItem="a4p-9E-C7P" firstAttribute="centerY" secondItem="Bhh-r7-n9J" secondAttribute="centerY" id="AEO-mo-DXw"/>
+                        <constraint firstItem="7Bu-fJ-Eb8" firstAttribute="top" secondItem="AlX-o1-xtB" secondAttribute="bottom" constant="5" id="Akz-1N-oLz"/>
+                        <constraint firstAttribute="width" constant="271" id="Amp-lt-7Eg"/>
+                        <constraint firstItem="L5h-Ny-1au" firstAttribute="top" secondItem="dJJ-CJ-edB" secondAttribute="bottom" constant="8" id="BgG-y0-Lxg"/>
+                        <constraint firstItem="Bhh-r7-n9J" firstAttribute="leading" secondItem="ip2-Qv-Yar" secondAttribute="leading" constant="18" id="GBk-GF-qBt"/>
+                        <constraint firstItem="ezm-DJ-9xp" firstAttribute="leading" secondItem="dJJ-CJ-edB" secondAttribute="trailing" constant="9" id="GR3-Ks-0Go"/>
+                        <constraint firstItem="a4p-9E-C7P" firstAttribute="leading" secondItem="Bhh-r7-n9J" secondAttribute="trailing" constant="5" id="K1b-Nt-SsF"/>
+                        <constraint firstItem="AlX-o1-xtB" firstAttribute="leading" secondItem="ip2-Qv-Yar" secondAttribute="leading" constant="21" id="M4p-yy-EAe"/>
+                        <constraint firstItem="L5h-Ny-1au" firstAttribute="leading" secondItem="ip2-Qv-Yar" secondAttribute="leading" constant="18" id="Mws-fc-9fd"/>
+                        <constraint firstItem="Bhh-r7-n9J" firstAttribute="top" secondItem="M5Y-mG-3VG" secondAttribute="bottom" constant="8" id="NCA-EM-mAV"/>
+                        <constraint firstItem="dJJ-CJ-edB" firstAttribute="centerX" secondItem="ip2-Qv-Yar" secondAttribute="centerX" id="SVC-lY-Pb3"/>
+                        <constraint firstItem="dJJ-CJ-edB" firstAttribute="height" secondItem="7Bu-fJ-Eb8" secondAttribute="height" id="U8P-Nt-1Wp"/>
+                        <constraint firstItem="ezm-DJ-9xp" firstAttribute="centerY" secondItem="7Bu-fJ-Eb8" secondAttribute="centerY" id="X8V-jP-zcr"/>
+                        <constraint firstAttribute="bottom" secondItem="L5h-Ny-1au" secondAttribute="bottom" constant="25" id="Y5J-0y-qyS"/>
+                        <constraint firstItem="dJJ-CJ-edB" firstAttribute="leading" secondItem="7Bu-fJ-Eb8" secondAttribute="trailing" constant="9" id="bHD-pg-V8a"/>
+                        <constraint firstAttribute="trailing" secondItem="L5h-Ny-1au" secondAttribute="trailing" constant="18" id="djX-Wd-dqb"/>
+                        <constraint firstItem="ezm-DJ-9xp" firstAttribute="height" secondItem="7Bu-fJ-Eb8" secondAttribute="height" id="gRI-Lx-Of1"/>
+                        <constraint firstAttribute="trailing" secondItem="AlX-o1-xtB" secondAttribute="trailing" constant="21" id="oPn-IM-YQF"/>
+                        <constraint firstItem="M5Y-mG-3VG" firstAttribute="top" secondItem="ip2-Qv-Yar" secondAttribute="top" constant="14" id="pfS-Vq-c5m"/>
+                        <constraint firstItem="dJJ-CJ-edB" firstAttribute="centerY" secondItem="7Bu-fJ-Eb8" secondAttribute="centerY" id="tOS-rR-wqD"/>
+                        <constraint firstAttribute="height" constant="430" id="uMY-cw-3mk"/>
+                        <constraint firstItem="M5Y-mG-3VG" firstAttribute="centerX" secondItem="ip2-Qv-Yar" secondAttribute="centerX" id="zZu-Ob-TnJ"/>
+                    </constraints>
+                    <userDefinedRuntimeAttributes>
+                        <userDefinedRuntimeAttribute type="number" keyPath="cornerRadius">
+                            <real key="value" value="15"/>
+                        </userDefinedRuntimeAttribute>
+                    </userDefinedRuntimeAttributes>
+                </view>
+            </subviews>
+            <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.5" colorSpace="custom" customColorSpace="sRGB"/>
+            <constraints>
+                <constraint firstItem="ip2-Qv-Yar" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" id="01S-SR-k4J"/>
+                <constraint firstItem="ip2-Qv-Yar" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="mIs-j2-Rqf"/>
+            </constraints>
+            <nil key="simulatedTopBarMetrics"/>
+            <nil key="simulatedBottomBarMetrics"/>
+            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+            <connections>
+                <outlet property="frequenceLabel" destination="Bhh-r7-n9J" id="pCN-eE-vqp"/>
+                <outlet property="musicalScaleLabel" destination="aKX-xG-USM" id="Kg6-4A-9Ut"/>
+                <outlet property="pitchAImage" destination="NVg-Ou-bSm" id="fbe-xA-p5t"/>
+                <outlet property="pitchAhalfDesc" destination="t9g-qn-BnE" id="xiA-el-VlU"/>
+                <outlet property="pitchAhalfImage" destination="F6U-1L-QNJ" id="GZ9-GX-Hoy"/>
+                <outlet property="pitchAhalfLabel" destination="Pqy-zd-oA9" id="R7p-Ti-m3G"/>
+                <outlet property="pitchBImage" destination="4Lk-07-pwR" id="vTS-bX-ShU"/>
+                <outlet property="pitchBhalfDesc" destination="cSB-cy-6zq" id="sSn-V8-JJb"/>
+                <outlet property="pitchBhalfImage" destination="Csb-9e-UUh" id="fRa-AC-N9w"/>
+                <outlet property="pitchBhalfLabel" destination="iBu-od-lwB" id="qHz-C5-fEa"/>
+                <outlet property="pitchCImage" destination="7tD-sj-An5" id="zm2-WV-JRP"/>
+                <outlet property="pitchDImage" destination="hKC-PS-LdR" id="lEV-R1-oGp"/>
+                <outlet property="pitchDhalfDesc" destination="CI4-Gl-Mnk" id="C09-NT-iQC"/>
+                <outlet property="pitchDhalfImage" destination="kNP-fB-Sgb" id="cQt-hK-mwt"/>
+                <outlet property="pitchDhalfLabel" destination="sEP-7X-ajC" id="lR2-aN-Bs2"/>
+                <outlet property="pitchEImage" destination="33L-TD-Ua1" id="N8N-1r-sOn"/>
+                <outlet property="pitchEhalfDesc" destination="0Au-70-poU" id="lha-eq-cvs"/>
+                <outlet property="pitchEhalfImage" destination="TD9-gX-SSD" id="ptO-4M-BzX"/>
+                <outlet property="pitchEhalfLabel" destination="nYG-4s-3Me" id="OBR-Aj-XIU"/>
+                <outlet property="pitchFImage" destination="DUO-ro-JJn" id="fYk-Vc-bEt"/>
+                <outlet property="pitchGImage" destination="XKV-Rp-Jta" id="5NT-PX-fpY"/>
+                <outlet property="pitchGhalfDesc" destination="5a7-xm-jfY" id="scg-Ig-bsO"/>
+                <outlet property="pitchGhalfImage" destination="ejK-gv-bn7" id="eXg-KJ-KEG"/>
+                <outlet property="pitchGhalfLabel" destination="gUd-Pa-98x" id="dOV-eb-LX7"/>
+            </connections>
+            <point key="canvasLocation" x="101.53846153846153" y="-12.085308056872037"/>
+        </view>
+    </objects>
+    <resources>
+        <image name="fork_pitchChoosed" width="18" height="18"/>
+        <image name="fork_pitchUnChoosed" width="18" height="18"/>
+        <image name="fork_warning" width="13" height="12"/>
+        <image name="speed_add" width="14" height="14"/>
+        <image name="speed_minus" width="14" height="14"/>
+        <systemColor name="systemBackgroundColor">
+            <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+        </systemColor>
+    </resources>
+</document>