nqsol
nqson đang tạo một phần mềm soạn nhạc bài tập lớn. Để có thể tạo ra phần mềm này, trước tiên nqson cần phải hiểu nhạc lý về các nốt nhạc trong các bài hát.
Nhạc lý – lý thuyết âm nhạc, hiểu đơn giản là một ngôn ngữ dành riêng cho âm nhạc. Nhạc lý cung cấp cho bạn những công cụ giúp bạn hiểu, diễn giải và sử dụng âm nhạc một cách linh hoạt. Cũng giống như cách bạn nói chuyện sử dụng tiếng mẹ đẻ. Bạn có thể dùng tiếng nói của mình để hiểu về thế giới xung quanh, giao tiếp với người khác hay thể hiện bản thân. Nhạc lý cũng có chức năng tương tự đối với âm nhạc, giúp bạn có thể hiểu cách các nốt nhạc, hợp âm, giai điệu, nhịp điệu phối hợp với nhau. Khi bạn càng nắm vững nhạc lý, bạn sẽ dễ dàng sử dụng chúng một cách tự nhiên, theo phản xạ mà không cần phải suy nghĩ quá nhiều.
Âm thanh được tạo ra từ các sóng âm rung động trong không khí. Khi các rung động này nhanh hơn, chúng ta sẽ nghe được âm thanh cao hơn và ngược lại, rung động chậm hơn thì âm thanh nghe trầm hơn. Các rung động này thường sẽ ở một tần số, một cao độ nhất định, và ta xem đó là một nốt nhạc. Hiểu về nốt nhạc là nền tảng cơ bản nhất của nhạc lý. Hầu hết tất cả những bản nhạc bạn từng nghe được tạo thành bởi chỉ 12 nốt nhạc (Từ Do tới Si, tính cả nốt trắng và đen trên piano). 7 nốt nhạc trắng được ký hiệu bởi những chữ cái từ A - G như sau:
- Do – C
- Re – D
- Mi – E
- Fa – F
- Sol – G
- La – A
- Si – B
Trên đàn piano sẽ có nhiều đoạn từ Do đến Si (mỗi đoạn được gọi là 1 quãng tám). Vậy để phân biệt chính xác vị trí từng nốt, người ta sẽ đánh số thứ tự cho từng quãng như hình bên dưới, với phím C4 nằm giữa đàn (còn gọi là Middle C).
Về định nghĩa trong nhạc lý, cung (step/tone) có thể xem là đơn vị đếm cao độ trong âm nhạc. Ví dụ khi bạn học toán, một đơn vị đếm là khoảng cách giữa từng số với nhau. Bạn hiểu rằng số 2 cách số 1 một đơn vị. Số 3 cách số 1 hai đơn vị. Âm thanh cũng vậy, bạn sẽ có cảm giác nốt Re có âm thanh cao hơn nốt Do. Nhưng làm cách nào để biết nốt Re cao hơn nốt Do cụ thể là bao nhiêu? Nốt Mi sẽ cao hơn nốt Do bao nhiêu? Đó chính là lý do khái niệm cung xuất hiện. Khoảng cách về cao độ mà chúng ta bàn ở trên sẽ được đếm bằng cung. Nghĩa là nốt Re sẽ cao hơn nốt Do 1 cung. Nốt Mi cao hơn nốt Do 2 cung.
Sau khi bạn đã hiểu cung là gì, hãy đi tiếp đến khái niệm nửa cung, đây được xem là đơn vị đếm cao độ ở mức nhỏ nhất trong âm nhạc. Như bạn đã biết, chúng ta không chỉ có 7 nốt nhạc tự nhiên là Do, Re, Mi, Fa, Sol, La, Si. Nhưng có tới 12 nốt nhạc, kể cả những nốt thăng giáng (đề cập sau). Bạn không nên nhầm lẫn rằng 7 nốt nhạc tự nhiên, nốt nào cũng đều cách nhau 1 cung. Thực ra, các nốt nhạc tự nhiên không cách nhau đều đặn như vậy, nhưng có 1 số nốt cách nhau 1 cung, và một số nốt chỉ cách nhau nửa cung mà thôi.
Các nốt nhạc tự nhiên (7 nốt từ Đô đến Si) , có nốt sẽ cách nhau 1 cung hoặc nửa cung, theo nguyên tắc của nhạc lý.
Như bạn có thể thấy:
- Do (C) và Re (D) là 2 phím trắng cách nhau 1 cung, giữa chúng sẽ có 1 phím đen gọi là Do thăng (Do thăng là tên gọi khác nhau cho cùng một nốt).
- Mi (E) và Fa (F) không có phím đen xen giữa nên cách nhau nửa cung. Tương tự, Si (B) và Sol (G) cũng cách nhau nửa cung như hình. Các nốt phím trắng còn lại đều cách nhau 1 cung.
Vậy nên ở giữa các nốt nhạc mà 2 nốt đó cách nhau 1 cung sẽ có thêm một nốt giữa cách đều nửa cung cả 2 nốt nhạc đó. Tên gọi của nốt nhạc này sẽ được gọi là nốt thăng của nốt nhạc đằng trước (Ký hiệu thêm dấu thăng, ví dụ: C#3):
\[A0 < ... < B3 < C4 < C\#4 < D4 < D\#4 < E4 < F4 < F\#4 < G4 < G\#4 < A4 < A\#4 < B4 < C5 < ... < C8\]
Để lưu các nốt nhạc của một bài hát, nqson sẽ lưu nốt nhạc đầu tiên của bài hát, sau đó sẽ lưu thêm một giá trị x biểu thị là nốt nhạc tiếp theo sẽ cao hơn nốt nhạc trước đó x nửa cung, và cứ lưu tiếp tục như vậy đến hết bài hát. Do một bài hát sẽ quá dài, chúng ta sẽ thử nghiệm đọc một nốt nhạc và một số tự nhiên x, sau đó hãy xuất ra nốt nhạc tiếp theo như mong muốn.
Input
Một dòng duy nhất là ký hiệu của 1 nốt nhạc và số tự nhiên \(x\)
Output
Một dòng chứa nốt nhạc cần tìm
Giới hạn
Các nốt nhạc nằm trong đoạn 88 nốt từ A0 đến C8
Ví dụ 1
Input
C3 1
Output
C#3
Ví dụ 2
Input
B3 1
Output
C4
Comments