Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
#16: 2010-06-12 16:02:09 ЛС | профиль | цитата
nesco писал(а):
Ну, это -- не совсем корректное утверждение.

точнее это совсем некорректное утверждение. Таймер работает на основе очереди сообщений Windows и его событие эквивалентно приходу, скажем, событий от мыши. Это значит, что пока основная программа не отработает, никакое событие Windows произойти не может. Так если в схеме от petrocan, в цепочке 3 поставить бесконечный цикл, то события от таймеров в цепочках 1 и 2 не произойдут никогда. По этой же причине форма будет выглядеть "зависшей".
карма: 27
0
Разработчик
Ответов: 26304
Рейтинг: 2146
#17: 2010-06-12 16:14:59 ЛС | профиль | цитата
Dilma писал(а):
Таймер работает на основе очереди сообщений Windows и его событие эквивалентно приходу, скажем, событий от мыши. Это значит, что пока основная программа не отработает, никакое событие Windows произойти не может

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

Кстати, если после основного таймера тоже поставить цикл, и он сработает, то вся текущая очередь оконных событий притормозится и будет наблюдаться невозможность управления окном до момента окончания цикла, те,
Dilma писал(а):
форма будет выглядеть "зависшей"

карма: 22

0
Ответов: 1429
Рейтинг: 50
#18: 2010-06-12 23:39:58 ЛС | профиль | цитата
Ух ты, так вот оно как. У меня схема вся на делеях (Delay)
И таймером я привык пользоваться именно как "делеем" события. А тут такое. Получается, это можно обойти, только если везде ставить таймеры, а это скорость кода затормозит. Или распаралеливать всё и вся, а потом следить как-то, но винда может, как захочет, несвязные потоки выполнить.
Надо подумать.

карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#19: 2010-06-12 23:46:56 ЛС | профиль | цитата
login писал(а):
У меня схема вся на делеях

Смотря, что за схема, и что она должна выполнять.
login писал(а):
Или распаралеливать всё и вся, а потом следить как-то, но винда может, как захочет, несвязные потоки выполнить

Все и вся распараллеливать совсем не обязательно. Но, опять таки -- смотря, что за схема, и что она должна выполнять.
карма: 22

0
Ответов: 1429
Рейтинг: 50
#20: 2010-06-13 00:03:19 ЛС | профиль | цитата
Схему я переношу из макса, там такой проблемы нет. Там все таймеры паралельны, и они, невидимо, привязаны (синхронизированы) к какому-то супер-глобальному таймеру под названием "CPU-Time".
А схема, работает со звуком и миди. В реальном времени. (но с задержкой равной буферу ASIO).
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#21: 2010-06-13 00:12:34 ЛС | профиль | цитата
login писал(а):
В реальном времени

В реальном времени, в Винде, работают только драйверы, и то, не совсем в реальном, а в нулевом кольце ядра. Так что -- это совершенно неверное утверждение. Вообще-то переводить что-то скоростное без применения FTCG или IC на HiAsm не совсем правильное решение, хорошего из этого ничего не получится, не для этих целей он
карма: 22

0
Ответов: 1429
Рейтинг: 50
#22: 2010-06-13 00:34:23 ЛС | профиль | цитата
Я настолько хочу это сделать, что чуть не сел писать для себя среду с "квадратиками и точками", как вдруг нашел Ваш сайт.
У меня все должно получится, я уверен.
Хорошо, что есть Вы, и этот форум.
------------ Дoбавленo в 00.34:
В реальном времени, в Винде, работают только драйверы

Дело в том, что при старте ASIO весь MAX вешается на time-генераторы звуковой карты, и полностью отвязывается от винды (на то он и ASIO). Этот драйвер поддерживает (и стабильно работает!) с буфером всего в 64 семпла. Поэтому этот cpu-time выполняет реальное время (или достаточно близкое к нему, для моей задачи).
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#23: 2010-06-13 00:44:07 ЛС | профиль | цитата
login писал(а):
Этот драйвер поддерживает (и стабильно работает!) с буфером всего в 64 семпла

