Ruby như một công cụ sáng tác: Sonic Pi
(bhmt.dev)-
Sonic Pi: Sử dụng Ruby như một công cụ sáng tác
-
Bối cảnh
- Tác giả vốn học chuyên ngành âm nhạc
- Trong quá trình làm việc như một lập trình viên web, tác giả dần say mê công việc kỹ thuật
- Tác giả từng thử thách bản thân với nhạc điện tử vì khó có thể chơi nhiều loại nhạc cụ, nhưng đã thất bại
- Gần đây, thông qua Sonic Pi, tác giả lại một lần nữa kết hợp âm nhạc với lập trình
-
Giới thiệu Sonic Pi
- Sonic Pi do Sam Aaron tạo ra là một bộ tổng hợp âm thanh phần mềm được điều khiển bằng mã
- Công cụ này sử dụng một ngôn ngữ đặc thù miền (DSL) mở rộng từ Ruby để ánh xạ các khái niệm âm nhạc và âm thanh
- Ví dụ, dùng ký hiệu như
:c4để biểu diễn nốt nhạc và dùng bộ tạo hợp âm nhưchord(:d3, :maj7)
-
Mục tiêu của dự án
- Mục tiêu là sáng tác một bản demo chỉ bằng Sonic Pi
- Tác giả sáng tác hoàn toàn bằng mã, không dùng MIDI hay sample bên ngoài
-
Ví dụ mã cơ bản
- Thiết lập BPM bằng
use_bpm 70và thiết lập bộ tổng hợp âm thanh bằnguse_synth :pulse - Phát nốt nhạc và đặt khoảng thời gian bằng mã như
play :c2,sleep 0.25 - Phát một mẫu bằng
play_pattern_timed [ :c3, :d3, :e3, :g3 ], 0.25
- Thiết lập BPM bằng
-
Tối ưu mã
- Tác giả định nghĩa hàm để giảm phần mã lặp lại
- Tạo mẫu arpeggio bằng hàm
def arpeggiate(root, is_minor = false) - Dùng khối
in_thread dođể chạy mã song song
-
Thực thi song song
- Có thể dùng khối
in_thread dođể chạy song song hai "nhạc cụ" - Ví dụ, chạy arpeggio trong một luồng và giai điệu trong luồng khác
- Có thể dùng khối
-
Triển khai hợp xướng
- Dùng
ringđể kết hợp nhiều nốt thành một danh sách - Phát nốt và thiết lập thời lượng duy trì như
play_pattern_timed [ring(:c5, :e5)], 4, sustain: 3.8 - Định nghĩa hàm
def choral_rings(notes, sus)để đơn giản hóa mẫu hợp xướng
- Dùng
-
Live loop
- Dùng
live_loopđể tạo vòng lặp lặp lại vô hạn - Định nghĩa vòng lặp như
live_loop :harp dorồi viết mã bên trong
- Dùng
-
Kết luận
- Lập trình không chỉ là khoa học đơn thuần mà còn là nghệ thuật
- Viết mã là một hành động sáng tạo và là một cách để giao tiếp với người khác
- Với Sonic Pi, có thể kết hợp âm nhạc và lập trình để tạo ra những tác phẩm sáng tạo
Tóm tắt của GN⁺
- Sonic Pi là công cụ cho phép sáng tác nhạc bằng mã, sử dụng một DSL mở rộng từ Ruby
- Dự án này đặt mục tiêu sáng tác một bản demo chỉ bằng Sonic Pi
- Lập trình không chỉ có khía cạnh khoa học mà còn có mặt nghệ thuật, và Sonic Pi thể hiện điều đó rất rõ
- Đây là một ví dụ hay về việc kết hợp âm nhạc và lập trình để tạo ra công việc sáng tạo
- Những công cụ có tính năng tương tự gồm TidalCycles và SuperCollider
1 bình luận
Ý kiến Hacker News