Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Ср окт 18, 2017 8:47 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 26 сообщений ]  На страницу Пред. 1 2
Автор Сообщение
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вт апр 24, 2012 4:12 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario
Если собираешься делать кольцевой буфер посмотри исходники Doom s_sound.c.


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вт апр 24, 2012 5:20 pm 
Спасибо! Попробую, если потоковый не справится.


Вернуться к началу
   
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вт апр 24, 2012 7:42 pm 
Не в сети

Зарегистрирован: Ср сен 15, 2010 7:22 pm
Сообщения: 101
Mario! Если не секрет, что Вы задумали ?

Каюс - невнимательно читал :( :

Цитата:"для воспроизведения отдельных семплов-букв (в синтезаторе речи) "


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вт апр 24, 2012 8:15 pm 
Я же маргинал и злодей, потому задумал очередное черное дело.


Вернуться к началу
   
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Ср апр 25, 2012 9:13 pm 
Не в сети

Зарегистрирован: Ср сен 15, 2010 7:22 pm
Сообщения: 101
Вот это я понимаю !.. :mrgreen:


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Сб июн 16, 2012 11:37 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Вт авг 25, 2009 4:45 pm
Сообщения: 788
Обновил документацию на вики http://wiki.kolibrios.org/wiki/Sound/ru


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вс дек 28, 2014 4:50 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Это был долгий вечер...

Следствием установлено:
1) В режиме PCM_RING нельзя инициализировать звуковую подсистему в одном потоке и вызывать воспроизведение в другом, даже если они в одном адресном пространстве и один является родителем для другого - ф.68.14 будет ждать очень долго...
Спойлер: Показать
Изображение

2) В режиме PCM_RING не корректно воспроизводятся сэмплы с частотой ниже 44100, т.е. 22050 и ниже. Особенно сильно проявляется на 8 бит и 1 канал.
Спойлер: Показать
Изображение

В режиме PCM_OUT такого сроду не было...
Спойлер: Показать
Изображение

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вс дек 28, 2014 7:49 am 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
Mario_r4
1. Это и к остальным типам относится. Буфер привязан к контексту потока. Использование в другом контексте не рекомендуется.
2.В Doom 11КГц стерео 16 бит выводится корректно. Скорее всего ты неправильно создаёшь буфер. Надо сразу указывать формат звука.


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вс дек 28, 2014 10:08 am 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Serge писал(а):
2.В Doom 11КГц стерео 16 бит выводится корректно. Скорее всего ты неправильно создаёшь буфер. Надо сразу указывать формат звука.

Зато 8 КГц моно выводится "трелью".

Укажи пожалуйста где я создаю неправильно буфер:
Спойлер: Показать
Код:
snd_background_music_thread_start:
   mov   eax,[background_music]
   mov   [wav_for_test],eax
   mov   ebx,eax
   add   ebx,1024
   mov   [wav_for_test_end],ebx
   call   initialize_sound_system
;--------------------------------------
.1:
   cmp   [music_flag],1
   je   .start
   
   mcall   5,50
   mcall   68,1
   jmp   snd_background_music_thread_start.1
;--------------------------------------      
.start:
   stdcall _PlayBuffer@8, [hBuff1], 0
   cmp   eax,-1
   je   snd_play_buffer_fail
   
;   DEBUGF   1, "Play Buffer successful EAX: %x\n",eax
;--------------------------------------      
.start_1:
   mov   eax,[background_music]
; check for correct data_offset
   push   eax
   add   eax,[data_offset]   
   sub   eax,4
   cmp   [eax],dword 'data'
   pop   eax
   je   @f

   mov   [wav_for_test],eax
   mov   ebx,eax
   add   ebx,1024
   mov   [wav_for_test_end],ebx
   call   find_data_offset
   cmp   [sound_flag],0
   jz   snd_background_music_thread_start.1   ;.exit
;--------------------------------------
@@:
   add   eax,[data_offset]
   mov   ebx,[eax]
   add   eax,4
   mov   ebp,eax
   add   ebx,eax
;   DEBUGF   1, "start EAX: %x\n",eax
;--------------------------------------
.loop:   
   cmp   [music_flag],0
   jne   @f

   stdcall _StopBuffer@4, [hBuff1]
;   DEBUGF   1, "Stop Buffer EAX: %x\n",eax
   jmp   snd_background_music_thread_start.1
