XMIDI — это движок для воспроизведения MIDI-файлов на iOS, основанный на библиотеках Audio Toolbox Framework и OpenAL.
В XMIDI используется API Audio Toolbox Framework для чтения и анализа MIDI-файлов, а затем OpenAL для воспроизведения соответствующих нот.
При воспроизведении звука с помощью OpenAL применяются настройки громкости, пространственного звучания и затухания, чтобы имитировать эффект игры на настоящем фортепиано.
Этот движок написан на OC, и в качестве примера проекта используется язык Swift.
Если у вас есть вопросы по использованию, вы можете связаться со мной.
Электронная почта: watarux@qq.com QQ: 56809958 Группа общения: 334533178
Демонстрационное видео со звуковыми эффектами можно найти здесь
- Обновление до версии 1.2.
- Добавлен контроль воспроизведения.
- Добавлена функция XMidiPlayer, что делает воспроизведение MIDI-файлов более удобным.
- Первоначальная версия выпущена.
// Инициализация, аудиофайл будет загружен в память, и если ресурсы будут освобождены после этого, то при следующем воспроизведении потребуется повторная инициализация.
XMidiPlayer.xInit()
// Освобождение ресурсов, не обязательно освобождать ресурсы каждый раз после завершения воспроизведения, это можно делать только тогда, когда это необходимо.
XMidiPlayer.xDispose()
// Чтение файла
var filePath = NSBundle.mainBundle().pathForResource("midiFileName", ofType: "mid")
// Воспроизведение MIDI по URL
var url = NSURL(fileURLWithPath: filePath!)
var midiPlayer:XMidiPlayer = XMidiPlayer()
midiPlayer.initMidi(url!)
midiPlayer.play()
// Воспроизведение MIDI на основе данных
var data = NSFileManager.defaultManager().contentsAtPath(filePath!)
var midiPlayer:XMidiPlayer = XMidiPlayer()
midiPlayer.initMidiWithData(data)
midiPlayer.play()
// Общее время воспроизведения MIDI (в секундах)
@property (nonatomic,readonly) double totalTime;
// Текущее время воспроизведения MIDI (в секундах)
@property (nonatomic) double time;
// Инициализировать MIDI URL
-(void)initMidi:(NSURL*)midiUrl;
// Инициализировать данные MIDI
-(void)initMidiWithData:(NSData*)data;
// Пауза
-(void)pause;
// Играть, продолжить играть
-(void)play;
// Переиграть
-(void)replay;
// Получить текущий прогресс воспроизведения, возвращает десятичную дробь от 0 до 1, представляющую процент прогресса
-(double)getProgress;
// Установить текущий прогресс воспроизведения progress - это десятичная дробь от 0 до 1, представляющая процент прогресса
-(void)setProgress:(double)progress;
// Закрыть проигрыватель
-(void)closePlayer;
// Изменение прогресса воспроизведения progress - десятичная дробь от 0 до 1, представляет процент прогресса
+ (void)progressChanged:(double)progress;
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )