Âm thanh ngắn nạp vào bộ nhớ: hiệu ứng, phát chồng, cao độ, lặp. Tiếp...
Enumerations | |
| enum | njin::audio_bus { njin::bus_master , njin::bus_music , njin::bus_sfx , njin::bus_ui , njin::bus_voice , njin::audio_bus_count } |
| Kênh trộn âm thanh, như thanh trượt trong menu cài đặt của game. Tiếp... | |
Các hàm | |
| void | njin::audio_set_bus_volume (context &ctx, audio_bus bus, f32 volume) |
| Đặt âm lượng một kênh, từ 0 trở lên (1 là nguyên). | |
| f32 | njin::audio_bus_volume (const context &ctx, audio_bus bus) |
| Âm lượng một kênh. | |
| void | njin::audio_set_bus_muted (context &ctx, audio_bus bus, bool muted) |
| Tắt hoặc bật tiếng cả một kênh, không đụng đến âm lượng đã đặt. | |
| bool | njin::audio_bus_muted (const context &ctx, audio_bus bus) |
| Kênh có đang tắt tiếng không. | |
| void | njin::sound_set_bus (context &ctx, sound_handle handle, audio_bus bus) |
| Đưa một sound vào kênh khác, ví dụ bus_ui cho tiếng nhấp menu. | |
| sound_handle | njin::sound_load (context &ctx, const char *path) |
| Nạp một âm thanh ngắn vào bộ nhớ. | |
| sound_handle | njin::sound_load_samples (context &ctx, const f32 *samples, i32 count, i32 sample_rate) |
| Tạo một âm thanh từ các mẫu đã có trong bộ nhớ. | |
| void | njin::sound_unload (context &ctx, sound_handle handle) |
| Giải phóng sound. | |
| void | njin::sound_set_volume (context &ctx, sound_handle handle, f32 volume) |
| Đặt âm lượng của sound, từ 0 trở lên (1 là âm lượng gốc). | |
| void | njin::sound_set_muted (context &ctx, sound_handle handle, bool muted) |
| Tắt hoặc bật tiếng sound. | |
| void | njin::sound_play_once (context &ctx, sound_handle handle) |
| Phát sound mà không cắt các bản đang phát. | |
| void | njin::sound_play_once_at (context &ctx, sound_handle handle, f32 pitch, f32 gain) |
| Giống sound_play_once() nhưng chỉnh cao độ và độ lớn cho riêng bản này. | |
| void | njin::sound_play_restart (context &ctx, sound_handle handle) |
| Cắt mọi bản đang phát rồi phát lại từ đầu, nên lúc nào cũng chỉ nghe một bản. | |
| void | njin::sound_play_loop (context &ctx, sound_handle handle) |
| Đánh dấu sound là lặp lại và phát nếu nó chưa phát. | |
| void | njin::sound_play_at (context &ctx, sound_handle handle, vec2 world_pos) |
| Phát sound như sound_play_once(), kèm vị trí trong thế giới. | |
| void | njin::audio_set_range (context &ctx, f32 full_until, f32 silent_from) |
| Khoảng cách nghe được của sound_play_at(). | |
| void | njin::sound_stop (context &ctx, sound_handle handle) |
| Dừng mọi bản đang phát của sound và bỏ chế độ lặp. | |
Âm thanh ngắn nạp vào bộ nhớ: hiệu ứng, phát chồng, cao độ, lặp.
| enum njin::audio_bus |
Kênh trộn âm thanh, như thanh trượt trong menu cài đặt của game.
Âm lượng thật của một sound là âm lượng riêng của nó nhân âm lượng kênh của nó nhân bus_master. Music luôn ở kênh bus_music; sound mặc định ở bus_sfx, đổi bằng sound_set_bus().
Đặt âm lượng một kênh, từ 0 trở lên (1 là nguyên).
Áp dụng ngay cho cả những âm đang phát. Lưu cùng cài đặt bằng settings_save().
| ctx | Context của engine. |
| bus | Kênh. |
| volume | Âm lượng. Giá trị âm được coi là 0. |
Âm lượng một kênh.
| ctx | Context của engine. |
| bus | Kênh. |
| void njin::audio_set_bus_muted | ( | context & | ctx, |
| audio_bus | bus, | ||
| bool | muted ) |
Tắt hoặc bật tiếng cả một kênh, không đụng đến âm lượng đã đặt.
| ctx | Context của engine. |
| bus | Kênh. |
| muted | true để tắt tiếng. |
| bool njin::audio_bus_muted | ( | const context & | ctx, |
| audio_bus | bus ) |
Kênh có đang tắt tiếng không.
| ctx | Context của engine. |
| bus | Kênh. |
| void njin::sound_set_bus | ( | context & | ctx, |
| sound_handle | handle, | ||
| audio_bus | bus ) |
Đưa một sound vào kênh khác, ví dụ bus_ui cho tiếng nhấp menu.
| ctx | Context của engine. |
| handle | Sound. |
| bus | Kênh. |
| sound_handle njin::sound_load | ( | context & | ctx, |
| const char * | path ) |
Nạp một âm thanh ngắn vào bộ nhớ.
Dùng cho hiệu ứng như tiếng bắn, tiếng nhấp. Nhạc nền dài thì dùng music_load(). Handle không hợp lệ hoặc đã unload bị mọi hàm sound bỏ qua. Nếu máy không có thiết bị âm thanh thì việc nạp thất bại và ghi log, còn game vẫn chạy.
| ctx | Context của engine. |
| path | Đường dẫn file âm thanh (wav, ogg, mp3, flac...). |
| sound_handle njin::sound_load_samples | ( | context & | ctx, |
| const f32 * | samples, | ||
| i32 | count, | ||
| i32 | sample_rate ) |
Tạo một âm thanh từ các mẫu đã có trong bộ nhớ.
Dữ liệu là mono, số thực 32 bit trong khoảng -1..1. Nó được chép vào bộ đệm riêng của sound và không được giữ lại, nên mảng của bạn có thể bị hủy ngay sau khi hàm trả về. Dùng cho âm thanh game tự sinh ra lúc khởi động.
| ctx | Context của engine. |
| samples | Mảng mẫu. |
| count | Số mẫu. |
| sample_rate | Tần số lấy mẫu, ví dụ 44100. |
| void njin::sound_unload | ( | context & | ctx, |
| sound_handle | handle ) |
Giải phóng sound.
Handle không hợp lệ bị bỏ qua.
| ctx | Context của engine. |
| handle | Sound cần giải phóng. |
| void njin::sound_set_volume | ( | context & | ctx, |
| sound_handle | handle, | ||
| f32 | volume ) |
Đặt âm lượng của sound, từ 0 trở lên (1 là âm lượng gốc).
Áp dụng ngay cho cả những bản đang phát. Mặc định là 1. Giá trị âm được coi là 0.
| ctx | Context của engine. |
| handle | Sound cần đặt. |
| volume | Âm lượng. |
| void njin::sound_set_muted | ( | context & | ctx, |
| sound_handle | handle, | ||
| bool | muted ) |
Tắt hoặc bật tiếng sound.
Tắt tiếng đưa âm lượng đang phát về 0 mà không đụng đến âm lượng đã lưu, nên bật lại thì khôi phục đúng như cũ.
| ctx | Context của engine. |
| handle | Sound cần đặt. |
| muted | true để tắt tiếng. |
| void njin::sound_play_once | ( | context & | ctx, |
| sound_handle | handle ) |
Phát sound mà không cắt các bản đang phát.
Gọi liên tiếp thì các bản chồng lên nhau, tối đa 8 bản cùng lúc. Quá số đó thì bản chạy lâu nhất bị cắt để lấy chỗ. Hợp với âm thanh mà nhiều thứ cùng kích hoạt, để một đám đông được nghe như một đám đông.
| ctx | Context của engine. |
| handle | Sound cần phát. |
| void njin::sound_play_once_at | ( | context & | ctx, |
| sound_handle | handle, | ||
| f32 | pitch, | ||
| f32 | gain ) |
Giống sound_play_once() nhưng chỉnh cao độ và độ lớn cho riêng bản này.
pitch 1 là như bản ghi, 2 là cao gấp đôi. gain nhân vào âm lượng của sound cho bản này. Cả hai không được lưu lại: lần phát thường sau đó trở về 1 và 1. Hợp với một âm thanh dùng cho nhiều vật có kích cỡ khác nhau: một bản ghi dùng cho tất cả, vật lớn hơn nghe to hơn và trầm hơn.
| ctx | Context của engine. |
| handle | Sound cần phát. |
| pitch | Cao độ. Giá trị rất nhỏ được nâng lên mức tối thiểu. |
| gain | Hệ số âm lượng cho bản này. Giá trị âm được coi là 0. |
| void njin::sound_play_restart | ( | context & | ctx, |
| sound_handle | handle ) |
Cắt mọi bản đang phát rồi phát lại từ đầu, nên lúc nào cũng chỉ nghe một bản.
Hợp với tiếng nhấp giao diện hoặc tiếng cảnh báo: bấm dồn thì nghe rõ từng lần thay vì chồng thành một đống.
| ctx | Context của engine. |
| handle | Sound cần phát. |
| void njin::sound_play_loop | ( | context & | ctx, |
| sound_handle | handle ) |
Đánh dấu sound là lặp lại và phát nếu nó chưa phát.
Module âm thanh của engine phát lại sound mỗi khi thấy nó vừa kết thúc, nên đây là lời gọi duy nhất cần để giữ nó chạy. Vì được phát lại sau khi kết thúc, chỗ nối có một quãng lặng cỡ một frame. Với nhạc nền dài, dùng music_load() để không có quãng lặng. Gọi sound_stop() để dừng.
| ctx | Context của engine. |
| handle | Sound cần phát lặp. |
| void njin::sound_play_at | ( | context & | ctx, |
| sound_handle | handle, | ||
| vec2 | world_pos ) |
Phát sound như sound_play_once(), kèm vị trí trong thế giới.
Âm lượng giảm dần theo khoảng cách tới điểm camera đang nhìn, và âm thanh lệch sang loa trái hoặc phải theo vị trí trên màn hình. Xem audio_set_range().
| ctx | Context của engine. |
| handle | Sound cần phát. |
| world_pos | Nơi phát ra tiếng, trong thế giới. |
Khoảng cách nghe được của sound_play_at().
Gần hơn full_until thì nghe đủ âm lượng, xa hơn silent_from thì im lặng, ở giữa thì nhỏ dần đều. Mặc định là 200 và 1200 đơn vị thế giới.
| ctx | Context của engine. |
| full_until | Khoảng cách bắt đầu nhỏ dần. |
| silent_from | Khoảng cách im lặng hẳn. Nhỏ hơn full_until thì được nâng bằng full_until. |
| void njin::sound_stop | ( | context & | ctx, |
| sound_handle | handle ) |
Dừng mọi bản đang phát của sound và bỏ chế độ lặp.
| ctx | Context của engine. |
| handle | Sound cần dừng. |