Слегка доработанный "спирограф" из недавнего видео Алексея Морозова.
Вид для печати
Слегка доработанный "спирограф" из недавнего видео Алексея Морозова.
Заметил что в эмуляторе оператор BEEP звучит тише чем оператор PLAY.
Это так и есть на реальном Векторе ? (подскажите а то я подзабыл)
На реале громкость бипера примерно равна громкости одного канала таймера. Соответственно 3 канала таймера могут звучать примерно в 3 раза громче бипера.
- - - Добавлено - - -
Уточню - суммарный сигнал 3х каналов таймера примерно в 3 раза больше сигнала бипера, но т.к. восприятие громкости звука человеком нелинейное, то громкость все же не в 3 раза выше.
Тоже уточню: сигнал с трёх каналов таймера будет в 3 раза выше только если сигналы всех каналов совпадут по фазе и частоте, обычно же разница меньше... Поэтому на слух, сигналы от BEEP и PLAY там более близки по громкости, насколько я помню, и плюс да, ещё нелинейность восприятия.
Мгновенные значения суммы каналов таймера от 0 до 3, но это не важно. Можно посмотреть с такой стороны: если принять размах сигнала одного канала за 1, то среднее значение в этом канале близко к 0.5, это же справедливо и для бипера (бейсик не умеет регулировать скважность и сигналы таймера и бипера близки к меандру). Среднее значение суммы трех каналов в 3 раза больше и =1.5.
- - - Добавлено - - -
Сравнивать средние значения звуковых сигналов - не лучший вариант, но в данном случае численно они равны амплитудам, что уже подходит лучше. Амплитуда одного канала (измеренная от среднего) =0.5, амплитуда суммы трех каналов =1.5. Но конечно есть нюанс, сигнал одного канала - меандр, сигнал суммы трех каналов зависит от частот и эффективные значения будут различаться, особенно если учитывать АЧХ дальнейшего тракта.
Вот и я про то же... Если в момент измерения частоты попадут так, что один канал будет в 1, а два других в 0, то общая амплитуда на выходе будет =1 (от минимума до максимума), а в другой момент может быть амплитуда =3, когда все три канала будут в 1. Т.е. при разных частотах на каналах амплитуда сигнала будет изменятся от 0 до 3 условных единиц. Громкость же определяется не одномоментно, а на каком-то времени звучания, как усреднённая, и для того, чтобы было превышение в три раза относительно одного канала бипера, надо чтобы фазы и частоты их совпадали всё это время. Нет совпадения фаз и частот -- средняя громкость будет меньше... В обычной музыке для Вектора, думаю, средняя громкость трёх каналов ВИ относительно сигнала бипера будет не больше, чем раза в полтора, что на слух малозаметно.
Чтобы не засорять тему конкурса напишу здесь.
В 2.996 нет ошибки в умножении, есть особенность преобразования дробных чисел из символьного представления в двоичное. В 2.5-2.995, как и в других микрософтовских бейсиках, при таком преобразовании каждая цифра после запятой в итоге приводит к отдельному делению на 10. Это компактный, но чудовищно медленный вариант. В 2.996 для ускорения используются деления не только на 10, но и на 100 и 1000. Так в разы быстрее, но появляется расхождение с микрософтом из-за того, что при каждом делении еще выполняется округление. Т.е. при делении 3 раза на 10 будет 3 округления, а при делении на 1000 только одно. Вариант 2.996 не только быстрее, но и точнее, т.к. лишние промежуточные округления только "портят" число.
Вернемся к RG2024LETO. Увидеть разницу в выполнении BEEP0.001 можно на таком примере PRINT INT(.001*1000)
2.5-2.995 напечатают 0
2.996 напечатает 1
2.996 точнее! Разница преобразования .001 в одном самом младшем бите мантиссы, который даже не видно при печати числа, но тут он сыграл. Отказываться от быстрого и более точного преобразования дробных чисел я не буду, но т.к. есть разница с классикой, то это еще один аргумент в пользу отделения таких бейсиков в отдельную ветку.
В юности играл в президента на бейсике. И тогда и сейчас интересно, откуда он взялся. Агатовцы пытаются ответить на этот вопрос.
Спрошу на всякий случай :)
10 DIM M(50),MR(12)
20 M1=34:M=4:MR=123
Правильно ли я понимаю что M и MR массива никак не пересекаюся и не конфликтуют с обычными переменными M1, M, MR ?
Да, имена массивов и скалярных переменных могут совпадать, но они будут располагаться в разных участках памяти и доступ к ним будет совершенно независимый.