4.6.1. Lời bài hát và hợp âm khơng gây khó chịu người dùng
Vấn đề
Các dịng lời và hợp âm bài hát chỉ là những đoạn văn bản. Nếu hiển thị lên thiết bị di động thì rất đơn điệu và gây nhàm chàn cho người dùng, có khi cịn gây khó chị bởi việc người dùng khó có thể nhìn đâu là hợp âm, đâu là lời bài hát. Vấn đề đặt ra là làm sao cho người dùng có thể nhìn rõ được phần lời và phần hợp âm một cách riêng biệt nhưng vẫn đặt chung môt chỗ
Hướng giải quyết
Sau khi tìm hiểu thì tơi thấy UITextView là lớp cung cấp một control hỗ trợ nhập và hiển thị khối lượng lớn văn bản trên nhiều dòng. Hỗ trợ thanh cuộn cho phép người dùng cuộn nội dung văn bản. Từ iOS 6 trở lên, lớp này cịn hỗ trợ thuộc tính attributedText cho phép định dạng văn bản (font, màu sắc, canh lề,…). Qua đó tơi chỉnh kích cỡ chữ, font, màu sắc cho hợp âm và lời với hai màu khác nhau để cho người dùng khi nhìn vơ có thể phân biệt được ngay.
4.6.2. Tăng giảm hợp âm
Vấn đề
Đối với người chơi nhạc cụ cơ bản, hợp âm trưởng và hợp âm thứ là 2 loại hợp âm dễ nhớ và dễ sử dụng nhất, cũng như dùng nhiều nhất trong các bài hát. Bên cạnh đó, trong đệm hát nhạc nhẹ (Pop-ballad), có những hợp âm được dùng để tạo thêm màu sắc cho các bài hát phổ biến mà chúng ta có thể áp dụng để tăng sự lơi cuốn cho bản nhạc như: hợp âm sus4, hợp âm sus2, hợp âm major7, hợp âm 7. Vấn đề gặp phải ở đây là tìm ra quy luật chung để thực hiện việc tăng giảm hợp âm đối với cả hợp âm căng bản, hợp âm nâng cao đều sử dụng được và có thể nhận diện được tất cả các hợp âm có thể có.
Sau khi tìm hiểu thì tơi thấy về mặt ngữ nghĩa, hợp âm được ghép bởi tiền tố (keys) và hậu tố (suffixs). Tôi sẽ tạo sẵn một bộ tất cả các tiền tố và hậu tố từ đó ta ghép chúng lại thì sẽ ra được tất cả những hợp âm có thể có và tìm ra thuật tốn để tìm hợp âm khi tăng, giảm của hợp âm đó là gì
Ví dụ:
Keys = [A,B,C] ;
Suffixs = [b,#,7, ];
Các hợp âm có thể có chordsArray = [ Ab , A# , A7, A , Bb , B# , B7, B , Cb ,
C# , C7, C ];
Hàm findNewChord tìm hợp âm khi tăng hoặc giảm
// chord: tên hợp âm
// status: tăng hay giảm hơp âm …,-1,0,1,…
func findNewChord(chord: String, status: Int) -> String {
var iOldChord = chordsArray.index(of: chord)
var iNewChord = (iOldChord + status*(suffixs.count))% chordsArray.count
if status < 0 && iOldChord < (suffixs.count) {
iNewChord = chordsArray.count - (suffixs.count) + i }
return chordsArray[iNewChord] }
4.6.3. Chạy ứng dụng trên máy thật
Vấn đề
Để cho việc tương tác với ứng dụng một cách trực quan giúp cho việc trải nghiệm ứng dụng một các tốt nhát và ứng dụng có thể thu thập được âm thanh từ bên ngồi trong khi đó máy ảo trong xcode chưa thể thu được. Vấn đề đặt ra là cài đặt ứng dụng trên thiết bị thực tế
Hướng giải quyết
Sau khi tìm hiểu thì tơi thấy với Xcode 7 trở lên, Apple đã cho phép cài ứng dụng lên iPhone, iPad và Apple TV bằng cách sử dụng một tài khoản Apple ID
miễn phí. Nngười dùng muốn cài một ứng dụng mã nguồn mở lên thiết bị iOS cá nhân của mình có thể thực hiện một cách khá dễ dàng thông qua các bước
Bước 1: Tạo tài khoảng Apple ID và kích hoạt tài khoản developer miễn
phí.
Bước 2: Bấm vào Xcode → Preferences → Accounts sau đó bấm vào dấu
‘+’ và chọn Add Apple ID.
Bước 3: Đăng nhập bằng tài khoản Apple free developer ID bạn vừa tiến
hành kích hoạt ở trên.