Powered by SmartDoc

WiiYourself!��C++�Ŋw�ԃC���^���N�V������ՋZ�p

2009�N5��18��-5/19-5/28-6/1�ŏI�X�V
����ŕF
http://akihiko.shirai.as/projects/BookWii/

�ڎ�

�Â��ǂ�C++�pAPI�uWiiYourself!�v

WiiYourself!��gl.tter���ɂ��A���ɑ��@�\��Native C++�pAPI�ł��B��4�͂ŏЉ��WiimoteLib�ɂ��.NET�‹��ł̍��@�\�E���Ղȃv���O���~���O�ƈقȂ�A�Â��ǂ�C/C++����ɂ�鍂���Œ��ړI�ȃv���O���~���O���s���邱�Ƃ����͂ł��B

�{�͂ł�WiiYourself!��C++�ɂ��R�}���h���C���v���O���~���O�‹��Ŏg���Ă݂邱�Ƃ�ʂ��āA�C���^���N�V�����Z�p�̊�ՂƂȂ�Z�p���w�т܂��B

Wiiyourself!�̓���

WiiYourself!�̃z�[���y�[�W

http://wiiyourself.gl.tter.org/

WiiYourself!�̃z�[���y�[�W

WiiYourself!�̃z�[���y�[�W�ɂ�WiiYourself!��p�����Q�[����A3DCG�\�t�gMaya�̑���A��B�J�����̐���Ȃǂ����‚��̃v���W�F�N�g���Љ��Ă��܂��Bgl.tter���͎��ۂ�FPS(��l�̃V���[�e�B���O)�Q�[���uGUN FRENZY!2�v�𐧍삷�邽�߂ɂ��̃��C�u�������쐬���Ă���悤�ł��B�ȉ��́AWiiYourself!�̃z�[���y�[�W�ɋL�ڂ���Ă���@�\�ꗗ�ł��B

�z�[���y�[�W��ǂ�ł݂�ƁAWiimoteLib�̂��ƂƂȂ���Brian Peek���̃v���W�F�N�g�uManaged Wiimote Library�v�ƌ��_�𓯂������Ă��邱�Ƃ��킩��܂��BWiiYourself!������API�Ɣ�r������ł̓����Ƃ��ċ�������̂́A�l�C�e�B�uC++�̐ÓI���C�u����(.lib)�ł���ADLL�����s�v�ł��邱�ƁADirectX�Ȃǂɂ�鋌���̃Q�[���v���O���~���O��@�ɐe�a�������邱�ƁA�����I�Ȃ���X�s�[�J�[�ւ�WAV�o�͂�4�_�̐ԊO���̌��o�ȂǏ�ɃA�b�v�f�[�g�𑱂��Ă���_����������ł��傤�B�k�āE���B�̑����̊J���҂����p���Ă��܂��BAPI�R�A�̊J����gl.tter�����W��I�ɍs���Ă��܂����A���[�����O���X�g�ł̃f�B�X�J�b�V��������r�I�����ŁA���S�҂��猤���҂܂ŗl�X�Ȑl�����p���Ă��܂��B�w�ǂ��Ă��邾���ł����E����WiiRemote���p�҂������l���āA�ǂ�ȃg�����h�ɂ���̂��������Ċy�����ł��B��������낢��Ȕ��W�����҂ł���v���W�F�N�g�ł��傤�B

WiiYourself!�̓���

WiiYourself!���e���M���_�̍ŐV�ł�2008�N7��24���Ɍ��J���ꂽ�uv1.01a�v�ł��B�Ȃ��������[�����O���X�g�ł͎����o�[�W�����ɂ�����uv1.11beta�v����������Ă��܂����A�傫�ȕύX�͂Ȃ��̂Ŗ{���ł̓��W���[�o�[�W�����ł���uv1.01a�v�ʼn�����܂��BWiiYourself!��ZIP�t�@�C���̃_�E�����[�h�œ��肷�邱�Ƃ��ł��܂��B

WiiYourself! v1.01a

http://wiiyourself.gl.tter.org/WiiYourself!_1.01a.zip

����ZIP�t�@�C���̒��ɁAWiiYourself!�̃\�[�X�R�[�h�A�ÓI�����N�p���C�u�����t�@�C���A�f���v���O�����A�������r���h���邽�߂̃v���W�F�N�g�t�@�C���A�B��̃}�j���A���ɓ�����README�t�@�C���A���C�Z���X�t�@�C���Ȃǂ��܂܂�Ă��܂��B

�C���X�g�[���Ƃ��ẮA�ǂ��Ƀt�@�C����z�u���Ă��悢�̂ł����A�{���ł͉���̂��߂�ZIP�t�@�C������𓀂����uWiiYourself!�v�t�H���_���uC:\WiiRemote\WiiYourself!�v�Ƃ����p�X�ɔz�u���邱�Ƃɂ��܂��B

WiiYourself!1.01a�̃t�H���_�\��

�Ȃ��AWiiYourself!�͂��̖��O�����I�ł����A���Ȃ���I��README�ƃ��C�Z���X�������Ă��܂��B�ȉ��A�Q�l����f�ڂ��܂��B���p���p�”\�Ƃ������ƂŁA�l�ŃV�F�A�E�F�A��ƂȂǂ�����Ă�����������͊������̂ł͂Ȃ��ł��傤���B

�Q�l��yReadme.txt�z

- WiiYourself! - native C++ Wiimote library v1.01 (c) gl.tter 2007-8 - http://gl.tter.org

����͊��S�ɖ����Ŋ��S�@�\��(���݂�)Windows�p��WiiRemote�l�C�e�B�uC++���C�u�����ł��BBrian Peek���́uManaged Wiimote Library�v(http://blogs.msdn.com/coding4fun/archive/2007/03/14/1879033.aspx)�����ƂɁA���S�ɏ��������A�g�����܂����B

���܂̂Ƃ���h�L�������e�[�V�����͂���܂���B�uWindows��WiiRemote�v�̑S�e�ƈ�ʓI�ȏ��ɂ‚��Ă�Brian�̏������݂��`�F�b�N���Ă��������B�\�[�X�R�[�h�͍L�͈͂ɂ킽��R�����g������A�f���A�v���͑S�Ă𗝉������ŏ����ɂȂ�ł��傤(����͂Ȃ��ł�)�B����ɂ‚��Ă͎��̃��[�����O���X�g�ɎQ�����Ă��������B�����‚��̎g�p�ɂ����鐧���ɂ‚��ẮuLicense.txt�v���Q�Ƃ��Ă��������B

�y�t�L�z

�EVC 2005 C++�̃v���W�F�N�g���܂܂�Ă��܂�(VC 2008�ɓǂݍ��܂��Ă�������)�B�����N�G���[��h�����߂ɁA�v���W�F�N�g�̃v���p�e�B���uC/C++�v���u�R�[�h�����v�Łu�����^�C�����C�u�����v�̐ݒ��K��������K�v������܂��B

�EMinGW�‹��̂��߂�MSYS makefile���܂܂�Ă��܂��BMSYS�v�����v�g�ɂ����āA�umake -f Makefile.MSYS�v�Ɠ��͂��Ă��������BMinGW�Ƃ������O�̃t�H���_�ƓK�؂ȃt�H���_�\���ɂ��o�C�i���𐶐����܂��B

�E�r���h�ɂ̓}�C�N���\�t�g��Driver Development Kit(DDK)���K�v�ƂȂ�܂�(HID API�̂���)�B�o�^�̕K�v�Ȃ��A�����Ń_�E�����[�h�ł��܂��B

Windows Server 2003 SP1 DDK

http://www.microsoft.com/whdc/devtools/ddk/default.mspx

�C���N���[�h�p�X��DDK�́uinc/wxp�v��lj����A���C�u�����p�X�Ɂulib/wxp/i386�v��lj����Ă��������B(���_�͂Ȃ��Ǝv���܂���)���ŋ߂̃w�b�_�t�@�C���AAPI���܂�WinDDK���g�����Ƃ��ł��܂��B

�E���C�u������tchar.h��Unicode���”\�ł��iVC�v���p�e�B�̃r���h�I�v�V�����uU�v���‚��Ă���܂��j�B

�EVC���g���Ă��Ȃ��Ȃ�A�ȉ��̃��C�u�����������N����K�v������܂��B�usetupapi.lib�v�A�uwinmm.lib�v�A�uhid.lib(DDK�������)�v�B

�yWiiRemote�C���X�g�[���Ɋւ���t�L�z

WiiRemote�͎g�p������PC�Ɏ��O�Ɂupaired�v�̏�ԁA�‚܂�Bluetooth�ڑ����ꂽ��Ԃɂ���K�v������܂��B[1]+[2]�{�^���𓯎��ɉ����Ă������ƂŁA���b�ԁA�����”\(discoverable)���[�h�ɓ���܂�(LED���_�ł��܂��ALED�̐��̓o�b�e���[���x���Ɉˑ�)�B�uNintendo RVL-CNT-01�v�Ƃ��Ĕ�������܂��B

���X�^�b�N���L�̉���F

���{���ł͊���3�͂ʼn���ς݂Ȃ̂Ŋ������܂���

�E�ؒf���@(�e�X�^�b�N����)

WiiRemote��POWER�{�^���𐔕b�����Ă��������B����Ŏ����I�ɐؒf�ł��܂��B([1]+[2]�{�^����������)�ēx�y�A�����O���[�h�ɓ����āALED�����b�_�ł��Ă����ԂŃ^�C���A�E�g������΁A���ʓI�ɓd����؂邱�Ƃ��ł��܂��B

���[�����O���X�g�ɃT�C���A�b�v���āA�t�B�[�h�o�b�N��^���A�A�C�f�B�A���������A�Q������Ƃ������[�v�ɓ����Ă��������B

http://wiiyourself.gl.tter.org/todo.htm

�����M����WiiYourself!���g���Ă���Ȃ�A���񋳂��Ă��������B�����N�𒣂点�Ă������������Ǝv���܂��B�y����ŁI

gl.tter (glATr-i-lDOTnet)

�Q�l��yLicense.txt�z

- WiiYourself! - native C++ Wiimote library v1.01 (c) gl.tter 2007-8 - http://gl.tter.org

�����C�Z���X�F����WiiRemote���C�u�����͂����Ȃ闘�p(���p�܂�)�Ɋւ��Ă��A�ȉ��̏����ɂ����Ė����ł��B

(1)���ځA�Ԑڂɂ�����炸�l�����‚��邽�߂Ɏg��Ȃ��ł��������B�R�����p���܂݂܂�������Ɍ��������Ƃł͂���܂���(�G�S��@���̂͂������Ƃł��E��)�B

(2)�o�C�i���`���̂����Ȃ�z�z(��F���Ȃ��̃v���O�����Ƀ����N���ꂽ����)�ɂ����Ă��A�ȉ��̃e�L�X�g��ReadMe�t�@�C���A�w���v�t�@�C���AAboutBox��X�v���b�V���X�N���[���Ɋ܂߂Ă��������B

contains WiiYourself! wiimote code by gl.tter

http://gl.tter.org

(3)�\�[�X�R�[�h�`���̂ǂ�Ȕz�z�`���ł��A�I���W�i���̎��̒��쌠�\����ύX���Ȃ��ŕێ����邱��(���Ȃ����������ύX�͒lj��ł��܂�)�A�����Ă��̃��C�Z���X�����܂߂Ă��������i���̃t�@�C�������Ȃ��̔z�z���Ɋ܂ނ��A���Ȃ����g�̃��C�Z���X���ɓ\��t���Ă��������j�B

(4)���Ȃ����g�����Ȃ菑�������Ȃ�����A���̃R�[�h�ɋ������郉�C�u�����𐶂ݏo���s�ׂɎg��Ȃ��ł�������(��F���̌���ɃR���o�[�g����ȂǁA�܂����k���Ă�������)�B

���̑���A��ɐV�@�\�A�o�O�t�B�b�N�X��A�C�f�A��񋟂��Ă��������B

gl.tter (http://gl.tter.org | glATr-i-lDOTnet)

WiiYourself!�t���f���̃e�X�g

���āA���C�Z���X�Ȃǂ𗝉�������A�܂���Demo�t�H���_�ɂ���uDemo.exe�v���N�����Ă݂܂��傤�B���O��WiiRemote�ɐڑ����Ă����̂�Y�ꂸ��(�ڍׂ͑�3�͂ʼn��)�B

WiiYourself!�t��Demo�̃X�N���[���V���b�g

�ꌩ�A�n���ȃf���Ɍ����܂����A���͔��ɑ��@�\�ł��B����[A],[1],[2]�{�^�����������Ƃ�WiiRemote�̃X�s�[�J�[���特���o�邱�Ƃ��m�F���Ă��������B�������ł͂���܂��񂪁A�������Đ�����Ă��܂��B[A]�ŋ�`�g(�������́Gsquare)�A[1]�ŃT�C���g�A[2]�ʼn����̂悤�ȕ�(DAISY)�A[B]�Ńo�C�u���[�^�[�쓮�ł��B���̑��A�e�{�^���̃X�e�[�^�X�Ɖ����x�̕\���ALED�̃i�C�g���C�_�[�I�A�j���[�V�����A�o�b�e���[�c�ʁA4�_�̐ԊO��(�T�C�Y����t��)�A�g���[�q�ւ̃k���`���N�̑}�����uExtnsn.�v�ɕ\������Ă��܂��B�ʔ����̂́uOrient:�v�̍s�ɁuPitch, Roll�v�Ƃ������p������ɉ����āuUpdateAge�v�Ƃ��āA����p�x�̌v�������邱�Ƃł��B�V���v���ł������ɂ悭�ł����f���ł��B�܂������̏�񂪂��̃\�[�X�R�[�h�ł���Demo.cpp�ɋL�ڂ���Ă��܂��̂ŗ]�T������l�́A��ǂ��Ă݂�Ƃ悢�̂ł����A�܂��͎��̏͂ɐi��WiiYourself�̃��r���h���s���A���s���āA��������Ȃ��玩���̂��̂ɂ��Ă������Ƃɂ��܂��傤�B

WiiYourself!�̃��r���h

WiiYourself!�t���́uDemo.exe�v�ɂ‚��āA��ʂ�̓������������A���̓��r���h�ł��B�����ł�Visual C ++ 2008 Express�Ȃǖ����œ���ł���‹���WiiYourself!�����r���h�ł���悤�A����ǂ��ĉ�����܂��B

DDK�̃Z�b�g�A�b�v

�{���̓ǎ҂̂قƂ�ǂ́A���ɑ�4�͂�Visual C++ 2008��������Visual Studio 2008(�ȉ�VC 2008)�̃Z�b�g�A�b�v�����܂��Ă��邱�Ƃł��傤�B���Ƀ��r���h�ɕK�v�ɂȂ�ADriver Development Kit (DDK)��������Windows Driver Kit (WDK)�̃Z�b�g�A�b�v���s���܂��BDDK�͂��̖��������Ƃ���A�h���C�o�J���̂��߂̃L�b�g�ł���AWindows��OS�����ƃ��[�U�̃A�v���P�[�V�����v���O�����̒��ԂɈʒu����h���C�o�v���O�������J�����₷�����邽�߂̃w�b�_�⃉�C�u�������܂܂�Ă��܂��BWiiRemote���g�����v���O���~���O�ł͎��Bluetooth�o�R��HID(Human Interface Device)�Ƃ̒ʐM�̂��߂ɂ��̃w�b�_�⃉�C�u������K�v�Ƃ��܂��B

WDK��DDK�̌�p�ŁADDK��Windows�h���C�o�[�̈��萫��M�������`�F�b�N���邽�߂̃e�X�g���܂ށu�������ꂽ�h���C�o�[�J���V�X�e���v�ł��B���݂̂Ƃ���WiiRemote�֌W�ɂ����āAWDK�𗘗p���邩DDK�𗘗p���邩�A���e�I�ȑ傫�ȍ��͌�������܂���B�܂�WDK�̓���ɂ�MSDN�T�u�X�N���v�V�����ւ̌_�񂩁AMicrosoft Connect�ւ̎Q�����K�v�ɂȂ�܂��̂ŁA�{���ł́u�N�ł��ȒP�ɓ���ł���v�Ƃ������_��DDK�𒆐S�ɉ�����܂��B

�Ȃ��AWiiRemote�v���O���~���O���s����ŁADDK�̂��ׂẴt�@�C�����K�v�ɂȂ�킯�ł͂���܂���B���ۂɕK�v�ɂȂ�w�b�_�t�@�C���ƃ��C�u�����t�@�C��6�‚������Ă��܂��΁A���Ƃ�(���C�Z���X���肪�Ȃ����)�t�@�C���R�s�[�ł��S����肠��܂���B

����ł́ADDK�̃C���X�g�[�����n�߂܂��傤�B�܂��}�C�N���\�t�g��DDK�̃z�[���y�[�W��K�₵�A�uWindows Server 2003 SP1 DDK�v��ISO�t�@�C������肵�܂��B

Windows Server 2003 SP1 DDK

http://www.microsoft.com/japan/whdc/DevTools/ddk/default.mspx

�uWindows Server 2003 SP1 DDK�v�Ƃ���܂����AWindowsXP���ł����p�ł��܂��B�uWindows XP SP1 DDK�v�ȑO��DDK(NT,98,2000�Ȃ�)�͊��ɃT�|�[�g���I�����Ă��܂��̂ŁAWDK�Ȃǂł��邾���V�������𗘗p���������ǂ��ł��傤�B����̎��OS�ł���AWindows Vista�AWindows Server 2003�AWindows XP�A������Windows 2000��œ��삷��h���C�o���r���h����ɂ́A�Œ�ł�����Windows Server 2003 SP1 DDK�Ɋ܂܂��uWindows 2000�����r���h�‹��v���g�p���Ă��������B

�܂��A�_�E�����[�h����ISO�t�@�C�����g����CD-ROM���쐬���܂��B����������CD-ROM�͈�x�����g���܂���BISO�t�@�C�����h���C�u�Ƃ��ă}�E���g�ł��鉼�zCD�̂悤�ȃ\�t�g�E�F�A������΂�����𗘗p���Ă����܂��܂��񂵁A�ŋ߂ł́u7-zip�v�Ƃ����I�[�v���\�[�X�̃\�t�g�E�F�A���g����ISO�t�@�C���𒼐ړW�J���邱�Ƃ��ł��܂��B

7-zip

http://sevenzip.sourceforge.jp/

�쐬����CD-ROM�A�������͓W�J�����t�H���_����usetup.exe�v�����s���܂��B

Windows Driver Development Kit�̃C���X�g�[��

�G���h���[�U���C�Z���X������(EULA)���m�F���܂��B

EULA�̊m�F

�C���X�g�[����͖{���ł̓f�t�H���g�́uC:\WINDDK\3790.1830�v�Ƃ��܂��B

DDK�C���X�g�[����̎w��

�����ŃC���X�g�[������t�@�C����I�����܂��B�f�t�H���g�̂܂܁A�������͂��ׂĂ�I�����Ă��ǂ��̂ł����A�w�b�_�t�@�C���̂悤�ȏ����ȃe�L�X�g�t�@�C����700MB�ȏ゠��܂��̂ŁA�‹��ɂ���Ă̓C���X�g�[���Ɍy��1���Ԃ��炢�������Ă��܂��܂��B

DDK�C���X�g�[������t�@�C���̑I��

��ʂ̃t�@�C�����C���X�g�[�����邱�Ƃɓ��ɒ�R���Ȃ����͂��ׂĂɃ`�F�b�N�����Ă��ǂ��ł��傤�B�]�v�ȃt�@�C���͕K�v�Ȃ��A�Ƃ������͍Œ���uBuild Environment�v�̊Y������v���b�g�t�H�[���Ƀ`�F�b�N�������Ă���΂悢�ł��傤(Windows XP Headers, X86 Libraries)�B��̓I�ɂ́uC:\WINDDK\3790.1830\inc\wxp�v�ɂ���uhidpi.h, hidsdi.h, hidusage.h, setupapi.h�v�Ƃ����w�b�_�t�@�C���ƁA�uC:\WINDDK\3790.1830\lib\wxp\i386\�v�ɂ���uhid.lib, setupapi.lib�v�Ƃ������C�u�����t�@�C�����K�v�ł��B���̑��̃t�@�C���A�c�[���ނ̓C���X�g�[�����Ď����Ă݂Ă��ǂ��ł����A�{���ł͈����܂���B

���̃X�e�b�v�����Ɏ��Ԃ�������܂�

DDK�̃C���X�g�[�����I�������A�����������̏͂�WiiYourself!�̃��r���h��ʂ��ă��C�u�����̐ݒ���s���܂��B

�v���W�F�N�g�t�@�C���̕ϊ��Ɛݒ�

VC�ɒm���̂�����ł���΂���قǓ����Ƃł͂���܂��񂪁A�ŏ��̃��r���h���~���ɐi�߂邽�߂Ɉȉ��̎菇�ɏ]���Ă��������B�܂�VC2008���ɗ����グ�āA�u�t�@�C���v���u�J���v���u�v���W�F�N�g/�\�����[�V�����v����A�uC:\WiiRemote\WiiYourself!�v�t�H���_�ɂ���uWiiYourself!.sln�v�Ƃ���VC2005(VC8)�̃\�����[�V�����t�@�C�����J���܂��B�uVisual Studio�ϊ��E�B�U�[�h�v���N�����܂��̂ŁAVC2008(VC9)�p�̃v���W�F�N�g�ɕϊ����Ă��������B���Ȃ��ϊ��͏I������͂��ł��B�uCtrl+Shift+B�v�Ń��r���h���Ă݂Ă��������B

1>------ �r���h�J�n: �v���W�F�N�g: WiiYourself! lib,
 �\��: Debug Win32 ------
1>�R���p�C�����Ă��܂�...
1>wiimote.cpp
1>c:\wiiremote\wiiyourself1\wiimote.cpp(41)
 : fatal error C1083: include �t�@�C�����J���܂���B
 'hidsdi.h': No such file or directory

���̂悤�ɃG���[�uC1083�v���o�āA�uhidsdi.h�v�̃C���N���[�h���v�������ΐ���ł��B����DDK�̃f�B���N�g����ݒ肵�܂��B

�\�����[�V�����G�N�X�v���[���[�́uWiiYourself! lib�v�̃A�C�R���̏�ʼnE�N���b�N���ăv���W�F�N�g�̃v���p�e�B�y�[�W���J���Ă��������B�܂��u�\���v���u���ׂĂ̍\���v�Ƃ��A�u�\���̃v���p�e�B�v���uC/C++�v���u�S�ʁv�́u�lj��̃C���N���[�h�f�B���N�g���v�ɁuC:\WINDDK\3790.1830\inc\wxp�v��ݒ�A�����āA�u���C�u�����A���v���u�S�ʁv�́u�lj��̃��C�u�����f�B���N�g���v�ɁuC:\WINDDK\3790.1830\lib\wxp\i386�v��ݒ肵�܂��B

�ݒ肪�I�������uCtrl+Alt+F7�v�Ń��r���h(��U�N���[���ȏ�Ԃɂ��Ă���r���h)���s���܂��B1���AUnicode�Ɋւ���x��(C4819)���o�܂����A�������Ă��܂��܂���B���Ȃ��A

1>���C�u�������쐬���Ă��܂�...
1>�r���h���O�� "file://c:\WiiRemote\WiiYourself!
 \Debug\BuildLog.htm" �ɕۑ�����܂����B
1>WiiYourself! lib - �G���[ 0�A�x�� 1
========== ���ׂă��r���h:
 1 ����I���A0 ���s�A0 �X�L�b�v ==========

���̂悤�ɕ\�������΃��C�u�����̃��r���h�͐����ł��B���̃X�e�b�v�ɐi��ł��������B�ēx�u�t�@�C���v���u�J���v���u�v���W�F�N�g/�\�����[�V�����v����A���x�́uC:\WiiRemote\WiiYourself!\Demo�v�t�H���_�ɂ���uDemo.sln�v�Ƃ���VC2005(VC8)�̃\�����[�V�����t�@�C�����J���܂��B����͓����̃f���A�v���P�[�V�����ł��B���l�ɁuVisual Studio�ϊ��E�B�U�[�h�v���N�����܂��̂ŁAVC2008�p�̃v���W�F�N�g�ɕϊ����Ă��������B�����Ȃ�u�����v��I��ł����Ȃ��ϊ��͏I������͂��ł��B�ϊ���A�uCtrl+Alt+F7�v�Ń��r���h���Ă݂Ă��������B

2>Demo.cpp
2>�����N���Ă��܂�...
2>LINK : fatal error LNK1104: �t�@�C�� 'hid.lib' ���J�����Ƃ��ł��܂���B

�Ō�ɁA�uAlt+F7�v�Ńv���W�F�N�g(���̏ꍇ�uDemo�v)�̃v���p�e�B���J���A�u�S�Ă̍\���v�́u�\���v���p�e�B�v���u�����J�v���u�S�ʁv���u�lj��̃��C�u�����f�B���N�g���v��DDK�̃��C�u�����p�X�ł���uC:\WINDDK\3790.1830\lib\wxp\i386�v��ݒ肵�Ă��������B����œ��ɑ傫�ȃG���[���o���Ƀ��r���h�ɐ�������͂��ł��B

DDK�̃��C�u�����p�X��[Demo]�́u�lj��̃��C�u�����v�ɐݒ肷��

WiiRemote�Ƃ�Bluetooth�ڑ����s���Ă���A�uF5�v�L�[�Ńf�o�b�O�J�n(���s)�ł��B�����Ƀf���v���O���������s�ł��܂����ł��傤���H�ȏ�̗���ɉ����ΊȒP�Ȃ̂ł����A�菇���ԈႦ��A�Ⴆ�ΐ��Demo.sln�̕ϊ����s���Ă��܂��ƁAVC2005�̃v���W�F�N�g�̕ϊ���ʂ���WiiYourself!���Q�Ƃ��郉�C�u���������ς���Ă��܂����肵�āA�Ӑ}�������Ԃ��������Ă��܂��܂��̂Œ��ӂ��B���āA�����gl.tter���̃f���\�[�X�R�[�h�udemo.cpp�v�����ς���WiiYourself!���w�Ԋ‹��������܂����B�R�}���h���C���v���O������C/C++�ɏڂ������́A���̂܂܃\�[�X�R�[�h���@�艺���Ă������Ƃ��ł���Ǝv���܂��B

WiiYourself!�̍\���ƃ��C�u�����̃r���h

�O�߂�[Demo.sln]�̃��r���h�ɐ������܂����̂ŁA���̑�������͂��߂܂��傤�B���̃\�����[�V�����́uDemo�v�Ƃ����A�v���P�[�V�����̃v���W�F�N�g�ƁA�uWiiYourself! lib�v�Ƃ������C�u����������2�‚̃v���W�F�N�g����\������Ă��܂��B

WiiYourself!�����uDemo�v�v���W�F�N�g�̍\��

�uDemo�v�ɂ́A�R�}���h���C���T���v���A�v���P�[�V�����̖{�̂ł���uDemo.cpp�v�ƁuDemo.h�v�̃\�[�X�R�[�h�A���ꂩ��wav,raw�t�@�C���`���ɂ��X�s�[�J�[�Đ��̂��߂̉����t�@�C�����u����Ă��܂��B

���C�u���������́uC:\WiiRemote\WiiYourself!\Demo\lib�v�Ƃ����f�B���N�g��(�����ナ���[�X�����\���v1.11Beta�ł͎኱�t�H���_�\�����ς��”\��������܂�)�Ɋe�X�v���W�F�N�g�̍\���ɂ��uRelease�v�������́uDebug�v�����āAUnicode�Ή��Ɣ�Ή��̃��C�u�����𐶐����܂��BWiiYourself!�̔z�z������Ԃł͂��ꂼ��4�‚�lib�t�@�C�������݂���͂��ł�(���Ƀ��r���h��Ƃɂ��폜����Ă��邩������܂���)�B�uWiiYourself!_d.lib�v���f�o�b�O�p�A�uWiiYourself!_dU.lib�v��Unicode�Ńf�o�b�O�A�uWiiYourself!_U.lib�v��Unicode�Ń����[�X�A����́uWiiYourself!.lib�v����Unicode�����[�X�ŁA�‚܂�ł��œK������A�ł��y��(�f�o�b�O���̏����Ȃǂ��Ȃ���)���C�u�����ł��B

�uWiiyourself! lib�v�v���W�F�N�g�ɂ́A���̃��C�u�����̃\�[�X�R�[�h���܂܂�Ă��܂��B�uwiimote.cpp�v�A�uwiimote.h�v�A�uwiimote_state.h�v���\�[�X�R�[�h�ł��B�����̃R�[�h�ƃv���W�F�N�g���t�����Ă��邨�����ŁAWiiYourself!�͔��ɕ׋����₷���󋵂ɂȂ��Ă��܂��B

���̃v���_�E���ō\����؂�ւ�����

�ł͂��������e�X�̃��C�u�������r���h���Ă݂܂��傤�BVC2008�̃��j���[�u�r���h�v���u�\���}�l�[�W���v����u�A�N�e�B�u�\�����[�V�����\���v�ŁA���݂̍\�����uRelease�v�ɐ؂�ւ��u�‚���v�������܂��BCtrl+Alt+F7�Łu���r���h�v���邱�Ƃ��ł��܂��B�uDemo�v�́uWiiYourself! lib�v�v���W�F�N�g�Ɂw�ˑ��x����ݒ�ɂ��Ă���܂��̂ŁA�ύX�����A�N�e�B�u�ȍ\���ɏ]���āA��������郉�C�u�������A���ꂼ��قȂ�.lib�t�@�C�����������Ă��邱�Ƃ��A�t�@�C���G�N�X�v���[���[�Ŋm�F���Ă݂�Ƃ悢�ł��傤�B

�g�R�s�y�E�R�[�f�B���O�h�E�o���v���̃X�X��

�@�u�N����������v���O�����𗘗p����v�Ƃ����s�ׂ�API�v���O���~���O���\�Ƃ��āA����I�Ɂu�悭���邱�Ɓv�Ȃ̂ł����A��������Ɠ����̓���Ȃǂ̓u���b�N�{�b�N�X�����Ă��܂������ł��B�w������ȂǁAGoogle�łǂ����炩�u�ǂ������Ȏg�������ȃR�[�h�v��T���Ă��āA�R�s�y(�R�s�[������t��)���āu�搶�A(�Ȃ�ƂȂ�)�ł��܂����I�v�Ȃ�Ă����v���O���~���O�u�炵�����Ɓv�����Ă�����i���悭���������肵�܂��B

�@�M�҂ɂ����������o���͂���̂ł����A�������Ȃ�����w���`��w�@���̗��H�n�̊w������Ȃ�u���̏K���v�͍��������߂������ǂ��Ǝv���܂��B���́u�R�s�y�a�v�͋M���̃v���O���~���O�X�L�����m���ɗ��Ƃ��Ă����܂��c�B

�@�b��߂��āAOS�Ȃǂ̃v���b�g�t�H�[��API�ɏ]�����v���O���~���O�ł���΁A�h�L�������g�Ȃǂ̎d�l�����Q�Ƃ���΂悢�̂ł����AWiiRemote�̂悤�Ȗ��m�̃f�o�C�X�n�v���O���~���O�ł͕K�����������ȃh�L�������g������킯�ł͂���܂��񂵁A�񋟂���Ă���API�������̋����Ƃ��ẮA���[�U�[�̈Ӑ}�ƈقȂ�A�Ђǂ��Ƃ��ɂ͊Ԉ���Ă���c�Ƃ����”\�����炠��܂�(������Q�[���@�Ȃ�Ă��̍ł����...������)�B�I�[�v���\�[�X�̃v���W�F�N�g�ł���΁A���p�Ҏ��g�ŃR�[�h��ǂ񂾂�A�@�艺������A�@�\��lj������肷�邱�Ƃ��ł��܂����A��҂ɊԈႢ���w�E������@�\�lj������L�����肷�邱�Ƃ��ł���ł��傤�B

�@���ɒn���Ȃ����ł͂���܂����A�u(�p�ꂪ��肾����)�I�[�v���\�[�X�͎g���Ă��A�v���͂��Ȃ���/�ł��Ȃ���v�Ƃ������X�ɂ͂��Ј�x�����Ă݂Ă������������g���[�j���O�ł��B�I�[�v���\�[�X�̐��E�ō�҂̐S�ӋC��ǂ݁A����̕ǂ��z���āA�R�[�h�ŋ��L���邽�߂̍ŒZ���[�g�ł��B

�@�����A��X�͉p������֗��Ȑ��E���ʌ���ł���uC/C++����v���g����ł͂Ȃ��ł����I�u�R�s�y�v�����u�v���v�ł��B

�R�}���h���C���v���O����

�V���������‹��ȂǂŃv���O���~���O���w�ԂƂ��ɂ́A�傫�������āA2�‚̕��@������̂ł͂Ȃ��ł��傤���B���ɂ悭�ł����T���v���v���O�������������Ȃ���w�K������@�ƁA���܂��܂ȑ����v�f����蕥���A�[�����玩���ň������g�ݏグ�Ă������@�ł��BWiiYourself!�́uDemo.cpp�v�͗ǂ��ł����f���ł����A�����v�f���������߁A���S�҂ɂ͂����߂ł������ɂ���܂���B

���̃Z�N�V�����ł́A�܂���w�̍ŏ���C����̎��Ƃŏo�Ă���悤�ȁuHello, world!�v�ƌĂ΂�鏉���̏����̃v���O��������A�I�[�v���\�[�X�ł���WiiYourself!�������̃v���W�F�N�g�ɑg�ݍ���ł������Ƃ�WiiYourself!�𗝉�����Ƃ����u������Ɖ�蓹�v�����܂��B

C++�̃v���O���~���O�ɏڂ������́A�i�i���ǂ݂ł����܂��܂���B

�R�}���h���C���v���O�����uHello, WiiRemote!�v

����ł͂܂��AVisual C 2008 Express(�ȉ�VC2008)��ŁA�v���O���~���O�̍ŏ��̈���uHello, world!�v�v���O�������‚����Ă݂܂��傤�B����́uHello, world!�v�Ɖ�ʂɕ\�����邾���̃v���O�����ł��B�����͉��ł��ǂ��̂ł������j�I�ɁuHello, world!�v�Ƃ��������ł��邱�Ƃ������A�����Ă΂�Ă��܂��BVC2008�ɂ����Ă��A���l�̃`���[�g���A�����p�ӂ���Ă��܂��BVC2008���C���X�g�[������ƃX�^�[�g�y�[�W�u��Ƃ̊J�n�v�Ɂu�ŏ��̃A�v���P�[�V�������쐬�v�Ƃ��������N������܂��B���̃Z�N�V�����ł́A�������炽�ǂ��u�W��C++�v���O�����̍쐬(C++)�v�Ƃ����}�C�N���\�t�g�񋟂̃h�L�������g���Q�l�ɂ��Ă��܂��B

Win32�R���\�[���A�v���P�[�V�����̍쐬

�܂��͐V�����v���W�F�N�g���쐬���܂��B[�t�@�C��]���j���[��[�V�K�쐬]����A[Visual C++]�v���W�F�N�g[Win32]���N���b�N���A����[Win32�R���\�[���A�v���P�[�V����]���N���b�N���܂��B�v���W�F�N�g���͉��ł��ǂ��̂ł����A���̐�����΂炭�g���܂��̂ŁuWiiMyself�v�Ƃ��Ă����܂��B[�ꏊ]�ɂ́uC:\WiiRemote\WiiYourself!�v���w�肵�āA[OK]���N���b�N���āA�V�����v���W�F�N�g���쐬���܂��B

Win32 �A�v���P�[�V�����E�B�U�[�h

�uWin32�A�v���P�[�V�����E�B�U�[�h�v���N�����܂��̂ŁA[��̃v���W�F�N�g]��I������[����]���N���b�N���܂��B���̂��ƁA���������Ă��Ȃ��悤�Ɍ�����ꍇ�A�u�\�����[�V�����G�N�X�v���[���v���\������Ă��Ȃ��̂�������܂���B[�\��]���j���[��[�\�����[�V�����G�N�X�v���[��]���N���b�N���ĕ\�����܂��B�E�B���h�E���C�A�E�g�����‚��ƈႤ�ꍇ�́u�E�B���h�E�v���u�E�B���h�E���C�A�E�g�̃��Z�b�g�v�����s����Ƃ悢�ł��傤�B

�\�����[�V�����G�N�X�v���[����[�\�[�X�t�@�C��]�t�H���_���E�N���b�N���A[�lj�]���|�C���g����[�V��������]���N���b�N���܂��B[�R�[�h]�m�[�h��[C++�t�@�C��(.cpp)]���N���b�N���A�t�@�C����[main.cpp]����͂���[�lj�]���N���b�N���A�v���W�F�N�g�ɐV�����\�[�X�t�@�C����lj����A�ȉ��̃R�[�h���L�q���܂��B

Hello, world!
#include <iostream>
using namespace std;

int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}

���āA[F7]�L�[�ŃR���p�C����ʂ�����A���s�‹��𗧂��グ�܂��傤�B[F5]�L�[�Ŏ��s���Ă��悢�̂ł�����u�ŏI�����āA�����Č����Ȃ��Ȃ��Ă��܂�����ł��B�G�N�X�v���[���[�Ő������ꂽ�uWiiMyself.exe�v���_�u���N���b�N���Ă����l�ł��B

�����ŁuWindows�L�[+R�v�Łu�t�@�C�������w�肵�Ď��s�v�_�C�A���O�𗧂��グ�āucmd�v�ƃ^�C�v���āuok�v�������܂��B�R�}���h���C���E�B���h�E���\�����ꂽ��A

cd C:\WiiRemote\WiiYourself!\WiiMyself\Debug

�Ƃ��āA���R���p�C���ɂ�萶�������uWiiMyself.exe�v�̂���f�B���N�g���Ɉړ����܂��B�����p�X�����^�C�v����͖̂ʓ|�ł��̂ŁA�܂��ucd (�{���p�X�y�[�X)�v�ƃ^�C�v���Ă���A�G�N�X�v���[���[�̃V���[�g�J�b�g(�t�H���_�̃A�C�R��)���R�}���h���C���E�B���h�E�Ƀh���b�O���h���b�v����ƁA�p�X�����\������ĕ֗��ł��B[Enter]�������ăR�}���h����͂��܂��B�܂��N���b�v�{�[�h���g���܂��B�R�}���h���C���E�B���h�E�̍�����N���b�N���邱�ƂŁu�ҏW�v���u�\��t���v�Ƃ��āA���p�ł��܂��̂Ŋo���Ă����Ƃ悢�ł��傤�B

���āucd�v�R�}���h�Ō��݂̃p�X���ړ�������AWiiYourself!�����s���܂��B

C:\WiiRemote\WiiYourself!\WiiMyself\Debug>WiiMyself.exe
Hello, world!

�����ɗL���ȁuHello, world!�v���\������܂����ł��傤���H�ȏオ�R�}���h���C���v���O�����̍쐬�̊�{�ł��B

WiiYourself!���v���O�����ɑg�ݍ���

�uHello world!�v�Ŋ��ł���ꍇ�ł͂���܂���B�����āAWiiYourself!��g�ݍ���ł����܂��B�\�����[�V�����G�N�X�v���[���[�́u�\�����[�V����'WiiMyself'�v���E�N���b�N���āu�lj��v���u�����̃v���W�F�N�g�v�Ƃ��Ĉ��̃t�H���_�ɂ���uWiiYourself!.vcproj�v��I��ł��������B

�}�̂悤�Ƀ\�����[�V��������荞�܂�܂��B

�\�����[�V�����ɁuWiiYourself! lib�v����荞�܂ꂽ

�����āA�uWiiMySelf�v(�����̃v���W�F�N�g)�̃A�C�R���̏�ʼnE�N���b�N���ăv���W�F�N�g�̃v���p�e�B�y�[�W���J���Ă��������B�܂��u�\���v���u���ׂĂ̍\���v�Ƃ��A�u�\���̃v���p�e�B�v���uC/C++�v���u�S�ʁv�́u�lj��̃C���N���[�h�f�B���N�g���v�ɁuC:\WINDDK\3790.1830\inc\wxp�v��ݒ�A�����āA�u�����J�v���u�S�ʁv�́u�lj��̃��C�u�����f�B���N�g���v�ɁuC:\WINDDK\3790.1830\lib\wxp\i386�v��ݒ肵�܂��B

�Ō�Ƀ��j���[�u�v���W�F�N�g�v���u�v���W�F�N�g�̈ˑ��֌W�v�Ŏ����̃v���W�F�N�g���uWiiYourself! lib�v�Ɉˑ����邱�Ƃ𖾎��I�Ƀ`�F�b�N���܂��B���̍�Ƃɂ��A�uWiiMySelf�v�̐e�Ƃ��āuWiiYourself! lib�v��ݒ肵�����ƂɂȂ�܂��B�����Y���ƁA���C�u�����{�̂̍X�V���AWiiMySelf�ɓ`���܂��񂵁A�p���֌W�����������Ɏv��ʎ��s���ĂԂ��Ƃ�����܂��̂ŕK���`�F�b�N���Ă��������B

�ˑ��֌W�F�uWiiYourself! lib�v�Ɉˑ����邱�Ƃ𖾎�����

����ŁA�����̃v���W�F�N�g����WiiYourself!�̃I�u�W�F�N�g���Q�Ƃ��邱�Ƃ��ł���悤�ɂȂ�܂����B�������Ă݂܂��傤�B�����قǂ�Hello, world!���ȉ��̂悤�ɏ��������܂��B�‚��łł�����WiiYourself!�̃��C�Z���X�ɏ]���āA���C�Z���X�\�������܂��傤�B

Hello, WiiRemote!
#include "../../wiimote.h"
int _tmain(int argc, _TCHAR* argv[])
{
  wiimote cWiiRemote;
  _tprintf(_T("Hello, WiiRemote!\n"));
  _tprintf(_T("contains WiiYourself! wiimote 
     code by gl.tter\nhttp://gl.tter.org\n")); //���C�Z���X�\��
  return 0;
}

main�֐���tmain�ɂȂ�Aunicode�ƈ������T�|�[�g����`�ɂ�����Acout�ł͂Ȃ�tprintf�ɂ��āAwiimote�I�u�W�F�N�g���쐬���Ă���ȊO�͉����ς��܂���B�uCtrl+Alt+F7�v�Ń��r���h���܂��B�R�}���h���C���E�B���h�E�Ɉڂ�A���s���ʂ��m�F���Ă��������B

C:\WiiRemote\WiiYourself!\WiiMyself\Debug>WiiMyself.exe
Hello, WiiRemote!
contains WiiYourself! wiimote code by gl.tter
http://gl.tter.org

�܂��ŏ��̎����̓N���A�ł��A����VC2008�ŃN���X���Q�Ƃł��Ă��邩�����ł��B�\�[�X�R�[�h�E�B���h�E�uwiimote cWiiRemote�v�Ƃ���������Ƀ}�E�X�������Ă����uwiimote�v���E�N���b�N���āu�錾�ֈړ��v�������Ă݂Ă��������BWiiYoureself!�̃\�[�X�R�[�h�ł���A�w�b�_�t�@�C���uwiimote.h�v���\�������ΐ���������ł��B

���Ď����𑱂��܂��BVC2008�ł́uIntellisense�v�Ƃ������͕⊮�@�\���ƂĂ��֗��ł�(���ꂪ�g�����Ȃ��Ȃ���΁AVC�̓e�L�X�g�G�f�B�^�Ƃ��܂�������ς��܂���I)�B�����ɁucWiiRemote.�v�ƃ^�C�v���Ă݂Ă��������B�N���X�̃v���p�e�B�⃁�\�b�h�̈ꗗ���\�������ΐ����ł��B

Intellisense�ɂ��⊮�@�\

�ł͎��ɁA���̃v���O�������uWiiRemote�ɐڑ����AB�{�^���ŐU������v�Ƃ����v���O�����܂Ŋg�����Ă݂܂��傤�B

LED,�o�C�u���[�^�[�A�{�^���C�x���g�̎擾
#include "../../wiimote.h"
int _tmain(int argc, _TCHAR* argv[])
{
  wiimote cWiiRemote;
  _tprintf(_T("Hello, WiiRemote!\n"));
_tprintf(_T("contains WiiYourself! wiimote code by \
    gl.tter\nhttp://gl.tter.org\n"));
  //WiiRemote�Ɛڑ�
  while(!cWiiRemote.Connect(wiimote::FIRST_AVAILABLE)) {
   _tprintf(_T("Connecting to a WiiRemote.\n"));
   Sleep(1000);
  }
  _tprintf(_T("connected.\n"));
  cWiiRemote.SetLEDs(0x0f);  //LED��S�_��
  Sleep(1000);
  cWiiRemote.SetReportType(wiimote::IN_BUTTONS);
  //Home�{�^���ŏI��
  while(!cWiiRemote.Button.Home()) {
    while(cWiiRemote.RefreshState() == NO_CHANGE) {
	 Sleep(1);
    }
    //B�{�^���Ńo�C�u���[�^�[���U��
    cWiiRemote.SetRumble(cWiiRemote.Button.B());
  }
  //�ؒf�E�I��
  cWiiRemote.Disconnect();
  _tprintf(_T("Disconnected.\n"));
  return 0;
}

�܂��S�Ă̍s�������ł��Ă���킯�ł͂Ȃ���������܂��񂪁A�u//�v�ŋL�q���ꂽ�R�����g�𗊂�ɁAIntellisense���g���ăv���O�����S���������őł�����ł݂Ă��������B����������A�uCtrl+S�v�ŕۑ����āA�uCtrl+Alt+F7�v�Ń��r���h���܂��B

�܂���WiiRemote��Bluetooth�ڑ����Ă���A�R�}���h���C���Łu���v�L�[�������ĉߋ��̃R�}���h��T���A�uWiiMyself.exe�v�����‚�����uEnter�v�������ċN�����Ă��������B�ڑ����������LED��_�����A[B]�{�^���������ƃo�C�u���[�^�[���U�����܂��B[Home]�{�^���������ƃv���O�����I���ł��B

C:\WiiRemote\WiiYourself!\WiiMyself\Debug>WiiMyself.exe
Hello, WiiRemote!
contains WiiYourself! wiimote code by gl.tter
http://gl.tter.org
connected.
��������B�{�^���������ƃo�C�u���[�^�[���U����
Disconnected.

���܂�ɒn���ȉ�ʂȂ̂ł����A������LED���_�����AB�o�C�u���[�^�[���U�����Ă��邱�Ƃ��m�F�ł��܂��BHome�{�^���ŏI�����܂��B.NET�łɔ�ׂċN�����̑҂����Ԃ��قƂ�ǂȂ��̂��R�}���h���C���v���O�����̓����ł��B

.NET�ƃR�}���h���C���A�ǂ������y���H

�@.NET�̓}�C�N���\�t�g���񋟂��錻�ݎ嗬�̃v���O���~���O�‹��ł��B�΂��ăR�}���h���C���͌Â�����g���Ă��邾���ɁA�݊����△�ʂ��Ȃ������s���x�Ȃǂɗ��_������܂��B

�@��������.NET�‹��ł‚������t�H�[���ɂ��v���O�����ƃR�}���h���C���v���O�����ł͋N�����������̎��Ԃ̍�������܂��B����͂����炭���ʌ��ꃉ���^�C��(CLR)���o�R���āA.NET�̃t�H�[���Ɋ֌W�̂���DLL��ǂݍ���ł�����s���邱�ƂɋN�����鍷�ł��傤�B�R�}���h���C���v���O�������I�Ƃ����ǎ�(�M�҂��D���ł�)�́A���s���x�ȊO�̗D�ʓ_�Ƃ��āuEXE�t�@�C���T�C�Y�������Ə������ɈႢ�Ȃ��v�Ǝv���邩������܂���B�����ŏ�L�́uWiiMyself.exe�v�𒲂ׂĂ݂�ƃf�o�b�O��83.5KB�A�����[�X�r���h�ł�35KB�Ɗm���ɏ������ł��B���̃R�[�h�̓{�^���C�x���g�����ł�����A�ق�WiiYourself!��wiimote�̃I�u�W�F�N�g�̑傫���ł��傤�B������.NET�̓��l�̎��s�t�@�C���̑傫���𒲂ׂĂ݂�Ɓc�Ȃ�Ɓu10KB�ȉ��v�B��������.NET Framework�ɂ������DLL��OS���ɑ��݂���킯�ł����瓖�R�Ƃ����Γ��R�A��������ʂ̃t�H�[���̂��߂̃R�[�h��WiimoteLib�I�u�W�F�N�g�͂ǂ��ɂ����Ă��܂����̂ł��傤�H���܂�ɍ����傫�����܂���ˁH�����ł��c�ׂɂ���uWiimoteLib.DLL�v�̃t�@�C���T�C�Y���Y��Ă͂����܂���B���ׂĂ݂��32.5KB�B������42.5KB�ł�����A����ł��������v�Z�������܂��ˁB

Win32�ł‚���WiiRemote�e���~��

�e���~������낤

�O�̃Z�N�V�����ł́A�V���v���ȁuHello, WiiRemote!�v�v���O��������邱�ƂŁA�������g��WiiYourself!���g���Ċw�ԑ����𓥂�ł݂邱�Ƃɂ��܂����B���̂悤�Ɂu�������g��{�[������/��������}�����Ă݂�v�Ƃ�����@�́AC/C++�Ȃǂ̃v���O���~���O����ʂ�׋���������ǁw���܂��܂����x�Ƃ������ɂ͓��ɂ����߂̕��@�ł��B

�������n���ȃR�}���h���C���v���O�����������Ă��܂��B�������̃Z�N�V�����ł́A������Ɣh��Ȃ��Ƃ����Ă݂܂��傤�B�R�}���h���C���v���O�������g���āu�e���~��(Theremin)�I�Ȃ��́v������Ă݂܂��B�e���~���Ƃ͓d�g���‚������s�v�c�Ȋy��ł����A�����ł�WiiYourself!����Windows�̃v���b�g�t�H�[��API�ł���Win32�𗘗p���A�\�t�g�E�F�AMIDI��@�����ƂŁAPC���特��‚炵�܂��B����������WiiRemote�ł�����A�������񂠂�{�^��������x�Z���T�[���g��������������������Ǝv���܂��B

�v���O���~���O�I�ɂ��AWin32�ȂNJ�����C++�‹��ŋ��͂ɗ��p�ł���v���b�g�t�H�[���֐��Q���‚����Ă����܂��B�v���O���~���O�s���͒Z���Ă��A���Ɏ��p�I�ȃv���O���~���O���s���邱�Ƃ�WiiYourself!���g�����_�ł�����܂��B

�d�g�y��e���~���u�S�u���}�u�~�r���{���v�Ƃ�

�@�ʏ̃e���~��(�S�u���}�u�~�r���{��[thereminvox]�`���~�����H�[�N�X)�́A1920�N�Ƀ��V�A�̉��������w�ҁE�A�}�`���A���y�Ƃł��������I���E�e���~��(Leon Theremin)���u�G�e���t�H���v�Ƃ��Ĕ��\�������E���̓d�g�y��ł��B�u���E���̓d�C�y��v�Ƃ��ėL���ł����A���ۂɂ�19���I�㔼�̃G�W�\���ɂ��u�̂��A�[�N���v�Ȃǂ�����܂��̂ŁA�e���~���͂��̉��t���@�Ƃ��ē��F�̂���u�d�g���g�����������t�v�����E���̓����Ƃ��Ăӂ��킵���̂�������܂���B�d�q��H�I�ɂ̓V���v���ŁA�A�i���O���W�I�̓����𗘗p�������g�����Ȃ̂ł����A�{���ł͂��Ƃ����낤�ɓd�q�y��C���^�t�F�[�X�ł���MIDI(Musical Instrument Digital Interface�A�d�q�y��f�W�^���C���^�t�F�[�X)�𗘗p���āA����ɂ��Ƃ����낤��PC�ɕt�����Ă���\�t�g�E�F�AMIDI�𗘗p���Ď������Ă��܂��BWiiRemote��p�������͕��@�́u�e���~���I�v�ł͂���܂����A�������@������ȂɃf�W�^���ł͖{���̃e���~�������ɂ͂��܂�Ƀf�W�^���I�ŁuDigital Theremin�v�Ƃł��Ă΂Ȃ���΂Ȃ�Ȃ��㕨�ł��B����̂��߂Ƃ͂����A�e���~���t�@���̊F����A���߂�Ȃ����B

�@�Ƃ���ŁA���̂悤�ȁu���Ĕ�Ȃ�n��v�Ƃ����̂́A�e�N�m���W�[�⃁�f�B�A����g�����A�[�g����ł���u���f�B�A�A�[�g�v�̐��E�ł����X�N����悤�ɂȂ��Ă��܂����B�w������Ȃǂ����삷��Ƃ��ɁA���̃A�C�f�B�A�̌��ɂȂ���̗̂��j�⍰��������ƒ��ׂė������Ă��琧��ɗՂ܂Ȃ��ƁA���̂悤�Ȃ܂��������×����Ă��܂��܂�(����͂���ŃA�[�g�Ȃ̂�������܂��񂪁I)�B���܂�������݂����Ƃɂ͂������͂���܂���̂ŁA�܂��́u�{���̃e���~���v�̉��t�A���F�𒮂��Ă݂Ă��������B

��Theremin by Masami Takeuchi (Youtube)

�@http://www.youtube.com/watch?v=XwqLyeq9OJI

�@�����ă`�����X����������A�{���̃e���~�������t���Ă݂Ă��������B�ȒP�ɉ��t�ł���y��ł͂���܂���B�ł��s�A�m�����čŏ��͓����ł���ˁH�y��Ƃ��Ắu��x�v�Ɓu�K�n�v���A���̐_��I�ȉ��y�I�������ɒ������Ă��邱�Ƃ����Ă���킯�ł��c�B

�܂��́u�{�^������e���~���v

���āA�ŏ��̃X�e�b�v�Ƃ��āu�{�^������ʼn����‚�e���~���v�����܂��B�{�^���̃C�x���g��MIDI��‚炷�����Ȃ̂ŁA�Ȃ񂾂��e���~���炵���͂Ȃ��ł����A�ߋ�Ƃ��Ă͏\���y���߂���̂ł��B�v���W�F�N�g�Ƃ��Ă͐�قǂ܂ł́uWiiMyself�v�����̂܂܉������Ă����܂��傤�B

�܂��̓v���O�����̑O����������܂��B

�{�^������e���~��(�O��)
#pragma comment(lib,"winmm.lib")
#include <windows.h>
//MIDI���L�̃G���f�B�A����ϊ�����}�N��
#define MIDIMSG(status,channel,data1,data2) ( (DWORD)((status<<4) | channel \
    | (data1<<8) | (data2<<16)) )
#include "../../wiimote.h" //WiiYourself!����荞��

static HMIDIOUT hMidiOut;  //MIDI�n���h��
static BYTE note=0x3C, velocity=0x40; //���K�Ɖ���
static BYTE program=0x0;   //���F

int _tmain(int argc, _TCHAR* argv[])
{
  wiimote cWiiRemote;
  HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  printf("WiiRemote-Theremin button version by Akihiko SHIRAI\n");
  //LICENSE
printf("contains WiiYourself! wiimote code by \
    gl.tter\nhttp://gl.tter.org\n");
  //MIDI���J��
  midiOutOpen(&hMidiOut,MIDIMAPPER,NULL,0,CALLBACK_NULL);
  //�ŏ��ɂ‚Ȃ�����WiiRemote�ɐڑ�����
  while(!cWiiRemote.Connect(wiimote::FIRST_AVAILABLE)) {
   printf("WiiRemote�ɐڑ����Ă�������(0x%02X)\n",program);
   midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,0)); //�~���[�g
   Sleep(1000);
   program++;
   midiOutShortMsg(hMidiOut,MIDIMSG(0xC,0,program,0)); //���F�ύX
   //�ڑ����s���邽�тɖ‚�
   midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
  }
  printf("�ڑ����܂����I\n [1]/[2]���F [��]/[��]���K [��][��]���� [Home]�I��\n\n");
  Sleep(1000);

�܂��v���O�����̖`�������ŁAMIDI���������߂�"windows.h"��"winmm.lib"����荞��ł��܂��B�����MIDI���L�̃��b�Z�[�W�`�����ȒP�ɔ��s���邽�߂Ƀ}�N���Ƃ����A�P���Ȗ��߂�ϊ�����ϊ������`���Ă��܂��BHMIDIOUT��MIDI�n�[�h�E�F�A���̂��̂�߂܂��邽�߂̃n���h���ƌĂ΂����̂ŁABYTE�^�ϐ��unote, velocity, program�v�͂��ꂼ�ꉹ�K�A���ʁA���F���i�[����ϐ��ł��B

�v���O�����̃^�C�g���ƃ��C�Z���X�\�������āAWiiRemote�ɐڑ����Ă��܂��B������Ƃ������o�ŁA�ڑ������܂ʼn��F(program)�����񂾂�ς���Ă����܂��B

���̂܂܂ł̓R���p�C�������s���ł��Ȃ���Ԃł�����A�����̃R�[�h�������Ă����܂��傤�B

�{�^������e���~��(�㔼)
  //����̓{�^���C�x���g�������X�V��`����
  cWiiRemote.SetReportType(wiimote::IN_BUTTONS);
  while(!cWiiRemote.Button.Home()) {  //Home�ŏI��
    while(cWiiRemote.RefreshState() == NO_CHANGE)
	  Sleep(1); //���ꂪ�Ȃ��ƍX�V����������
    cWiiRemote.SetRumble(cWiiRemote.Button.B()); //B�ŐU��
    switch (cWiiRemote.Button.Bits) { //�{�^�����Ƃ�switch�����
      //���� [��]/[��]
      case wiimote_state::buttons::RIGHT :
        if(velocity<0x7F) velocity++;
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        break;
      case wiimote_state::buttons::LEFT :
        if(velocity>0) velocity--;
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        break;
      //���F(=program) [1]/[2]
      case wiimote_state::buttons::ONE :
        if(program>0) program--;
        midiOutShortMsg(hMidiOut,MIDIMSG(0xC,0,program,0)); //���F�ύX
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        break;
      case wiimote_state::buttons::TWO:
        if(program<0x7F) program++;
        midiOutShortMsg(hMidiOut,MIDIMSG(0xC,0,program,0)); //���F�ύX
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        break;
      //���K up/down
      case wiimote_state::buttons::UP :
        if(note<0x7F) note++;
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        break;
      case wiimote_state::buttons::DOWN:
        if(note>0) note--;
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        break;
      //[A]/[B]�œ�������������x�‚炷
      case wiimote_state::buttons::_A :
      case wiimote_state::buttons::_B :
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        break;
      //���̑��̃C�x���g�A�‚܂�{�^���𗣂����Ƃ��~���[�g�B
      default :
        midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,0));
    }
    //���݂�MIDI���b�Z�[�W�𓯂��ꏊ�Ƀe�L�X�g�\��
	COORD pos = { 10, 7 };
	SetConsoleCursorPosition(console, pos);
    printf("���F = 0x%02X , ���K = 0x%02X , �Ō����x = 0x%02X\n",
          program,note,velocity);
  }
  //�I��
  midiOutReset(hMidiOut);
  midiOutClose(hMidiOut);
  cWiiRemote.SetLEDs(0);
  cWiiRemote.SetRumble(0);
  cWiiRemote.Disconnect()
  printf("���t�I��\n");
  CloseHandle(console);
  return 0;
}

�{�^���C�x���g�̕����������̂ł����A�O�̃Z�N�V�����̉����ł����A�����́u�R�s�y�v���Ă����܂��܂���A�ҏW�╄���̌����ɋC���‚��āu���̍s�Ƃ̈Ⴂ���ӎ����Ȃ���v�R�s�y������̂��e�N�j�b�N�ł��B�܂�printf()�̕\�������͉p���D���ȃ��b�Z�[�W�ɕς��Ă��������Ă����܂��܂���B

�����ɃR���p�C�����ł�����AWiiRemote��Bluetooth�ɐڑ����鏀�������āA���s���Ă݂܂��傤�B

WiiRemote-Theremin button version by Akihiko SHIRAI
contains WiiYourself! wiimote code by gl.tter
http://gl.tter.org
WiiRemote�ɐڑ����Ă�������(0x00)
WiiRemote�ɐڑ����Ă�������(0x01)
...

�Ƃ����悤�ɕ\������PC�̃X�s�[�J�[���特���‚�n�߂��琬���ł��BWiiRemote��Bluetooth�ɐڑ����Ă݂Ă��������B�������̎��_�ʼn����Ȃ��Ă��Ȃ�������APC�̃}�X�^�[�{�����[�����m�F���܂��B�����֌W�̃{�����[�������ׂĐ���ŁA���̃v���O��������͉����o��̂Ɂu�Ȃ���MIDI�����‚�Ȃ��I�v�Ƃ����Ƃ��́A�R���g���[���p�l���́u�T�E���h�ƃI�[�f�B�I�f�o�C�X�v����u�f�o�C�X�̉��ʁv�́u�ڍאݒ�v��I��ŁuSW�V���Z�T�C�U�v�̉��ʂ��[��(�~���[�g)�ɂȂ��Ă��Ȃ����m�F���Ă�������(�M�҂͂��̐ݒ�̂������Ńv���O�������Ԉ���Ă���̂��Ɖ������Y�񂾌o��������܂�...)�B

���āA�����ɉ����o�Ă�����A�ȉ��̂悤�ȉ�ʂɂȂ��Ă���͂��ł��B

�ڑ����܂����I
 [1]/[2]���F [��]/[��]���K [��][��]���� [Home]�I��
          ���F = 0x00 , ���K = 0x50 , �Ō����x = 0x6A

WiiRemote�̏\���L�[�̉E���������ƕ\������Ă���l���ς�邱�Ƃ��m�F���Ă��������B[A]�{�^���������Ɓu�|�[���v�Ƃ����d�q�s�A�m�̉����‚�͂��ł��B[B]�{�^����������MIDI�̔����ɉ����ăo�C�u���[�^�[���‚�͂��ł��B[1][2]�{�^���ʼn��F�A���Ȃ킿MIDI�̊y��(�C���X�c�������g)��ς��邱�Ƃ��ł��܂��B[Home]�{�^���������ƏI���ł��B

���āA����Ń{�^���C�x���g�ɂ��MIDI�����͊������܂����BMIDI�̊y��(program)��127��ނ�����܂��B�M�҂�[0x76]������̑Ŋy��n�̃C���X�c�������g���D���ł��B

�����x�Z���T�[�ɂ��e���~��

���͂��e���~���炵�������x�Z���T�[��MIDI��‚点��悤�ɂ��܂��傤�B���K�����킹�āA���܂Ŏg���Ă����\�����[�V�����ɐV�����uThermin-Acc�v�������邱�ƂŐV�����v���W�F�N�g�̍������w�т܂��B

�v���W�F�N�g�̐V�K�lj�

���ɁuWiiYourself! lib�v�⌻�݃{�^�����e���~���ɂȂ��Ă���͂��́uWiiMyself�v���܂ރ\�����[�V�����uWiiMyself�v���E�N���b�N���āu�lj��v���u�V�����v���W�F�N�g�v��I�т܂��B�u�V�����v���W�F�N�g�̒lj��v�_�C�A���O�����ꂽ��u�v���W�F�N�g���v���uTheremin-Acc�v�Ƃ��܂��B

��ł͂Ȃ��u�R���\�[���A�v���P�[�V�����v���쐬

�uWin32�A�v���P�[�V�����E�B�U�[�h�v���N�����܂��̂ŁA�X�e�b�v�ɏ]���u�R���\�[���A�v���P�[�V�����v���N���b�N�A�u��̃v���W�F�N�g�v�̃`�F�b�N���O��Ă��邱�Ƃ��m�F���Ă��������B��������ƐV�����v���W�F�N�g������܂��B

���ɁA�\�����[�V�����G�N�X�v���[���[�ŁuTheremin-Acc�v���E�N���b�N���u�X�^�[�g�A�b�v�v���W�F�N�g�ɐݒ�v���܂��i�����Y���ƁA[F5]�L�[�Ńf�o�b�O�����Ƃ��Ɂu�{�^���Ńe���~���v���N�����Ă��܂��܂��j�B���̏�Ԃ�[F5]�L�[�ɂ��r���h�ƃf�o�b�O���������Ƃ͂ł��܂����AWiiYourself!�̑g�ݍ��݂܂ŏI��点�Ă��܂��܂��傤�B

���j���[�o�[�́u�v���W�F�N�g�v���u�v���W�F�N�g�̈ˑ��֌W�v��\�����āuTheremin-Acc�v�ɑ΂��āuWiiYourself! lib�v�Ƀ`�F�b�N���܂��B

�Ō�ɁA�v���W�F�N�g�̃v���p�e�B��lj����܂��B�v���p�e�B��\�����u�A�N�e�B�u(Debug)�v�ƂȂ��Ă���\�����u�S�Ă̍\���v�ɐ؂�ւ��āA�uC++�v���u�S�ʁv���u�lj��̃C���N���[�h�f�B���N�g���v�ɁuC:\WINDDK\3790.1830\inc\wxp�v��ݒ肵�܂��B���l�Ɂu���ׂĂ̍\���v�ɑ΂��āA�u�����J�v���u�S�ʁv���u�lj��̃��C�u�����f�B���N�g���v�ɁuC:\WINDDK\3790.1830\lib\wxp\i386�v��ݒ肵�܂��B

���āA����ŏ��������ł��B�O��쐬�����{�^���Ńe���~������ꕔ�R�[�h�𗬗p���āA�v���O���~���O��i�߂Ă����Ɗy�ł��傤�B1/3�‰�����Ă����܂��B

�����x�Z���T�[�ɂ��e���~��(1/3)
#include "stdafx.h"
#pragma comment(lib,"winmm.lib")
#include <windows.h>
//MIDI���L�̃G���f�B�A����ϊ�����}�N��
#define MIDIMSG(status,channel,data1,data2) ( (DWORD)((status<<4) | channel \
    | (data1<<8) | (data2<<16)) )
#include "../../wiimote.h" //WiiYourself!����荞��
static HMIDIOUT hMidiOut;  //MIDI�n���h��
static BYTE note=0x3C, velocity=0x40; //���K�Ɖ���
static BYTE program=0x0;   //���F
int _tmain(int argc, _TCHAR* argv[]) {
  wiimote cWiiRemote;
  HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
  SetConsoleTitle(_T("WiiRemote-Theremin Acceleration version"));
  printf("WiiRemote-Theremin Acceleration version by Akihiko SHIRAI\n");
  //LICENSE
printf("contains WiiYourself! wiimote code by \
    gl.tter\nhttp://gl.tter.org\n");
  //MIDI���J��
  midiOutOpen(&hMidiOut,MIDIMAPPER,NULL,0,CALLBACK_NULL);
  //�ŏ��ɂ‚Ȃ�����WiiRemote�ɐڑ�����
  while(!cWiiRemote.Connect(wiimote::FIRST_AVAILABLE)) {
   printf("WiiRemote�ɐڑ����Ă�������(0x%02X)\n",program);
   midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,0)); //�~���[�g
   Sleep(1000);
   program++;
   midiOutShortMsg(hMidiOut,MIDIMSG(0xC,0,program,0)); //���F�ύX
   midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity)); //�ڑ����Ȃ����і‚�
  }
  printf("�ڑ����܂����I\n");
  printf("\n\t  [B]�Ō� [Roll]���� [Pitch]���K [1]/[2]���F [Home]�I��\n");
  Sleep(1000);

���āA�����܂ł͑O��̃{�^���Ńe���~���ƂقƂ�lj����ς��܂���B�]�T������΃e�L�X�g�\�������Ȃǂ��D���ɕς��Ă݂�Ƃ悢�̂ł͂Ȃ��ł��傤��(���������C�Z���X�\����ς��Ȃ��悤�ɒ���!)�B

�����x�Z���T�[�ɂ��e���~��(2/3)
  //����̓{�^���{�����x�C�x���g���X�V��`����
  cWiiRemote.SetReportType(wiimote::IN_BUTTONS_ACCEL);
  while(!cWiiRemote.Button.Home()) {  //Home�ŏI��
    //RefreshState�͓����X�V�̂��߂ɌĂ΂��K�v������
    while(cWiiRemote.RefreshState() == NO_CHANGE) {
	  Sleep(1); //���ꂪ�Ȃ��ƍX�V����������
    }
    switch (cWiiRemote.Button.Bits) { //�{�^�����Ƃ�switch����
      //���F(=program) [1]/[2]
      case wiimote_state::buttons::ONE :
        if(program>0) program--;
        midiOutShortMsg(hMidiOut,MIDIMSG(0xC,0,program,0)); //���F�ύX
        break;
      case wiimote_state::buttons::TWO:
        if(program<0x7F) program++;
        midiOutShortMsg(hMidiOut,MIDIMSG(0xC,0,program,0));
        break;
      default:
        //���� [�X��Pitch]
velocity = \
    (int)(127*(cWiiRemote.Acceleration.Orientation.Pitch+90.0f)/180.0f);
        if(velocity>0x7F) velocity=0x7f;
        if(velocity<0x00) velocity=0x00;

        //���K [�X��Roll]
note = (int)(127*(cWiiRemote.Acceleration.Orientation.Roll+90.0f)/180.0f);
        if(note>0x7F) note=0x7F;
        if(note<0)    note=0;

        if(cWiiRemote.Button.B()) {         //[B]�Ō�
          midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,velocity));
        } else {
          midiOutShortMsg(hMidiOut,MIDIMSG(0x9,0x0,note,0));
        }

���Ӑ[���ǂ߂΁A����قǓ�����Ƃ͂��Ă��Ȃ����ƂɋC�Â��Ǝv���܂��B�ucWiiRemote.SetReportType(wiimote::IN_BUTTONS_ACCEL)�v�ŁA�O��̓{�^���X�V�������������|�[�g���[�h���A�{�^���Ɖ����x�̕ω����������Ƃ��Ƀ��|�[�g����A�Ƃ������[�h�ɕς��Ă��܂��B������u::�v���^�C�v����ƁAIntellisense�������ŕ\�����Ă���܂�����A�K�؂ȃ��[�h��I��������I�т܂��傤�B

�Ȃ��{�^���C�x���g�̓R�[���o�b�N�ŏ������Ă������̂ł����A�����̓ǎ҂̗����̂��߂Ɂuswitch (cWiiRemote.Button.Bits)�v�Ƃ��ĕ\�����Ă��܂�(�R�[���o�b�N�����������͌�́udemo.cpp�v���Q�l�ɂ���Ƃ悢�ł��傤)�BCase���ʼn��F�ύX�ɕK�v�ƂȂ�{�^��[1][2]�𕪊򂳂��āA���F(program)��ύX���AMIDI�R�}���h�𑗐M���Ă��܂��B�Ȃ��O��̃{�^���łƈ���āA���F�̕ύX�����őŌ��͂��Ă��܂���B

�����Ă���switch���ɂ�����قƂ�ǂ̃C�x���g�́udefault:�v�ɗ���܂��B�����ʼn����x�Z���T�[�̒l�A����WiiYourself!�Ŏ擾�ł���p������ɂ��uPitch(�Šp�G����㉺�ɂ������)�v�ƁuRoll(���[���G������E�ɌX�������)�v�����̂܂܁u���ʁv�Ɓu���K�v�ɂ�肠�ĂĂ݂܂����B

�c�w���蓖�ĂĂ݂܂����x�Ƃ����\���������Ďg�����̂́A����͕ʂɁucWiimote.Acceleration.RawX�v�Ȃǂ̒l�ł��S�����Ȃ��A�Ƃ������Ƃł�(���̂ق����ϊ����s�v)�B���̏ꍇ�APitch��Roll��±90�x(-90�x�`+90�x)�̒l���Ƃ�܂��B

velocity = \
    (int)(127*(cWiiRemote.Acceleration.Orientation.Pitch+90.0f)/180.0f);
 note = (int)(127*(cWiiRemote.Acceleration.Orientation.Roll+90.0f)/180.0f);

���̎����Q�l�ɂ��邱�ƂŁA�����Ă��̓��͎͂����̖]�݂̒l��ɕϊ��ł���悤�A��Ƃ��āA����͂��̂悤�ȕϊ����𗘗p���Ă��܂��B�C���^���N�V�������f�U�C�������ŁA�K�v�ȃ{�^���A�K�v�Ȋp�x�A�킩��₷�����p���@�ȂǂȂǓK�؂Ǝv����ϊ������l����K�v������܂��B�Q�l�ɂ��Ă��������B

�����x�Z���T�[�ɂ��e���~��(3/3)
        //���W�w��e�L�X�g�\��
        COORD pos = { 10,  7 };
        SetConsoleCursorPosition(console, pos);
printf("�����x X = %+3.4f[0x%02X] Y = %+3.4f[0x%02X] Z = %+3.4f[0x%02X] ",
          cWiiRemote.Acceleration.X, cWiiRemote.Acceleration.RawX,
          cWiiRemote.Acceleration.Y, cWiiRemote.Acceleration.RawY,
          cWiiRemote.Acceleration.Z, cWiiRemote.Acceleration.RawZ
          );
        pos.X=10; pos.Y=9;
        SetConsoleCursorPosition(console, pos);
        printf("�p������ Pitch = %+3.4f  Roll = %+3.4f  Update=%d  ",
          cWiiRemote.Acceleration.Orientation.Pitch,
          cWiiRemote.Acceleration.Orientation.Roll,
          cWiiRemote.Acceleration.Orientation.UpdateAge
          );
        pos.X=10; pos.Y=11;
        SetConsoleCursorPosition(console, pos);
        printf("���F = [0x%02X] , ���K = [0x%02X] , �Ō����x = [0x%02X] ",
          program,note,velocity);
        break;
    }
  }
  //�I��
  midiOutReset(hMidiOut);
  midiOutClose(hMidiOut);
  cWiiRemote.SetLEDs(0);
  cWiiRemote.SetRumble(0);
  cWiiRemote.Disconnect();
  printf("���t�I��\n");
  CloseHandle(console);
  return 0;
}

�Ō�̃p�[�g�́u�v���O�����̌����ځv�Ɋւ��ꏊ�ł��B�R�}���h���C���v���O�����ł�����n���ł������̂ł����A���݂̉����x�̕ϊ��O�̒l�A�‚܂�WiiRemote����̐��l�ł���uRawX�v�A�uRawY�v�A�uRawZ�v���ώ@���Č��鉿�l�͂���̂ŁA������16�i���ŕ\�����Ă��܂��B�n����16�i���\���ł͂Ȃ��A�e���~���炵���A���e�i��A�����h��Ȃ��̂�\������v���O�����ɕς��Ă��������Ă��S����肠��܂���B

�Ō�ɁA�I���p�[�g��MIDI��‚��āALED��o�C�u���[�^�[���~�����Ă���ؒf���Ă��܂�(�o�C�u���[�^�[�͎g���Ă��܂��񂪁A�����Y���ƃo�C�u���[�^�[���g�����܂܁A�ԈႦ�ďI�����Ă��܂����Ƃ��ȂǑ�ςł�)�B

�Ȃ�cWiiRemote�I�u�W�F�N�g�̏I�����@�ł����A���ő����Ă��鑪��X���b�h�͕K�v�������Ȃ�Ύ����I�ɍ폜�����̂ŁA�uDisconnect()�v���R�[�����Đؒf�������Ă����΂��̂܂܏I�����Ă��悢�悤�ł��B

�u�n���ł͂Ȃ��v�R�}���h���C���v���O����

�n���ȃR�}���h���C���v���O�����ł����uSetConsoleCursorPosition�v���g�����ƂŐ̉�������BASIC�ł�LOCATE���ɂ�����\���ʒu�w����������Ƃ��ł��܂��B�����ł͖ړI�̈ʒu��printf��\�������邽�߂����Ɏg���Ă��܂����A1980�N��̎q�������͂���Łu�u���b�N�����v���炢�͍�������̂ł��B���ɂ�WiiYourself!�́udemo.cpp�v�ɂ͐F���‚�����A�_�ł�������A����‚炵����Ƃ��������N�̃R�}���h���C���v���O�����̋Z�������Ɍ����܂��B�ŋ߂̃O���t�B�b�N�X�́u�u���b�N�����v�̐����{�����𑜓x�ł����A�e�L�X�g�O���t�B�b�N�X(�������g�����G���)���g�����Ȃ��΂Ȃ��Ȃ��Ɂu�N�[���ȋZ�v�ɂȂ�̂ł͂Ȃ��ł��傤���B�c�P�ɐl�X�̑z���͂��ቺ���Ă��邾���Ȃ̂����H

���āA����Ńv���O�����͊����ł��B�����ɃR���p�C�����ʂ�����AWiiRemote��Bluetooth��ڑ����āA�J�b�R�悭�\���܂��傤�B�����ʔ������Ƃ������Łu��(��)�ƍ\���v�͔��ɏd�v�ł��B

�����x�Ńe���~�����s���(�X�N���[���V���b�g)

�܂����̂������X�s�[�h�ʼn���������ł��Ă���̂������͂��ł��B

[B]�Ō� [Roll]���� [Pitch]���K [1]/[2]���F [Home]�I��
�����x X = -0.3846[0x7B]  Y = -0.5556[0x77]  Z = +0.6923[0x97]
�p������ Pitch = +35.0491  Roll = -23.4268  Update=0
���F = [0x00] , ���K = [0x2E] , �Ō����x = [0x58]

���̒l�͍����ɓ����Ă��鐔���͉��ł��傤�H�����ł��u�����x�Z���T�[�v�̒l�ł��B���̂������X�s�[�h�Ŏ擾�ł��Ă��邱�Ƃ��킩��܂��B���āA[B]�{�^���Łu�Ō��v(���Ղ�@������)�����Ă݂܂��傤�B�u�{���������[���v�ƁA��M�I���‘O�q�I�ȃs�A�m���t����������΁A�����ł��B���ɂ͎w���҂̂悤�ɁA���ɂ͕��x�̂悤�ɁA[B]�{�^���������Ȃ���AWiiRemote�ɋŠp�⃍�[���p��^���Ă݂܂��傤�B�r�̋Ȃ��L�΂����u���K�v�A�Ђ˂肪�u���ʁv�ɂȂ�ƂȂ����Ă͂܂��Ă���͂��ł�(����͂ƂĂ�����̂ł����A�s�”\�ł͂Ȃ��͂�)�B[2]�{�^���������āA���F��ς����肵�Ď����Ă݂܂��傤�B�O����܂ŗV�񂾂�[Home]�{�^���ŏI�����܂��B

�����̓ǎ҂͂����ŁA�����ɋL�q�����R�[�h��ύX���Ă݂����Ȃ����͂��ł��B���ꂪ�u�������v���O���~���O�p���v�ł��B���̃y�[�W�ɂ���������񂾂�A�v�������A�e���~���̃`���[�j���O��A��ʂ̕\���f�R���[�V������ύX���ėV��ł��Ă��������B

�Ȃ����ǂ̃q���g�Ƃ��Ă͈ȉ��̂悤�ȗv�f������܂��B

���y����ύX
�u���̏�M�I�ȃr�u���[�g�v�͉��F��ς��Ă�������O�������܂��B�Ō����x��Sleep()�Ȃǂ��g�����ƂŃR���g���[�����āA�ЂƂ‚ЂƂ‚̃m�[�g�𒚔J�ɔ��������邱�Ƃ��ł��܂����A�����߂Ȃ̂�Roll����note�ւ̕ϊ��������ǂ��邱�Ƃł��B���̂悤�ɍׂ���������m�C�Y�𒼐ډ��K�Ɋ��蓖�Ă�ƁA���܂�ɕ����ꂵ���̂ŁA��菭�Ȃ����̉��K���L�������Ɋ��蓖�Ă邱�ƂŁA���J�ɁA�_�������K�����t���邱�Ƃ��ł���悤�ɂȂ�ł��傤(�P���͕K�v����)�B�܂����͂�WiiYourself!�̊֐��ɂ��p������Roll���g���̂ł͂Ȃ�RowY�Ȃǐ��̑���l�𗘗p����̂��悢�ł��傤�B
���֐�������
[1],[2]�{�^���Ŋy���I�Ԃ̂͂��܂�ɓ�����O�����ăJ�b�R�悭�Ȃ��ł��B�Ⴆ�΁A���炩���߁u�g�������Ȋy��v��T���Ă����āA[+][-]�{�^���Ŋ��蓖�ĂĂ��܂��Ƃ����̂͂ǂ��ł��傤���B
��ʂ̌����ڂ�����
���܂̉�ʂ͂܂�ň�̑O�́u��s��ATM�v��u��×p�v���@��v�Ƃ��������͋C�ł��B����͂���ł����̂ł����A���͂��ꂽ�l�����̂܂܃e�L�X�g�̍��W�ɂ‚������ƂŁA���J�b�R���������̃e�L�X�g�O���t�B�b�N�X����邱�Ƃ��ł��܂��B
MIDI�M�������x��
DTM��MIDI�ɒm���̂�����Ȃ�A���̎��_�ł��΂炵��MIDI���͑��u����ɓ��ꂽ���ƂɂȂ�܂��B����MIDI�t�@�C�����{�^���Ɋ��蓖�Ăĉ��t�����邱�Ƃ��ł��܂����A�V�[�P���T�[�̖���������v���O�����Ƒg�ݍ��킹�āu���Q�[�v����邱�Ƃ��ł��܂��B�O����MIDI������AMIDI�M�����T�|�[�g���鑼�̃t�B�W�J���R���s���[�e�B���O�ȃK�W�F�b�g�𑀍삷�邱�Ƃ��A���̃v���O��������_�Ƃ��ĊJ�����邱�Ƃ��ł��邩��ł��B
MIDI����v���O�����ɂ‚���

�@�{�v���O������Win32�ɂ��MIDI����͂������Web�T�C�g�ł̉�����Q�l�ɂ��Ă��܂��B

��Windows�v���O���~���O������(kymats��)

�@http://www13.plala.or.jp/kymats/study/MULTIMEDIA/midiOutShortMsg.html

�@���ɂ�MIDI�𐧌䂷����@�͂������񂠂�܂����A������̃T���v���������Ƃ��u�e���~�������v�ł����B��������̎g����T���v����p�ӂ���Ă���A��҂�kymats����ɂ͂��̏�����؂肵�Ċ��ӂ��q�ׂ����Ă��������܂��B

�ȏ��WiiYourself!�ɂ��Win32��p�����e���~���̊J�����I���܂��BWin32�̎��Y�₻�̑��̃v���W�F�N�g�𗘗p�����ł̎��ۓI�ȏ����ɂȂ����ł��傤���H

�܂��Q�[���v���O���}�[�I�Ȏv�l��������́A�e���~���̎��s��ʂ��āuWiiRemote�͈�̂ǂꂮ�炢�̑��x�œ����Ă���񂾂낤�H�v�u�ǂ��������ő�̃p�t�H�[�}���X���o����̂��낤�H�v�Ƃ������^����o�Ă����̂ł͂Ȃ��ł��傤���H���̋^��ɑ΂���R�[�f�B���O�Ǝ����͎��̃Z�N�V�����ɑ����܂��B

�����ƗV�тƎ����̂͂��܂�

�@�Ȃ��M�҂͂��̃Z�N�V������2�‚��ߋ�v���O�������ł����̂ŁA�u�C���^���N�V�����Z�p�̌����ҁv�Ƃ����Ȋw�I�ȋ�������A�����̎q�������Ŏ��������Ă݂܂����B���ʂ����q�ׂ�ƁA6�΂̑��q�͂ǂ��炩�Ƃ����Ɖ����x�Z���T�[�ł̃e���~���̂ق����D���Ȃ悤�ł����B������2�΂̎q���̓{�^�����̂ق����f�R�D���ŁA���������F�́u�o�L����!�o�L����!�v�Ƃ���[0x7F]���m���ɚn�D���Ă��邱�Ƃ��ώ@���猩�Ď�邱�Ƃ��ł��܂����B�ǂ���̏ꍇ���A�팱��(�����Ă����Ă�)�́A��ʂ�PC�̃X�s�[�J�[�ƁA�茳��WiiRemote���֌W������Ƃ������Ƃ͊m���ɂ킩���Ă��܂������A�\������Ă�����̂����Ȃ̂��͗������Ă��Ȃ��悤�ł��B

�������̕ӃC���X�g�������ق����ǂ��ł����H��

�@�q���̚n�D�Ƃ����͓̂����‹��ň���Ă��Ă��قȂ�܂����A�N��ɂ���Ă����̗�����y�����͈قȂ�܂��B�u������܂��̂��Ɓv�ł͂���܂����A���̎�̒n���Ȏ����́A�ŋ߂̃Q�[���f�U�C���ł́A�ӊO�ƖY����Ă���_�ł�����܂�(�ϗ��K��ɂ�郌�[�e�B���O�͂���܂����A�C���^���N�V�����”\���H�y���߂邩�ǂ����H�Ƃ����_��)�B���������̂悤�ȁu�������������E�y���߂邩�v�Ƃ������_�ł̎����͍ŐV�̔F�m�Ȋw�̘b��ɃA�v���[�`����Ȋw�̎����ł���Ƃ�������ł��傤�B���ꂪ����Ȑ��\�s���炸�̃v���O�����ł��s����킯�ł��B

�@���������ӂ�����܂��B��ʂ̎q�����g�������̎�̐S��������f�[�^�擾�ɂ́A���ӏ��̎擾�Ȃǂ��K�v�ł�(�����T�C���������ł��Ȃ��N��ł͂�荢��ł�)�B�{���́A�f�ڂ����v���O�����𗘗p���������Ȃǂɂ�钼�ځE�ԐړI��Q�⑹�Q�ɂ‚��Ĉ�ؐӔC�𕉂��܂���B�l�Ԃ��g��������(���Ȍ�����������΁u�l�̎����v)�Ɋւ��ϗ��K��ɂ‚��ċ�����������́u�w���V���L�錾�v���Q�l�ɂ���Ƃ悢�ł��傤�B������i�߂��ł̍l�����Ƃ��Ắu�|�P�������Ă񂩂�v�Ȃǂ̋K�����Ɋւ��ꂽ���������a�@�̓�r�����搶�ɂ��u�o�[�`�������A���e�B�͎q�ǂ��ɉ����ł��邩-�Տ���ʂł�VR-�v�Ȃǂ����ɂ悭�܂Ƃ܂��Ă��ĎQ�l�ɒl���܂��B���܂��܂ȃG���^�e�C�����g�Z�p�������Ώۂɂ����ł̊�{�I�ȍl�����Ƃ��Ĉ��p�ł���_���Ƃ��ẮA�M�҂̔��m�_���̈ꕔ�ł���u�G���^�e�C�����g�V�X�e���v(�|�p�Ȋw��_������3��vol.1)���Q�l�ɂȂ邩������܂���B

�v����Ƃ��Ă�WiiRemote

���̃Z�N�V�����ł�WiiYourself!�ɂ��R�}���h���C���v���O�������g�����ƂŁAWiiRemote����荂�x�Ȍv����Ƃ��ė��p���邱�Ƃɒ��킵�Ă݂܂��B

�d�́E�p���E������g���𑪒肷��v���O�������쐬���AWiiRemote�̍X�V�p�����[�^��ς��邱�ƂŁA�����x�Z���T�[���w���������ǂꂮ�炢�̑��x�œ����Ă���̂��H�x�𑪒肵�Ă݂܂��B

���̌�AWiiRemote���g�����Ȃ���Ŕ��ɏd�v�Ȏ����Ȃ̂ł����A���ɒn���ȏ�Ɂu��������肷���ĐQ�Ă��܂��܂��I�v�Ƃ����ǎ҂̓i�i���ǂ݂ł����܂��܂���B���������͑̂ɂ悭�Ȃ��̂ŁA���ʂ������p���܂��傤�B

�uWiiRemote�v����v�d�́E�p���E������g��

��قǂ̉����x�Z���T�[�Ńe���~���Ɠ������A���x���܂��V�����v���W�F�N�g�uMeasurement�v���\�����[�V�����ɒlj����Ă݂܂��傤(��������������e���~�����󂵂Ă������̂ł���΁A�~�߂܂���)�B�ʓ|�Ȑl�͌��݁A�{�^���Ńe���~���ɂȂ��Ă���uWiiMyself�v��main.cpp��u��������`�ō쐬���Ă��悢�ł��傤(�����ł�����������l�́A�R�����g�A�E�g���Ċ��p����Ƃ悢�ł��傤)�B

����v���O������60�s���x�ł��B_tmain()�֐������g���܂���B�����̂��₷���Ɖ���̓s������2�‚̃p�[�g�ɕ����܂����A�e���~������̃\�[�X�����p�ł���ӏ������X����܂��̂ŁA�”\�ł���Έ�C�ɃR�[�f�B���O���Ă��܂��Ƃ悢�ł��傤�B

WiiRemote�����(1/2)
#include "../../wiimote.h"
#include <mmsystem.h>   // for timeGetTime()
#include <conio.h>      // for _kbhit()

int _tmain(int argc, _TCHAR* argv[])
{
	wiimote cWiiRemote;
    DWORD currentTime=0; //���݂̎������i�[����ϐ�
    //������g������p
    DWORD startTime=0, Refreshed=0, Sampled=0;
    float duration=0.0f; //�o�ߎ���[�b]
    bool  continuous=false;
	_tprintf(_T("WiiRemote Measurement\n"));
	_tprintf(_T("contains WiiYourself! wiimote code by \
    gl.tter\nhttp://gl.tter.org\n"));
	while(!cWiiRemote.Connect(wiimote::FIRST_AVAILABLE)) {
		_tprintf(_T("Connecting to a WiiRemote.\n"));
		Sleep(1000);
		}
	_tprintf(_T("connected.\n"));
    cWiiRemote.SetLEDs(0x0f);
	Sleep(1000);
    //�����������ݒ肳�ꂽ�ꍇ�A�������[�h�ɐݒ�
    if (argv[1]) {
     _tprintf(_T("ReportType continuous = true [%s]\n"), argv[1]);
     continuous = true;
    }
    //�{�^���������x�ɕω����������Ƃ��Ƀ��|�[�g����悤�ݒ�
    //��2������true�ɂ��邱�ƂŃf�[�^�X�V������(10msec���x)����
    //�f�t�H���g��false�Ń|�[�����O(�f�[�^������Ƃ�����)��M���[�h
	cWiiRemote.SetReportType(wiimote::IN_BUTTONS_ACCEL, continuous);
    startTime=timeGetTime();  //�J�n���̎��Ԃ�ۑ�

�R�����g�ɂ��L�ڂ͂��Ă��܂����A�厖�ȂƂ����⑫���Ă����܂��B

mmsystem.h
timeGetTime()�Ƃ������݂̎����𑪒肷��Windows�v���b�g�t�H�[��API�𗘗p���邽�߂�#include���Ă��܂��B
conio.h
_kbhit()�Ƃ����L�[�{�[�h���͂��󂯕t����֐��𗘗p���āA�v���O�����I�����ɉ�ʂ������Ă��܂��̂�h�����߂�#include���Ă��܂��B
DWORD startTime=0, Refreshed=0, Sampled=0;
timeGetTime()�͂ƂĂ��傫�Ȑ����Ȃ̂�DWORD�^�̕ϐ���p�ӂ��Ă��܂��B���l��DWORD�^��CPU���̍X�V�񐔂��J�E���g����Refreshed�ƁA���ۂɃf�[�^�擾�����������񐔂𐔂��鐮���^�ϐ�Sampled��p�ӂ��Ă��܂��B
float duration=0.0f;
timeGetTime()�̓~���b�P�ʂŌ��݂̃V���A�����Ԃ�n���܂��B�����1/1000�ɂ��āA�J�n����(startTime)�Ƃ̍���b�P�ʂŕ\������duration(����)�Ƃ������O��float�^�ϐ��ł��B
bool continuous=false;
�v���O�����̋N�����Ɉ����w������邱�Ƃŕϐ�argv[1]�ɕ������n�����Ƃ��ł��܂��B�����ł́A���ڂ������֐��uSetReportType(wiimote::IN_BUTTONS_ACCEL, continuous);�v�̑�2������ύX���āA�ăR���p�C�����Ȃ��Ă������ł���悤��continuous�����s���̈����Ƃ��ēn����悤�ɂ��Ă��܂��B�Ȃ��w�肵�Ȃ��Ƃ���false�ł��B

WiiYourself!��API�֐��uSetReportType()�v�̏ڍׂ��C�ɂȂ��Ă����ǎ҂�����Ǝv���܂��B���̊֐���2�‚̃t�H�[�}�b�g������A���܂܂ł́ubool continuous�v�������^�C�v���g���āA�{�^��������x�̕ω��Ƃ��������|�[�g���[�h���w�肵�Ă��܂����B�֐����E�N���b�N���āu�錾�ֈړ��v����ƁA�ȉ��̂悤��gl.tter���̃R�����g��ǂނ��Ƃ��ł��܂��B

//set wiimote reporting mode (call after Connnect())
//continous = true forces the wiimote to send constant updates, even when
//            nothing has changed.
//          = false only sends data when something has changed (note that
//            acceleration data will cause frequent updates anyway as it
//            jitters even when the wiimote is stationary)
  void SetReportType  (input_report type, bool continuous = false);
�y�Q�l��zWiiRemote�̃��|�[�g���[�h��ݒ肵�܂��AConnect()�̌�ɃR�[�����ĉ������B
continuous��true�ɂ��邱�ƂŁAWiiRemote�ɕύX�����������ǂ����Ɋւ�炸�A�����I�ɍX�V�𑗂点��悤�ݒ�ł��܂��Bfalse�̂Ƃ��͉����ω����������Ƃ������f�[�^�𑗐M���܂��BWiiRemote���������肵���Ƃ���ɒu����Ă���Ƃ��̓r�N�r�N(jitter)���Ă��܂��܂����A�����x�f�[�^�͂悭(frequnet)�X�V������ł��傤�B

���́u�X�V���������Ƃ��������M�v�Ƃ����ʐM���@��ʐM�p��Łu�|�[�����O(polling)�v�Ƃ����܂��B���M�v�����󂯂��f�o�C�X���w�����`�x�Ɠ������Ƃ������A���ۂɃf�[�^�������̂ŒʐM�ш��ߖ�ł��܂��B���ۂɃ{�^���A�����x�A�ԊO���A�g���[�q�c�ƃt���X�y�b�N�ł���uIN_BUTTONS_ACCEL_IR_EXT�v��錾����ƁABluetooth�̑ш���������Ă��܂����Ƃ�����悤�ł��̂ŁA����͒��ׂĂ݂Ȃ���΂Ȃ�܂���B

����ł͌㔼�̃R�[�h�A�ڑ���̃��[�v�ɑ����܂��B

WiiRemote�����(2/2)
    //Home���������܂ŁA��������10�b�ԑ���
	while(!cWiiRemote.Button.Home() && duration<10)
	  {
        while(cWiiRemote.RefreshState() == NO_CHANGE) {
            Refreshed++; //���t���b�V�����ꂽ�񐔂��L�^
            Sleep(1);    //CPU�𖳑ʂɐ�L���Ȃ��悤��
      }
      Sampled++; //�f�[�^�ɕύX���������Ƃ��ɃJ�E���g�A�b�v
	  cWiiRemote.SetRumble(cWiiRemote.Button.B());
_tprintf(_T("TGT:%d %+03d[msec] R:%d S:%d D:%1.0f Accel: X %+2.3f Y %+2.3f \
    Z %+2.3f\n"),
        timeGetTime(), //���݂̎���
        timeGetTime() - currentTime,
        Refreshed, Sampled,duration,
        cWiiRemote.Acceleration.X,
        cWiiRemote.Acceleration.Y,
		cWiiRemote.Acceleration.Z);
      currentTime = timeGetTime();  
      duration = (timeGetTime()-startTime)/1000.0f;
    }
	cWiiRemote.Disconnect();
	_tprintf(_T("Disconnected.\n"));
    duration = (timeGetTime()-startTime)/1000.0f;
    printf("�ڑ�����%4.2f�b �X�V%d�� �f�[�^��M%d��\n �X�V���g��%.2fHz �T���v�����O%.2fHz\n",
      duration, Refreshed, Sampled,
      (float)Refreshed/duration, (float)Sampled/duration);
    while (true) 
      if (_kbhit()) {break;} //�����L�[�������܂ő҂�
	return 0;
}
while(cWiiRemote.RefreshState() == NO_CHANGE) {
RefreshState()�Ƃ��̉��ɂ���Sleep(1);����̂Ȃ�̖��ɗ����Ă���̂��A�^��Ɏv���Ă����l�͂��Ȃ��ł��傤���H�����ŕϐ�Refresh���C���N�������g(=����+1)���邱�ƂŁA�������������ʼn����N���Ă���̂������������Ǝv���܂��B
Sampled++
��L��while�𔲂��āA���ۂɉ����ω����N�����Ƃ��ɃC���N�������g����܂��B�v���O�����̃��[�v�̑��x�Ƃ͕ʂɁA���ۂ�WiiRemote�������x�𑪒肵�đ��M�ł�����E���x���J�E���g����Ƃ����킯�ł��B
timeGetTime() - currentTime
�v���O������������ʉ߂����Ƃ��A���Ȃ킿�f�[�^�ɕω����N�����Ƃ��̎��Ԃ��A�O��̍X�V���Ƃ̍�(�~���b)�ŕ\�����܂��B�Ȃ�timeGetTime()�̓}���`���f�B�A�^�C�}�[�ƌĂ΂��֗��Ȋ֐��ł����A50�~���b�ȉ��̌v�����x�E�M�����͂���܂���̂Œ��ӁB
duration = (timeGetTime()-startTime)/1000.0f;
���݂̎��Ԃ�timeGetTime()�Ŏ擾���āA�J�n��������(startTime)�������āA1000�Ŋ���ƁAWiiRemote�ւ̐ڑ��J�n���猻�݂܂ł̕b����float�ŏo�܂��B�����10�b���肵�Ď����Ńv���O�������~�߂�̂ɂ��g���Ă��܂����A���ۂɂ͂��̌�ɂ���A���g�����v�Z����̂Ɏg���̂��ړI�ł��B

���āA�R�[�f�B���O���I���A�R���p�C�����ʂ�����AWiiRemote��Bluetooth�ڑ����āA���̏�Ȃǂɗ��ĂĒu���Ă݂܂��傤�B���̎��s��ł́A�g���[�q�����ɂ��Ĉ��肵�����̏�ɗ��ĂĂ��܂��B

����I��
Measurement�̎��s��
...
TGT:189427129 +10[msec] R:4818 S:582 D:10 Accel: X +0.538 Y \
    -0.407 Z -0.308
TGT:189427139 +10[msec] R:4823 S:583 D:10 Accel: X +0.423 Y \
    -0.370 Z -0.231
TGT:189427149 +10[msec] R:4828 S:584 D:10 Accel: X +0.308 Y \
    -0.222 Z -0.115
TGT:189427159 +09[msec] R:4833 S:585 D:10 Accel: X +0.231 Y \
    -0.037 Z +0.115
TGT:189427168 +08[msec] R:4837 S:586 D:10 Accel: X +0.192 Y \
    +0.148 Z +0.385
Disconnected.
�ڑ�����10.21�b �X�V4837�� �f�[�^��M586��
 �X�V���g��473.84Hz �T���v�����O57.41Hz

�����͎w�肵�Ă��Ȃ��̂Ń|�[�����O��M���[�h�œ��삵�Ă��܂��B�Ō�ɕ\������郁�b�Z�[�W�Ƃ��̉��߂ɂ‚��ĉ�����܂��B

�ڑ�����10.21�b
duration�ő��肵�����Ԃł��B�u10.21�b�v�Ƃ���܂��B���_�I�ɂ�10�b�ł���͂��Ȃ̂ł����A���ʂ�if���ŏ����Ă����ꂮ�炢�̌덷�͔�������킯�ł��B
�X�V4827��
while���ASleep(1)�Œʉ߂��Ă��郊�t���b�V�������񐔁uRefreshed�v�̒l�ł��B
�f�[�^��M586��
����10�b�Ԃ̊ԂɎ��ۂɍX�V����ăv���O�����ɓ͂����f�[�^�ł��B�|�[�����O�̏ꍇ�A���莞�̏󋵂ő傫���ς��܂��B
�X�V���g��473.84Hz
while���[�v�̒��ɂ���Refreshed��duration�Ŋ��������̂ł�����A������CPU�̑��x���u�HGHz�v�Ƃ����Ă�����̂̂ƈӖ��I�ɂ͂ɋ߂��ł��B����ɂ��Ă͂Ȃ񂾂����Ȃ�����������Ƃ����l�́A���߂���Sleep(1)���R�����g�A�E�g���Ă݂�Ƌ����鐔���ɂȂ邩������܂���(MHz�ɂ͂Ȃ�ł��傤)�B
�T���v�����O57.41Hz
���ۂ̉����x�f�[�^�擾�X�V��1�b�Ԃ�57��s��ꂽ�A�Ƃ������Ƃ��Ӗ����܂��B

�����{�^���������ƏI�����܂�(_kbhit�֐�)�B����ȏꏊ�ɂ���ƁA�{���ɏ��������f�[�^������܂��񂪁A��Ɏ����Ă����肷��ƁA���̂����������Ńf�[�^������Ă���̂��킩��܂��B

�|�[�����O���[�h�ł͂Ȃ��A�������[�h(continuous)�������Ă݂܂��傤�B�f�o�b�O���̈����w��͊ȒP�ł��B�v���W�F�N�g�̃v���p�e�B�u�f�o�b�O�v���u�R�}���h�̈����v�ɉ��������������Ă����邱�Ƃ�true�ɂȂ�܂��B

�f�o�b�O���̈����w��

���x��WiiRemote�������Ă��邩�ǂ����ɂ�炸�A�ȉ��̂悤�Ȍ��ʂɂȂ����̂ł͂Ȃ��ł��傤���H

�ڑ�����10.21�b �X�V5076�� �f�[�^��M993��
 �X�V���g��497.16Hz �T���v�����O97.26Hz

�������[�h��10msec���Ƃ�1��f�[�^�𑗂�悤�ł�����A10�b��1000��A���g���ɂ���100Hz�ƂȂ�A��L�̌��ʂƂقڈ�v���܂��B

���ɂ����r���h���K�v�ɂȂ�܂����A���|�[�g���[�h�ɁuIN_BUTTONS�v��uIN_BUTTONS_ACCEL_IR_EXT�v�����āA�ω������Ă݂�Ɨǂ��ł��傤�B�Ȃ�WiiYourself!�Ŏ��������Ƃ���ł́A�ԊO���n���[�h�ɂ����Ă͎������[�h����{�ɂȂ��Ă���悤�ł��B

�l�@�u�Q�[���@�Ƃ��āA�v����Ƃ��āv

WiiRemote�͑������x����

���āA���̐߂ł�WiiRemote�̉����x�Z���T�[���v����Ƃ��Ďg�����߂̎����v���O�������쐬���āA�e���|�[�g���[�h�̃x���`�}�[�N�I�Ȃ��Ƃ��s���Ă݂܂����BWiiYourself!�ɂ����Ă�API�Ƃ��ĉB������Ă���킯�ł͂Ȃ��̂ŁA���������������̂ł͂Ȃ��ł��傤���H

���肵�Ă݂�ƁAWiiRemote�͎������[�h�Ȃ�100Hz���炢�A�|�[�����O�Ȃ�60-80Hz���炢�œ���ł���悤�ł��B�Q�[���R���g���[����v����Ƃ��čl�����Ƃ��ɁA����͍����Ȃ̂ł��傤���H

���Ƃ��Ε��ʂ̃Q�[���@��1�b������30-60��̃O���t�B�b�N�X���X�V���AWeb�J������1�b������15-30��̉摜���擾���āA��������摜���������č��W�����o���Ă���킯�ł�����AWiiRemote�̓��쑬�x�́u���Ȃ葬���v�ƕ\���ł���̂ł͂Ȃ��ł��傤���B�T���v�����O�藝�����p����ƁA���s���g���̔{�͕K�v�A�Ƃ������Ƃŏ��Ȃ��Ƃ��Q�[���Ɏg���Ȃ�u�\���ȑ��x�v�Ƃ����邩������܂���B

�������A�v����Ƃ��Ă݂�Ƃ�����Ƒ���Ȃ���������܂���B�܂������x�Z���T�[��8bit(256���x��)����̂ł����A���̒��̌g�ѓd�b�ɂ�12bit(1024���x��)�Ƃ����̂���������Ă����肵�܂��B�ǂꂮ�炢�Ⴄ���Ƃ����ƁA�|�[�����O���[�h�̂Ƃ��ɁA���ɒu������u���[���Ɠ������Ă��f�[�^������v�Ƃ������x���ł��B�Z���T�[�̐��x�����ɂ��֌W������̂ň�T��bit���ł͌��܂��񂪁A�����I�Ȍv���Ƃ��āA�����x�Ǝ��Ԃ��킩��΁A�������瑬�x�Ƌ������Z�o�ł���͂��ł����AWiiRemote�̕���\�ł́u���[���Ɠ����������炢�Őj���ӂ�Ȃ��v�̂ŁA��ԍŏ��́u�����x�v�����Ă��Ȃ����ƂɂȂ�܂��B�‚܂肱�̕��@�ʼn����x�̐ώZ���瑬�x�⋗�����Z�o����̂͂ƂĂ�����ł��邱�Ƃ��z���ł���ł��傤(�ԊO����g�ݍ��킹��Εs�”\�ł͂Ȃ��ł���)�B

���������̃Z�N�V�����ŏЉ���v���O�����̎��s���ʂ�����Ɓu�����ĕ��ʂɓ���������ԁv�ł͉����x�������Ɏ擾�ł��Ă���悤�ł��B����́u�d�͉����x�v�Ȃ̂ł����A���̒l���g�����ƂŁuWiiRemote�̎p���v������ł��܂����u�d�͉����x���������͂̓��́v���Ƃ��΁A�e�j�X�̃X�C���O��{�N�V���O�̃p���`�Ȃǂ��ȒP�Ɍ������邱�Ƃ��ł��܂��B�ǂ����������u�Q�[���̂��߂ɐ݌v���ꂽ�f�o�C�X�v�Ȃ̂ł��傤�B

���ۂ̃Q�[���łǂ��g����

���ēǎ҂̑����͂��̐߂Łu������g���v��u�T���v�����O���g���v�ȂǕ��i�����Ȃ�Ȃ����t��ڂɂ����̂ł͂Ȃ��ł��傤���B���l�̃Q�[���v���O���}�[�⌤���҂ł���������A���i�͂������������Ƃɖڂ���������͂��Ȃ��Ǝv���܂��B�������v���O���~���O�̏�ŃC���^���N�V�������l����ƁA�����ɂ��̋��������ɂ‚��Ă͖�肪�o�Ă��܂��B

���Ƃ��ΗL���Ȋi���Q�[���u�X�g���[�g�t�@�C�^�[�v�V���[�Y�ɂ����āA�g�����⏸�����Ƃ������{�^���A�g�ɂ��C�x���g����������܂��B�Ⴆ�Δg�����̏ꍇ�́y���A���A���{���p���`�z�Ƃ������{�^���R���r�l�[�V�����ɂȂ��Ă���A������m���ɓ��͂ł��邱�Ƃ��Q�[����L���ɐi�߂�X�L���ɂȂ�̂ł����A����ŃQ�[���v���O���������̃{�^���R���r�l�[�V������F�����邽�߂ɂ́u�|�[�����O���ǂ����H�v�A�u�ǂꂮ�炢�̍X�V���x�Łv�A�Ƃ������𗝉����āA�Q�[���́w���슴�x(feeling of controling)��w�����Փx�x(difficulty of controlling)��ݒ肷�邱�Ƃ��d�v�ɂȂ�܂��B�����������������‚��ޏ�ŁA���̎�̃��|�[�g���[�h�̐����A�����v���O�����̍쐬�́u���΂炵�����슴�v���������邽�߂ɔ��ɏd�v�ȍ���p�����[�^�[�ł���A�Q�[����Ђ̃G���W�j�A�ɂƂ��āA���̃v���O�����͂��̂��߂̗\�������Ȃ̂ł�(�n���ł���)�B

���ۂ̃Q�[���J���ɂ����ẮA�O���t�B�b�N�X�̑��x�Ȃǂ����̃v���O�����̏�ɍڂ��Ă��܂����A�ő�̃p�t�H�[�}���X(�Ⴆ�΁A�e�������•`���Ɠ��삪�x���Ȃ邩�A�Ƃ������ő又���\��)��݌v�����ŁA�ǂ��ɕ`�惋�[�v�������A�����蔻��������A���͍X�V�������̂��A�Ƃ������݌v�́A�A�N�V�������̍����Q�[���̊J���̏����i�K�ɂ����āA�ō��ɏd�v�Ȏ����v�f�ɂȂ�܂��B��L�̃v���O�����ɂ�����uSleep(1)�v�̏ꏊ�ɂǂꂮ�炢�]�T������̂��A�Ƃ����b�ł��ˁB

WiiRemote�̉����x�Z���T�[���A���͊�{�͏������𔻒肷��{�^���ƍl�����ɂ��܂�ς��͂���܂���B�����x�Z���T�[���L�̃f�[�^���p(�Z�K�u���b�c�^�b�v�v�̂悤��)�ł͂Ȃ��A���͂��ꂽ�A�N�V�����ɑ΂��ă{�^�������蓖�Ă�悤�ȂƂ��́A�u�ǂꂮ�炢�̕b���Łv�A�u�ǂ̂悤�ȓ������������v�A�u�ǂꂮ�炢�̋��x�Łv�Ƃ����������A�����Ɂu�N�ł�����ł���悤�Ɂv�Ƃ����悤�Ɋ��蓖�Ă�K�v������܂��B����͂�if���Ȃǂŏ����Ă����̂͑�ςȍ�Ƃł����AWiiRemote���u���u���U���Ď����Ă��邤���Ɂu�����̓��삪�͂����Ĉ�ʓI�Ȃ̂��H�v�Ƌ^��ɂȂ��Ă��܂����Ƃ�����ł��傤�B���ۂ����������u���삪��ςȃQ�[���v��Wii�����ɂ͑�����������Ă���܂����A�u�V�����G���^�e�C�����g�̌������o�����Ɓv�Ɓu���[�U�C���^�t�F�[�X�Ƃ��Ă̈�ʐ����ێ����邱�Ɓv�Ƃ����̂͂ƂĂ�����g���[�h�I�t�ł��邱�Ƃ��킩��܂��B

���������ȃA�i�^���ǂ��g����

�u���͕��������Ȃ�ł���...�v����ȓǎ҂̕��ɂ́A�ӊO�ɊȒP�Ȍ��_������܂��B�܂��u�|�[�����O�ł͂Ȃ��A�������[�h�v���g�����Ƃł��B����‹��ɂ��v���O�����̋l�܂���y�����A10�~���b�Ɉ�x�m���ɒl���Ԃ��Ă���Ƃ������[�h�ł��B

������WiiRemote�̌v�����g�������ɂ‚��ẮA�������̃Z�N�V�����Ŏ������Ă��܂��܂����̂ŁA�u�擾�ł��������x�Z���T�[�̒l��1/100�b������̃f�[�^�ł���v�Ɛ��肵�Ă��܂��Ă悢�ł��傤(WiiYourself!���g�����ꍇ�́A�ł���)�B

�Ⴆ�΁A������‚̃��[�V��������͂����Ƃ��ɁA100��f�[�^����������A����́u1�b�����郂�[�V�����v�������A�Ƃ������Ƃł��B�u1�b�Ԃ�16��̃{�^���A�Łv����͂Ƃ��Č��o������������A�u6.25��̃T���v�����O�ɑ΂�1��{�^�����͂�Off-On-Off�������ł���΂����v�Ƃ������ƂɂȂ�܂��B�t��1/100�b�̍X�V�����Ȃ�ǂ�ȂɊ撣���Ă�(�Y�����Ă�)�A�_�����1�b�Ԃ�����50�񂵂��{�^����On��Off�͓��͂��悤������܂���B��������w�╨�������A�������������Ƃ���������C���[�W�ł��邩�ǂ����̂ق����C���^���N�V�������x����Z�p�Ƃ��Ă͑厖�ŁA����Љ���悤�ȍׂ����������R��邱�ƂŁA�C���^���N�V�������x����v���O���~���O�Z�p�̓O���O���オ���Ă����܂��B

���K���u�p���`�͑���v�Ɓu�e�j�X�̃��[�V�����v

�����ɗ����o���Ă����܂��B�A�����J�̌Â��f��̃t�F�X�e�B�o���̃V�[���Ȃǂɂɏo�Ă���u�n���}�[�Œ@�����͂𑪒肷��Q�[���v���������ł��傤���B�������̂��킩��Ȃ��̂Łu�p���`�͑���v�Ƃ��Ă����܂��B���܂܂ł̑���v���O�����̉��p�ŁA���́u�p���`�͑���v�Q�[������邱�Ƃ��ł���͂��ł��B

�͂̑傫�����v�Z����ɂ́A�}�O�j�`���[�h�A����Ȃ��u�����x�Z���T�[�e���̗v�f���悵�����̘a�v�ŎZ�o�ł��܂��B

 F = X * X + Y * Y + Z * Z;

����F���傫���Ȃ�Α傫���Ȃ�قǁA���莞�Ԃ�����̗͂��傫�����Ƃ��킩��܂�(���̎��͐��̒l�����Ƃ�܂���)�B���Ȃ݂ɁA�M�҂�WiiRemote�̐ݒu��Ԃł͏d�͉����x�͂��鎲�ɖ�1.0��Ō��o����A���̎��̓[���ɂȂ��Ă��܂�����uF��1.0�v�c���ꂪ�������Ă��Ȃ���Ԃ̒n��̏d�͂������Ă��܂��B���������G�ƌĂт܂��B

�����Ŏv��������WiiRemote�����肵��(�X�g���b�v���‚��Ă��������ˁI)�A�n���}�[��낵���w�u���b�x�ƍ~�肨�낵���Ƃ��̍ő��F��G�̉��{���A���Z�o���邱�ƂŁA�p���`�͑��肪�ł���킯�ł�(�����Ă݂�ƁA��������5G�`16G���Q�[���ɂȂ邠����ł�)�B

�ł͎��́A��������p���āu�e�j�X�̃��[�V�����v������Ă݂܂��傤�B���͂���͈Ӓn���ȗ��K���ł��B���ۂɍ���Ă����Ȑl�ő��肵�Ă݂�ƁA�e�j�X�̃��[�V�����́A�n���}�[�Q�[���Ƃ͎��ĈقȂ�A�����悤�ȉ����x�̐U�镑���Ƃ��đ��肳��܂���B�����̐l���A(�f�U��Ƃ͈قȂ�)�{�[����������ł��낤�u�C���p�N�g�̏u�ԁv�Ɂw�O�b�x�Ɨ͂����߂Ď~�߂Ă��܂��܂��̂ŁA��ԗǂ��u�Ԃɋt������G���������Ă��܂��̂ł��B�������A���̋t�����̗͂������炸�A���ꂢ�Ɂu�t�H���[�X���[�v����͂ł���l�����܂��B���̂��C���p�N�g�̏u�Ԃɂ˂����l�����܂��B�܂��Q�[���I�ɂ��p���`�͑���̂悤�Ɂu�����@���Ă��������I�v�Ƃ��������ɂ����Â炢�ł�(�{�[�����e�񂾏u�Ԃ��g���Ɨǂ��ł��傤)�B�ǂ̏u�ԂɃT���v�����O���J�n���āA�ǂꂮ�炢�̒����̋L�^�����āA�ǂ̂悤�Ȍ��o�A���S���Y�������̂��A�����܂Ŋw�񂾊F����͂��Ёuif���̃J�^�}���v�ȊO�ō���Ă݂邱�Ƃɒ��킵�Ă��������I

�����I�v�f�FHMM�ɂ�郂�[�V�����F��

�����܂�WiiYourself!�̐[�݂������������Ȃ��͂����A�����x�Z���T�[�ɂ‚��Ċ�b�I�Ȃ��Ƃ͊w�Ԃ��Ƃ͂Ȃ��A�Ǝv����������܂���B�������ɂ����܂ł̃T���v���v���O�������g�����ƂŁu���b�c�^�b�v�v�̂悤�ȃA�N�V�����͍�ꂻ���ł�(�ڃR�s�ŃQ�[�����܂˂��ĊJ������̂̓v���O���~���O�̕׋��ɂ͂Ȃ�܂����A�{���ł͔����邱�Ƃɂ��܂��I)�B��L�̗��K���u�e�j�X�̃��[�V�����v�����Ђ���Ă݂Ă��������A�ȊO�Ɖ��[���ł��B

���ꂩ��A��w�ŐM��������׋����Ă���l�́Aif���ɂ���������A�����ɂ��G���K���g�ȔF�����������āA���Ђ����ŐM�������̋Z�p��WiiRemote�ɓK�p���Ă݂Ă��������B�o���h�p�X�t�B���^�[�╪�ފ�A�@�B�w�K�Ƃ��������_���ʔ����قlj����x�Z���T�[�ɗ��p�ł��܂����A�܂��܂����J��̕����ł�����܂��B

�����Č����҂̃A�i�^�A�u����WiiRemote�����͂��s�����ꂽ�v�Ǝv���Ă��܂��񂩁H���͂܂��܂��”\��������Ɗ����Ă��܂��B�F����HMM(Hidden Markov Model�G�B��}���R�t���f��)��SVM(Support Vector Machine)�Ȃǂ̕��ފ���g���邩������܂���B

�����ƁA�uSVM�v��uHMM�v���Ȃ񂾂��킩��Ȃ��l�́A���߂�Ȃ����B�ȒP�ɕ\������Ɓu�l�H�m�\��WiiRemote������͂��ꂽ�M����F���ł���v�Ƃ����b�ŁA����u���[�V����A�v�ƁA�ʂ́u���[�V����B�v�����ꂼ��T���v���Ƃ��Ċw�K������ƁA���̈Ⴂ�������I�ɔF�����āA�Ȍ�́u�Ȃ񂾂��悭�킩��Ȃ����́v�����͂���Ă��uA�v���uB�v�ɕ��ނ��邱�Ƃ��ł���Ƃ����d�g�݂ł��BHMM�͓��͂̑O��֌W�������Ŋl�����܂��BSVM�͎菑���F���Ɏg��ꂽ������Ă��܂��B

�ŋ߂ł͓��ɋ@�B�w�K�n�̘b��͖ʔ����A�h�C�c��Oldenburg��̊w��Benjamin Poppinga���ɂ��uWiiGee�v�Ƃ����v���W�F�N�g��Java5.0��JSR-82�Ƃ���Bluetooth���C�u�������g����HMM�𗘗p�������[�V�����F�����������Ă��܂��B

WiiGee

��WiiGee

http://www.wiigee.org/

�Ƃ���ŁuAiLive�v�Ƃ����Q�[���J���җp�̐��i��C�V�����烉�C�Z���X�𓾂Ĕ̔����Ă���A�����J�E�V���R���o���[�̉�Ђ�����܂��B���͂���Wii�{�̗p�̃Q�[���v���_�N�g�ɂ͗��p����͂��߂Ă���̂�������܂���ˁB

AiLive��

��AiLive(���{��y�[�W�L��)

http://www.ailive.net/

���Ȃ݂ɂ��̉�Ђ̗̍p�y�[�W�ł́uArtificial Intelligence Researcher(�l�H�m�\�̌�����)�v���W���Ă��܂��B�r�Ɏ��M������l�͍̗p�������󂯂Ă݂ẮH

Wiiyourself!�ɂ��X�s�[�J�[�Đ�

���̃Z�N�V�����ł�WiiYourself!�����ݗL��������I�@�\�̂����ł��ł���i�I�ȁu�X�s�[�J�[�̍Đ��v�𗘗p���܂��B�����������I�@�\�Ȃ̂ŁA����������A�i�����\���ł͂Ȃ��ł����A�����Ă݂鉿�l�͏\���ɂ���܂��B

WiiRemote�ɓ��ڂ���Ă���T�E���h�v���Z�b�T�����ɓ���Ȃ̂ŁA���E���̃n�b�J�[���������킵�Ă��܂����A����̎��g���ȊO�‚炷�͔̂��ɓ���炵���AWiiYourself!������WAV�t�@�C������̍Đ��ɐ������Ă��܂��B�Ƃ͂����A�܂����S�ȏ�Ԃł͂���܂���B

�����̎�����WiiYourself!v1.01�Ŏ����Ă��܂��B�܂�TOSHIBA���X�^�b�N��Broadcom���X�^�b�N�ł̂ݎ������Ă��܂��B���g���̊‹��ŁuDemo.exe�v���N�����āu2�v�{�^����������DAISY���[�h�ʼn����������Ȃ��‹��ł��ƁA���̎����͓k�J�ɏI��邩������܂���B

��pWAV�t�@�C���̏���

�܂��AWiiYourself!�ŗ��p�ł��鉹���t�@�C����p�ӂ��܂��傤�B���݂̂Ƃ���A�T�|�[�g���Ă���̂́u16�r�b�g�E���m�����v�̔񈳏kWAV�t�@�C���ŁA����ɃT���v�����O���g���́u2470�`4200Hz�v�ƂȂ��Ă��܂�(�ڍׂ�WiiYourself!�́uLoad16bitMonoSampleWAV�v�֐����Q��)�B����Ȍ`����WAV�t�@�C�����ȒP�Ɏ�ɂ͂���킯�ł͂���܂���̂ŁA�c�[�����g���ăR���o�[�g���܂��傤�B

����ȗp�r�̂��߂ɕ֗��ȃc�[�������‚��܂����B�uKanaWave�v�Ƃ����A�D���ȂЂ炪�Ȃ���WAV�t�@�C�����쐬����c�[���ƁA�uSCMPX�v�Ƃ���ch3���̌��J���Ă���ăT���v�����O���”\�ȃc�[���ł��B

WAV�t�@�C���쐬�̂��߂֗̕��c�[��

��KanaWave(�͍��͌厁)

http://www.vector.co.jp/soft/win95/art/se232653.html

��SCMPX(CH3��)

http://www.din.or.jp/~ch3/

KanaWave��WAV�t�@�C���쐬�B�����قNJȒP�B

�uKanaWave�v�͐������s�v�Ȃ��炢�ȒP�ȃc�[���ł��B�Ђ炪�Ȃō�肽�����̕��͋C���[���ŏ����ƁA���̉��ɂ������g�`�𐶐����܂��B�����ł́u�����[��v�Ƃ�����������Ă݂܂���(��������ꂽ���́A���͋C���o�����߂ɉ��̍�����1�ڐ��肾�������Ă݂Ă��܂�)�B�Đ��{�^���������Ď������āA�C�ɓ�������uKanaWave�v���j���[����uWave�t�@�C���ɕϊ��v�Ƃ��ĕۑ����܂��B�����ł́uWiin.wav�v�Ƃ��܂����B

���ɕϊ��ł��B�uSCMPX�v���N��������uCONVERT�v����uSingle file...�v���uResample...�v��I��ł��������B�t�@�C���I���_�C�A���O���\������܂��̂ŁA��ق�KanaWave�Ő�������WAV�t�@�C���A�������͓���WAV�t�@�C�����Ȃ���΁uC:\Windows\Media�v��蕷�����ꂽWindows�񋟂�WAV�t�@�C����I��ł��������B

SCMPX�ɂ��ϊ��B�p�����[�^�ɒ��ӁB

�T���v�����[�g�́u4200�v(����WiiYourself!���T�|�[�g���Ă���ō�����)�A�ʎq���r�b�g�́u16bit�v�A�`�����l���́umono�v�ŕۑ����܂�(�����ł́uWiin_rs.wav�v�ɂȂ�܂���)�B

���̃t�@�C����WiiYourself!�́uDemo�v�t�H���_���uDaisy16 (3130).wav�v�ƒu�������邩�A�\�[�X�R�[�h��Load16bitMonoSampleWAV�֐��ł̓ǂݍ��݃t�@�C�����uWiin_rs.wav�v�ƕύX���邱�ƂŃ��[�h���邱�Ƃ��ł��܂��B�t�@�C�������̌`���������ł��Ԉ���Ă���ƃG���[�ɂȂ��Ă��܂��܂����A��L�̕��@�ɏ]���Đ�������WAV�t�@�C���Ȃ�A�K�����̕��@�Ń��[�h�͐������܂��B�����̂���l��VC�̃f�o�b�O�@�\���g���č��C�悭�ǂ������邱�ƂŁAWAV�t�@�C���ǂݍ��݂̓�������������ł���̂Ō��l�ɂ͂����߂ł��B

�uDemo.exe�v���s���ɃG���[���o�Ȃ���΁u2�v�{�^�����������ƂōĐ�����܂��B���炩�ɉ����o�Ă��Ȃ��ꍇ�́uA�v�{�^���������āA��`�g(�s�[...)���o���Ă݂�ƁA���������肵�܂��B������ɂ���4.2KHz�ł����特���ɂ‚��Ă͉ۑ肪����܂��B�܂������t�@�C�����Đ����ɓˑRWiiRemote����ؒf���ꂽ������܂��B

�ȏ�Łu�X�s�[�J�[���p�����v�͏I���ł��B�{�������M���Ă��鎞�_�ł͈��萫�A�����ʑo���Łu���܂���p�I�ł͂Ȃ��v�ƕ\�����Ă����܂��傤�B������Wii�{�̂̃Q�[���v���_�N�g�ł́A���������̉����ŕ\���͖L���ɍĐ��ł��Ă��܂��̂ŁA�C�V�����Q�[���J���҂ɒ񋟂��Ă�������J���c�[���ł͔�r�I�ȒP�ɕϊ��ł��Ă��܂��̂�������܂���B�����I�ɂ͕s�”\�ł͂Ȃ��̂ł��傤���A���ڂ��Ă���T�E���h�`�b�v�̉�͂��i�ށA�������͔g�`�Đ����ȂǁA�����ƋC������Ȃ��Ƃ����Ȃ����Ƃ�����̂�������܂���B������ɂ���A�{���ň����͈͂Ƃ��ẮA�����܂łłƂǂ߂Ă������Ƃɂ������܂��B

WAV�t�@�C������̍Đ��͏�L�̒ʂ�A�c�O�Ȃ��犮���ł͂Ȃ��̂ł����A�s�”\�Ƃ��������Ԃł��B��������Âɍl����΁A�������ɁuDemo.exe�v�ŁuA�v�{�^����u1�v�{�^�����������ƂŁA��`�g��T�C���g�ȂǒP���Ȕg�`�͏o�͂ł���̂Łu�ڊo�܂����v�v���炢�Ɏg���邩������܂���(���̏ꍇ�͐ؒf�؂ꁕ�d�r�؂�ɒ��ӂł�)�B�������������̃T�E���h�v���O���}���u���ꂮ�炢�̔g�`�v�����ł����ȉ��y������Ă�����j������܂��̂ŁA�ґ�͌����Ȃ��ł��傤�B

WiiYourself!�̍���

���āA����Ŗ{�͂͏I���ł��BWiiYourself!�ɂ‚��Ă��Ȃ�f�B�[�v�Ɏ��g��ł݂܂������A�‚��Ă��邱�Ƃ��ł����ł��傤���H�R�}���h���C���v���O�����Ɋւ���ׂ����e�N�j�b�N�����Ȃ舵���܂����B������@���C++�ɂ��v���O���~���O��׋��������ł����l�������̂ł͂Ȃ��ł��傤���B

�������AWiiYourself!�̓R�}���h���C���v���O�����̂��߂����ɂ���̂ł͂���܂���Bgl.tter����3D�V���[�e�B���O�Q�[���̗��������܂ł��Ȃ��A����̓l�C�e�B�uC���ꂪ�g����‹��Ȃ�A���ɂł����p�ł��郉�C�u�����ł��B��̓I�ɂ�DirectX��OpenGL�Ƃ��������A���^�C��3DCG�AMaya��Virtools�Ƃ������R���e���c����\�t�g�E�F�A�̃v���O�C���ȂǁA���Ȃ蕝�L���g����킯�ł��B

�܂��A��҂�gl.tter���͂ƂĂ����I�Ȑl�ł��B�u�^�ʖڂȃn�b�J�[�v�ŁA���ł�WiiYourself!���X�V���Ă��܂�(�M�҂����Ȃ��`���Ă��܂����c)�B�߁X�V�����o�[�W�����������[�X����邱�Ƃ��m���ł����A�{�͂ł͈���Ȃ������A�ԊO���@�\���u4�_���o�{�傫���v�������܂��B�X�s�[�J�[�@�\�̊g����A�o�����X�{�[�h�̃T�|�[�g�Ȃǂ���荂�x�ɂȂ��Ă����ł��傤�B.NET�ɂ��WiimoteLib�Ƃ͂܂���������͂�����v���W�F�N�g�ł��̂ŁA�ǎ҂̊F���񂪁u���p���遨�Q�����遨�v������v�Ƃ����ւɓ��邱�ƂŁA�ǂ�ǂ񍂋@�\�ɂȂ��Ă����ł��傤�B���ꂩ����y���݂ȃv���W�F�N�g�ł��B