рд╡рд┐рдВрдбреЛрдЬ рд╕реЗрдВрд╕рд░ рдХреЗ рд▓рд┐рдП рдХрд╛рдЗрдиреЗрдХреНрдЯ рдХреЗ рдЖрдЧрдорди рдХреЗ рдмрд╛рдж рд╕реЗ, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЙрдкрдХрд░рдгреЛрдВ рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ
рдХреЗ рд▓рд┐рдП
рдПрдХ рд╢рд╛рдВрдд рдЬреБрдиреВрди рдкрдбрд╝рд╛ рд╣реИ - рдпрд╣ рдПрдХ рдЬрд╛рджреБрдИ рднрд╛рд╡рдирд╛ рд╣реИ рдЬрдм рдЖрдкрдиреЗ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓рд┐рдЦрд╛ рдерд╛ рд╡рд╣ рдХреБрдЫ рджреВрд░реА рдкрд░ рдорд╛рдирд╡ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ! рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдФрд░ рд╕рдорд╛рди рдбрд┐рд╡рд╛рдЗрд╕ -
рд▓реАрдк рдореЛрд╢рди рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдКрдВрдЧрд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓реАрдк рдореЛрд╢рди рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдХрд┐рдиреЗрдХреНрдЯ рд╣реИ рдЬреЛ рд╣рд╛рдереЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд╣рдЪрд╛рди рд╕рдХрддрд╛ рд╣реИред рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ (
рдЗрд╕ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рд▓рдХреНрд╖рд┐рдд), рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд▓реАрдк рдореЛрд╢рди (.NET рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░) рдХреИрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рдВрдЧреАрдд рд╡рд╛рджреНрдпрдпрдВрддреНрд░ -
рдереЗрд░реЗрдорд┐рди рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рд╣реИ:
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рд▓реАрдк рдореЛрд╢рди
рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд▓реАрдк рдореЛрд╢рди рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ APIs (
рдпрд╣рд╛рдВ рдкреНрд░рд▓реЗрдЦрд┐рдд ) рдХрд╛ рдПрдХ рд╕реЗрдЯ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЗ рдПрдХ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдЖрд╡реГрддреНрддрд┐ (60-100 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ) рдХреЗ рд╕рд╛рде, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдФрд░ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреА рдЧрддрд┐, рд╣рдереЗрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп, рд╡рд┐рднрд┐рдиреНрди "рдЙрдкрдХрд░рдг" рдХреА рд╕реНрдерд┐рддрд┐ рдФрд░ рдЧрддрд┐ рд╕рд╣рд┐рдд (рд▓реАрдк рдореЛрд╢рди рдкреЗрдВрд╕рд┐рд▓ рдФрд░ рдлрд╛рдЙрдВрдЯреЗрди рдкреЗрди рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд╣рдЪрд╛рдирддрд╛ рд╣реИ)
- рдореБрдЦреНрдп рдЗрд╢рд╛рд░реЛрдВ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ: рд╕рд░реНрдХрд▓, рд╕реНрд╡рд╛рдЗрдк, рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ
- рдПрдХ рд╕реНрдкрд░реНрд╢ рд╕рддрд╣ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░реЗрдВ, рдЕрд░реНрдерд╛рдд рд╕реНрдХреНрд░реАрди рдХреЗ рд╕рд╛рдордиреЗ рдХреБрдЫ рдЖрднрд╛рд╕реА рд╕рддрд╣ рдХреЛ рдЫреВрдирд╛
- рд╣рд╛рдереЛрдВ рдФрд░ рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рдореВрд▓ рдЖрдВрджреЛрд▓рдиреЛрдВ (рдЧрддрд┐) рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВ, рдЙрдиреНрд╣реЗрдВ рд░реЛрдЯреЗрд╢рди, рдЖрдВрджреЛрд▓рди рдпрд╛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░реЗрдВред
рдХрд┐рдиреЗрдХреНрдЯ рдХреЗ рд╡рд┐рдкрд░реАрдд, рд▓реАрдк рдореЛрд╢рди рдХреИрдорд░реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд 3 рдбреА рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЖрдк .NET рд╕рд╣рд┐рдд рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдореЗрдВ рд▓реАрдк рдореЛрд╢рди рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рдЕрд╡рд╕рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рд╣рд╛рде рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪред
рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддреЗ рд╣реИрдВ
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП
, рдПрдХ рдЦрд╛рд▓реА WPF рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рдкрд░ рд░рдВрдЧреАрди рд╕рд░реНрдХрд▓ рдЬреЛрдбрд╝реЗрдВред рд╣рдорд╛рд░рд╛ рдкрд╣рд▓рд╛ рдХрджрдо рдпрд╣ рд╕реАрдЦрдирд╛ рд╣реИ рдХрд┐ рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЙрдВрдЧрд▓реА рдХреЗ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рд░реНрдХрд▓ рдХреЛ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред рддреЛ, рдореБрдЦреНрдп рдкреГрд╖реНрда (XAML) рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
WPF рдкреЗрдЬ рд▓реЗрдЖрдЙрдЯ MainPage.xaml<Window x:Class="LeapVoxSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="768" Width="1024" Background="Black"> <Canvas> <Ellipse x:Name="ptr" Fill="Yellow" Height="30" Width="30"/> </Canvas> </Window>
рд▓реАрдк рдореЛрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
рд▓реАрдк рдореЛрд╢рди рдПрд╕рдбреАрдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд▓рд┐рдВрдХ рдХреЛ
LeapCSharp.NET4.0.dll рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╕рдм рдирд╣реАрдВ рд╣реИ - рд▓реАрдк рдПрд╕рдбреАрдХреЗ рдХреЛ рднреА
рд▓реАрдк.рдбреЗрд▓ рдФрд░
рд▓реАрдкрд╕реАрдПрд╕рдЖрд░рдкреАред рдбреАрдПрд▓ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЗ рд╕рдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рд▓рд┐рдП, рдЗрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ
LeapSDK \ lib \ x86 рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ (рдЙрд╕ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЬрд╣рд╛рдВ рд▓реАрдк рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ)
рдвреВрдВрдвреЗрдВ , рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░реЗрдВ "рдХрд╛рд░реНрд░рд╡рд╛рдИ = рд╕рд╛рдордЧреНрд░реА рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ, рдЖрдЙрдЯрдкреБрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдХрд░реЗрдВ =" рдирдпрд╛ "рдХреЙрдкреА рдХрд░реЗрдВ"ред
рд▓реАрдк рдирд┐рдпрдВрддреНрд░рдХ рдХреЗ рд╕рд╛рде рд╕рднреА рд╕рдВрдЪрд╛рд░
рдирд┐рдпрдВрддреНрд░рдХ рд╡рд╕реНрддреБ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдореБрдЦреНрдп MainWindows.xaml.cs рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдРрд╕реА рдХреЛрдИ рд╡рд╕реНрддреБ рдмрдирд╛рдПрдБ:
Controller Leap = new Controller();
рдЕрдм рд▓реАрдк рдореЛрд╢рди рд╣рдореЗрдВ рд╣рд╛рдереЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдлреНрд░реЗрдо рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдлрд╝реНрд░реЗрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
- рдирд┐рдпрдВрддреНрд░рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рд╢реНрд░реЛрддрд╛ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╛рд╕ рдХрд░реЗрдВ, рдЬрд┐рд╕рдореЗрдВ OnFrame рд╡рд┐рдзрд┐ рдЕрддрд┐рднрд╛рд░рд┐рдд рд╣реЛрдЧреАред рдпрд╣ рд╡рд┐рдзрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реАрдк рдореЛрд╢рди рдПрд╕рдбреАрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдЪреНрдЪрддрдо рд╕рдВрднрд╡ рдлреНрд░реЗрдо рджрд░ рдкрд░ рдХреЙрд▓ рдХреА рдЬрд╛рдПрдЧреАред
- рдЕрдкрдиреА рдЦреБрдж рдХреА рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВ, рдЬреЛ рд╕рдордп-рд╕рдордп рдкрд░ рдирд┐рдпрдВрддреНрд░рдХ рд╡рд░реНрдЧ рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░реЗрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рд▓реВрдк рд╣реИ, рдпрд╛ рдпрджрд┐ рд╣рдо рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ UI рдереНрд░реЗрдб рдореЗрдВ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдирд┐рдпрдВрддреНрд░рдХ рдорддрджрд╛рди рдЪрдХреНрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдбрд┐рд╕реНрдкреИрдЪрд░рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб 30 рдмрд╛рд░ рдЖрдЧ рд▓рдЧрд╛рдПрдЧрд╛:
рдирд┐рдпрдВрддреНрд░рдХ рдорддрджрд╛рди рдЪрдХреНрд░ рдХрд╛ рд╕рдВрдЧрдарди DispatcherTimer dt = new DispatcherTimer() { Interval = TimeSpan.FromSeconds(1 / 30) }; public MainWindow() { InitializeComponent(); dt.Tick += dt_Tick; dt.Start(); }
Dt_Tick рд╡рд┐рдзрд┐ рдЧрддрд┐ рдЯреНрд░реИрдХрд┐рдВрдЧ рдХреЗ рдореВрд▓ рддрд░реНрдХ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдЧреАред рд╣рдо рд╡рд░реНрддрдорд╛рди рдлрд╝реНрд░реЗрдо (рдлрд╝реНрд░реЗрдо) рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдЙрдВрдЧрд▓рд┐рдпрд╛рдВ рдЗрд╕ рдлреНрд░реЗрдо рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИрдВ - рд╣рдо рдкрд╣рд▓реЗ рдПрдХ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ рдЬреЛ рдЙрдирд╕реЗ рдЖрддрд╛ рд╣реИ рдФрд░ рд╕рд░реНрдХрд▓ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
void dt_Tick(object sender, EventArgs e) { var fr = Leap.Frame(); if (fr!=null && fr.Fingers.Count>0) { var f = fr.Fingers[0]; Canvas.SetLeft(ptr, 512 + f.TipPosition.x); Canvas.SetTop(ptr, 768-f.TipPosition.y); } }
рд╣рдордиреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рд▓реАрдк рдореЛрд╢рди рдХрдВрдЯреНрд░реЛрд▓рд░ рдкрд░ рдЕрдкрдиреА рдЙрдВрдЧрд▓реА рдШреБрдорд╛рдХрд░ рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рд╕рд░реНрдХрд▓ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдирдореВрдирд╛ рдХреЛрдб
GitHub рдкрд░ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рд╡рд┐рднрд┐рдиреНрди рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдХреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕реЗ рдЙрддреНрдкрдиреНрди рдзреНрд╡рдирд┐
рд╡рд┐рднрд┐рдиреНрди рдКрдВрдЪрд╛рдЗрдпреЛрдВ рдХреА рдзреНрд╡рдирд┐ рдХреЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП, рд╣рдо
NAudio рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ
NAudio рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдкреИрдХреЗрдЬ рдкреНрд░рдмрдВрдзрдХ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЯрд╛рдЗрдк рдХрд░рдХреЗ
Nuget рдХрд╛ рдЙрдкрдпреЛрдЧ
рдХрд░рдирд╛ рд╣реИ :
install-package NAudio
рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдкрд┐рдЪ рдзреНрд╡рдирд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛
рдХреЛ MSDN рдкрд░ рдЪрд╛рд░реНрд▓реНрд╕ рдкреЗрдЯрдЬрд╝реЛрд▓реНрдб рдХреЗ рдПрдХ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ
рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдзреНрд╡рдирд┐ рдХреА рдПрдХ рд╕рд╛рдЗрди рддрд░рдВрдЧ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ NAudio рд╡рд┐рдзрд┐ рдХреЗ рдЗрдирдкреБрдЯ рдореЗрдВ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рдВрдЧ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдХрдИ рд╕реВрдХреНрд╖реНрдорддрд╛рдПрдВ рд╣реИрдВ: рдзреНрд╡рдирд┐ рдХреЛ рдЕрдзрд┐рдХ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдзреНрд╡рдирд┐ рдХреА рдЖрд╡реГрддреНрддрд┐ рдХреЛ рд╕реБрдЪрд╛рд░реВ рд░реВрдк рд╕реЗ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдСрдбрд┐рдпреЛ рдмрдлрд░рд┐рдВрдЧ рдХреА рджреЗрд░реА рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрди рд╕рднреА рд╕реВрдХреНрд╖реНрдорддрд╛рдУрдВ рдХреЛ рд╡рд░реНрдЧ
рдкреЛрд░реНрдЯ рдПрдВрдЯреЛрдирд╢рд╛рдЗрдирд╡реЙрд╡рд╕рд┐рд▓рд▓реЗрдЯрд░ рдореЗрдВ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдзреНрд╡рдирд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА
рд╡реЗрд╡рдУрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдСрд╕рд┐рд▓реЗрдЯрд░ рдХреА рдПрдХ рдЖрд╡реГрддреНрддрд┐ рдХреЛ рдкрд╛рд░ рдХрд░рддреЗ рд╣реБрдП
WaveOut WaveGen = new WaveOut(); PortamentoSineWaveOscillator Osc = new PortamentoSineWaveOscillator(44100,120);
рд╣рдо рдкреГрд╖реНрда рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдореЗрдВ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рддреЗ рд╣реИрдВ:
WaveGen.Init(Osc); WaveGen.Play();
рдЕрдм рд╣рдореЗрдВ рдмрд╕
Osc.Pitch рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рддрд╛рдХрд┐ рдкрд┐рдЪ рддрджрдиреБрд╕рд╛рд░ рдмрджрд▓
рдЬрд╛рдП , рдФрд░ рд╡реЙрд▓реНрдпреВрдо рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП
Osc.Amplitude ред рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдХреЗ рдХреНрд╖реИрддрд┐рдЬ рдЖрдВрджреЛрд▓рдиреЛрдВ рдХреЛ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рдКрд░реНрдзреНрд╡рд╛рдзрд░ - рдкрд┐рдЪ рдХреЗ рд▓рд┐рдПред рдЖрд░рд╛рдорджрд╛рдпрдХ рдзреНрд╡рдирд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рдЪрдпрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
void dt_Tick(object sender, EventArgs e) { var fr = Leap.Frame(); if (fr!=null && fr.Fingers.Count>0) { var f = fr.Fingers[0]; ...
рдЗрд╕ рд╕реНрддрд░ рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг
рдпрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдЫреВ рдордВрддрд░
рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рд╕реБрдВрджрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реНрдХреНрд░реАрди рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдо рд░рд╣реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░реНрдХрд▓ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдПрдХ рдХрдг рдкреНрд░рдгрд╛рд▓реА (рдкрд╛рд░реНрдЯрд┐рдХрд▓ рд╕рд┐рд╕реНрдЯрдо) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рднрд╛рд╡ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ
рдЗрд╕ рд▓реЗрдЦ рдХреЛ CodeProject рдкрд░ рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛, рдЬреЛ WPF рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрдгреЛрдВ рдХрд╛ рдПрдХ рд╕реНрд░реЛрдд рд╣реИред рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЧрдП рд╕рд░реНрдХрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдЕрдВрддрд┐рдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб
GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред
рдШрд░ рдХрд╛ рдкрд╛рда
рдпрджрд┐ рдЖрдк рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд░рдЪрдирд╛рддреНрдордХрддрд╛ рдХреЗ рд▓рд┐рдП рдЧреБрдВрдЬрд╛рдЗрд╢ рд▓рдЧрднрдЧ рдЕрд╕реАрдорд┐рдд рд╣реИ! рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдкреЙрд▓реАрдлреЛрдиреА рдФрд░ рдмрд╣реБ-рдЙрдВрдЧрд▓реА рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ
- рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд┐рдЪ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдВрдЧрд▓реА рдХреА рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рдЧрддрд┐ рд╣реИ
- рд╡рд┐рд╢реЗрд╖ рдзреНрд╡рдирд┐рдпрд╛рдБ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЗрд╕реНрдЪрд░ рд╕рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝реЗрдВ (рдирдореВрдиреЗ)
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ (рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ), рддреЛ рдореИрдВ рд▓реАрдк рдореЛрд╢рди, рдХрд┐рдиреЗрдХреНрдЯ рдФрд░ рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдЙрдкрдпреЛрдЧ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рднрд┐рдиреНрди рдЕрддрд┐рд░рд┐рдХреНрдд рджрд┐рд▓рдЪрд╕реНрдк рдЪреАрдЬреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реБрдП рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдЬрд╛рд░реА рд░рдЦреВрдВрдЧрд╛ред рдЖрдк рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╡реАрдбрд┐рдпреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╣реА рдШрдВрдЯреЛрдВ рдореЗрдВ рд▓реАрдк рдореЛрд╢рди рдХреЗ рд╕рд╛рде рдФрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: