Как стать автором
Обновить

Чиптюн-музыка на ATtiny4 и трехцентовом Padauk

Время на прочтение8 мин
Количество просмотров9.5K
Всего голосов 59: ↑59 и ↓0+59
Комментарии16

Комментарии 16

Отлично! Ждем проект на jack 3.5

И без батарейки, с использованием присутствующего в гнезде 3,5 питания для электретных микрофонов.

Меня во всём этом проекте потряс код, который звучит гармонично в течении 16 минут!

echo "g(i,x,t,o){return((3&x&(i*((3&i>>16?\"BY}6YB6%\":\"Qj}6jQ6%\")[t%8]+51)>>o))<<4);};main(i,n,s){for(i=0;;i++)putchar(g(i,1,n=i>>14,12)+g(i,s=i>>17,n^i>>13,10)+g(i,s/3,n+((i>>11)%3),10)+g(i,s/5,8+n-((i>>10)%3),9));}"|gcc -xc -&&./a.out|aplay
Нужна отдельная статья с разбором того, как это работает :)

Размотала белиберду в такой код:


int g( int i, int x, int t, int o)
{
  return ((3 & x
      & (i * ((3 & i >> 16 ? "BY}6YB6%" : "Qj}6jQ6%")[t % 8] + 51) >> o))
      << 4);
}

int main(void) {
  int n, s;
  for (int i = 0;; i++)
    putchar(
        g(i, 1, n = i >> 14, 12) + g(i, s = i >> 17, n ^ i >> 13, 10)
            + g(i, s / 3, n + ((i >> 11) % 3), 10)
            + g(i, s / 5, 8 + n - ((i >> 10) % 3), 9));
  return EXIT_SUCCESS;
}

Так вам удобнее будет делать разбор того, как это работает.

Напомнило одну программу, виденную ещё в 90-е, когда учился в ТГУ: крошечная программа, буквально в 2 килобайта, если правильно помню, рисовавшая на экране какие-то сложные фигуры. Причём, всё это работало под DOS, то есть вся графика была засунута в ту программу.
Есть целый жанр подобных демонстрационных программ, который называется «intro» (2K intro, 4K intro, даже 256 bytes intro бывают). Как правило, и графика, и звук там процедурные, т.е. создаются динамически при выполнении самой программы, а не хранятся в исполняемом файлы как ресурсы.
Что-такое даже вспоминается. Правда, сейчас MBR уже только на совсем старых компах водится.

Разве legacy-режим не остался? Я просто технику меняю раз в двадцать лет

Без понятия. У меня нет ни одного компьютера с UEFI, самому новому 10 лет.
у меня работает
Понял, в чём дело: у меня был запущен тот ролик с демонстрацией, хоть и с отключённым звуком, а aplay, похоже хочет монопольного доступа к устройству вывода. В общем, у меня тоже завелось.
У меня жёстко искажался звук в некоторые моменты. Исправила добавив в конце " -f U8". На разных системах aplay по умолчанию выбирает разные форматы.

Очень интересная статья!

Хотелось бы увидеть отдельную статью по работе с МК Padauk PMS150 для чайников. А именно: чем прошивать и где брать, где писать и компилировать код, язык программирования, внутренняя структура МК.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий