Silverlight может связаться с инструментом MIDI?

Эмпирическое правило должно использовать функцию большинство подходящее для Ваших потребностей.

, Если Вы просто хотите ключи и не планируете к никогда , читает любое из значений, используют ключи ():

foreach my $key (keys %hash) { ... }

, Если Вы просто хотите значения, используйте значения ():

foreach my $val (values %hash) { ... }

при необходимости в ключах и значения используйте каждого ():

keys %hash; # reset the internal iterator so a prior each() doesn't affect the loop
while(my($k, $v) = each %hash) { ... }

, Если Вы планируете изменить ключи хеша всегда кроме [1 111] для удаления текущего ключа во время повторения, тогда Вы не должны использовать каждого (). Например, этот код для создания нового набора прописных ключей с удвоенными значениями хорошо работает с помощью ключей ():

%h = (a => 1, b => 2);

foreach my $k (keys %h)
{
  $h{uc $k} = $h{$k} * 2;
}

создание ожидаемого получающегося хеша:

(a => 1, A => 2, b => 2, B => 4)

, Но использующий каждого (), чтобы сделать то же самое:

%h = (a => 1, b => 2);

keys %h;
while(my($k, $v) = each %h)
{
  $h{uc $k} = $h{$k} * 2; # BAD IDEA!
}

приводит к неправильным результатам твердо предсказываемыми способами. Например:

(a => 1, A => 2, b => 2, B => 8)

Это, однако, безопасно:

keys %h;
while(my($k, $v) = each %h)
{
  if(...)
  {
    delete $h{$k}; # This is safe
  }
}

Все это описано в документации жемчуга:

% perldoc -f keys
% perldoc -f each
6
задан pupeno 19 October 2009 в 12:06
поделиться

3 ответа

Похоже, что в Silverlight это невозможно. Для связи с MIDI-устройством вам придется использовать методы PInvoke в winmm.dll , а это (очевидно) невозможно сделать в Silverlight. См .:

http://forums.silverlight.net/forums/t/123673.aspx

Это легко можно сделать в приложении WPF или WinForms. Это также можно сделать в браузере с XBAP, хотя вам потребуются повышенные разрешения для доступа к API winmm , для чего потребуется сертификат. Вы также можете создавать элементы управления ActiveX с помощью .Net, но я думаю, вам все равно понадобится сертификат для этого, чтобы получить надлежащие разрешения (хотя он может работать только с ужасным диалоговым окном подтверждения безопасности).

2
ответ дан 17 December 2019 в 20:33
поделиться

Невозможно использовать код .NET непосредственно в Silverlight, поскольку Silverlight имеет другое ядро.

Все классы .NET, на которые вы хотите ссылаться в Silverlight, необходимо перекомпилировать для Silverlight.

Также невозможно получить доступ к базовому оборудованию напрямую, поэтому я боюсь, что вы застряли с XBAP с полным доверием. (вам нужно подписать приложение, и пользователь получит всплывающее окно с запросом разрешения). XBAP предоставляет вам все возможности .NET при работе в браузере. XBAP будет работать в firefox / internet explorer на любом компьютере> xp с установленным .net 3.0.

Надеюсь, это поможет.

0
ответ дан 17 December 2019 в 20:33
поделиться

Silverlight 3 имеет расширяемый мультимедийный конвейер для аудио и видео. Вы можете процедурно создать свой собственный звук и воспроизвести его. Чтобы реализовать то, что вы хотите, вам придется написать собственный MIDI-синтезатор.

0
ответ дан 17 December 2019 в 20:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: