Вход

Просмотр полной версии : Как на бипере проспикать? В курсе кто-то или нет?



Destr
12.09.2009, 12:57
Вопрос крутым музыкаторам:
Есть такая гама под MS-DOS, там музло играет speaker`ом.
Можно ли это на ZX проиграть?
(См.вложение, но запускать надо с умом, чем нибудь типа DOSbox)
Конечная цель - портировать гаму на ZX, с кодом-графикой справлюсь сам (уже) а вот с озвучкой проблемы.
Есть заинтересованые?

alone
12.09.2009, 15:02
Качай Beep Tracker и пиши музыку под бипер :)
http://alonecoder.nedopc.com/zx/beeptracker10fix5.rar

Destr
12.09.2009, 15:14
Качай Beep Tracker и пиши музыку под бипер
http://alonecoder.nedopc.com/zx/beeptracker10fix5.rar

Спасибо, конечно, но смысл в том чтоб проиграть готовый PCшный файл, а не самому шлёпать музлоподобное имитирование...

alone
12.09.2009, 15:27
Как же ты его проиграешь, если у тебя его исходников нет?

Вот тут, кстати, редактор с хелпом (rus+eng): http://alonecoder.nedopc.com/zx/bt10f6.rar

Вот tape-версия: http://zxspectrum48.i-demo.pl/bt.zip

Destr
12.09.2009, 15:38
Как же ты его проиграешь, если у тебя его исходников нет?

Ну как же нету, дебаггер ещё никто не отменял да и сам подход к плею достаточно общий (для PC).

Перефразирую вопрос:
Можно ли как-то извернутся и проиграть на одной защёлке (zx-beeper) то что играется на двух (pc-speaker)?

За ссылы - tnx!

Black_Cat
12.09.2009, 15:48
Можно ли как-то извернутся и проиграть на одной защёлке (zx-beeper) то что играется на двух (pc-speaker)?не вникал в РС-спикер, но на сколько помню там играется через таймер 8254, а что касательно двухбитного звука, то это есть и на Спеке - порт #FE D4 - старший разряд ЦАПа, D3 - младший разряд ЦАПа, если ты это имеешь ввиду. Либо однобитный стереозвук по тем жеразрядам, где левый - D4, а D3 соответствено правый канал. Это всё реализовано на компе Феникс, но ничего не стоит приделать на практически любой отечествнный комп.

Destr
12.09.2009, 16:05
не вникал в РС-спикер, но на сколько помню там играется через таймер 8254, а что касательно двухбитного звука, то это есть и на Спеке - порт #FE D4 - старший разряд ЦАПа, D3 - младший разряд ЦАПа, если ты это имеешь ввиду. Либо однобитный стереозвук по тем жеразрядам, где левый - D4, а D3 соответствено правый канал. Это всё реализовано на компе Феникс, но ничего не стоит приделать на практически любой отечествнный комп.

Прикольно, про это дело не слыхал...
К сожалению такой вариант не годится, нужно на одном разряде (который порт #FE по маске #10 ) сыграть (чтоб шло на любом спеке без всяких мостырок добавочных)

На письке оперируют двумя битами чтоб получить нужный саунд.
Без лево-право, просто моно...
Открывая-закрывая защёлки с разной частотой, получают нужную огибающую...
Правда там ещё и тикалка встроенная...
В общем теоретически (по моему) можно проиграть это на ZX за минусом частот которые Z80 просто не прокачает.
Что-то вроде AY-ЦАП только на 1 бит (без всякой канальности) которое сжирает все такты и актуально тока при статичной картинке (либо просто не успеет)

Вообще-то всё это уже конечно было, в разных демах, играх и т.д. но я хочу именно PC-файл проиграть...
Думал мало-ли кто уже сталкивался с этим, дык подскажут как...

Вот например в какой-то ветке показывали как через бипер ТАТУ - "Полчаса" играет, я как услыхал как это клёво так чуть не застрелился от злости, умеют ведь, а нифига нигде не применяют....

Black_Cat
12.09.2009, 16:21
(чтоб шло на любом спеке без всяких мостырок добавочных)вот как раз на всех оригинальных Спеках и большинстве отечественных оно и будет идти, но канал D3 будет несколько тише чем D4. Просто на всех Спеках уровень громости в канале D3 будет разный, т.к. небыло стандарта, а в Фениксе это стандартизировано - канал D3 в два раза тише чем D4 в режиме смешивания, или оба канала имеют равную громкость в стереорежиме.
Вот например в какой-то ветке показывали как через бипер ТАТУ - "Полчаса" играет, я как услыхал как это клёво так чуть не застрелился от злости, умеют ведь, а нифига нигде не применяют....там битрейт дикий.. порядка 300кГц, и памяти это сжирает море.. на компах менее 1Мб ОЗУ не стоит и пробовать..

---------- Post added at 16:21 ---------- Previous post was at 16:19 ----------


Без лево-право, просто моно...
Открывая-закрывая защёлки с разной частотой, получают нужную огибающую...ну так и в Спеке это точно так же можно сделать через D3,D4

Destr
12.09.2009, 16:22
Поковыряю, может что и выйдет, спасибо...

Black_Cat
12.09.2009, 16:43
Поковыряю, может что и выйдет, спасибо...пробуй, владельцы Фениксов тебе в первую очередь спасибо скажут :)

---------- Post added at 16:43 ---------- Previous post was at 16:26 ----------

кстати режим смешивания D3 и D4 вроде поддерживает unreal, так что можешь попробовать проиграть сразу им, вот только соотношение уровней сигнала в каналах там х.з. какое..

alone
12.09.2009, 16:51
В Beep Tracker 5 каналов + ударные. Думаю, хватит для чего угодно. Вообще есть много разных редакторов с разными характеристиками, начиная от двухканального Wham! The Music Box.

Beep Tracker поддерживает также стерео-резделение tape и beep.

Destr
12.09.2009, 17:14
кстати режим смешивания D3 и D4 вроде поддерживает unreal, так что можешь попробовать проиграть сразу им, вот только соотношение уровней сигнала в каналах там х.з. какое..
Уже поэкперементировал, любопытные результаты...
Если что - дам кому-нибудь с реальным железом обкатать, но всё-же работы непочатый край, я даже не знаю вытяну или нет...

пробуй, владельцы Фениксов тебе в первую очередь спасибо скажут
"От вас, бл%дей, дождёшся!"
Это просто цитата, ничего личного...
Где про этот феникс поподробней?

---------- Post added at 17:14 ---------- Previous post was at 17:10 ----------


В Beep Tracker 5 каналов + ударные. Думаю, хватит для чего угодно. Вообще есть много разных редакторов с разными характеристиками, начиная от двухканального Wham! The Music Box.

Beep Tracker поддерживает также стерео-резделение tape и beep.

Alone, повторюсь: Дело не в том чтоб сымитировать музыку (написав её в чём-либо), дело в том чтоб проиграть уже готовый муз.файл!
Я ведь скинул архив с гамой, к херам редакторы, нужен был просто совет как проиграть на зх то что звучит в эмэсдосе!

alone
13.09.2009, 21:09
Какой из этих файлов - музыка? И где описание формата?

Destr
13.09.2009, 21:49
Какой из этих файлов - музыка? И где описание формата?

Эх, да если бы было описание, разве дёргал бы я общественность?
Дело как-раз в том, чтоб узнать пробовал ли кто-нибудь проплеить на zx пэцешный бипер-трек...

Barmaley_m
14.09.2009, 02:52
Эх, да если бы было описание, разве дёргал бы я общественность?
Дело как-раз в том, чтоб узнать пробовал ли кто-нибудь проплеить на zx пэцешный бипер-трек...

Учти, что нет единого формата музыки под ПЦ Спикер, так же как и на спековский бипер. Какой движок напишешь - так и будет играть. Поэтому, если ты хочешь именно сконвертировать музыку с ПЦ Спикера, то тебе ничего не остается, как продизассемблировать тамошний движок, изучить его и попытаться реализовать его на Спеке... Если это вообще возможно (скорости может не хватить, например). Я встречал плееры, проигрывающие на компьютерах 386 на пц спикере мод-файлы.. На Спеке такое, понятное дело, невозможно.

Но даже если по результатам дизассемблирования выяснится, что тот звук нельзя повторить точно - то не исключено, что его можно повторить приблизительно, пожертвовав качеством. Ну или хотя бы ноты сконвертировать в beep tracker или что-то подобное. Или, может быть, это окажется именно мод-файл, который можно будет проиграть на чем-нибудь вроде Soundrive или General Sound.

Black_Cat
14.09.2009, 04:48
"От вас, бл%дей, дождёшся!"
Это просто цитата, ничего личного...:) Делай - делай! Фениксоиды тебе спасибо скажут! :)
Где про этот феникс поподробней?Ты с Марса что-ли свалился? http://zx.pk.ru/showthread.php?t=9310

Destr
14.09.2009, 11:51
тебе ничего не остается, как продизассемблировать тамошний движок, изучить его и попытаться реализовать его на Спеке...
Да видимо придётся...


Но даже если по результатам дизассемблирования выяснится, что тот звук нельзя повторить точно - то не исключено, что его можно повторить приблизительно, пожертвовав качеством. Ну или хотя бы ноты сконвертировать в beep tracker или что-то подобное. Или, может быть, это окажется именно мод-файл, который можно будет проиграть на чем-нибудь вроде Soundrive или General Sound.

А вот это - вряд-ли буду делать, ибо идея-фикс копировать pc-шные игры чтоб 1 в 1 и работала хоть на 48кб хоть на 128. Если нету АУ то чтоб через пищалку звук был такой как в оригинале... (в данный момент речь идёт о Heartlight).
Хотя с самолётами (Fighter Ace) я "забыл" о 1 в 1 ибо увлёкся уровнями и прочим что насоветовали и в результате игра до сих пор недописана (интеллекта противника нету). И уже почти не похожа на исходный вариант...

***

Вот про этого Preliminary Monty здорово сделали порт, мегазачот (хотя я и не поклонник этой гамы и вообще не умею в неё играть, всё время змея кусает...)

Barmaley_m
14.09.2009, 15:01
А вот это - вряд-ли буду делать, ибо идея-фикс копировать pc-шные игры чтоб 1 в 1
Идея похвальная, но учти: ты рискуешь утонуть в мелочах. На дизассемблирование движка и конвертацию музыки у тебя уйдет месяца 2 работы - это я по себе знаю, по Savage. Но музыка - это ведь незначительная часть игры, не самая сложная и не самая важная. Надо уметь остановиться и трезво оценить свои силы и время. Иначе рискуешь так никогда и не доделать проект.

Вот про этого Preliminary Monty здорово сделали порт, мегазачот
А как ты думаешь, почему его только сейчас сделали? Думаешь, это единственный проект Monty на Speccy? :rolleyes: Я с другом еще в 1996 году взялся делать на Спеке Preliminary Monty, да проект потонул в мелочах, а потом угас энтузиазм и не осталось свободного времени на эту разработку, так что я тебя предупредил!

Vovoi
14.09.2009, 20:45
.........Вот например в какой-то ветке показывали как через бипер ТАТУ - "Полчаса" играет, я как услыхал как это клёво так чуть не застрелился от злости, умеют ведь, а нифига нигде не применяют....
Ваши сообщения несколько трудно понять (какие-то "защелки" или может имелся ввиду диффузор громкоговорителя?:)
Цифровые вставки применялись, например, в игре Robin Hood и многих других.
Запускал игрушку, слушал музыку и спецэффекты, на мой взгляд, это просто смикшированные куски *.wav (НО МОГУ ОШИБАТЬСЯ, просьба не ругать)
В Спектруме мало памяти, чтобы проигрывать *.wav звук. Секунд за 5-10 прокручивается вся оперативка. Можно понизить скорость и дотянуть звучание до 30-50 секунд. Можно выбрать отдельные кусочки оцифрованного звука и микшировать их, попеременно запуская на спикер то один, то другой.
Если Вы сможете "вытянуть" музыку прямо из игры "HEART....", получив *.wav файл, то, считай 70% работы уже выполнено. Звук следует преобразовать в каком-нибудь профессиональном аудио-редакторе (Sound Forge и т.д.) в формат..... хммм, вот забыл уж, по-моему 8ми битный и сохранить.
Далее, полученный файл правдами/неправдами впихиваете в трдосный образ, и играете в 4й бит порта, например:
OUT (254),A
У меня Спектрум в свое время вышел из строя, так что пытался такое же провернуть в эмуляторе, подбирая всевозможные параметры *.wav, которые проглотит Спектрум. А в идеале, звук следует оцифровать на реальнике.
Такие звуковые редакторы для Спекки, можно найти на сайте Virtual TR-DOS, либо могу прислать свой, правда он написан на бейсике, так что стыдно даже предлагать. Play/Record-вставки есссно сделаны на асме :))))
Длительность звучания регулируете сами, всего 10 позиций скорости... а может и больше, давно это было... ;(
Могу отдать исходники всей этой программы, она работоспособна на любом компьютере, который претендует на совместимость с фирменным Speccy. Да, наверное, везде пойдет.
:)
зы:
Я ей записывал рекламы с телевизора, поскольку они звучали громче всех, например про "либеро", который "друг малышей" :) А изначально проектировалась для создания проги, которая произносит вслух введенный текст, так как Speak Easy у нас было не достать.

Black_Cat
14.09.2009, 21:00
какие-то "защелки" или может имелся ввиду диффузор громкоговорителя?:) имелся ввиду триггер разряда D4 порта #FE.. в просторечии, на сленге аппаратчиков - защёлка :)

Vovoi
14.09.2009, 21:03
Да, чуть не забыл! Кстати, вопрос близкий по теме.
Кто-нибудь знает, как оцифровку пропищать в AY8910 и во сколько каналов одновременно можно пропищать в 3 или 6. Лучше даже сырцы сюда же выложить. Только плиз, для особо тыпых, т.е. что-то вроде.

LD HL,30000; Address_Wav
Call Play
RET
Play LD A, (HL)
OUT (AY8910),A; шучу
......

Там регистры чипа надо как-то настроить для проигрывания сверхкоротких звуков и тогда AY должна по-нормальному "шипеть" и это то, что надо, поскольку она "шипит" намного мягче спикера. Как и автору поста, мне не хочется проходить полный курс программинга AY. Необходим САМЫЙ наипростейший код.
%-)

Destr
15.09.2009, 00:39
Необходим САМЫЙ наипростейший код.
%-)

Вот что мне удалось изобрести, как для тупых выложить - не в курсе (сам тот ещё дурак), там файл INTRO.C в шторме запускай он в работе проигрывает wav-файл... (звук шлёпанья клавиш печатной машинки)
Подпрограмма AYDIGI этим всем и заведует...
Вся эта байда почти так-же через бипер плеется (и через ковох тоже)
В общем разобратся можно, правда код у меня говорят тяжёлый, но это уже выше было сказано кто именно презерватив в данном zx-случае...

Про "весело и быстро" это быстрое и эффективное решение любых затруднений...

Про "защелку" - это не только аппаратный термин, но и ещё и издательство "Питер" так обзывает разряд управления звуком (спикером, обе линии) на ПЦ...

PS:
Регистрация: 06.07.2005
Адрес: Petrozavodsk

Привет, земеля :)
Мало нас тут, карелов :)))

Destr
15.09.2009, 01:12
имелся ввиду триггер разряда D4 порта #FE.. в просторечии, на сленге аппаратчиков - защёлка

Насколько я понимаю - триггер это когда управляющий сигнал инвертирует коммутируемый разряд.
Т.е. приползла допустим единичка и скинула бит в нулик к хрену, а потом ещё одна пришлёпала и снова установился чёткий логический 1.
А с #fe-портом такая фича не прокатывает, выведеш туды #10 и будет диффузор в поднятом виде торчать как прости Господи что...
Так что вроде как не триггер, а скорее set-input на микрухе...
Но я всё-таки не аппаратчик, могу (и жестоко) лажанутся...

Black_Cat
15.09.2009, 01:25
Насколько я понимаю - триггер это когда управляющий сигнал инвертирует коммутируемый разряд.:) нет, в защёлках используются как правило D-триггеры, а ты говоришь о Т-триггере, т.е. триггере со счётным входом :)

Destr
15.09.2009, 01:41
нет, в защёлках используются как правило D-триггеры, а ты говоришь о Т-триггере, т.е. триггере со счётным входом

Да, чё-то такое припоминаю, сорри! Попутал, говорю ведь не аппаратор я :)
Снкс за ремембу, этих триггеров ведь действительно как собак не резаных и у каждого по сет-ресет-счетно-паритетному входу! А ещё порой такое бывает, что вслух или текстом не скажеш!

GriV
17.09.2009, 13:23
Теоретически нет никакой сложности выводить звук в бипку/тэйп, практически нужно рассчитывать микширование (смешивание каналов в 1), сам процесс который нетривиальный и профессиональные системы микширования стоят немерянно.

Если надо два канала, то как уже было выяснено http://zx.pk.ru/showthread.php?t=9452&highlight=spk ты можешь просто использовать разные биты порта 254, при этом как уже выше было сказано - можешь даже сделать из них примитивный 2хбитный ЦАП.

Если же ты хочешь на существующее массовое железо,то по простому можно делать как алко в бипер-тракере: забить на микширование как таковое и просто выводить по очереди нужные амплитуды формируя их методов ШИМ. Правда шумов интерференции (кривого наложения амплитуд и самого метода ШИМ) там будет осень многа однака и звук будет не гладкий, и теоретически при определённом наборе самплов вообще останутся одни шумы. Но в целом - это один из самых прогрессивных методов для стандартного ZX вывода многоканального малопотребляющего память звука.

На АУк можешь выводить сколько угодно каналов, разница будет в качестве микширования - аппаратно мешаются 3 канала А Б и Ц, программно можешь мешать хоть 500 каналов, но опять же как ты будешь решать вопрос микширования.

На ПЦ (где ресурсов проца поболее) микширование делали и на спикер, тот же Импульс Тракер позволял на спикер выводить и играл весьма даже на уровне (если вместо маленькой пищалки 1ваттную колонку подцепить :D)

Если же ты сумудришься разбить проигрываемую мелодию на куски (например записать вначале в wav-ку, а потом разбить), то можешь проиграть их вот так (http://zx.pk.ru/showthread.php?t=386&page=7), последние варианты вообще дают свободу в выборе размера и качества, играются же одним плеером. Но эти варианты в отличие от алоновского бип-тракера хоть и играют лучше, требуют почти все ресурсы процессора, максимум 1-2 тактов на прерывание может быть дано на пользовательские процессы. Так что для игры сойдёт только на заставку, но не на игровой процесс.

---------- Post added at 13:11 ---------- Previous post was at 13:03 ----------


Вот например в какой-то ветке показывали как через бипер ТАТУ - "Полчаса" играет, я как услыхал как это клёво так чуть не застрелился от злости, умеют ведь, а нифига нигде не применяют....
Применяют можешь мне поверить :-)

---------- Post added at 13:17 ---------- Previous post was at 13:11 ----------


в формат..... хммм, вот забыл уж, по-моему 8ми битный и сохранить.
Далее, полученный файл правдами/неправдами впихиваете в трдосный образ, и играете в 4й бит порта, например:
OUT (254),A
Уверяю что так не есть гуд, и другим такое лучше тоже не советовать :-) там сразу же в 254 порт выйдет и 4й и 3й бит и цвета и может если что ещё на этот порт подцеплено :) напрямую вавку ты только в аук можешь проиграть и всё равно будешь предварительно в его амплитуды пересчитывать

---------- Post added at 13:23 ---------- Previous post was at 13:17 ----------


А в идеале, звук следует оцифровать на реальнике.
А нечем на реале цифровать. Ни АЦП там никогда не было, ни большой памяти чтобы это оцифрованное хранить, ни большой мощности проца чтобы всё это сжимать.

psb
17.09.2009, 15:55
люди, о каком микшировании идет вообще речь? задача проигрывания звука вообще сводится к тому, чтобы получить данные для проигрывания (для ЦАПа). никто здесь речь о трекере не вел, есть просто один звуковой файл.
далее, есть 2 простых метода проигрывания звука через 1бит: играть на частоте звукового файла только старший бит звука (и это есть неправильно, но звук будет), и играть методом ШИМ или подобным (это - правильно и намного качественнее).
все остальное - выдумки:)

Black_Cat
17.09.2009, 16:12
играть методом ШИМ или подобным (это - правильно и намного качественнее).
все остальное - выдумкиесли на то пошло, то использовать ШИМ - это вообше не от большого ума, а скорее от его отсутствия.. нормальные герои используют сигма-дельта модуляцию

Vovoi
17.09.2009, 17:16
.....Уверяю что так не есть гуд, и другим такое лучше тоже не советовать :-) там сразу же в 254 порт выйдет и 4й и 3й бит и цвета и может если что ещё на этот порт подцеплено :)....
Да не, я вчера уже написал ему программу. Приедет, передам. Там уже сняты бордюры по OR и XOR, так что всё окей.


....А нечем на реале цифровать. Ни АЦП там никогда не было, ни большой памяти чтобы это оцифрованное хранить, ни большой мощности проца чтобы всё это сжимать....
Простая записывалка у меня есть, тоже бы ему отослал, дык у него реальника нет. Могу сам цифрануть и помылу отправить готовый *.trd с плейером.

Блин, как-то раньше в CoolEditPro преобразовывал WAV к виду, пригодному для плэя на ZX, но забыл, как они укладывают каждый звучащий бит формируя байт данных. Сам начинаю со старшего..... или с младшего :v2_conf3:
А сейчас что-то еле слышно музыку, или у меня подготавливающая прога на QBasic чтоли была.... не вспомню :v2_ohmy:

psb
17.09.2009, 17:37
если на то пошло, то использовать ШИМ - это вообше не от большого ума, а скорее от его отсутствия.. нормальные герои используют сигма-дельта модуляцию
я сигма-дельту записал в подобие шим:) собс-но, после фильтрации-то какая разница?

Black_Cat
17.09.2009, 17:46
я сигма-дельту записал в подобие шим собс-но, после фильтрации-то какая разница?c т.з. радиотехники - разница принципиальная! В сигма-дельте спектр гармоник будет дискретный, а в ШИМе - практически непрерывный.. поэтому в ШИМе искажения и шум неизбежны, от них принципиально невозможно избавиться!

GriV
17.09.2009, 19:06
люди, о каком микшировании идет вообще речь? задача проигрывания звука вообще сводится к тому, чтобы получить данные для проигрывания (для ЦАПа). никто здесь речь о трекере не вел, есть просто один звуковой файл.
Да нет, речь как раз была про два канала на бипку.

далее, есть 2 простых метода проигрывания звука через 1бит: играть на частоте звукового файла только старший бит звука (и это есть неправильно, но звук будет), и играть методом ШИМ или подобным (это - правильно и намного качественнее).
все остальное - выдумки
А есть непростые методы, они самые эффективные.

Да не, я вчера уже написал ему программу. Приедет, передам. Там уже сняты бордюры по OR и XOR, так что всё окей.
Всё равно ничего хорошего из этого не выйдет :) Это как дизеринг - усреднённо получаем конечное значение, но сам дизер ведь видно невооружённым взглядом (или слухом)


Простая записывалка у меня есть, тоже бы ему отослал, дык у него реальника нет. Могу сам цифрануть и помылу отправить готовый *.trd с плейером.
А у меня есть непростая :) по 21 такт на цикл опроса порта :) тоже могу цифрануть - ничего хорошего я тебе скажу. На спекке звук никогда не оцифровывали и сомневаюсь что когда-нибудь будут. Поделки типа speak easy вообще убивали звук из-за кривости реализации, а процедуры из 20 super runtimes изначально имели худший алгоритм, хотя звук и не искажали.

Black_Cat
17.09.2009, 19:43
широтно-импульсная модуляция.. в ней амплитуда пропорциональна ширине импульса

psb
18.09.2009, 00:35
c т.з. радиотехники - разница принципиальная!
у нас здесь не радиотехника! ежу понятно, что сырой спектр у сигналов будет разный, а после фильтрации-то (до полезного сигнала) что? сомневаюсь в больших отличиях.
плюс к этому, сигму-дельту программно не реализовать, а шим можно. даже на мк и то юзают шим для звука и никто другого не делает и все довольны.


Да нет, речь как раз была про два канала на бипку.
ну я где-то это упустил. но не важно. если даже есть 2 канала с одной частотой дискретизации, то единственный верный способ их смикшировать - просто сложить. любой другой способ - неправильный. не надо плодить мифы (и я не зря упомянул трекер).


А есть непростые методы, они самые эффективные.
ну так расскажи нам другой эффективный метод. только не говори, что он субъективно лучше звучит;) если бы на спеке можно было бы сделать нормальный шим - придумывать еще что-то было бы не надо.

Black_Cat
18.09.2009, 00:50
а после фильтрации-то (до полезного сигнала) что? сомневаюсь в больших отличиях.у ШИМа, в отличие от сигма-дельты избавиться от шума и искажений невозможно принципиально!
сигму-дельту программно не реализоватьзато очень просто организовать аппаратно и подключить к существующему интерфейсу спикера, а компьютеру пофиг что там подключено на выходе..

alone
18.09.2009, 00:53
Если импульс в ШИМ центрован, то все шумы по идее будут на частоте дискретизации и выше. К сожалению, центрованный ШИМ пока на бипере не писали - для этого нужно сделать столько подпрограммок, сколько будет уровней.

А вот как звучит нецентрованный: http://alonecoder.nedopc.com/zx/SHIM2.rar
Он же, пакованный дельта-кодом в 2 раза: http://alonecoder.nedopc.com/zx/SHIM3.rar (в эмуляторе надо включать lowpass filter)

Black_Cat
18.09.2009, 01:01
Если импульс в ШИМ центрован, то все шумы по идее будут на частоте дискретизации и вышебоюсь проблема лежит глубже - в самом принципе ШИМ, где при скважности приближающейся к 0 или 1 спектр сигнала будет расширяться до бесконечности.. поэтому отфильтровать его принципиально невозможно

alone
18.09.2009, 03:40
Искажения от упаковки всё равно больше.
Вот, например, 2-битный ADPCM: http://alonecoder.nedopc.com/zx/ADPCM.rar

psb
18.09.2009, 05:20
у ШИМа, в отличие от сигма-дельты избавиться от шума и искажений невозможно принципиально!
в контексте реального спектрума это совсем не важно;)

зато очень просто организовать аппаратно и подключить к существующему интерфейсу спикера, а компьютеру пофиг что там подключено на выходе..
да ясен пень, что аппаратно сделать сигму-дельту просто:) но:
1. как её подключить к 1бит спикеру - я не понял
2. все эти аппаратные примочки - ерунда, т.к. без них не пойдет. в таком ключе можно долго че-то придумывать, но от этого у всех юзеров этот девайс не появится. примерно как и саунддрайв - штука простая до безобразия, но был он мало у кого.

---------- Post added at 07:20 ---------- Previous post was at 06:56 ----------


спектр сигнала будет расширяться до бесконечности..
я не спец в цос, но позволю себе... если у нас сигнал периодический (а ШИМ такой и есть), пусть даже тоненькая иголка, то откуда возьмутся гармоники с частотой меньше несущей частоты ШИМа?

Black_Cat
18.09.2009, 06:49
если у нас сигнал периодический (а ШИМ такой и есть), пусть даже тоненькая иголка, то откуда возьмутся гармоники с частотой меньше несущей частоты ШИМа?:) ну как тебе объяснить это на двух пальцах.. :) видишь ли, любой сигнал, в т.ч. единичный (т.е. не периодический) прямоугольный импульс можно представить как сумму периодических гармонических колебаний определённых частот, при этом если импульс укоротить до нуля, то его эквивалент в виде суммы гармонических колебаний будет представлять из себя непрерывный спектр от нуля до бесконечности.. и это всего лишь для одной единственной и совсем непериодической "тоненькой иголки" :) .

---------- Post added at 06:49 ---------- Previous post was at 06:22 ----------


1. как её подключить к 1бит спикеру - я не понял:) это не просто - это очень просто! :) ..подключаешь вместо динамика или вместо магнитофона дельта-демодулятор, представляющий из себя фактически простой интегратор и имеешь некий аналог ЦАПа :)

psb
18.09.2009, 08:39
ну как тебе объяснить это на двух пальцах..
ну вот так на пальцах мне не надо, я в курсе про фурье и спектр дельта-импульса. однако спектр повторяющейся последовательности не есть спектр единичного дельта-импульса никак.


подключаешь вместо динамика или вместо магнитофона дельта-демодулятор
мы говорили о сигма-дельта, а это не оно:)
да, так можно, и даже звук будет не плохой, но хз так-то, дотянет ли он до обычного ШИМ по качеству. и тут еще вопрос реализации. если делать ваще просто (асинхронно, одним проводком с бипера) - будет лажа. а синхронный интегратор потребует больше одного сигнала из спека.

собс-но говоря, интегратор - есть фильтр НЧ, стоит задуматься... и так, и так на выходе фильтр НЧ.

Black_Cat
18.09.2009, 11:41
спектр повторяющейся последовательности не есть спектр единичного дельта-импульса никакпри этом спектр одиночного импульса никуда не девается
но хз так-то, дотянет ли он до обычного ШИМ по качествусмотря какие критерии качества :)

GriV
18.09.2009, 12:15
ну я где-то это упустил. но не важно. если даже есть 2 канала с одной частотой дискретизации, то единственный верный способ их смикшировать - просто сложить. любой другой способ - неправильный. не надо плодить мифы (и я не зря упомянул трекер).
С тобой же в соседней ветке дискутирировали, не выйдет так. вот она http://zx.pk.ru/showthread.php?t=1459&highlight=dma+usc
Если не веришь что это не так - попробуй на фоне простой музыки запусти какой нибудь ударник "бам бам". Хороший алгоритм микширования (да, есть градации!) проиграет тебе оба канала так, что ты ощутишь и громкость первого и громкость второго (как это было бы если было два отдельных компа каждый со своей акустикой), плохой алгоритм приведёт к наиболее часто встречаемому результату - звук ударников полностью "задавит" звук фоновой музыки. Так что не надо говорить про "простое сложение".

---------- Post added at 12:09 ---------- Previous post was at 12:06 ----------


ну так расскажи нам другой эффективный метод. только не говори, что он субъективно лучше звучит если бы на спеке можно было бы сделать нормальный шим - придумывать еще что-то было бы не надо.
Сходи по ссылочкам которые я давал. На реале это звучит чуточку хуже чем на эмуле, но в целом очень даже не плохо.

---------- Post added at 12:11 ---------- Previous post was at 12:09 ----------


Если импульс в ШИМ центрован, то все шумы по идее будут на частоте дискретизации и выше. К сожалению, центрованный ШИМ пока на бипере не писали - для этого нужно сделать столько подпрограммок, сколько будет уровней.
А тот образец который я давно давно тебе отсылал (только код) разве не центрованный был?

---------- Post added at 12:15 ---------- Previous post was at 12:11 ----------


это не просто - это очень просто! ..подключаешь вместо динамика или вместо магнитофона дельта-демодулятор, представляющий из себя фактически простой интегратор и имеешь некий аналог ЦАПа
Любая ёмкость (которя есть даже в соединительных проводах) тот самый интегратор для ШИМа.

psb
18.09.2009, 13:00
при этом спектр одиночного импульса никуда не девается
т.е. если на отрезке (в идеале бесконечном) идут такие иголки из дельта-импульсов, смещенных друг от друга на некоторое расстояние, то... спектры их суммируются?;)))) и бесконечно малые амплитуды всех гармоник превращаются в бесконечно большие?;))) как бы не так! это уже другой сигнал и спектр у него другой. и не вижу причины для появления гармоник с частотой ниже частоты повторения иголок. т.е. если иголки прут на 1 МГц, то ниже 1 МГц есть только постоянка.


Хороший алгоритм микширования (да, есть градации!) проиграет тебе оба канала так, что ты ощутишь и громкость первого и громкость второго (как это было бы если было два отдельных компа каждый со своей акустикой),
извини, но... это бред:) я помню ту дискуссию:) совсем недавно опять была ветка про микширование и там ясно сказали, что то, что ты говоришь - невозможно в принципе, ибо ты ограничен динамическим диапазоном цифровой системы. тебе надо улезть в этот диапазон. и правильно без искажений - только сумма. а то что тебе субъективно больше нравится другой результат, так ты звук коверкаешь:)

Сходи по ссылочкам которые я давал.
нет, ты словами расскажи, че толку слушать-то:)

а вообще, опять эти наши споры может рассудить только Barmaley_m.

Black_Cat
18.09.2009, 17:35
если иголки прут на 1 МГц, то ниже 1 МГц есть только постоянка.:) ШИМ на Спектруме используют в звуковом диапазоне частот, а фактически от 0 до ~300кГц, следовательно весь этот диапазон засран гармониками, от которых никакими способами не избавиться
Любая ёмкость (которя есть даже в соединительных проводах) тот самый интегратор для ШИМа.:) интегратор-то он интегратор, вот только интегрирует он так же и шумы, от которых избавиться в ШИМе невозможно принципиально

psb
18.09.2009, 17:58
ШИМ на Спектруме используют в звуковом диапазоне частот, а фактически от 0 до ~300кГц
если несущая частота шим будет 100 кГц, это уже супер:) будут только шумы квантования (хотя, конечно же, на практике еще мож че будет, хз).

вот только интегрирует он так же и шумы, от которых избавиться в ШИМе невозможно принципиально
так-так. если интегрировать шум, то он что? правильно, задавится интегратором;) и если давить фильтром всё выше 20кГц при несущей шима в 100кГц, то шумы будут, но не от шима, а от низкой разрядности (это справедливо будет и для сигмы-дельты).

alone
18.09.2009, 18:07
А тот образец который я давно давно тебе отсылал (только код) разве не центрованный был?
Не помню такого.

Black_Cat
18.09.2009, 18:34
если несущая частота шим будет 100 кГцбоюсь что ШИМ как раз редко используют с несущей, т.к. это съест все ресурсы Спектрума, как по быстродействию, так и по объёму ОЗУ. А при использовании на частоте сигнала - помехи неизбежны.

GriV
18.09.2009, 21:32
извини, но... это бред я помню ту дискуссию совсем недавно опять была ветка про микширование и там ясно сказали, что то, что ты говоришь - невозможно в принципе, ибо ты ограничен динамическим диапазоном цифровой системы
Это не бред, а тот кто это сказал просто никогда не пытался микшировать звук или со слухом у него плоховато если микшировал и говорит что всё просто.


нет, ты словами расскажи, че толку слушать-то

а вообще, опять эти наши споры может рассудить только Barmaley_m.
Ну вот начались пальцегнутия ;-) а без тузов можем обойтись? :-)
Звучит хорошо, это словами, АЧХ в той же ветке есть, образцы сэмплов тоже :-)

---------- Post added at 21:32 ---------- Previous post was at 21:31 ----------


Не помню такого.
Кусок генсовского кода это был.

psb
19.09.2009, 14:21
боюсь что ШИМ как раз редко используют с несущей
а ШИМ бывает без несущей??? так это тогда не шим. тогда и споры про спектр смысла не имеют, хз че там будет.


Это не бред
математически - это бред. так не бывает.


Ну вот начались пальцегнутия ;-) а без тузов можем обойтись? :-)
не можем:) придет чел и скажет как правильно с т.з. цос. и поставим на этом точку. а ветку я посмотрю еще раз.

---------- Post added at 16:21 ---------- Previous post was at 16:05 ----------

нашел, вот тебе ссылочка про микширование звука. если тебя и это не убедит...
http://zx.pk.ru/showthread.php?t=10717

Barmaley_m
20.09.2009, 07:52
Это не бред, а тот кто это сказал просто никогда не пытался микшировать звук или со слухом у него плоховато если микшировал и говорит что всё просто.
Насколько я понял, ты говоришь о микшировании с учетом психоакустики? Смешивание сигналов в разных пропорциях, подстраиваемых динамически в зависимости от того, что в этих сигналах содержится?

Я заметил, что современная музыка, в отличие от музыки 80х годов, делается такими методами. Простым смешиванием (в постоянных пропорциях) звука инструментов и ударников нельзя добиться того, чтобы басы или ударники звучали так выразительно. Это да.

Но только все это надстройки над простым смешиванием с помощью сложения. Сигналы складываются по следующей формуле:

y(i) = a*x1(i) + b*x2(i)

В обычном (простом) случае коэффициенты a и b постоянны во времени, а в случае "более совершенных алгоритмов" они меняются, но все равно они меняются медленно по сравнению с самими сигналами x1(i) и x2(i). Поэтому, в случае спектрума, если так уж хочется сделать "профессиональное" микширование - то алгоритм, вычисляющий новые значения a и b, может выполняться по прерываниям, а между ними смешивание звука все равно будет происходить путем сложения с постоянными пропорциями.

Теперь что касается ШИМ и других методов синтеза звука на бипере. Выбор, в общем-то, таков: или ШИМ, или сигма-дельта модуляция (Noise Shaping 1го порядка), или Noise Shaping 2го порядка.

С точки зрения теории, последний метод является самым лучшим (хотя требует бережного обращения). С минимальной частотой дискретизации на выходе он позволяет реализовать наилучшее качество звука. Но сигнал на выходе получается сложным, рассчитать его на спеке в реальном времени невозможно, поэтому приходится его рассчитывать предварительно и хранить в памяти. И памяти нужно много.

Я недавно делал на PIC простенький генератор звука с использованием этого метода. У меня было 64кБ ПЗУ (512кБит), и проигрывал я эти биты на частоте 44100Гц. Получилось 11 секунд звука. Но качество звука получилось весьма отстойным (особенно без хорошего фильтра на выходе). Чтобы получить хорошее качество звука этим методом, нужно в несколько раз повысить частоту дискретизации - и тогда всей памяти Спектрума, даже если Z80 справится с такой скоростью, хватит на пару секунд звука. Нонсенс.

Делал я недавно и другую штуку на основе PIC. Неплохое качество звука (на уровне телефонного) удалось получить с помощью ШИМ на несущей частоте 32кГц. Правда, при этом ширина импульсов у меня могла принимать 256 различных значений, а это соответствует частоте дискретизации на выходе порядка 8Мгц... Noise Shaping 2го порядка на этой частоте справился бы куда лучше.

Так что все зависит от возможностей реализации. На Спектруме я бы наверно пробовал делать нечто, совмещающее Noise Shaping и ШИМ... То есть ШИМ с вариацией ширины импульса в небольших пределах, что соответствовало бы 2-4 битному ЦАП... А данные для этого ШИМ подготавливать с помощью Noise Shaping, возможно, более высокого порядка, чем 2.

ШИМ действительно имеет принципиально неустранимые искажения. Но в контексте Спектрума эти искажения, скорее всего, незначительны по сравнению с прочими искажениями, шумом квантования и т.д.

Центрованный ШИМ дает меньше искажений, чем нецентрованный, но я не проверял на практике, насколько это ощутимо на слух и стоит ли оно затраченных усилий.

GriV
20.09.2009, 11:15
Насколько я понял, ты говоришь о микшировании с учетом психоакустики? Смешивание сигналов в разных пропорциях, подстраиваемых динамически в зависимости от того, что в этих сигналах содержится?
Возможно да.
Логика такая что просто смешивание амплитуд даёт фиговенькое смешение.
Психоакустика - для меня это искажение звука с учётом восприятия слухом. Оно тут вроде как не причём.
Я же специально пример привел - что если ты запустишь одновременно на двух разных физически звуковых системах насыщенную ударными (т.е. резкими переходами амплитуды или данными с высоким динамическим диапазоном) а на второй медленную спокойную мелодию - то в итоге ты будешь слышать и первое и второе. Если же ты возьмёшь "дешёвый" алгоритм микширования и будешь выводить это на один акустический тракт, то получишь полное пропадание медленной мелодии в момент сильной активности динамически перегруженной мелодии. Психоакустическое восприятие мне кажется тут совершенно не причём, тут именно разговор о качестве смешения - либо ты слышишь либо нет.
В терминах АЧХ это значит что в момент смешения плохой алгоритм микширования "теряет" частоты медленной мелодии (что ухо, как очень точный инструмент чувствует), откуда возможно следует и более правильный алгоритм смешения - разложение в частотные ряды обоих источников, смешение их частотных компонент и последующее восстановление. в амплитуды.

dosikus
20.09.2009, 12:31
Не уверен что спектрум вытянет , но посмотри здесь :
http://www.romanblack.com/BTc_alg.htm

psb
20.09.2009, 18:16
GriV, ну ты приколист все-таки:)


то получишь полное пропадание медленной мелодии в момент сильной активности динамически перегруженной мелодии
никакое пропадание ты не получишь в принципе. с чего что-то должно пропасть-то??? если ты возьмешь микрофон и будешь с него записывать в файл, и сделаешь 2 эксперимента:
1. будешь одновременно проигрывать на 2х колонках разный 15-битный саунд,
2. будешь на одной колонке проигрывать просто сложенный получившийся 16-битный саунд.
при чистом эксперименте ты получишь ровно одно и то же (т.е. если ты вычтешь 1й результат из 2го - получишь максимум шумы, но не потерянную звуковую информацию).

то, о чем говоришь ты - и есть именно психоаккустика. при ударнике ухо не слышит всего остального, но это не означает, что кроме ударника ничего нет.


В терминах АЧХ это значит что в момент смешения плохой алгоритм микширования "теряет" частоты медленной мелодии
как сложение может терять частоты??? подумай сам.


разложение в частотные ряды обоих источников, смешение их частотных компонент и последующее восстановление. в амплитуды.
лол:))) ты, всё-таки, изучи ЦОС, а потом работай с ним. абсолютно никакой разницы нет, складывать сам сигнал или его фурье-образ. фурье - это просто другой образ того же самого сигнала!

ради эксперимента возьми 2-3 сигнала с разными частотами и попробуй поэкспериментировать с ними. пораскладываешь в фурье, поскладываешь обратно и все поймешь. а рассуждать о сферических конях...

GriV
20.09.2009, 20:54
2psb> Ты невнимательно читаешь. Я тебе пример привёл, протестируй это хоть на компе на своём хоть на буке, что там у тебя есть. Тогда и поймёшь про что я говорю.
2dosikus> не понял я ссылку, там показывается тот самый интегратор на ШИМ/ИКМ, причём тут микширование?

dosikus
20.09.2009, 21:09
не понял я ссылку, там показывается тот самый интегратор на ШИМ/ИКМ, причём тут микширование?

И в самом деле , при чем тут микширование , если я дал ссылку в ответ на это : Как на бипере проспикать? :biggrin:

---------- Post added at 21:09 ---------- Previous post was at 20:59 ----------

Barmaley_m, Давно уже и полифонию на шим получили :
http://www.microchip.su/showthread.php?t=4685&highlight=%CA%E2%E0%F0%F2%E5%F2
А в чем дело -тебе уже давно обьяснили , но слушать ты не хочешь .
На асме этого не сделаешь.

psb
20.09.2009, 22:25
Я тебе пример привёл, протестируй это хоть на компе на своём хоть на буке, что там у тебя есть. Тогда и поймёшь про что я говорю.
лучше ты поизучай цос и почитай про психоакустические модели (про это еще писали в конце 90х, касалось сжатия мп3). спорить дальше бесполезно с такими убеждениями.

Barmaley_m
22.09.2009, 05:50
Barmaley_m, Давно уже и полифонию на шим получили :
http://www.microchip.su/showthread.php?t=4685&highlight=%CA%E2%E0%F0%F2%E5%F2
А в чем дело -тебе уже давно обьяснили , но слушать ты не хочешь.
А я что, когда-то с кем-то спорил, что на ШИМ нельзя сделать полифонию? Что-то не припоминаю такого. Речь вроде шла о воспроизведении произвольных звуков - а в это понятие входит и полифония.

И последняя твоя фраза тоже не совсем понятно, к чему относится. Что мне объясняли, когда и где?


На асме этого не сделаешь.

Чего на асме не сделаешь? Полифонии на ШИМ? Ты имеешь в виду аппаратный ШИМ PIC-контроллеров?

dosikus
22.09.2009, 23:25
Чего на асме не сделаешь? Полифонии на ШИМ? Ты имеешь в виду аппаратный ШИМ PIC-контроллеров?

Я говорю про то на что дал ссылку . Полифония под управлением OSA.
На асме это нереально.

---------- Post added at 23:25 ---------- Previous post was at 23:23 ----------


А я что, когда-то с кем-то спорил, что на ШИМ нельзя сделать полифонию? Что-то не припоминаю такого. Речь вроде шла о воспроизведении произвольных звуков - а в это понятие входит и полифония.


Не передергивай , я это то же не озвучивал . Сказано было : на PIC сделана полифония - и не более.

Barmaley_m
23.09.2009, 01:53
Я говорю про то на что дал ссылку . Полифония под управлением OSA.
На асме это нереально.
То есть ты считаешь, что на OSA можно сделать нечто такое, чего нельзя сделать на асме?

dosikus
23.09.2009, 21:35
То есть ты считаешь, что на OSA можно сделать нечто такое, чего нельзя сделать на асме?

В самую точку. Нет если конечно есть уйма времени (полагаю не меньше года), то можно и на асме извратится. Но за это время все уйдет далекооо вперед. OSA это только часть вкусностей в плане использования С.
И все же про асм - попиши чего либо на асме для PIC24.
Все сразу поймешь . Скажешь и 18 хватает , но посмотри цены на 24 и их возможности - сказка просто...

andrews
23.09.2009, 21:38
А у Freescale-а 32-битники есть чуть дороже $2 и чего?

Barmaley_m
24.09.2009, 02:33
В самую точку. Нет если конечно есть уйма времени (полагаю не меньше года), то можно и на асме извратится. Но за это время все уйдет далекооо вперед. OSA это только часть вкусностей в плане использования С.
Вот как раз для внутренних циклов синтеза звука многозадачная ОС - не самый подходящий инструмент, на асме можно контролировать ход исполнения программы куда точнее. А это критично при программном синтезе звука на всяких ШИМах, если нет нормального ЦАП или DMA.

Твое утверждение "на асме нереально" неверно уже хотя бы потому, что сама операционка (OSA или другая) написана на асме или компилирована на асм.

А вообще сделать многозадачное ядро - это сама по себе очень интересная задача, полезная для развития профессионализма.
И все же про асм - попиши чего либо на асме для PIC24.
Я писал на асме для dsPIC33... Действительно очень "вкусный" проц, и учитывая, что эта серия идет даже дешевле PIC16 и PIC18, то я планирую для будущих проектов именно 16-битные пики рассматривать в качестве платформы.

Для тех задач, которые я тогда решал, программирование на C было неприемлемо (нужно было отмерять микросекунды), но для других задач, где требуются сложные алгоритмы и некритична скорость - типа TCP/IP - не спорю, можно будет и на C попрограммировать.

dosikus
24.09.2009, 19:55
Твое утверждение "на асме нереально" неверно уже хотя бы потому, что сама операционка (OSA или другая) написана на асме или компилирована на асм.

В корне неверно , чем гадать - сходи и изучай : http://wiki.pic24.ru/doku.php/osa/ref/intro
Исходники свободно лежат. Ты еще вспомни что любой компилятор переводит С в асм и только потом в хекс. Для конечного пользователя это прозрачно.
И я не говорю , что асм надо бросать - асм знать нужно. Но писать на нем полностью программу - извини меня это извращение.

Barmaley_m
25.09.2009, 08:21
В корне неверно , чем гадать - сходи и изучай :
А что конкретно в твоей ссылке опровергает мое высказывание, можешь пояснить? А то я тоже могу тебя отправить читать книжки по основам программирования или архитектуре операционных систем.

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

И вообще, с твоей стороны слишком опрометчиво делать выводы, на чем следовало бы реализовывать мой проект (си или ассемблер), не ознакомившись с техническими требованиями к нему. Такой подход может завести не в ту степь :)

dosikus
25.09.2009, 17:57
А что конкретно в твоей ссылке опровергает мое высказывание, можешь пояснить?

Не сомневаюсь в твоей квалификации . Но все таки скажу - у тебя видно много свободного времени , если пишешь на асме.

Повторюсь:я выше говорил , что знать ассемблер необходимо , небольшие проекты под себя или ответственные куски кода это да ,но вот писать на нем полностью...
Еще один большой и жирный минус - это непереносимость прог на асме.
Причем как ты мог заметить это не только мое мнение - см. microchip.su

Barmaley_m
26.09.2009, 07:23
Но все таки скажу - у тебя видно много свободного времени , если пишешь на асме.
Я выбираю инструмент сообразно решаемой задаче. Иногда наиболее подходящим инструментом оказывается ассемблер, а иногда - языки высокого уровня, в том числе и интерпретируемые. На си писать легче, не спорю. За ассемблер если берусь - то не от избытка времени, а по необходимости. Думаю, что остальные рационально мыслящие люди (кто владеет и асмом, и другими языками) поступают точно так же. В этом подходе нет ничего особенного.

Еще один большой и жирный минус - это непереносимость прог на асме.

О переносимости программ на си и сопутствующих проблемах можно много рассуждать, но это к теме совсем не относится: изначально речь шла о реализуемости, а не переносимости.

alone
18.10.2013, 17:21
Вот, например, 2-битный ADPCM: http://alonecoder.nedopc.com/zx/ADPCM.rar
Обновлено: поддержан ATM Turbo 2. То же с дельта-плеером: http://alonecoder.nedopc.com/zx/SHIM3.rar