Вот видишь, все же драйвер
------------ Дoбавленo в 00.44:
Так все же, что должна делать прога с этими сэмплами, математически обрабатывать звук, или еще чего-то
Зачем в проге куча таймеров и синхронизаторов
карма: 22

0
Ответов: 1429
Рейтинг: 50
#24: 2010-06-13 01:00:08 ЛС | профиль | цитата
Верно. Но в карте есть два независимых аппаратных таймера. К ним есть доступ (мимо винды и мимо Bios) из Асма. Tам как-то весь прикол в "аппаратной поддержке asio" (аппаратность это главная особенность всех профессиональных карт).
Когда с этим драйвером работаеш, то даже проц разгружается.
Но больше подробностей не знаю.
------------ Дoбавленo в 00.54:
Карта не обрабатывает звук. Только выводит. Есть карты с DSP. Это отдельная тема.
------------ Дoбавленo в 01.00:
Ой, я неверно понял вопрос. Вы про прогу.
Прога автоматически пишет музыку (уникальный, на планете, алгоритм )
Но вот как-раз я сижу и думаю, что все это надо переобмыслить и обойтись без таймеров.
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#25: 2010-06-13 01:03:39 ЛС | профиль | цитата
login писал(а):
мимо винды и мимо Bios

Мимо BIOS-a согласен, но мимо Винды, линейки NT, вряд ли.
Но если есть доступ к драйверу из какого-то ПО, то у драйвера должен быть API
Да, а как ты сейчас до ASIO стучишься
карма: 22

0
Ответов: 1429
Рейтинг: 50
#26: 2010-06-13 01:15:34 ЛС | профиль | цитата
Сейчас я скачал BASS_ASIO.dll, BASS_VST.dll и только пытаюсь разобраться как мне, вообще, прикрутить их к HiASM не зная Pascal и Delphi. (главное, что эта возможность в принципе существует)
Но прогу пишу пока в слепую.
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#27: 2010-06-13 01:32:54 ЛС | профиль | цитата
login писал(а):
Сейчас я скачал BASS_ASIO.dll, BASS_VST.dll

Ага, ну вот тебе и доступ к ASIO через BASS-интерфейс, а он уже и общается с ASIO через его API, что и требовалось доказать.
login писал(а):
не зная Pascal и Delphi

А вот тут, как раз и надо прикручивать интерфейс HiAsm-a к интерфейсу BASS через IC или созданием своих интерфейсных компонентов, где для этих целей, в пакете Windows, ну просто надо, знать Delphi
карма: 22

0
Ответов: 1429
Рейтинг: 50
#28: 2010-06-13 01:44:54 ЛС | профиль | цитата
ASIO разработал Cтейнберг, и у них на сайте есть их родные DLL ки+sdk. (на С++)
Так может надо прикручивать их библотеки а не BASS? Или нет разницы?
карма: 0

0
Разработчик
Ответов: 26304
Рейтинг: 2146
#29: 2010-06-13 01:59:55 ЛС | профиль | цитата
login писал(а):
и у них на сайте есть их родные DLL

Если есть описание API функций, и ты знаешь как с ними работать, и что каждая из них означает, то можешь сам написать оболочку на IC. Понимаешь, для того, что бы такое написать, первым делом надо знать что тебе надо. Я к примеру, кроме обаботки звуковых файлов, в остальной музыке -- не в зуб ногой, для меня этот ASIO -- темный лес, я никогда не писал музыку, и не собираюсь.
карма: 22

0
Ответов: 1429
Рейтинг: 50
#30: 2010-06-13 11:29:24 ЛС | профиль | цитата
Я это понимаю.
В глоссарии нет слова IC. Это Вы имеете виду внутренний язык создания елементов Hiasm?

Например, я уже разобрался как в коде добавлять точки и переменные к квадратикам, и как привязывать dll.
Дальше буду разбираться.

p/s

AS I/O - Имеется ввиду, некий режим, когда устройство работает "как ввод/вывод", скоростной.

карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)