2010-04-16 19 views
6

Mam kilka plików WAV i prawdopodobnie plik MP3, który chciałbym miksować do pojedynczego pliku WAV lub MP3. Używam C/C++/Obj-C (iPhone). Naprawdę nie mam żadnego doświadczenia z tego typu rzeczami. Gdyby ktoś mógł mi dać jakieś wskazówki, byłbym bardzo wdzięczny.Mieszanie plików dźwiękowych na iPhonie

W zasadzie to, co chcę zrobić, to podobne rzeczy, jak na przykład Audacity, ale programowo. Czy nie ma biblioteki dźwięków, w której można łatwo otwierać pliki audio i "wklejać" je do nowego na określonych pozycjach? Gdzie mieszanie jest czymś, o co nie musisz się martwić?

Dzięki.

+0

Czy możesz wyjaśnić, czy chcesz odtwarzać pliki jednocześnie, czy miksować je, a następnie zapisać wynik do pliku? Jeśli to drugie, czy istnieje powód, dla którego nie można ich wstępnie przetworzyć, aby utworzyć pojedynczy plik z góry? W przypadku pierwszego z nich prawdopodobnie będziesz chciał przeczytać na temat Audio Queue Services lub OpenAL, z których oba są dość głębokimi tematami. – warrenm

+0

Edytowane pytanie, aby było bardziej zrozumiałe. Tak, dźwięki mogą być jednoczesne. – quano

+0

@ Quano hv znajdujesz rozwiązanie dla tego ??? – Aadil

Odpowiedz

0

Przeczytaj Multimedia support jako punkt wyjścia zawiera wiele informacji. Oto fragment:

Istnieją 3 sposoby, aby mieszać audio na iPhone: ram

  • RADIOODTWARZACZA
    • Multichannel Mixer - "pozwala mieszać wielu strumieni audio do pojedynczego strumienia"
    • jednostka 3D Mixer - "pozwala miksować strumieni audio, określ wyjście stereo panoramowanie, manipulować częstotliwość próbkowania"
  • OpenAL używany w rozwoju gier

Sprawdź także następujące próbki z: iPhoneMultichannelMixerTest:

dwa wejścia autobusy są tworzone każdy z regulacją głośności wejściowego. Zapewniona jest również całkowita regulacja głośności wyjściowej miksera i każda magistrala może być włączona lub wyłączona.

+0

Pamiętaj, że nie chcę odtwarzać plików (na iPhonie), po prostu zrób z nimi i zapisz do nowego pliku. :) Sprawdzę linki. – quano

3

Mieszanie dwóch buforów dźwięku liniowego PCM jest tylko kwestią dodania do siebie każdej wartości próbki i oczywiście upewnij się, że przepełnienie. Zwykle używałbyś wartości zmiennoprzecinkowych w buforach, więc problem jest po powrocie do pliku. Powinieneś także mieć CoreAudio dostępne na iPhone'a, ma wszystkie możliwości otwierania/odczytu/zapisu plików dźwiękowych w różnych formatach. Wydaje mi się, że istnieje również bardziej zaawansowany api dostępny dla iPhone'a, którego nie ma na Macu, spójrz na dokumenty Apple.

+0

Tak, zrozumiałem to również. Nie jest trudne, ale wymaga trochę pracy. Doszedłem do wniosku, że ktoś musiał to zrobić wcześniej, może nawet zrobił dla niego prostą bibliotekę. To zaoszczędziłoby mi trochę czasu. Czytanie plików, dodawanie wartości i pisanie nie jest najbardziej ekscytującym z rzeczy, które mogę wymyślić.:) To po prostu wydaje się taką banalną cechą. Byłem naprawdę zaskoczony, jak trudno jest znaleźć już istniejącą bibliotekę, która to robi. Do tej pory nie znalazłem w dokumentach niczego, co wyjaśniałoby, jak otwierać kilka plików, umieszczać je w określonych pozycjach w czasie i miksować je do jednego pliku. – quano

+0

OK, ale jest w tym wsparcie w API, musisz wypełnić struct z pewnymi właściwościami twojego formatu pliku, jeśli dobrze pamiętam, a następnie wysłać go do jakiejś funkcji biblioteki. To było jakiś czas temu, odkąd to zrobiłem, ale powiedziałbym, że konwersja formatów wielu formatów audio nie jest trywialna, to wszystko jest obsługiwane i wykonywane przez API. Rzecz w rodzaju linii czasu, którą myślę, że musisz wymyślić siebie, chyba że jest to odtwarzanie w czasie rzeczywistym, jest również wspierane przez API. Ale nie powinno to być zbyt trudne, ponieważ można go uzyskać (czas * próba próbki), aby uzyskać indeks bufora. – Fred

2

Jeśli szczególnie poszukujesz funkcji Audacity, używa on pod maską PortAudio (wygląda jak licencja MIT). Być może możesz po prostu spróbować tego użyć?

Powiązane problemy