Музыка из кейгенов. Как это работает?

    Еще давно очень многих интересовал один вопрос: «Эта программа занимает всего 100 кб, что за музыку она воспроизводит? Как это работает?»

    Так вот, называется это чудо – Трекерная музыка. И что самое главное – она занимает очень мало места, в отличие от .mp3 или .wav. В современных популярных ОС трекерные файлы (MOD, XM, S3M, IT и пр.) проигрываются большинством медиаплееров, например, Winamp, VLC, Amarok, Audacious и другими.

    Скачать такую музыку можно, например отсюда — keygenmusic.net, или отсюда www.modarchive.org. Это отнюдь не единственные ресурсы, стоит только обратиться к поиску.

    Для того, чтобы воспроизвести такую музыку в своей программе, нам потребуется минимальное знание C++, а также minifmod, доступный в исходниках. Как заявляют разработчики, minifmod добавит всего 50 кб к вашему exe-файлу (без учета сжатия).


    Итак, краткая теория закончилась, приступаем к программированию. Для наших тестов – скачиваем все необходимое отсюда www2.zippyshare.com/v/26128618/file.html (в архиве исходники тестового проекта, сам minifmod, один музыкальный файл, конвертер, и пр.)

    Этап 1. Нам необходимо заполучить композицию в формате *.xm либо* .mod (eсли у вас файл в формате *.mod – его необходимо перевести в формат .xm, воспользовавшись конвертором mod2xm)

    Этап 2. Затем открываем Table extractor, меню File – Load и указываем наш файл *.xm. Настройки будут следующие:


    После нажатия на кнопку Go!, в папке с файлом .xm, появится файл Result.txt. Переименуйте его в music.h и замените файл \loadmusic\music.h. В этом файле наш музыкальный трек, который мы будем воспроизводить.

    Этап 3. Создаем новый проект, и подключаем к нему всё, что лежит в lib и loadmusic. Будем выглядеть это примерно так:


    Этап 4. Т.к. в проекте файлы в старом стиле “C”, то студия требует, чтобы были отключены Precompiled Header, для этого в свойствах проекта их отключаем (в Visual Studio -> свойства поекта -> C/C++ — Precompiled Headers — Not Using Precompiled Headers)

    Этап 5. Самое главное – осталось только включить музыку и пусть играет ))) Исходный файл точки входа у меня получился следующий:
    #include <iostream>

    #include "loadmusic\loadmusic.h"
    #include "lib\minifmod.h"

    #define WIN32_LEAN_AND_MEAN // this will assume smaller exe

    FMUSIC_MODULE *mod;     // fmod music handler

    using namespace std;

    int main()
    {
      cout << "Press 'p' to play music " << endl << "'s' to stop" << endl << "'e' to exit" << endl;

      char i('p');
      do
      {
        switch(i)
        {
        case 'p':
            if (mod == NULL) // mod handle is free? (thouh it will work fine with other loaded audio devices)
            {
              // We defined our music file to be loaded in LoadMusic.cpp //
              //=============================================================//
              loadmusic(); // Call & set ready memory to load the music
              if(!FSOUND_Init(44100, 0)) // intialize memory for sound
              {
                return 1;
              }

              mod = FMUSIC_LoadSong(NULL, NULL); // handle = LoadSong()
              FMUSIC_PlaySong(mod); // Play it (from memory)
            }

          break;
        case 's':
            if (mod != NULL) // handle is loaded (playing)?
            {
              FMUSIC_FreeSong(mod); // Free memory (handle)
              FSOUND_Close(); // Close it (stop it from playing)
              mod=NULL; // make handle to be Free again
            }
          break;
        }

        cin >> i;
      }
      while(i != 'e');
              
      if (mod != NULL) // music is on?
        {
          FMUSIC_FreeSong(mod); // Free it from memory (the handle - "mod")
          FSOUND_Close(); // Close Music
        }

      return 0;
    }

    * This source code was highlighted with Source Code Highlighter.


    По-умолчанию музыка начинает сразу же играть. Если ввести ‘s’ – то она прекращается, ‘e’ – выходим из программы.

    Какой же размер файла получился?
    Тестирование проводил на VS 2010 Express Edition. Я установил использование статической линковки, после чего получился exe размером 166 кб. Для того, чтобы уменьшить размер – сжимаем его с помощью upx, с максимальной степенью сжатия -9. После сжатия файла, на выходе – файл размером 84 кб, что довольно неплохо!

    UPD: возможно у кого-то не окажется студии под рукой, чтобы скомпиллировать. Вот готовый exe, размером 84 кб скачать
    Share post

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 112

      +15
      Теперь осталось выяснить, как умельцы в 64Кб умудряются запихать 3д-графику (с музыкой, но с ней мы уже разобрались), которая даже на современных процессорах может подтормаживать.
        +16
        Чистая математика. Графика рассчитывается на лету, а не создается с помощью наложения готовых текстур.
        Отсюда и малый размер и тормоза.
          +28
          Теперь осталось выяснить, как умельцы в 64Кб умудряются запихать формулы, которые расчитывают на лету 3д-графику, которая даже на современных процессорах может подтормаживать.
          • UFO just landed and posted this here
            • UFO just landed and posted this here
                +3
                Дом, который построил Джек! :)
                  –3
                  Капитан, браво!
                  0
                  Только в каждой хромосоме по 50-250 млн оснований [1]
                –1
                Возможно, процедуры пишут на асме, а не в компиляторах, которые лепят кучу лишнего кода. Плюс оптимизация.

                «Умельцы» делают же демку QNX на одной дискете с простейшим браузером и редактором.
                  0
                  Демку RT OS с браузером на одной дискете?

                  Пруф, пожалуйста.
                  0
                  Некоторые туда умудряются ещё и синтез речи затолкать :)
                    0
                    Я на ZX-spectrum с его 48кБ так баловался. Правда звук не очень был — 1 битный.
                  +1
                  > Графика рассчитывается на лету

                  Ты, наверное, имел ввиду, что текстуры/модели рассчитываются при запуске, а под
                  «рассчитываются на лету» — работу шейдеров? ;)
                  +3
                  При первом запуске эти демки долго генерируют текстуры и прочие ресурсы, коих набирается на десятки мегабайтов.
                    –10
                    А разве текстуры и прочие ресурсы в этом случае берутся не из библиотек DirectX?
                      +6
                      Откуда библиотека DirectX знает например о моей текстуре дерева?
                        0
                        У директИкс всего пара встроенных текстур (например, логотип, который нарисован на кубике из dxdiag), и они н6е представляют интерес для демостроителей. А вот, скажем, сгенерированная текстура фрактала может выглядеть весьма красиво (и код для генерации этой текстуры в любом разрешении достаточно мал).
                          +3
                          Битва двух труЪ
                            +2
                            Вообще то на аве xn_p2a не твёрдый знак, а ять :)
                              +3
                              И не только на аве
                              +2
                              кто Ъ-нее — «Ъ» или Ѣ? :)
                                0
                                Ять!
                          +1
                          Как раз главное сделать так, чтоб оно не подтормаживало. Во-первых большинство демо используют технологии pixel shaders (чаще всего 2.0 или 3.0) и OpenGL (это уже реже). Во-вторых большинство разработчиков пишут код под последние версии видео карт, чтоб обработка шла на ней а не центральном процессоре, поэтому у некоторых демо можно видеть ограничение на производителя (часто Nvidia) или на определенную семью видеокарт. Больше всего данных и в играх и в демо занимают текстуры. Например ребята из .theprodukt их генерируют на основе нескольких простых заготовок и фильтров. Если знаете английский можно посмотреть их доклад об этом — www.vimeo.com/3598063
                            +1
                            Теперь осталось выяснить, как умельцы в 64Кб умудряются запихать 3д-графику (с музыкой, но с ней мы уже разобрались)

                            Больше всего данных и в играх и в демо занимают текстуры. Например ребята из .theprodukt их генерируют на основе нескольких простых заготовок и фильтров. Если знаете английский можно посмотреть их доклад об этом — www.vimeo.com/3598063

                            Вот, как создаётся это 3D разобрались, теперь осталось выяснить, как делают эту «трекерную музыку». Ведь там бывают очень красивые вещи. Как в кигенах, так, к примеру, и в первой Unreal.
                              0
                              с обычными midi знакомы? дорожки, ноты и тип инструмента. добавив еще несколько параметров и запихав в файл сэмплы звучания инструментов получаем трекерную музыку (это я вам как человек в свое время писавший говорю). а вот в демках (особенно маленьких, по типу .theproduct) там почти аналогичная ситуация, только сэмплы не хранятся, а высчитавыются (в частности у fb свой программный синтезатор, и делиться они им очень не горят).
                              +1
                              трекерную музыку, как ни странно, делают в трекерах =)

                              один из современных: www.renoise.com/

                              .xm же можно получить из ModPlugTracker, например.
                          –26
                          Последний раз пользовался кейгеном году в 2004, они еще есть? там все еще есть музыка?
                            +8
                            Они есть, но уже, видимо, стали загадкой древних. Наверно те, кто строил пирамиды передавал из поколения в поколение секрет как запихнуть HD 3D анимацию и длинную MP3 дорожку в 100Kb иконку с кейгеном животворящим!!!
                              +17
                              понт засчитан. я теперь тоже могу позволить купить себе лицензионное ПО.
                                +7
                                Причем здесь понт? Мне, действительно, интересно, и я не знаю как выглядят кейгены сейчас и есть ли они вообще. Дату могу точно могу сказать, потому что в 2004 поступил в универ, а там видну и остальной софт раздают по программе MSDN AA, кроме того, студию можно скачать по программе DreamSpark. Остальные программы, которые я пользуюсь — свободны.
                                  +5
                                  Подарите мне Creative Suite 5. Пожаалуйста!
                                  –3
                                  Не лгите
                                    +3
                                    а зачем сейчас в век интернетов кейгены то, на популярные вещи ключ можно качнуть, для многих вещей надо эмуль ставить, а шараварную мелкую фикню лучше вообще не использовать так как полно опенсорсных аналогов… я вот например вообще не припомню когда кейген в последний раз запускал… ах вот да есть еще игрушки со старфорсом, но там ключом не обойтись, там патченый бинарь обычно приходится качать… хотя игрушки кстати дочери лицензионные покупаю, стоят примерно так же как и не лицензионные…
                                    пример можете привести где нужен кейген?
                                      +6
                                      кто не ставит Windows, тому и кряки не нужны
                                        +3
                                        Пользователи, например, Zend Studio или продуктов Adobe под Linux не одобряют этот коммент :)
                                    +17
                                    Когда пользовался кейгенами, всегда вздрагивал от этой музыки. И пытался понять, зачем вообще она.
                                      +1
                                      А меня больше всего озадачивает псевдо-графика и куча других букв окружающих серийник в .nfo файлах. Это ж сколько энтузиазма и свободного времени у кого-то! но для кого стараются — никак не пойму.
                                        +14
                                        Это культура 0day.
                                          0
                                          Что значит 0day?
                                            –1
                                              +3
                                              Это фигня, есть еще варезный 0дей

                                              0-day (pronounced as zero day) — This refers to any copyrighted work that has been released the same day as the original product, or sometimes even before. It was considered a mark of skill among warez distro groups to crack and distribute a program on the same day of its commercial release.
                                                0
                                                так бы и сказали «софтверная пиратская экранка» ;)
                                              0
                                              На гугле забанили?
                                                +13
                                                Кто тут меня искал?
                                              +3
                                              Для вас же стараются. А NFO как правило генерируются автоматически из заготовки.
                                                0
                                                традиции крак-сцены
                                                ru.wikipedia.org/wiki/ASCII-графика
                                                +2
                                                А я до сих пор подскакиваю от этой музыки… Жаль, что не все кейгены её позволяют отключить. Хоть бы потише делали, что ли…
                                                  +10
                                                  палитесь
                                                    0
                                                    Сейчас, всё чаще, используется плавное нарастание громкости этой самой музыки.
                                                    0
                                                    только вчера по поводу этой музыки озадачен был вопросом регулировки звука, но не общего а отдельных приложений (на winxp)
                                                    (indievolume не захотел уменьшить звук определенного приложения, возможно потому что триал)
                                                    +3
                                                    Интересно, а откуда пошла традиция добавлять в кейген музыку?
                                                      +5
                                                      Еще со времен intro/cracktro на Commodore 64.
                                                        +1
                                                        на спектрумах, например, очень любили озвучивать так загрузчики всякие

                                                        И судя по всему, дети тогдашних програмистов и просто юзеров выросли и стали програмерами кейнегов… а ностальгия осталась с детства
                                                          +1
                                                          Спектрум тут вторичен, все началось именно на C64 и AppleII
                                                        +6
                                                        добавьте тег демосцена
                                                          +1
                                                          http://chiptune.com/ Неплохой ресурс, посвященный chiptune, оформление соответствующее, полный олдскул.
                                                          • UFO just landed and posted this here
                                                          • UFO just landed and posted this here
                                                              +1
                                                              а я потом еще тащил своих приятелей слушать свои поделия… бедные люди… :)
                                                              • UFO just landed and posted this here
                                                                  +1
                                                                  у меня тоже не сохранилось, дискеты покоцались пока в армии был…
                                                                  • UFO just landed and posted this here
                                                                      +1
                                                                      ага. помню с помощью сверла дискета на 720Кб превращалась в 1,44… потом правда выяснилось что если сверлить то стружка попадает на магнитный слой и царапает его, стал гвоздем пропаивать и наплывы счищать, не так красиво, зато без стружек :)
                                                                      • UFO just landed and posted this here
                                                                          0
                                                                          >ага. помню с помощью сверла дискета на 720Кб превращалась в 1,44
                                                                          хм, а это как так?:)
                                                                            0
                                                                            объем дискеты определялся по наличию отверстия (симметрично отверстию защиты от записи). Соответственно, просверлив DD дискету в нужном месте можно было ее потом отформатировать как HD.
                                                                              0
                                                                              Спасибо, не знал :)
                                                                +12
                                                                  0
                                                                  А теперь в эфире Кейгене де Майкрософте де Оффисе
                                                                    +11
                                                                    Идея: с музыкой передавать ещё и серийники (закодировано)
                                                                    Звонишь на радио и говоришь «поставьте мне музыку к последнему оффису»
                                                                  +1
                                                                  ээх… первое что я писал когда спаял COVOX это проигрывалку вэйв файлов, всё что нужно было это пихать байты в порт таймера и чудо-музыка лилась из моего потрёпанного «Романтика»…
                                                                  т.е. написать свой трэкер типа MOD и S3M было довольно не мудреным делом, все что нужно это смешивать в правильном порядке эти самые wave-ы… ээх ностальгия… :)
                                                                    +2
                                                                    На Ковоксе разве байты не в LPT пихались? :) С постоянной частотой…
                                                                      0
                                                                      мне почему то запомнился 61 порт… а…
                                                                      точно вспомнил, это на спикер через 61h, а на ковокс прямо в LPT, почти 20 лет прошло… дико извиняюсь, напутал…
                                                                    +8
                                                                    Что, никто еще не пошутил по поводу «KATERINA/Мои Документы/Visual Studio»? :)

                                                                    Вспомнился FastTracker II. Эх… :)
                                                                      +1
                                                                      Не поверите… рабочий компьютер достался от коллеги, её звали Катерина. Чтобы не переустанавливать некоторый софт и не восстанавливать настройки для нового пользователя, решил так и оставить старого пользователя, лишь переименовав его имя. Адрес папки профиля в этом случае остался старый. Отсюда и адрес… Settings\KATERINA\…
                                                                        0
                                                                        Не гуглится, можете объяснить смысл шутки?
                                                                        +1
                                                                        У Nero 6 была шикарная музыка в кейгене.
                                                                          0
                                                                          Кейгенов к неро 6 столько было… и с разной музыкой…
                                                                            0
                                                                            Можно выпустить полноценную пластинку.
                                                                              0
                                                                              Завтра на juno.co.uk промка!
                                                                              0
                                                                              И с Чаком Норрисом! :)
                                                                              0
                                                                              Это которая с Чак Норисом на картинке?
                                                                                0
                                                                                Неро 6 легко обходился софт-краком (сам даже писал), суть в том что главное послать окну с предложением ввести ключ сигнал закрытия, а основному окну enabled, после этого можно было работать спокойно.
                                                                                  +2
                                                                                  Да-да! В кейгенах от команды Orion: keygenmusic.net/music/orion/Orion-Nero6.3.0.2.rar Мне он тоже нравится!
                                                                                    0
                                                                                    А мне очень нравилась музыка из кейгена от Borland C++Builder 6.
                                                                                    +2
                                                                                    Хоть многие и кричат на меня: «как такое можно слушать, уши режет!!111!» но я осмелюсь представить вам www.8bitpeoples.com/, где собрано ни что иное как 8-битная музыка. Мне нравится.
                                                                                      +1
                                                                                      У меня в закладках еще есть вот mmcm.ru/other.php в онлайне иногда слушаю, очень нравится
                                                                                        0
                                                                                        Обнаружилась подборочка: rutracker.org/forum/viewtopic.php?t=293536
                                                                                          +1
                                                                                          Это AY-музыка для ZX Spectrum. Оба ответственных за этот проект здесь на Хабре: автор flash-плеера AY-треков MixailV и автор самих мелодийmmcm — можете им лично высказать пожелания и предложения.
                                                                                            +1
                                                                                            Оооо, круто. Большое спасибо, что сказали! Помог им плюсиком в карму за их отличное творение
                                                                                        +1
                                                                                        А ниче музычка получилась :)
                                                                                          0
                                                                                          вот программа для iphone, которая умеет скачивать из онлайн базы треккерной музыки и проигрывать их
                                                                                            0
                                                                                            Интересно, кто эту музыку пишет. Честь и хвала им.
                                                                                              0
                                                                                              Это всегда написано в кейгене или misicdisk'е. А потом можете поискать другие произведения автора тут, если сильно понравилась композиция.
                                                                                              0
                                                                                              Для дотнетчиков code.google.com/p/minifmod4net/
                                                                                                0
                                                                                                  0
                                                                                                  Спасибо, всегда хотел узнать, откуда эта музыка берётся. Интересно.
                                                                                                    +2
                                                                                                    Хабр обсуждает кейгены и варез =)
                                                                                                      –9
                                                                                                      говнокод, читать противно
                                                                                                        +3
                                                                                                        напишете лучше?
                                                                                                          –7
                                                                                                          >#include «loadmusic\loadmusic.h»
                                                                                                          пипец

                                                                                                          >FMUSIC_FreeSong(mod); // Free memory (handle)
                                                                                                          излишние комментарии мешают читать код

                                                                                                          >mod=NULL; // make handle to be Free again
                                                                                                          лол

                                                                                                          а ты писать по-русски научись, а потом уже на си.
                                                                                                            0
                                                                                                            >а ты писать по-русски научись, а потом уже на си.
                                                                                                            здесь еды нет!
                                                                                                              –2
                                                                                                              у тебя троллефобия
                                                                                                        0
                                                                                                        Зацените моё творение пятилетней давности :) Нашел в закромах патч, 40 кб с трекерной музыкой и графикой ;)
                                                                                                          +1
                                                                                                          Слушать музыку из кейгенов — это примерно также как слушать музыку из рекламы. Никогда не понимал, почему при таком многообразии музыкальных альбомов с трекерной музыкой, люди слушают «музыку из кейгенов».
                                                                                                          Если для вас не особо принципиально, была композиция в кейгене или не была, то вот отличная подборка трекерной музыки:
                                                                                                          websound.ru/tracked-music.htm
                                                                                                            0
                                                                                                            Первым знакомством со «сценовой» музыкой, теперь уже, вероятно, для подавляющего большинства юзеров была как раз музыка из кейгенов =)
                                                                                                            0
                                                                                                            Помню писал программу для выдергивания трекерной музыки из кейгенов :) Иногда очень хорошие треки попадаются.
                                                                                                              +2
                                                                                                              Резюмирую тред свежим релизом.

                                                                                                              Insert No Coins by Razor 1911
                                                                                                              64kb intro

                                                                                                              Это самая свежая работа легендарных Razor 1911, выпущена на демопати Main в прошедшие выходные. Это не кейген, а именно 64kb intro, но все что вы любите в кейгенах здесь имеется!

                                                                                                              Качать и обсуждать: pouet.net/prod.php?which=55991
                                                                                                              Смотреть на YouTube: www.youtube.com/watch?v=DvQ_PRw_45E
                                                                                                                +1
                                                                                                                Думаю, многим понравится то, что было помещено в 4k ещё в бородатом 98
                                                                                                                scene.org/file.php?file=/parties/1998/assembly98/pc4kintr/mesha_by.zip

                                                                                                                Заняло первое место на asm98, это был настоящий прорыв.
                                                                                                                  +2
                                                                                                                  самое крышесносящее что я видел это 4 килобайтное интро Elevated by RGBA and TBC
                                                                                                                  www.youtube.com/watch?v=_YWMGuh15nE
                                                                                                                  pouet.net/prod.php?which=52938

                                                                                                                  просто нереальное для 4 килобайт

                                                                                                                  Only users with full accounts can post comments. Log in, please.