Да. Это если хранить БАЙТЫ порта. Я предпочитаю хранить биты -- как-никак экономия в 8 раз.)Цитата:
Сообщение от Robus
P.S>: offtopic: Robus, :v2_frown: :v2_cry: ну загляните в тему про саботажников в играх... молю...
Вид для печати
Да. Это если хранить БАЙТЫ порта. Я предпочитаю хранить биты -- как-никак экономия в 8 раз.)Цитата:
Сообщение от Robus
P.S>: offtopic: Robus, :v2_frown: :v2_cry: ну загляните в тему про саботажников в играх... молю...
Это на случай, елси AY not found. Если found, то зачем, в самом деле, извращаться. Я и не собирался...Цитата:
Сообщение от Vitamin
Это неверное сравнение :v2_cool:Цитата:
Сообщение от Vitamin
Есть звук, а есть помехи и искажения. Чем больше искажений тем хуже звук. Зависимость почти линейная :v2_wink2:
Кроме того основные гармоники в данном случае будут на частоте 5КГц/10Кгц (при частоте семплирования 80КГц), что на слух весьма противно :v2_wacko:
2Titus: Частота будет 44, я уже пересчитал новый вариант.
Но вы меня обнадеживаете. Сегодня напишу небольшой WAV-конвертор (цифровать-то все одно на IBM придется :( ) и проверю...
Ключевые слова -- широтно-импульсная модуляция, ADPCM.Цитата:
Сообщение от TomCaT
Расжёвывать из букваря некогда. Читай CODE.ZX (архивы).
вы имеете в виду, что нужно этот формат паковки сюда применить? или что? А разговоры про букварь -- вообще зря. Это просто отбивает вообще желание учиться.
что-то нифига не работает этот плеер. По расчетам должно полсекунды длиться и хоть что-то звучать. На самом деле клацает и выходит... :(
ага, в концу jr nz, ...
вот, архив-пример. Там плеер в 30 байт и сервисная программка на Delphi для перевода wav файлов в формат плеера. Для хранения и проигрывания многих файлов плеер, конечно, надо чуть корректировать --выход из цикла там при достижении конца ОЗУ...
А занимает секунда около полутора дорожек. Итоого дискета -- 100 секунд :)
Для той задачи, что я хотел сделать, звук занимает одну дорожку. В ADPCM, конечно, меньше, но при распаковке упадет частота воспроизведения. Или для однобитного звука это менее важно?.. Какая все-таки максимальная частота при разумной экономии хранения воспроизводимых бит (т.е. не по биту в одном байте)?
Где?Цитата:
Сообщение от fk0
Вот именно. Мне почему-то даже и выяснять не хотелось... :)
который воспроизводит (только воспроизводит, писать естественно на такой скорости не возможно) на частоте около 280 кГц.
Тело проигрывателя получается типа:
Out (с),X
Out (с),X
Out (с),X
Out (с),X
..
и так 12 раз.
- это тело герерируется рабочей программы, алгоритм там что называется рехнуться можно, однако работает.
Out (с),X - это команда либо Out (c),c (т.е. вывод в порт 254 значения 254 - логическая единица), либо out (c),0 (часто встречается в виде out (c),(hl) или out (c),f) - соответственно для логического нуля.
Память расходуется просто жутко - посчитается сами - около 12 тактов на одно прогрывение (так как есть управляющие команды кроме выводящих), итого на 256 кб памяти около 8-10 секунд, для метровых машин параметр конечно повыше будет (((-; одним словом мультимедия.
Если надо могу кодер дать и декодер (((((((-;
Ага, чуть не забыл.
Тут фишка есть - дело в том, что в связи с такой скоростью пришлось оптимизировать уже не сам код (который уже некуда оптимизировать - и так одни АУТы), а данные которые на входе к проигрывателю идут. В результате, на 1 байт я использую только 6 бит (формат типа ADPCM), причём это теоретический предел для моей концигурации (т.е. тело декодера настолько здоровое, что еле-еле помещается в основную память). Я просчитывал для машин с теневым ОЗУ можно задействовать ещё бит, но честно говоря возиться с теневым ОЗУ было совсем не интересно, да и прирост не столь качественный чтобы этим заниматься.
И ещё, огромный (и наверное единственный) недостаток оцифровок с speaker'а заключается в том, что в способе модуляции звука отсутствует возможность управлять низкочастотной составляющей. Сейчас я думаю как бы адаптировать систему для того, чтобы можно было расколбасить басы - например выводить низкочастотную составляющую прямо на AYк - как известно эту часть AYк хорошо воспроизводит.