Attached Files
Edited by Chubaka, 17 January 2011 - 10:15.
Posted 19 December 2010 - 14:15
Edited by Chubaka, 17 January 2011 - 10:15.
Posted 19 December 2010 - 20:55
Posted 20 December 2010 - 05:52
Edited by Chubaka, 20 December 2010 - 06:14.
Posted 21 December 2010 - 22:00
Posted 11 January 2011 - 12:24
Posted 11 January 2011 - 23:47
Как я для себя представляю:чёт у меня какой то бред с програмьём получается.
исходник ain64_din128_dout128_v2c
пытаюсь прописать энкодеры:
1.вставляю в main.c следующее
void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam
{
MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1
MIOS_MIDI_TxBufferPut(0x10 + encoder); // CC# is 0x10 (16) for first encoder
MIOS_MIDI_TxBufferPut((0x40 + incrementer) & 0x7f);
// this "40 +/- speed" format is used by NI software and some others
}
2.прописываю в mios_enc_table.inc
MIOS_ENC_ENTRY( 4, 6, MIOS_ENC_MODE_NON_DETENTED)
MIOS_ENC_ENTRY( 8, 6, MIOS_ENC_MODE_NON_DETENTED)
MIOS_ENC_ENTRY( 9, 6, MIOS_ENC_MODE_DETENTED2)
3.в common.mk
дописываю к строке - MIOS_WRAPPER_DEFINES e.g.: -DSTACK_HEAD=0x37f -DSTACK_IRQ_HEAD=0x33f -DDONT_INCLUDE_MIOS_ENC_TABLE
4.make
В результате кодеры работают только они посылают СС16,17,18 а такие у меня уже есть на AIN переменных резисторах.
и ещё где можно найти какую нибудь ain64_din128_dout128_v2c для примера чтоб можно было поглядеть как менять mode(toggle/onoff/ononly) для кнопок и настроить светодиоды допустим для VU - метра.
з.ы. я обсолютный ноль в програмье
Posted 12 January 2011 - 11:27
Edited by Chubaka, 12 January 2011 - 12:09.
Posted 12 January 2011 - 13:28
Posted 12 January 2011 - 15:58
Edited by Chubaka, 12 January 2011 - 16:06.
Posted 12 January 2011 - 21:00
Posted 16 January 2011 - 11:36
Posted 17 January 2011 - 10:23
Да можно, и всё работает кроме одной кнопочки shift, которая в тракторе включает modifer.Не очень удобно всё время держать эту клавишу для использования вторичных функций.по поводу OnOff и Toggle: это можно настроить в софте (трактор, если я не ошибаюсь)
я поправил таблицу там должно быть понятно, незнаю как объяснить техническим языком)))VU-метр: какие команды посылает трактор?
Edited by Chubaka, 17 January 2011 - 11:26.
Posted 17 January 2011 - 13:54
Edited by spongebob, 17 January 2011 - 14:01.
Posted 17 January 2011 - 14:22
знал бы я ещё как делается массив и переменная-тригер - цены бы мне небыло))))и т.д. по всем нотам
по тем нотам, где на одну ноту один светодиод - лучше сделать массив, где номер ноты это индекс массива, а значение - номер пина светодиода
По шифту сделай переменную-триггер, которая будет переключаться из одного состояния в другое только по команде 0x90
Posted 17 January 2011 - 15:03
Posted 17 January 2011 - 15:23
Posted 17 January 2011 - 16:49
Posted 17 January 2011 - 18:02
Posted 18 January 2011 - 04:33
Posted 18 January 2011 - 12:35
unsigned char shifta; unsigned char shiftb;
void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam
{
unsigned char i;
if (evnt0==0x80) {evnt2=0;}
if (evnt1<0x57) {
evnt2>0 ? MIOS_DOUT_PinSet (evnt1,1) : MIOS_DOUT_PinSet(evnt1,0);
}
else {
if (evnt1==0x58) { // VU A
for(i=0;i<10;i++) { evnt2>(127/10)*i ? MIOS_DOUT_PinSet (76+i,1) : MIOS_DOUT_PinSet(76+i,0); }
}
if (evnt1==0x59) { // VU B
for(i=0;i<10;i++) { evnt2>(127/10)*i ? MIOS_DOUT_PinSet (86+i,1) : MIOS_DOUT_PinSet(86+i,0); }
}
if (evnt1==0x5a) { // Track progress A
for(i=0;i<16;i++) { evnt2>(127/16)*i ? MIOS_DOUT_PinSet (96+i,1) : MIOS_DOUT_PinSet(96+i,0); }
}
if (evnt1==0x5b) { // Track progress B
for(i=0;i<16;i++) { evnt2>(127/16)*i ? MIOS_DOUT_PinSet (112+i,1) : MIOS_DOUT_PinSet(112+i,0); }
}
}
}
void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam
{
if (pin==6 && pin_value==0) {
if (shifta==1) {shifta=0;} else {shifta=1;}
pin_value = shifta;
}
if (pin==46 && pin_value==0) {
if (shiftb==1) {shiftb=0;} else {shiftb=1;}
pin_value = shiftb;
}
MIOS_MIDI_BeginStream();
MIOS_MIDI_TxBufferPut(0x90); // Note Event at channel #1
MIOS_MIDI_TxBufferPut(pin); // just forward the pin number (0..127)
MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); //
MIOS_MIDI_EndStream();
}
void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam
{
MIOS_MIDI_BeginStream();
MIOS_MIDI_TxBufferPut(0xb0); // CC at MIDI Channel #1
MIOS_MIDI_TxBufferPut(0x10 + encoder + 24); // CC# is 0x10 (16) for first encoder
MIOS_MIDI_TxBufferPut((0x40 + incrementer) & 0x7f);// this "40 +/- speed" format is used by NI software and some others
MIOS_MIDI_EndStream();
}
void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam
{
MIOS_MIDI_BeginStream();
MIOS_MIDI_TxBufferPut(0xb0); // CC at channel 1
MIOS_MIDI_TxBufferPut(pin); // pin number corresponds to CC number
MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); // don't send 10bit pin_value, but 7bit value
MIOS_MIDI_EndStream();
}
0 members, 0 guests, 0 anonymous users