Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
1

MIDI - клавиатура и Delphi

03.12.2014, 00:01. Показов 2681. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Поддерживается ли в Delphi MIDI клавиатура? Сколько не искал - ничего путного не нашел. Клавиатура M-AUDIO KeyRig 49 (если важно). Заранее спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2014, 00:01
Ответы с готовыми решениями:

Midi - пианино в Delphi с поддержкой MIDI - клавиатуры
Вообщем дело обстоит так. Я очень тупоголовый студент (в плане программирования), но мне к...

Midi мелодия
Подскажите пожалуйста как прописать, чтобы при включении формы играла midi мелодия ?

Преобразование midi файла в ноты
Не знаю как преобразовать midi в ноты, кто нибудь сталкивался с подобной проблемой?

Midi приложение + Alpha Control + MainMenu
Доброго времени суток. Может быть кто сталкивался с глюком перерисовки МаinMenu при...

11
пофигист широкого профиля
4732 / 3167 / 858
Регистрация: 15.07.2013
Сообщений: 18,252
03.12.2014, 02:40 2
Цитата Сообщение от Pogromist Посмотреть сообщение
Поддерживается ли в Delphi MIDI клавиатура?
Не поддерживается. И искать не надо.
Надеюсь в Windows она поддерживается?
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 16:52  [ТС] 3
Глупый вопрос, а где тогда она поддерживается (на каких языках) ?
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
03.12.2014, 20:03 4
...не уверен, что подхватит интерфейс вашей MIDI-клавиры системой. Драйвера были на нее или система сразу увидела, что в диспетчере устройств?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//---------------------------------------------------
// Тест приема сообщений с MIDI-синтезатора
// подключение по USB
// Author: Бадло Сергей Григорьевич
// H-page: [url]http://raxp.radioliga.com[/url]
// Cистемные требования: Win 32
// Описание: процесс с калбэком на MIDI сообщения 
// с отрисовкой на канвасе экрана
//---------------------------------------------------
 
program raxp_midi_in;
 
 
uses Messages, Windows, classes, mmsystem;
 
 
type
  sample = class
  public
    constructor Create;
    destructor Destroy; override;
    procedure WndProc(var Msg:TMessage);
  end;
 
 
var
  Msg: tmsg;
  smp: sample;
  FWND: HWND;
  //
  _hdc: hDC;
  // параметры для midi
  _in: HMIDIIn;
 
 
// выплюнем на экран то, что приходит в MIDI
procedure midiCallback(handle: HMIDIIn; uMsg: uint; dwInstance, dwParam1, dwParam2: dword); stdcall;
var t, t1, t2, t3, text: string;
begin
 RedrawWindow(GetDesktopWindow,nil,0,RDW_INVALIDATE + RDW_UPDATENOW + RDW_ALLCHILDREN);
 
 str(dwInstance, t1);
 str(dwParam1, t2);
 str(dwParam2, t3);
 str(uMsg, text);
 
 t:= t1 + ' | ' + t2 + ' | ' + t3;
 sleep(100);
 TextOut(_hdc, 100, 70, pansichar(t), length(t));
 TextOut(_hdc, 100, 100, pansichar(text), length(text));
end;
 
 
 
procedure sample.WndProc(var Msg:TMessage);
begin
 case dword(Msg.lparam) of
  WM_MBUTTONDOWN : ;
  WM_LBUTTONUP   : ;
  WM_RBUTTONUP   : ;
 end
end;
 
 
constructor sample.Create;
Begin
 inherited Create;
 FWnd:= AllocateHWnd(WndProc);
 //
 _hdc:= GetDC(0);
 //
 midiInOpen(@_In, 0, cardinal(@midiCallback), 0, CALLBACK_FUNCTION);
 midiInStart(_In)
End;
 
destructor sample.Destroy;
Begin
 midiInStop(_In);
 midiInReset(_In);
 midiOutClose(_In);
 
 ReleaseDC(0, _hdc);
 RedrawWindow(GetDesktopWindow,nil,0,RDW_INVALIDATE + RDW_UPDATENOW + RDW_ALLCHILDREN);
 //
 deAllocateHWnd(fwnd);
 inherited Destroy
End;
// END СЕРВИС МОДУЛЬ ----------------------------------------------------------
 
 
 
begin
 smp:= sample.Create;
 
 try while GetMessage(Msg, 0, 0, 0) do begin
  TranslateMessage(Msg);
  DispatchMessage(Msg)
 end
 finally smp.Free end
end.
cкачать
1
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
03.12.2014, 23:57  [ТС] 5
Не помогло к сожалению, MIDI обычная (usb), драйвера надо было устанавливать

Добавлено через 6 минут
А нет ))), определился системой сразу, без установки драйвера Windwos 8.1 x64, понятно, что в таких прогах, как Cubase работает отлично, мне просто нужно MIDI пианино сделать для дипломной, а кроме как в Delphi, я ни в чем больше не разбираюсь
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
04.12.2014, 07:30 6
...как представлено устройство в диспетчере устройств (скриншот).
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
04.12.2014, 15:38  [ТС] 7
Вот
Миниатюры
MIDI - клавиатура и Delphi  
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
04.12.2014, 15:56 8
...любопытно, MIDI-клавиатура (не синтезатор) стала звуковым устройством. Ваша снабжена встроенным тон-генератором?

Вообще midiCallback должен отрабатывать, замените TextOut() на MessageBox().
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
04.12.2014, 17:03  [ТС] 9
Извините меня за свою нубовость, но не могли бы вы скинуть строчки переделанного кода (TextOut в MessageBox), а то у меня одни ошибки вылазят
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
04.12.2014, 19:39 10
Delphi
1
MessageBox(0, PChar(text), PChar(t), 0);
0
0 / 0 / 0
Регистрация: 02.12.2014
Сообщений: 14
04.12.2014, 20:12  [ТС] 11
Прога определяет нажатия, также убавления и прибавления громкости, изменения питчера, выдавая следующие сообщения (см. скриншоты), на клавишах сообщение появляется 2 раза (как я понял, это нажатие и отпускание клавиши), на прибавлении громкости может появится много сообщений, после каждого нажатия цифра вверху растет, и в зависимости от клавиши, цифра меняться (только закономерность я не понял), а в центре цифры всегда 2 (961 при запуске проги и 963 при нажатиях). Огромное вам спасибо, осталось только интегрировать это в будущее пианино.
Миниатюры
MIDI - клавиатура и Delphi   MIDI - клавиатура и Delphi  
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
04.12.2014, 20:43 12
Оки.
0
04.12.2014, 20:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2014, 20:43
Помогаю со студенческими работами здесь

Сделать сохранение сыгранной мелодии Midi
есть программка синтезаторов midi звуков. Нужно сделать сохранение сыгранной мелодии вот...

Открыть файл MIDI в виде байтов, чтобы в последующем преобразовать в ноты
Нужно открыть файл MIDI в виде байтов, чтобы в последующем преобразовать в ноты, кто нибудь...

Midi rj
Как корректно отобразить и задать темп в Миди? // Calculate new tick length old_tick_length :=...

Midi-Пианино
Доброго времени суток. Мне нужно написать пианино в делфи, чтобы при нажатии на кнопки клавиатуры,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru