Описание: Плагин берет на себя функцию связующего звена между популярной высококачественной аудио библиотекой bass (http://un4seen.com/) и проекта Multimedia Builder. Данный плагин призван решить несколько проблем: качество звука (оставляло желать лучшего), своя визуализация (почастотная и поканальная), воспроизвдение множества файлов одновременно, эффекты, эквалайзер, запись звука, потоковое воспроизвдение и тд.
Основные функции: - Возможность воспроизведения нескольких файлов и управление каждым отдельно - Стандартные функции воспроизведения (плэй, стоп, пауза) - Чтение данных о музыкальном файле (тэги, битрейт, число каналов, длина трека и тд.) - Перемещение на любую позицию трека - Громкость и стерео панорама - Индикация использование процессора плагином - Эквалайзер (диапазон регулирования от 80ГЦ до 18кГц!) - Эффекты (Флэнжер, Эхо, Эффект "Церкви", Реверберация, Компрессор) - Почастотная визуализация двух видов с настройками (покачто существенно не отличается от стандартных) - Воспроизведение mp3 файлов из интернета (возможно воспроизведение Интернет-Радио, но до ума не доведено ) - Звукозапись в wave файл с любого звукозаписывающего устройства (возможность выбрать из списка системных устройств) - ...
Изменения в 1.1 betta (11.08.10): - Теперь при выключении эквалайзера все переданные до этого в него данные сохраняются и при включении не нужно снова посылать параметры, которые были до выключения. Тоже самое и со всеми эффектами. - Появилась такая "фишка", как плавный старт воспроизведения, плавная пауза и остановка. - Перед вызовом каждой функции не нужно отсылать номер канала, его достаточно задать один раз с помощью функции Bass_ChannelNum, по умолчанию установлен канал 1. - Теперь эффектам можно передавать нецелые числа в качестве параметров (раньше были проблемы внутри плагина и поэтому можно было передавать только целые числа) - Появилась дополнительная демка, демонстрирующая звукозапись. - Скрипты в DEMO.mbd были тщательнее закомментированы.
Новая Версия всегда в первом посте!
P.S. Вложите все dll файлы в папку с программой Multimedia Builder
Вроде что-то мелькнуло на горизонте, это великий и могучий Bass Player Plugin несется к нам Мистер Grand не смог довести его до конца, а вот поднаторевший Sower наверняка сможет, однако, вот не задача, исходники были просто полностью потеряны
Так что вот с этого момента можно вести отсчёт до нового плагина (29 мая 2010 года*) Сейчас правда экзамены еще не все сданы, ну вот, когда будет время, я обязательно СДЕЛАЮ ЕГО!!! Может начну прям щас
Это было лирическое отступление , а сечас о серьезном:
1)Плагин будет переписан на VCL 2)Все не равнодушные, пишем ваши предложения: что должно быть, ваши пожелания и требования
Сообщение отредактировал Sower - Суббота, 29 Мая 2010, 18:38
О! Наконец-то конструктив пошёл! Есть потенциал для создания действительно работоспособного продукта.
Quote (Sower)
Все не равнодушные
Глядишь, так и я, вдохновленный твоими успехами, зашевелюсь и реанимирую покрывшиеся плесенью свои "bass-потуги" для NB... Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
Экзамены кончились Восстановил исходник до уровня предыдущего, правда всё естественно заново переделал (в том числе и демку). Вылаживаю. Размер плагина пока не был затронут не смотря на
Quote (Sower)
1)Плагин будет переписан на VCL
До текущего момента не возникала необходимость использовать vcl. Прошу немного погонять, чтобы убедиться в работоспособности и дальше продолжу, только мне обязательно будет нужна ваша помощь особенно в тестировании (почастотной визуализации нет, это отдельный этап, т.к. теперь она будет рисоваться самим плагином на форме ММБ, я сейчас над этим работаю)
Сообщение отредактировал Sower - Четверг, 24 Июня 2010, 19:55
пардон, bass.dll и tags.dll надо кинуть в папку с ММБ (в прикреплении)
Quote (Peter)
Тогда перспектив у плагина нет! Либо с самого начала все на VCL, либо (пардон) - в помойку!
А где его там пока использовать то? ИЗ кол только int2str не больше, а разница? Сейчас буду с визуализацией доделывать там точно всл подключу для надежности.
Добавлено (23 Июнь 2010, 17:36) --------------------------------------------- Peter, кстати, как ты думаешь, процедуру отрисовки визуализации на форме плагином позволить вызывать из ммб в таймере или организовать таймер в самом плагине?
Сообщение отредактировал Sower - Четверг, 24 Июня 2010, 19:54
пардон, bass.dll и tags.dll надо кинуть в папку с ММБ (в прикреплении)
Кидал, не помогает. С твоими библиотеками тоже не работает.
Quote (Sower)
А где его там пока использовать то?
Я не знаю, как там у тебя в плагине все организовано.
Quote (Sower)
в самом плагине?
ВСЁ нужно реализовывать в самом плагине! ММВ-шному проекту оставлять только управление. Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
Это я тоже (естсесственно) пробовал. Не работает. Используй динамическое подключение библиотек с прямым (из проекта) путем. Так у проекта будет больше "гибкости".
Добавлено (23 Июнь 2010, 18:15) --------------------------------------------- А вот с твоими версиями библиотек скомпилированный проект заработал. Правда, версии DLL-ок староваты!
Переделывай под последние!
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
Хорошо Петр, спасибо за участие, надеюсь к следующей версии демки присоединятся еще люди Постораюсь порадовать визуализацией, эффектами (флэнжер, реверб и тд.) и звукозаписью, потом планирую включить поддержку потоковго воспроизведения, а дальше добавить поддерживаемые форматы... вот такой план "боевых" действий
Добавлено (24 Июнь 2010, 18:24) --------------------------------------------- смотрите первый пост
Sower, в эквалайзере пересчитай полосы верхних частот (начиная с 6 Кгц), а то звук как из ж... получается - очень сильные искажения как на "подъеме", так и на "подавлении". И ещё - нужно "запоминание" настроек канала при смене треков.
Добавлено (25 Июнь 2010, 02:24) --------------------------------------------- Sower, сейчас копнул (правда, не очень глубоко) твою ММВ-шную дэмку... При таком "прямолинейном" подходе к библе, и таком обилии ММВ-скриптов, кто-то неминуемо сойдет с ума: либо ты сам при написании дэмки, либо ММВ-шник пользователь, в процессе её разбора!
Например, зачем каждый раз при включении эквалайзера, создавать его, инициализировать его свойства, и т.п.? Тем более, с учетом того, что нет описания смысла происходящего (справки). Это можно (И НУЖНО) сделать всего один раз при создании канала! Отсюда есть один глобальный совет... Ты спрашивал для чего нужна VCL? Пиши свой собственный класс/классы (сколько потребуется) для работы с библой и её прибамбасами. Управление, эквалайзер и проч.требуху оформляй в виде свойств и методов класса. Это позволит уменьшить количество команд плагина, и унифицировать их, отсюда - заметно упростить работу с плагином для конечного пользователя, а иначе... Иначе будет грустно...
Кстати...
Quote (Sower)
ИЗ кол только int2str не больше, а разница?
Достаточно написАть вот так:
Code
Function IntToStr(Int: integer): String; Begin Str(Int, Result); End;
И без VCL... И уж, тем более, без KOL!!!
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
Я хочу сделать возможным для ммбэшника самому задать частоты, т.е. это может быть и 20 и 50 полостный эквалайзер.
Quote (Peter)
При таком "прямолинейном" подходе к библе,
ЧТо ты имеешь ввиду, не совсем понял.
Quote (Peter)
Например, зачем каждый раз при включении эквалайзера, создавать его, инициализировать его свойства, и т.п.?
Просто отключение производится командой BASS_ChannelRemoveFX, в этом случае сбрасываются все настройки удаляемого эффекта, хотя конечно нужно сделать запоминание внутри плагина.
Quote (Peter)
Тем более, с учетом того, что нет описания смысла происходящего (справки).
Справка будет, правда вот писать её будет настоящим испытанием
Quote (Peter)
Управление, эквалайзер и проч.требуху оформляй в виде свойств и методов класса.
Учту
Quote (Peter)
Это позволит уменьшить количество команд плагина
А это то почему? Ведь кол-во команд таковым и останется
Я хочу сделать возможным для ммбэшника самому задать частоты, т.е. это может быть и 20 и 50 полостный эквалайзер.
Планы "наполеоновские" прямо! Это сделать вовсе не так просто, как кажется на первый взгляд. А для начала нужно хотя бы уже имеющийся эквалайзер рассчитать правильно!
Quote (Sower)
ЧТо ты имеешь ввиду, не совсем понял
Quote (Peter)
Пиши свой собственный класс/классы (сколько потребуется) для работы с библой и её прибамбасами.
Quote (Sower)
хотя конечно нужно сделать запоминание внутри плагина.
Не просто внутри плагина, а внутри класса (объекта). Такие вещи должны "идти" как свойства.
Quote (Sower)
писать её будет настоящим испытанием
Не отчаивайся! Поверь - это "испытание" не только для тебя, а для каждого, кто пытается писАть справку!
Quote (Sower)
Ведь кол-во команд таковым и останется
Это все зависит от того, как ты сам организуешь работу плагина.
Впрочем, ты сам себе хозяин. Получается так, что я "подтолкнул" тебя к работе над плагином, и сейчас лишь высказал некоторые соображения, но решение принимать тебе.
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
вцл не есть панацея, мало того, винда даже не подозревает о ее существовании
Quote (Peter)
Не просто внутри плагина, а внутри класса (объекта). Такие вещи должны "идти" как свойства.
Это чисто путь вцлщика, и вполне понятен для него, кроме этого существует множество иных подходов Но по любому, знать и одно и друго и третье оченна полезно .
Несоменно! Но только в дэлфях без VCL никак (имеются ввиду относительно серьезные проекты, а не мини-программулки, писанные на KOL, с парой-тройкой кнопок и таким же количеством опций)! Лучше путь тот, который знаешь! Всё, сказанное мной вовсе не догма, а лишь вариант.
Quote (Alex3A)
Но по любому, знать и одно и друго и третье оченна полезно .
Согласен! Но так можно и запутаться в конец! ;)
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
Не просто внутри плагина, а внутри класса (объекта). Такие вещи должны "идти" как свойства.
Я понял. Это действительно поможет организовать "внутренности" плагина более грамотно и удобно, а то после добавления эффектов, кода уже стало очень много и рулить им не очень удобно, а если делать плагин не на одном дыхании, то после перерыва можно многое забыть, и чтобы не тратить время, классы помогут. ИМХО
Quote (Peter)
Это все зависит от того, как ты сам организуешь работу плагина.
В принципе я хотел дать то, чего нет, причем дать возможность управлять этим так, как будто это было, слегка упростить можно, например сделать функцию, которая будет возвращать сразу все нужные данные о файле в строке (через делитель), а еще отправлять номер канала для работы с ним один раз, а не каждый раз новой функции, которая это требует.
Quote (Peter)
Впрочем, ты сам себе хозяин. Получается так, что я "подтолкнул" тебя к работе над плагином, и сейчас лишь высказал некоторые соображения, но решение принимать тебе.
Одним словом спасибо, Петр
Quote (Peter)
а не мини-программулки, писанные на KOL, с парой-тройкой кнопок и таким же количеством опций)
Ну почему, даже на чистом WinAPI пишут серьезные приложения
Кстати, надеюсь Дембель скоро вернется и продолжит делать шкурку для MMBass Audio Player если удастся сделать его и довести до ума на моем плагине, то будет просто супер!
P.S. Хотелось бы услышать предложения о функциях, типа что еще нужно и необходимо, может еще кто-нибудь сюда заглянет. И еще, есть ли другие подобные плагины (с этой библой) для ММБ, вроде где-то мелькало на форуме, дайте ссылку, пожалуйста, хочу посмотреть.
Peter, У тебя извращенные понятия о кол Нет ни одной задачи, которую невозможно было бы сделать на кол. Лично у меня, имеется не один програмно-аппаратный комплекс, в которых не один десяток окон, о количестве элементов на окне я уж и не говорю. Есть даже такой проект, который содержит, изначально, не считая доп сервисных подпрограм, всего одно материнское окно, но в состоянии описать не одну сотню реальных объектов(сети азс), каждый из которых описан отдельным дочерным окном. И вся эта требуха сделана на кол. Это П.О. является специализированным комерческим продуктом. По этому, я тебе его не могу предоставить, но если не вериш на слово, могу, в частном порядке, дать кое что из описаний.(в док формате)
Я понял. Это действительно поможет организовать "внутренности" плагина более грамотно и удобно,
Вот именно!
Quote (Sower)
В принципе я хотел дать то, чего нет, причем дать возможность управлять этим так, как будто это было,
Тоже правильное направление! Создавая классы, а на их основе и объекты, с нужными свойствами, можно максимально приблизиться к "стилю" ММВ-объектов, к единой логике работы в программе. Чем ближе к стандартному ММВ-шному объекту будет объект плагина, тем проще и понятнее будет работать пользователю ММВ-шнику, и тем охотнее он будет пользоваться плагином! А когда плагин представляет из себя лабиринт команд с логикой, понятной только его создателю, то такой плагин просто посылается куда подальше!
Quote (Sower)
Ну почему, даже на чистом WinAPI пишут серьезные приложения
Именно НА API, а НЕ на KOL!!!
Quote (Alex3A)
Peter, У тебя извращенные понятия о кол
Не исключено! Алекс, у меня нет оснований сомневаться в справедивости твоих слов. Но, вместе с тем, как говориться в пословице - лучше один раз увидеть, чем сто раз услышать! Я сужу, в первую очередь, на основе того, что мне доводилось увидеть. А из того, что сделано было на KOL, и что мне довелось до сегодняшнего дня увидеть, АБСОЛЮТНО ВСЁ (БЕЗ ИСКЛЮЧЕНИЙ!) было либо убого, либо глючно, а порой + откровенно неработоспособно! И это не единственная причина моего крайне негативного отношения к KOL. Мне бы не хотелось пускаться снова в этот бесконечный и бессмысленный спор. Возможно, когда-нибудь, я стану думать иначе, а возможно и никогда это не случится.... Кто знает...
P.S. Хотелось бы услышать предложения о функциях, типа что еще нужно и необходимо,
Сначала нужно увидеть толком (в законченном и работоспособном виде) то, что есть, и тогда уже можно думать "о будущем".
Добавлено (25 Июнь 2010, 22:01) --------------------------------------------- И ещё такое соображение... На будущее... Я не знаю как это можно организовать в ММВ (т.к. не знаю ММВ-шного SDK), но может оказаться крайне полезной опция контроля (отслеживания) ошибок плагина.
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
А из того, что сделано было на KOL, и что мне довелось до сегодняшнего дня увидеть, АБСОЛЮТНО ВСЁ (БЕЗ ИСКЛЮЧЕНИЙ!)
Это и не удивительно, все что можеш увидеть это совсем простые вещи, ибо кол не имеет такого распространения как то что написано на вцл, какие либо серьезные продукты тебе никто не покажет, ибо их не делают для показать, все таки работа с кол гораздо гиморойней чем с вцл, у каждого могут быть свои примочки, которые то и показывать вредно. Тут даже если тебе дадут рабочий исходник, не факт что ты сможеш его так просто запустить, ибо каждый точит что то для себя, даже в самом кол. И кол и вцл используют апи, кол по внуреннему строению гораздо проще и гибче чем вцл, многое в нем написано на асме, но и имеет паскаль варианты. А вот пользовать его, владея вцлью гораздо сложнее, потому что он другой. Я знаю много всяких языков, и не сужу сравнивая то что знаю с тем чего не наю, по этому так и говорю - он другой и не хуже вцеели.
Quote (Peter)
Я не знаю как это можно организовать в ММВ (т.к. не знаю ММВ-шного SDK), но может оказаться крайне полезной опция контроля (отслеживания) ошибок плагина.
А чего там знать - две функции предающие строку и целое число в плагин и такие же из плагина, запуск функции плагина по имени, плюс отсылка меседжа запускающего указанный скрипт в проекте, плюс (эт мое ноухау, в моем сдк) запуск скрипта плагина, слепил до введения в стандартный сдк запуска скриптов проекта. Как видиш, весьма скудные возможности. Но опция контроля вполне реализуема, у меня в винамповском плагине она довольно навороченная, использовал как при разработке плагина так и для проектов. Когда столкнетесь со временной синхронизацией поймете.
Alex3A, я дважды пытался "познать" KOL, и оба раза именно геморр работы с ней, плюс то, о чем я упомянул в предыдущем посте, меня и оттолкнули от KOL. И оттолкнули серьезно! Но, как говориться, "Бог любит троицу!"... Может с третьей попытки, когда-нибудь, мне и удастся испытать симпатию к KOL... Кто знает... Но, по правде говоря, я не вижу в этом ни необходимости, ни смысла!
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
Я не знаю как это можно организовать в ММВ (т.к. не знаю ММВ-шного SDK), но может оказаться крайне полезной опция контроля (отслеживания) ошибок плагина.
Все функции заключены в try except в случае ошибки выдается сообщение с текстом типа EqCreate Error. Если говорить о возвращаемых ошибках функций самой басс, то я этого пока не делал, но это не сложно - всегда возвращать результат (1 или 0), можно использовать сендмессачж, т.е. запускать скрипт из плагина и присваивать какой-нибудь переменной, например BassPlayerReturn, а лучше сделать отдельную функцию типа GetBassPlayerError, при запросе она будет возвращать результат последней операции (всё теже 0 или 1).
Quote (Peter)
И "извечный" вопрос: РАДИ ЧЕГО???..?
КОЛ была создана для написания компактных приложений, видимо ради этого. Приятно, когда 40 кб выдают потрясающий результат, причем когда ты используешь язык высокого уровня ИМХО!
например BassPlayerReturn, а лучше сделать отдельную функцию типа GetBassPlayerError, при запросе она будет возвращать результат последней операции (всё теже 0 или 1).
Если в ММВ-скрипте можно обработать возвращаемый результат из плагина (через сообщение, а не через "Get"), то этого вполне достаточно.
Quote (Sower)
Приятно, когда 40 кб выдают потрясающий результат, причем когда ты используешь язык высокого уровня
ДЕТСКИЙ САД!!! Я понимаю, когда этим занимается молодежь - хочется казаться "крутыми"!
Но, когда взрослые и разумные люди...
Это уже тревожный симптом!
Никто не может вернуться в прошлое и изменить свой старт. Но каждый может стартовать сейчас и изменить свой финиш!
КОЛ была создана для написания компактных приложений, видимо ради этого. Приятно, когда 40 кб выдают потрясающий результат, причем когда ты используешь язык высокого уровня ИМХО!
Не в компактости дело, она просто как реклама, а в иной архитектуре и идеологии. Основные причины моего перехода на кол были его гибкость и соображения лицензионного характера. Ну и действительно, интелект в нем не нишний, но я привык и не жалуюсь.
Если в ММВ-скрипте можно обработать возвращаемый результат из плагина (через сообщение, а не через "Get"), то этого вполне достаточно.
Ты просто не с той стороны смотриш, тут надо четко представлять что такое ммв- медленная улитка, по сравнению с плагином. Задрочить проект вызовом из плагина плевое дело, по этому надо здраво смотреть на вещи, и на шару ничего не дергать. Можно и переменную установить и скрипт внедрить, но все нада делатьс умомс.