![]() |
|
![]() ![]() ![]() |
|
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
Привет Друзья!
Как на счёт звука (пусть даже самого простейшего) на АСМе. Можно ссылочку, но пожалуйста на русском, а то английский слишком утомительным получается. Я имею ввиду чистый код, без всяких DLL и модулей. ![]() |
|||
|
||||
Akina |
|
|||
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 1 Всего: 454 |
В ДОсе?
Проще уж просто некуда... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
Я имею ввиду хотя б простую мелодию выдать.
Не обязательно из Спикера... |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
xach
если не на спикер то значит на звуковуху если на звуковуху то нада знать модель, так как в досе HAL нету и подход персональный к каждой карте кстати в инете куча сорцов о програмировании SB16-32 НО современные SB1024 и позже нихренам не совместимы, сам проверял, и прямому програмирования из доса не поддаются за неимением документации -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
Раз всё так ужасно... Как на счёт спикера тогда уж... Возможно ли
извлечь из него мелодию, которая бы не раздражала уши? ![]() Тогда уж подскажите про спикер (там уж всё просто должно быть (я так думаю))! Именно мелодию, а не beep. |
|||
|
||||
monax |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 125 Регистрация: 9.6.2005 Репутация: нет Всего: 4 |
Раньше никогда этим не занимался, но стало интересно и вот...
Программа играет (точнее имитирует) "-Чижик Пыжик, где ты был? -На Фонтанке водку пил" Информация о динамике взята отсюда.
Вот как это выглядит на С++
Вся идея довольно проста: зная частоту ноты и её длительность в мелодии, можно сделать некое подобие музыки. Ассемблерный код компилировал 5-м тасмом, с++ - BC 3.1. --------------------
Лаборатория программиста |
||||
|
|||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
В игре Doom2D использовался спикер для воспроизведения голосовых сообщений. Качество, как у плохого телефона, но всё же. Как они это делают?
-------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 2 Всего: 34 |
ну так никто не запрешает через спикер прогнать wav
толко нада сначала сделать его как бы однобитным имхо тоесть там в порту спикера за звук если не путаю 1 бит только отвечает -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
Со спикером я воспринял)... т.е. ещё не попробовал, но обязательно сдеалаю это
Вот увидел програмку в 111 байт с 0a000h (это party). Там звук выдаётся (по заверению автора) через 220h порт... Хотя при дизассемблировании я увидел передачу в 226h и в 22ch порты...(если ошибся извините))) Просто скопировал часть кода в Фасм, а звука нет (уверен, что скопировал не то(или не всё) => не пишите, что я не то скопировал))) Лучше помогите разобраться с кодом))).. (под XP не работает(может можно через эмулятор какой-нибудь)) Присоединённый файл ( Кол-во скачиваний: 22 ) ![]() |
|||
|
||||
chyapay |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 6.2.2006 Где: UA, Lviv Репутация: нет Всего: нет |
Чувак, я так понял, ты наше какую-то дребедень про СаундБластер. Я тоже когда-то этим страдал.
это старый хороший стандарт звуковых плат с портами 220h(227h, 22Fh) для восьмибитных и шестнадцатибитных Само собой, эта штука на новых звуковых проконает разве что из-под винды, которая спецыально эмулирует для досовских приложений этот интерфейс. Но и это - при большом везении. И я уверен, что ты правильно скопировал эту хрень, но, к сожалению, играть она будет разве что на старом 386 динозавре с ИСАшной звуковой. В данном случае я могу порекоммендовать только одно : ищи в интернете документацию под свою звуковуху, они обычно в формате ПДФ, типа AC97AudioController-specs.pdf, линков пока никаких дать не могу: сам этим делом страдаю, пока еще нифига не нашел. |
|||
|
||||
10110111 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 28.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Спецификация на AC97 - не проблема:
http://www.intel.com/design/chipsets/audio/ac97r22.pdf В DDK есть даже пример WDM-драйвера. Проблема вот в чем: когда я под DOS пытаюсь читать из пространства I/O Mixer'а, проц зависает; но на этом же компе Windows ME без проблем воспроизводит звук. Я уже думал, может, под DOS AC97 выключен, но отключение APM не дало никакого результата. Может, кто-нибудь знает, почему такое может быть? |
|||
|
||||
10110111 |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 28.8.2006 Где: Санкт-Петербург Репутация: 1 Всего: 1 |
Я написал прогу, выводящую WAVы через спикер: по знаку выборки из WAV'а
Вызывается так: <prgname> [[Path\]Filename.wav] Если параметров нет, она их запрашивает. Вот её код(извините, что без комментов - надеюсь, принцип действия очевиден. Если у без них не понятно, скажите - я поясню):
Да, компилил я её с помощью FASM 1.65 Это сообщение отредактировал(а) 10110111 - 11.11.2006, 23:38 |
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
10110111
волшебная программа! ![]() теперь вопросы: - как происходит временная синхронизация? (я в коде узрел rdtsc, подозреваю что с помощью неё, но подробности не помешают!) - какой код отвечает за установку и сброс спикера? (и про инициализацию его тоже оч интересно) заранее мерси! |
|||
|
||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: нет Всего: 91 |
Помню была у меня такая прога, работала только в досе, а жаль, вот бы юзер обкакался запустив какой-нибудь кейген в винде ;)
|
|||
|
||||
xach |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 22.10.2004 Где: СПб Репутация: нет Всего: нет |
итак, со спикером я разобрался, а вот с синхронизацией - нет.
очень бы хотелось повесить перезагрузку 2-го таймера на прерывание, а как это сделать гугл не говорит...возможен, конечно следующий вариант: зная период 0-го таймера (18 с чем-то герц (при надобности легко узнать точное значение)) замерить его в тактах процессора (rdtsc) а потом ориентироваться чисто на rdtsc. получается точно, но не элегантно: прога постоянно зациклена и опрашивает tsc. В варианте же с прерыванием точность почти 100%, а затраты процессорного времени - минимальны (такую прогу можно даже резидентной сделать). ![]() З.Ы. всё, естественно под чистый dos. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для Windows/DOS" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для Windows/Dos | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |