как записать несколько звуков в музыкальном приложении Android

Я разрабатываю приложение для музыкального пианино для Android, в этом приложении я хочу записывать звук, который пользователь играет, нажимая кнопки пианино. Я использую звуковой пул для воспроизведения звуков пианино. теперь для записи андроид дал нам два API MediaRecorder и AudioRecorder. но для обоих мы должны установить MediaRecorder.AudioSource. я не хотел записывать звуки с микрофона, потому что можно включить пользовательский звук и, что более важно, ухудшить качество звука при записи. затем я пытаюсь прочитать байты этого файла ресурсов, который воспроизводится при нажатии на пианино. и когда пользователь нажимает снова и снова, байты будут вместе в глобальном массиве байтов. но когда я играю глобальный массив байтов, тогда воспроизводится только один файл ресурсов и только один раз. Что еще более важно, я новичок в разработке Android. будь любезен, направь меня.


person yasiriqbal776    schedule 25.04.2014    source источник


Ответы (1)


Хотя я не нашел ответа на свой вопрос, но теперь я использую технику для записи аспектов, которыми я хочу поделиться со всеми вами. Вышеупомянутая функция, которую я пытаюсь использовать, является совершенно неправильным вариантом, когда вы пытаетесь сохранить музыку, созданную вашим приложением во время выполнения. теперь для моей первой версии я просто сохраняю нажатия кнопок пианино вместе с системным временем в массиве. теперь, когда я воспроизведу эти щелчки, он будет воспроизводить тот же звук, что и пользователь, пытающийся записать. я сохраняю эти заметки в базе данных для дальнейшего повторного использования пользователями. Хотя это не решение, потому что эти заметки будут воспроизводиться только в нашем приложении, но это хорошая функция, которую мы можем добавить в наше приложение. когда я найду правильное решение, я поделюсь с вами, ребята

person yasiriqbal776    schedule 02.05.2014
comment
Мне кажется, ваше решение похоже на сохранение идентификаторов заметок (или частот). Например, подойдет трекер (Amiga ProTracker, PC FastTracker или ModPlugTracker) или MIDI-рекордер. Возможно, вам подойдет устройство записи последовательности MIDI, поскольку MIDI является стандартом, а файлы также могут воспроизводиться программными синтезаторами. - person Phantômaxx; 11.06.2014
comment
Если я не ошибаюсь, трекер mogplug создает звуки, и мы можем записывать эти звуковые заметки и экспортировать этот звук в виде *.raw, *.wav или *.flac. Да, на самом деле я также хочу, чтобы тот же концептуальный звук, создаваемый кликами пользователя, сохранялся в файле, и я могу экспортировать этот файл как *.mp3 или *.wav, который можно использовать по умолчанию в медиаплеере устройств Android. но я не знаю, с чего начать - person yasiriqbal776; 11.06.2014
comment
Да, он хранит звуки как часть файла (названия в заголовке и содержимое байтов в нижнем колонтитуле, если я хорошо помню). Сохранить файл (mp3 или изображение или что-то еще) в текстовом файле очень просто: как это делает формат файла mht (который был моим источником вдохновения): сохраните его как строку в кодировке Base64) — я использовал эту технику в VB.NET для хранения обложки + информация об альбоме в целом. Итак, это работает. - person Phantômaxx; 11.06.2014
comment
Проблема, с которой я столкнулся, заключается в том, как записать несколько звуков, воспроизводимых одновременно, или как работает mogplug для хранения заметок. я застрял в этой точке ........ однако я пытаюсь сохранить байты звуковых файлов в одном файле, когда этот звук воспроизводится. но этот метод не работает, потому что все байты были сохранены в основных файлах записи. - person yasiriqbal776; 12.06.2014
comment
Для очень МАЛЕНЬКИХ звуков лучше всего использовать объект SoundPool, который может воспроизводить ДО 32 звуков одновременно, если я правильно помню. - person Phantômaxx; 12.06.2014
comment
да, я воспроизвожу звуки с помощью звукового пула, а также есть возможность воспроизводить фоновую музыку, которую я играю с помощью медиаплеера, теперь проблема в том, что если фоновая музыка воспроизводится, а звуковой пул также воспроизводит звук, как мне записать оба звука. - person yasiriqbal776; 12.06.2014
comment
Итак, вы хотите смешать звуки и записать их... Может эта ссылка поможет? mobilengineering.blogspot.it/2012/06/ - person Phantômaxx; 12.06.2014
comment
я прочитал ссылку, которую вы мне дали. спасибо за эту ссылку, я изучаю многие вещи по ссылке, но все же это проблема, мы должны постоянно записывать данные в файл, и их также вариант, пусть предположим, что звуковой клип длится 10 секунд, но пользователь играть 2 секунды, теперь входной поток считывает все байты из файла, которые противоречат записи, и пусть предположим, что если мы получаем время и получаем данные из этого звукового файла в соответствии со временем, не замедляет ли это наше приложение или какая-либо задержка в записи. и эта задержка отвлечь нашего пользователя. - person yasiriqbal776; 12.06.2014
comment
Давайте продолжим обсуждение в чате. - person yasiriqbal776; 12.06.2014
comment
нет, эта ссылка также не работает. Вывод: приложение помогает воспроизводить звуки вместе, и эту работу я уже проделал, но проблема в том, как записать :( - person yasiriqbal776; 12.06.2014
comment
Поможет ли это? developer.android.com/guide/topics/media/audio-capture. html - person Phantômaxx; 12.06.2014
comment
при записи через медиарекордер качество звука очень плохое, а также звук с микрофона также включается в запись, в то время как аудиорекордер имеет низкоуровневый API и записывает файл, читая буфер, и мы должны поместить байты в буфер, где из аудиорекордера читается запись.i попробовал оба метода, после чего я отправил свой вопрос, - person yasiriqbal776; 13.06.2014
comment
теперь я думаю, что мне нужно изучить синтезаторы и их работу, а затем реализовать это в андроиде - person yasiriqbal776; 13.06.2014