;--------------------------------------
@@:
; get event data from the driver
;   DEBUGF   1, "Get driver_notify_struct \n"
   push   ebx
   mcall   68,14,hBuff1_driver_notify_struct
   pop   ebx
;   DEBUGF   1, "Check to code \n"   
; проверка на code
   cmp   [hBuff1_driver_notify_struct], dword 0xFF000001
   jne    @b
;   DEBUGF   1, "Check to stream \n"   
; проверка на stream
   mov   eax,[hBuff1_driver_notify_struct+8]
   cmp   eax,[hBuff1]
   jne   @b
;   DEBUGF   1, "Get buffer_offset \n"
; получить смещение в буффере
   mov   eax,[hBuff1_driver_notify_struct+12]
   mov   [hBuff1_buffer_offset],eax

;   DEBUGF   1, "src EBP: %x size EBX: %x\n",ebp,ebx
   stdcall _SetBuffer@16, [hBuff1], ebp, [hBuff1_buffer_offset], [hBuff1_buffer_size]   
   cmp   eax,-1
   je   snd_set_buffer_fail
   
;   DEBUGF   1, "Set Buffer successful EAX: %x\n",eax
   
;   add   ebp,8192*2
   add   ebp,[hBuff1_buffer_size]
   add   ebp,[hBuff1_buffer_size]
   cmp   ebx,ebp
   jbe   .start_1
   
;   sub   ebp,8192
   sub   ebp,[hBuff1_buffer_size]
   jmp   .loop
;------------------------------------------------------------------------------
initialize_sound_system:
   mov   [sound_flag],1

   stdcall   _InitSound@4,version
   cmp   eax,-1
   je   snd_init_fail
   
;   DEBUGF   1, "Sound init successful %x\n",eax
   mov   eax,[version]
   and   eax,0xffff
   cmp   eax,SOUND_VERSION
   jne   snd_version_fail

;   DEBUGF   1, "Sound version successful %x\n",eax

   stdcall   _test_wav@4,dword [wav_for_test]   ;letter_1a
   test   eax,eax
   jz   snd_test_wav_fail
   
;   or   eax,PCM_OUT
   or   eax,PCM_RING
   mov   [snd_format],eax

;   DEBUGF   1, "Test wav successful %x\n",eax

   call   find_data_offset
   
   mov   al,[sound_flag]
   test   al,al
   jz   .exit
;--------------------------------------   
   stdcall   _CreateBuffer@12,[snd_format],0,hBuff1
   cmp   eax,-1
   je   snd_create_buffer_fail
   
;   DEBUGF   1, "Create Buffer 1 successful %x\n",eax

   stdcall   _GetBufferSize@8,[hBuff1],hBuff1_buffer_size
   
   cmp   eax,-1
   je   snd_get_buffer_size_fail
   
;   DEBUGF   1, "Get Buffer 1 size successful size: %x\n",[hBuff1_buffer_size]
   
   mov   ecx,[hBuff1_buffer_size]
   shr   ecx,1
   mov   [hBuff1_buffer_size],ecx
;--------------------------------------
.exit:
   ret
;------------------------------------------------------------------------------
find_data_offset:
   mov   esi,[wav_for_test]
;--------------------------------------
@@:
   cmp   [esi],dword 'data'
   je   @f

   inc   esi
   cmp   esi,[wav_for_test_end]
   jne   @b
   
;   DEBUGF   1, "find data offset fail\n"
   mov   [sound_flag],0
   ret
;--------------------------------------
@@:
   sub   esi,[wav_for_test]
   add   esi,4
   mov   [data_offset],esi
   ret
;------------------------------------------------------------------------------

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вс дек 28, 2014 3:57 pm 
Не в сети
Kernel Developer

Зарегистрирован: Ср мар 08, 2006 6:25 pm
Сообщения: 3929
На первый взгляд всё правильно. Одну ошибку в драйвере я исправил. Страдали 8-ми битные моно с частотой меньше 24КГц и 8-ми битные стерео с частотой меньше 12 КГц.


Вернуться к началу
 Заголовок сообщения: Re: Документация по Infinity
СообщениеДобавлено: Вс дек 28, 2014 4:48 pm 
Не в сети
Kernel Developer

Зарегистрирован: Вс фев 10, 2013 12:37 pm
Сообщения: 2329
Ну, вот. Помнится FPLAY тоже был идеален, пока не был исправлен. :wink:
Спасибо за оперативный фикс.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 26 сообщений ]  На страницу Пред. 1 2

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB