Play Siv3D!

ゲームとメディアアートのための C++ ライブラリ「Siv3D」

サウンドの拍カウント

サウンドの拍カウント

Siv3D June 2015 v2

サウンドの拍をカウントする

# include <Siv3D.hpp>

void Main()
{
	const SoundBeat beat(54500, /*♩=*/ 134);
	const Sound sound(L"Example/風の丘.mp3");
	sound.play();

	while (System::Update())
	{
		int i = 0;
		for (int s : {2, 4, 8, 16})
		{
			const auto b = beat(sound, s, s);

			for (int x = 0; x < s; ++x)
			{
				const bool on = b.beat == x;

				Circle(x + 500 / s * x, i * 100, on ? (1.0 + 2 * Pow(1.0 - b.f, 5)) * 8 : 8)
					.moveBy(70, 70)
					.draw(on ? Lerp(Palette::Orange, Palette::Gray, b.f) : Palette::Gray);
			}

			++i;
		}
	}
}