2010-07-24 51 views
7

các cách khác nhau để thay đổi tốc độ playback âm thanh trên iPhone, là gì khi sử dụng đơn vị âm thanh? Ưu điểm/nhược điểm của từng giải pháp là gì?iPhone: Thay đổi tốc độ phát lại với đơn vị âm thanh

Tôi có bộ phận trộn và thiết bị IO. Tôi có cần phải thêm một thiết bị khác (ví dụ: bộ chuyển đổi) không? Tôi nên đặt thông số đơn vị âm thanh nào, trên đó (đầu vào hoặc đầu ra) bus nào trên (các) đơn vị âm thanh nào?

thiết lập hiện tại của tôi:

 -------------------------    ------------------------- 
     |  mixer unit  | -----------> |  IO unit  | 
     -------------------------    ------------------------- 

Trả lời

8

Tất cả các giải pháp dưới đây sẽ thay đổi các sân của âm thanh của bạn (cùng với tốc độ phát lại). Để chỉnh sửa âm thanh âm thanh sau khi tốc độ phát lại đã thay đổi, bạn cần phải sử dụng thư viện âm thanh bên thứ 3 (chẳng hạn như SoundTouch, có giấy phép LGPL, để bạn có thể sử dụng nó trong ứng dụng của mình làm cho mã nguồn mở hoặc DiracLE hoặc miễn phí smbPitchShift). Có một đơn vị âm thanh (AUPitch), có thể thay đổi độ cao của âm thanh của bạn, nhưng đó là không khả dụng cho iPhone; chỉ dành cho Mac.

Tất cả các giải pháp dưới đây được thử nghiệm, và làm việc ...

Giải pháp # 1[giải pháp tốt nhất]

3D Mixer Đơn vị: Thay vì một Multichannel Bộ trộn sử dụng bộ trộn 3D và đặt k3DMixerParam_PlaybackRate trên phạm vi đầu vào.

Ưu điểm: k3DMixerParam_PlaybackBạn có thể đặt thời gian thực trong khi đang phát âm thanh mà không có bất kỳ âm thanh nào hoặc các tác dụng phụ khác. Nó cũng dễ dàng để thực hiện một khi bạn có đơn vị âm thanh đi.

Nhược điểm: Ảnh hưởng đến âm thanh của bạn, nhưng sự khác biệt về độ cao không thực sự đáng chú ý nếu bạn chỉ cần thay đổi tốc độ phát lại bằng +/- 8%.

Giải pháp # 2

Thay đổi tỷ lệ mẫu: Thay đổi tỷ lệ mẫu trên xe buýt đầu ra của đơn vị trộn. Thay đổi tốc độ mẫu hoạt động rất giống với việc thêm và xóa mẫu.

Ưu điểm: Hoạt động tốt nếu bạn muốn nhân tốc độ phát lại với một phần nhỏ của một số nguyên (ví dụ 1.2x).

Nhược điểm: Thay đổi tốc độ lấy mẫu của đầu ra bộ trộn không thể được đặt khi đang di chuyển; chỉ khi khởi tạo bộ trộn. Ảnh hưởng đến độ cao của âm thanh của bạn, nhưng sự khác biệt về độ cao không thực sự đáng chú ý nếu bạn chỉ cần thay đổi tốc độ phát lại bằng +/- 8%.

audioDescriptionMixerOutput.mSampleRate = 1.2*kGraphSampleRate; 

Giải pháp # 3

Add/Remove mẫu: Chỉ vượt qua mỗi giây, thứ ba, ... mẫu âm thanh với đầu vào của đơn vị âm thanh của bạn (đơn vị trộn trong trường hợp của tôi) trong hàm gọi lại trả về của bạn.

Ưu điểm: Hoạt động tốt nếu bạn muốn tăng tốc hoặc làm chậm phát lại âm thanh của mình lên 2x, 3x, 4x, v.v. Nó cũng dễ thực hiện.

Nhược điểm: Bạn chỉ có thể nhân tốc độ phát lại với hệ số nguyên. Tăng tốc độ phát lại âm thanh lên 1,2x chẳng hạn bằng cách thêm hoặc xóa mẫu. Ảnh hưởng đến độ cao của âm thanh của bạn.

+0

Tôi có thể lấy mã ví dụ về điều này không? – Tornado

Các vấn đề liên quan