Tôi đã đi xuống con đường này trong năm 2009, thử Bộ công cụ âm thanh, Dịch vụ âm thanh hàng đợi, mở và cuối cùng giải quyết trên AudioOit từ xa.
Hộp công cụ âm thanh là tốt cho hiệu ứng âm thanh được kích hoạt cơ bản, nhưng không thể thay đổi tần số hoặc mẫu vòng lặp.
Dịch vụ xếp hàng âm thanh có thể lặp mẫu, nhưng cách duy nhất tôi có thể tìm thấy để điều chỉnh tần suất phát lại của mẫu là đọc lại dữ liệu từ tệp - rất đau. Ngoài ra, khung công tác rất cồng kềnh - tôi chỉ sử dụng nó nếu tôi đang cố gắng phát trực tuyến nội dung nào đó trên Internet.
OpenAL là một trò chơi thần thánh - đã hoạt động với nó trong chưa đầy một giờ sau khi nhận được ứng dụng mẫu iPhone "CrashLanding" không có sẵn của Apple. Tôi thấy OpenAL là lý tưởng cho các trò chơi hoặc thậm chí một nhạc cụ - các mẫu có thể được tải sẵn, điều chỉnh tần số rất dễ dàng và việc lặp lại không thành vấn đề. Người chia bài đối với tôi là bắt đầu và dừng một mẫu lặp lặp sẽ dẫn đến "cửa sổ bật lên" khó chịu gần như mọi lúc. Ngoài ra, bộ trộn âm thanh theo vị trí 3d được xây dựng là một chút quá nhiều CPU theo ý thích của tôi.
Nếu công cụ của bạn không sử dụng mẫu lặp, tôi khuyên bạn nên thử tuyến đường OpenAL trước tiên - đường cong học tập ít đáng sợ hơn nhiều. Cố gắng theo dõi xuống "SoundEngine.h", "CrashLanding" hoặc "TouchFighter", hoặc kiểm tra các liên kết sau đây:
http://benbritten.com/blog/2008/11/06/openal-sound-on-the-iphone/
Kể từ khi mẫu lặp được một yêu cầu đối với tôi, tôi cuối cùng đã giải quyết trên AudioUnits (mà , trên iPhone, được gọi là "RemoteIO" nếu bạn muốn thực hiện đầu vào hoặc đầu ra). Nó rất khó thực hiện - rất giống với Audio Queue Services, trong đó cốt lõi của việc thực hiện của bạn sẽ nằm bên trong "buffer callback", được gọi vài lần mỗi giây để lấp đầy bộ đệm của âm thanh đi với giá trị SInt16 thô.
Cuối cùng, tôi nhận được công cụ của mình hoạt động tốt với đa âm sắc đa giác, mẫu lặp, không popping và độ trễ tối thiểu.
Thật không may, RemoteIO không được ghi lại tài liệu.Michael Tyson là một trong những người đầu tiên trong lĩnh vực này để viết về RemoteIO tại chiều dài, và bài viết của ông (và các ý kiến) rất hữu ích với tôi:
http://michael.tyson.id.au/2008/11/04/using-remoteio-audio-unit/
Chúc may mắn!
Đã chỉnh sửa năm sau: Tôi đã mở mã nguồn RemoteIO/AudioUnits mà tôi đã đề cập ở trên: https://github.com/glenn-barnett/hexaphone/blob/master/Classes/Instrument.m - xin lỗi vì sự lộn xộn, tôi hy vọng sẽ có thời gian để làm sạch mã và nhận xét.
Cảm ơn mẹo. Tôi đang thử OpenAL với mã mẫu oalTouch vào lúc này nhưng tôi không thể tìm thấy cài đặt để thay đổi độ cao hoặc tần số khi đang di chuyển. Bất kỳ mẹo nào đúng hướng đều được đánh giá cao! – Matthew
Nevermind. Tôi đã tìm ra cách điều chỉnh độ cao. Mã mẫu cho oalTouch chỉ quản lý một tệp âm thanh, vì vậy tôi đoán tôi cần xem xét soundManager sau. – Matthew
THe soundEng mã hoạt động thực sự tốt trên iPhone OS 2.21 SDK nhưng không thể biên dịch trên 3.0 của SDK. Bất kỳ ý tưởng nếu có một phiên bản mới ra khỏi đó? – Matthew