AIMP Forum
AIMP for PC => Дополнения / Addons => Разработка / Development => Topic started by: zldo on July 12, 2008, 20:51:15
-
Возник еще вопрс по поводу все той же совместимости - думаю не последний, поэтому создаю отдельную тему.
Пару раз сталкивался с такой проблемой при попытке воспроизведения "битого" файла наступает висяк - AIMP выдает окошко (точно не помню) "error code 14, unsupported file format" - проигрувание прерывается и пока не нажмешь ok, ни одна вункция не доступна. Может стоит отлавливать это исключение и допустим переводить воспроизведение на следующий файл а "битый" помечать в списке воспроизведения?
И еще один вопрос, в MuzCat есть возможность редактировать треки, добавлять изображения к файлам - возможно ли добавить возможность оповещать AIMP о таких изменениях?
Ну и собственного говоря жду новый SDK с расширенным функционалом касающемся списков воспроизведения и управления ими.
-
Что такое MuzCat? Что то я не нашёл информации по нему.
-
Я отпишусь по вопросу сегодня вечером
-
MuzCat
Это каталогизатор аудио файлов с встроенным редактором тега.
Основные возможности программы:
- Создание базы данных файлов расположенных на жестких дисках и CD-ROM.
- Поддержка распространенных форматов аудиофайлов с возможностью расширения этого списка при помощи плагинов.
- Высокая скорость работы с большими коллекциями – 15 000 – 20 000 файлов.
- Удобное представление данных в виде дерева. Пользователь имеет возможность создавать свои структуры дерева с произвольным следованием уровней – например «Комментарий Год Исполнитель».
- Управление M3U списками воспроизведения – вы получаете возможность очень просто добавлять и удалять композиции из списков воспроизведения.
- Широкие возможности поиска файлов по различным параметрам – полям тега, имени файла, параметрам файла (размер, скорость потока). Поиск одинаковых композиций.
- Мощный встроенный редактор тегов. Редактор позволяет редактировать файлы как по отдельности так и группами. Во время редактирования доступы функции поиска и замены, формирования полей тега из имени файла, переименования файлов в соответствии с содержимым тега по заданному шаблону, функции вставки и удаления, различные виды форматирования текста, транслитерация. В редакторе очень удобно работать с клавиатуры.
- Управление файлами – копирование, перемещение, переименование с использованием шаблонов и удаление.
- Уникальные функции по автоматическому размещению файлов. Вы можете воспроизвести любую структуру дерева в виде расположения каталогов на диске или воспользуйтесь функцией подготовки к записи на диск, в которой используется алгоритм идеально подходящий для небольшого числа файлов (100 - 200).
- Возможность создания подробных отчетов в формате HTML о внесенных в базу данных файлов.
- Формат файла базы данных позволяет записывать ее на CD c сохранением работоспособности (для дисков с аудиофайлами).
- Тесная интеграция с самым распространенным мультимедийным проигрывателем Winamp. В отличии от аналогов MuzCat полностью управляет списком воспроизведения Winamp, поэтому вам не придется больше слушать композиции по одной.
- Обширнейшие возможности настройки программы.
- Ведение статистики воспроизведений файлов.
- Множество мелочей которые делают работу с программой простой и удобной.
-
Хорошая прога, к тому же бесплатная да ещё и open source. Странно, никогда даже не слышал о ней.
Вот её сайт: http://zldo.narod.ru/muzcat.html
Автор: Александр Руденко а.к.а zldo
Форум: http://muzcat.topbb.ru/
ЗЫ создал тему по плагину для работы с MuzCat
https://www.aimp.ru/forum/index.php?topic=6988.0
-
Пару раз сталкивался с такой проблемой при попытке воспроизведения "битого" файла наступает висяк - AIMP выдает окошко (точно не помню) "error code 14, unsupported file format" - проигрувание прерывается и пока не нажмешь ok,
Поправил, теперь это сообщение будет появляться, если пользователь сам лично кликнул по файлу в плейлисте два раза.
И еще один вопрос, в MuzCat есть возможность редактировать треки, добавлять изображения к файлам - возможно ли добавить возможность оповещать AIMP о таких изменениях?
Необходима возможность обновлять данные для конкретного файла? (Не вопрос, добавлю, если нужна) В данный момент вы можете вызвать лишь рескан всего плейлиста.
-
Необходима возможность обновлять данные для конкретного файла? (Не вопрос, добавлю, если нужна) В данный момент вы можете вызвать лишь рескан всего плейлиста.
Смысл в том, что бы поддерживать корректность отображаемой в списке воспроизведения информации - т.е. менять данные после редактирования их моей программе. Наиболее просто это реализуется заменой всего списка воспроизведения, но для некоторых процедур это слишком накладно (например присвоение файлу рейтинга). Поэтому желательно бы иметь эту возможность для отдельного файла.
-
Понял, добавлю в SDK.
-
Напишу здесь...
zldo
Надо бы реализовать в музкате автоматический запуск AIMP при начале воспроизведения и что это за окно muzcat_to_aimp_helper у плагина (для чего оно)?
-
Напишу здесь...
zldo
Надо бы реализовать в музкате автоматический запуск AIMP при начале воспроизведения и что это за окно muzcat_to_aimp_helper у плагина (для чего оно)?
Автозапуск конечно же будет реализован, жду обновленный SDK - как только он появиться будет и новая версия плагина с MuzCat. muzcat_to_aimp_helper - окно на которое MuzCat отсылает различные сообщения для взаимодействия с плагином, а тот уже в свою очередь взаимодействует с AIMP - в теории оно должно было быть невидимым, просто существующий на данный момент плагин не подразумевал "непосредственного" использования, поэтому окошко осталось видимым (из-за лени моей).
-
https://www.aimp.ru/forum/index.php?topic=420.msg32513#msg32513
-
Возможно старею и тупею, но так и не смог сделать простейших вещей:
1. Найти список воспризведения по его имени;
2. Установить пометку воспроизведения в произвольном списке воспризведения ВНЕ ЗАВИСИМОСТИ от состояния воспроизведения.
3. Запустить воспроизведение файла имеющего пометку ВОСПРОИЗВОДИМЫЙ в произвольном списке воспризведения.
ЗЫ
Считывание тегов все так же идет после добавления файлов в список воспроизведения - что собственно сводит на нет все преимущества использования плагина :(
Окно с ошибкой о недоступном файле все так же вылетает :(
Интереса у народа я гляжу нет, так что думаю не стоит дальше заморачиваться этой темой.
-
Интерес у народа есть, не опускай руки =)
Программа очень интересная и полезная. Но насколько я вижу она сильно заточена под винамп, последний раз когда я с ней разбирался, я наблюдал сильную интеграцию с плейлистом последнего. На данный момент функциональность программы кончено поражает, но один баг сводит практически всё удобство использования программы на нет. Баг этот проявляет себя следующим образом - когда в программе из любого списка хочешь запустить трек, проигрывается первый существующий трек в плейлисте аимпа, а не выбранный. Полагаю что это как раз из-за вышеописанного свойства проги.
Вообщем буду следить за релизом.
-
Holo, особой заточки под Winamp нет, в самой программе все обращения к проигрывателю идут через абстрактный класс, а реализация для Winamp лишь частный случай, а добавить поддержку проигрывателя который реализует небольшой набор функций не проблема. С AIMP MuzCat не работает без всяких "костылей" в виде плагина по 2 причинам - AIMP не реализует обработку сообщения WM_COPYDATA (что в принципе не большая проблема, но неприятная) и некоторых особенностей реализации управления списком воспроизведения. Плагин я вообще задумывал в основном ради увеличения быстродействия и более тесной интеграции с проигрывателем а тот факт что даже после передачи в AIMP полных данных о файле он их игнорирует сводит на нет все преимущества его использования (с учетом затрат памяти он даже вредным становится).
-
Прозьба к Артему добавить функции:
IAIMP2PlaylistManager = interface
...
function AIMP_PLS_ID_PlayingSetTrackIndex(ID: HPLS; AEntryIndex: Integer): Boolean; stdcall;
{ Как я понял этот функционал реализован через сообщения совместимые с Winamp но работает оно только для активного списка воспроизведения - и результат почему-то зависит от состояния проигрывания и от того воспроизводился ли список ранее: нужна гарантированная работа при любом раскладе. }
function AIMP_PLS_ID_PlayingRePlay(): Boolean; stdcall;
{ Перезапустить воспроизведение / запустить воспроизведение отмеченного как воспроизводимый файла - аналог двойного клика на элементе списка воспроизведения. ЗЫ. сообщение SendMessage(WinampHandle, WM_COMMAND, WINAMP_BUTTON2, 0) действует именно так, но это уже совсем другая история }
function AIMP_PLS_Find(APLSName: PWideChar): HPLS; stdcall;
{ Поиск списка воспроизведения по его имени. Желательно, но не обязательно }
Может все-таки стоит учитывать данные передаваемые при добавлении файлов в список воспроизведения (AIMPClassic.AIMP_PLS_AddFiles)? Просто при активной работе со списком состоящим из 15-20 тысяч файлов тормоза просто жуткие (для людей с одноядерным процессором это наверное вообще жуть)
-
AIMP_PLS_Find - не нужен, в принципе-то, легко можно обойтись связкой AIMP_PLS_Count + AIMP_PLS_Info.
AIMP_PLS_ID_PlayingRePlay - можно обойтись связкой AIMP_PLS_ID_ActiveSet + AIMP_PLS_PlayFile
AFailIfNotExists - в последней, если флаг стоит в False и файла такого в активном плейлисте нет - файл будет добавлен и начнется проигрывание.
AIMP_PLS_ID_PlayingSetTrackIndex - можно тоже обойтись, но слишком коряво получится =), поэтому такую добавлю.
update:
Может все-таки стоит учитывать данные передаваемые при добавлении файлов в список воспроизведения (AIMPClassic.AIMP_PLS_AddFiles)? Просто при активной работе со списком состоящим из 15-20 тысяч файлов тормоза просто жуткие (для людей с одноядерным процессором это наверное вообще жуть)
Да, поправлю
-
Еще, такой вопрос - как добавить в список воспроизведения "псевдокомпозицию" из cue списка.
-
AIMP_PLS_Find - не нужен, в принципе-то, легко можно обойтись связкой AIMP_PLS_Count + AIMP_PLS_Info.
Согласен, тогда еще один вопрос. Как долго живет PLS_ID: HPLS, есть ли гарантия того, что это значение не поменяется во время жизни списка (допустим при изменении положения закладки списка воспроизведения)
AIMP_PLS_ID_PlayingRePlay - можно обойтись связкой AIMP_PLS_ID_ActiveSet + AIMP_PLS_PlayFile
AFailIfNotExists - в последней, если флаг стоит в False и файла такого в активном плейлисте нет - файл будет добавлен и начнется проигрывание.
Согласен, так и пробовал делать, однако работоспособность этой связки зависит слишком от многого, например запускалось ли воспроизведение списка до этого, всех ньюансов не скажу, но работать оно довольно часто отказывается.
AIMP_PLS_ID_PlayingSetTrackIndex - можно тоже обойтись, но слишком коряво получится =), поэтому такую добавлю.
Жду.
-
Согласен, тогда еще один вопрос. Как долго живет PLS_ID: HPLS, есть ли гарантия того, что это значение не поменяется во время жизни списка (допустим при изменении положения закладки списка воспроизведения)
Столько же, сколько живет сам плейлист.
Согласен, так и пробовал делать, однако работоспособность этой связки зависит слишком от многого, например запускалось ли воспроизведение списка до этого, всех ньюансов не скажу, но работать
можно тогда попробовать через IAIMP2Player
function PlayTrack(ID: HPLS; ATrackIndex: Integer): Boolean; stdcall;
-
Столько же, сколько живет сам плейлист.
можно тогда попробовать через IAIMP2Player
function PlayTrack(ID: HPLS; ATrackIndex: Integer): Boolean; stdcall;
Согласен, проблемы непосредственного воспроизведения какого-либо файла в списке воспроизведения нет, веселье начинается когда я пытаюсь "подменить" список воспроизведения. Выполняются следующие действия:
1. Очистка списка воспроизведения. - Проблем нет.
2. Заполнение списка воспроизведения. - Тут тоже никаких проблем.
3. Установка индекса воспроизводимого файла.
(Напишу зачем это нужно - допустим польхователь отсортировал список в моей прграмме, следовательно необходимо привести состояние списка проигрывателя в то же состояние, а индекс того файла который проигрывается естественно поменялся). Если ТОТ СПИСОК с которым я работал до описаных выше действий ВОСПРОИЗВОДИЛСЯ, то все OK если же до этого воспризводился другой список, то тут начинаются всякие чудеса.
Еще один момент - в моей программе не хранится индекс воспризводимого файла, а при двойном клике выполняется нечно похожее на
Play(List, Idx), что в конечном итоге сводится к трем пунктам что я описал, так как 3 пункт не всегда работает верно, то и получается что этот самый Idx теряется :(
Одним словом все упирается в УСТАНОВКУ ИНДЕКСА ВОСПРОИЗВОДИМОГО ФАЙЛА В ПРОИЗВОЛЬНОМ СПИСКЕ ВОСПРОИЗВЕДЕНИЯ вне зависимости от его состояния, и состояния проигрывания. На данный момент это например нельзя сделать для списка который ни разу не воспроизводился.
-
Возникли еще непонятки:
AIMP_INFO_UPDATE = 5; // Update Info for current track
судя по коментарию - обработчик этого события завязан на "current track" (Воспроизводимый? Выделенный в активном списке воспроизведения?)
Как я могу отследить изменение данных в целом? Допустим пользователь присвоил рейтинг в AIMP, думаю правильное решение обновлять его и в моей прграмме....
Отдельная история с редактированием тегов...
Хотелось бы добавить в список CallBack types
AIMP_FILE_RATING_CHANGED = 15;
AIMP_FILE_TAG_CHANGED = 16;
// for File Info CallBack Types (AIMP_FILE_xxxxx_CHANGED)
TAIMPFileInfoChanged = procedure (User: DWORD; CallBackType: DWORD; FileName: PWideChar); stdcall;
Обратное действие (из моей проги в AIMP) как я понял можно выполнить при помощи
function AIMP_PLS_Entry_InfoSet(ID: HPLS; AEntryIndex: Integer; PFileInfo: PAIMP2FileInfo): Boolean; stdcall;
И еще один вопрос, не столь важный.
PMenuInfo = ^TMenuInfo;
TMenuInfo = record
....
Bitmap: HBITMAP; // поддерживаются ли изображения с альфа каналом (в стандартных иконках не замечал :()?
....
end;
-
Опробовал обновленный SDK. Есть пара замечаний по поводу реализации эмуляции API Winamp
1. По WM_COPYDATA добавление файлов происходит, вот только нет отличия добавляется ли список воспроизведения или аудиофайл, AIMP всегда воспринимает добавляемый файл как аудиофайл, хотелось бы чтобы проводился анализ типа файла и если добавляется список воспроизведения добавлялись бы файлы из него.
2. Не совсем корректно работает функция SendMessage(WinampHandle, WM_COMMAND, WINAMP_BUTTON2, 0) - она должна быть аналогом нажатия на кнопку "Воспроизвести"
Еще появились странные грабли в процедуре procedure Init(AIMP: IAIMP2Controller); stdcall;
Совершенно безобидный код в ней выполняется некорректно (в предыдущих версиях все было нормально).
Код следующий:
wc.cbSize := SizeOf(wc);
wc.style := cs_hredraw or cs_vredraw;
wc.lpfnWndProc := @WindowProc;
wc.cbClsExtra := 0;
wc.cbWndExtra := 0;
wc.hInstance := HInstance;
wc.hIcon := LoadIcon(0,idi_application);
wc.hCursor := LoadCursor(0, IDC_ARROW);
wc.hbrBackground := 0;
wc.lpszMenuName := nil;
wc.cbSize:=sizeof(wc);
wc.lpszClassName := AimpToMCHelperWNDClassName;
if RegisterClassEx(wc) = 0 then MessageBox(0, PCHAR(SysErrorToStr(GetLastError)), '', 0);
Не происходит регистрации класса окна, GetLastError возвращает "Параметр задан неверно".
При переносе этого кода в секцию инициализации модуля все работает превосходно.
И еще пара замечаний.
Возможно я спешу немного, но функция AIMP2PlaylistManager.AIMP_PLS_ID_PlayingSetTrackIndex(mcpls, Wparam) не работает, т.е. как я понял поисходит установка значения какойто переменной, значение которой возвращается AIMP_PLS_ID_PlayingGetTrackIndex, но это никак не отражается на списке воспроизведения :(, причем AIMP2Player.PlayTrack(mcpls, Wparam) действует аналогично приведенной мной выше функции - воспроизведение не начинается а тот самый внутренний указатель изменяеся на значение Wparam...
-
1) Поправил
2) При нажатии у MuzCat на кнопку Play мне приходит нотификация:
WACM_PAUSE_RESUME = 40046; (#define WINAMP_BUTTON3 40046)
Поэтому и неправильно отрабатывается.
Еще заметил следующие косяки:
+ Duration передается в милисекундах - вы передаете в секундах.
+ AIMP_PLS_ID_PlayingSetTrackIndex - вы передаете в качестве параметра номер плейлист, а нужно его идентификатор, "быстрый" доступ к текущему плейлисту можно осуществить задав ID = -1
-
Столкнулся с одной неприятной особенностью, при добавлении треков из cue в виде строки cue:filename.cue:cueindex при cueindex выходящем за допустимые рамки при попытке запуска такого файла AIMP перестает отвечать на сообщения - имеем висяк вызывавшего приложения :(
-
Пофикшу
-
Что за дескриптор окна (и дискриптор окно это вообще?) передается в качестве параметра функции procedure Config(HD: Cardinal; const Win: Cardinal); stdcall;
очень бы хотелось видеть в этом win дескриптор окна от которого пришел вызов (для корректного отображения диалогов), а то использование GetForegroundWindow тут никак не верно :(
AIMP_Menu_Remove(AMenu) не работает.
-
AIMPClassic.AIMP_GetCurrentTrack(@APls) - возвращает мусор: после необходимой строки в буфере, нет даже завершающих нулей :(
-
Поправлю.
А пока можно просто очистить буфер, перед тем, как его туда пихать
-
Собственно так и делаю... просто по затратам ресурсов это не очень хорошо :(
А что по поводу AIMP_Menu_Remove(AMenu) - очень нужная функция и не только для меня.
-
Уже поправил
-
Порадовало что ошибки о кторых я писал в новой версии (2.60 b1 462) исправлены, однако есть одно но - скорость передачи списка воспроизведения из MuzCat в AIMP резко упала :(
Как я понял были сделаны изменения в алгоритм распредения памяти (AIMP перестал отъедать оперативку сотнями при работе с большими списками). Может стоит это оптимизировать?
..............
Заметил одну неприятную особенность - разложение треков с cue на составляющие происходит и при AIMPClassic.AIMP_PLS_AddFiles(mcpls, IPLSStrings(Wparam)); это естественно приводит к изменению числа элементов плейлиста и некорректной работе MuzCat с AIMP т.к. все взаимодействие завязано на индексах. Это возможно поправить? Или добавить еще одну функцию где предварительная обработка списка будет отключена.
З.Ы. При открытии m3u происходит тоже самое, что я думаю не совсем верно - получается что файл с cue невозможно прослушать в AIMP как таковой - он при любых обстоятельствах рассыпается на кучу виртуальных :(.
-
Понекропостю :)
Получение индекса воспроизводимого элемента в списке воспроизведения как я пониамю можно узнать:
AIMtoMCPlugin.PlaylistManager.EntryPropertyGetValue(AIMtoMCPlugin.PlaylistManager.StorageActiveGet, AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX, @x, SizeOf(x));
x после вызова не меняется.
Разобрался - запутался в методах...
Хотелось бы еще это значение изменять...
AIMtoMCPlugin.PlaylistManager.StorageBeginUpdate(AIMtoMCPlugin.mcpls);
AIMtoMCPlugin.PlaylistManager.StorageAddEntries(AIMtoMCPlugin.mcpls, TAIMPAddonsPlaylistStrings(wparam));
AIMtoMCPlugin.PlaylistManager.StorageEndUpdate(AIMtoMCPlugin.mcpls);
Скорость на больших списках низкая :(
-
Чего не хватает:
1. PlaylistManager.StoragePropertySetValue(mcpls, AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX, @Idx, SizeOf(Idx));
Установка индекса воспроизводимого файла - об этом уже писал ранее.
(Напишу зачем это нужно - допустим польхователь отсортировал список в моей прграмме, следовательно необходимо привести состояние списка проигрывателя в то же состояние, а индекс того файла который проигрывается естественно поменялся). Если ТОТ СПИСОК с которым я работал до описаных выше действий ВОСПРОИЗВОДИЛСЯ, то все OK если же до этого воспризводился другой список, то тут начинаются всякие чудеса.
Еще один момент - в моей программе не хранится индекс воспризводимого файла, а при двойном клике выполняется нечно похожее на
Play(List, Idx), что в конечном итоге сводится к трем пунктам что я описал, так как 3 пункт не всегда работает верно, то и получается что этот самый Idx теряется
Одним словом все упирается в УСТАНОВКУ ИНДЕКСА ВОСПРОИЗВОДИМОГО ФАЙЛА В ПРОИЗВОЛЬНОМ СПИСКЕ ВОСПРОИЗВЕДЕНИЯ вне зависимости от его состояния, и состояния проигрывания. На данный момент это например нельзя сделать для списка который ни разу не воспроизводился.
2. Добавление элементов из cue списков перестало работать - раньше добавлялос в виде: cue:filename.cue:cueindex. Поменялся формат?
3. PlaylistManager.StorageAddEntries(AIMtoMCPlugin.mcpls, AIMPAddonsPlaylistStrings) - выполнение занимает значительное время хотя все данные передаются в готовом виде. Как я понял происходят какие-то обработки (разбиение cue) в итоге число записей в плейлисте может не совпасть с числом переданным в AIMPAddonsPlaylistStrings. Получаем отличия в списках и как результат некорректную работу MuzCat со списком в целом :(
-
1) Я уже вроде тоже говорил, что нужно использовать TrackIndex для управления очередью воспроизведения, т.к. PlayingIndex - это всего лишь визуальная часть. К примеру, если проигрываемый файл будет удален, то PlayingIndex станет = -1, а вот TrackIndex будет показывать на предыдущий файл.
2) Формат просто Filename.cue:trackindex
3) Тут как бы две стороны медали, если плеер не будет действовать в разрез с настройками - будет тоже не очень правильно.
-
PlayingIndex - это всего лишь визуальная часть. К примеру, если проигрываемый файл будет удален, то PlayingIndex станет = -1, а вот TrackIndex будет показывать на предыдущий файл.
Мне визуальная часть как раз и нужна, просто в sdk AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX помечен как readonly
AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX = 54; // READONLY! ABuffer: Pointer to Integer, ABufferSize: SizeOf(Integer)2) Формат просто Filename.cue:trackindex
Ok, понятно
3) Тут как бы две стороны медали, если плеер не будет действовать в разрез с настройками - будет тоже не очень правильно.
Хм... этот вопрос уже поднимался раньше
я думаю не совсем верно - получается что файл с cue невозможно прослушать в AIMP как таковой - он при любых обстоятельствах рассыпается на кучу виртуальных .
-
Мне визуальная часть как раз и нужна, просто в sdk AIMP_PLAYLIST_STORAGE_PROPERTY_PLAYINGINDEX помечен как readonly
Ок, сделаю.
я думаю не совсем верно - получается что файл с cue невозможно прослушать в AIMP как таковой - он при любых обстоятельствах рассыпается на кучу виртуальных .
Да, именно так, если стоит опция "разделять файлы на кучу виртуальных".
-
А в StorageAddEntries(AIMtoMCPlugin.mcpls, AIMPAddonsPlaylistStrings) можно будет параметр третий добавить "разделять файлы на кучу виртуальных"?
-
А в StorageAddEntries(AIMtoMCPlugin.mcpls, AIMPAddonsPlaylistStrings) можно будет параметр третий добавить "разделять файлы на кучу виртуальных"?
Для будущего API подумаю.
-
Нашел еще один момент - при добавлении файлов в список игнорируются файлы с неподдерживаемыми/пустыми расширениями что также ведет к рассогласованию индексов.
-
Нашел еще один момент - при добавлении файлов в список игнорируются файлы с неподдерживаемыми/пустыми расширениями что также ведет к рассогласованию индексов.
Естественно. Расширения не просто так придумали. Зачем сканировать все файлы, когда можно отфильтровать по расширению
-
Согласен, правда не всегда это оправдано - у себя отключил случайно плагин с поддержкой flac, а потом долго понять не мог почему эти файлы не добавляются в плейлист :).
Собственно сообщение все о том же - добавить в API функию добавления файлов в плейлист без предварительной обработки "как есть".
Чуть не забыл, для файлов плейлистов такую опцию думаю нужно в настройки вынестисти иначе можно "случайно" файлы из списка потерять...
-
Плейлисты импортируются другим образом, с ними проблем быть не должно
-
Все же тема звучит как "Вопросы по SDK", а не "Просьба о новой функции", так что актуален пока единственный вопрос - будет ли новая SDK?
Новая SDK уже выпущена:
https://www.aimp.ru/index.php?do=download&cat=sdk