SecondReason

SecondReason

Пикабушник
35 рейтинг 1 подписчик 0 подписок 5 постов 0 в горячем
Награды:
5 лет на Пикабу
7

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

Многие возможно сталкивались с такими программами кейген и знают что такое музыка из кейгенов. Кто не знает, милости прошу к ознакомлению.

Еще давно очень многих интересовал один вопрос: «Эта программа занимает всего 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 кб, что довольно неплохо!

Оригинал статьи: http://habrahabr.ru/post/105475
Автор: Сергей Григорьев

Показать полностью 2

Когда родители не понимают что ты слушаешь...

(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ru_RU/sdk.js#xfbml=1&version=v2.3"; fjs.parentNode.insertBefore(js, fjs);}(document, 'script', 'facebook-jssdk'));Detonace!!Co se stane kdy zkombte Katharsyse a Chalupe?Totln DETONACE! :DDDPosted by Noise Facktor Crew on 6 октября 2015 г.
Отличная работа, все прочитано!