Jump to content

Recommended Posts

Posted (edited)

Сборка железа подходит к концу!!! ПереднÑÑ Ð¿Ð°Ð½ÐµÐ»ÑŒ немного не доделана.

post-7588-017450600 1292764106_thumb.jpg

post-7588-057575600 1292764111_thumb.jpg

post-7588-079180800 1292764118_thumb.jpg

post-7588-071573800 1293429185_thumb.jpg

post-7588-094426300 1295255697_thumb.png

Edited by Chubaka
  • Replies 89
  • Created
  • Last Reply

Top Posters In This Topic

Posted (edited)

еÑÑ‚ÑŒ вопроÑик:

Я хочу вмеÑто механичеÑкого Ñнкодера Ð´Ð»Ñ Ð´Ð¶Ð¾Ð³Ð¾Ð² Ñделать оптичеÑкий.

Какое макÑимальное разрешение (pulses) за оборот Ñ Ð¼Ð¾Ð³Ñƒ Ñделать еÑли вешать Ñ ÐµÐ³Ð¾ буду на din рейку?

Edited by Chubaka
  • 3 weeks later...
Posted

чёт у Ð¼ÐµÐ½Ñ ÐºÐ°ÐºÐ¾Ð¹ то бред Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑŒÑ‘Ð¼ получаетÑÑ.

иÑходник 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

чёт у Ð¼ÐµÐ½Ñ ÐºÐ°ÐºÐ¾Ð¹ то бред Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑŒÑ‘Ð¼ получаетÑÑ.

иÑходник 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 - метра.

з.Ñ‹. Ñ Ð¾Ð±Ñолютный ноль в програмье

Как Ñ Ð´Ð»Ñ ÑÐµÐ±Ñ Ð¿Ñ€ÐµÐ´ÑтавлÑÑŽ:

1. "CC# is 0x10 (16) " и еÑÑ‚ÑŒ CC16 из таблицы 3 :

http://www.midi.org/...imessages.php#3

4. Режим toggle Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿Ð¾Ðº ÑущеÑтвует и в MB64 и в MB64e, ПоверхноÑтно пролиÑÑ‚Ð¸Ð²Ð°Ñ Ñ„Ð°Ð¸Ð»Ñ‹ обнаружил ÑƒÐ¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° toggle в : midibox64e_v2_2d\src\mb64e_buttons.inc\...

;; get fourth byte - which selects the button mode - and branch depending on value

call MB64E_BANK_Read

andlw 0x03

JUMPTABLE_2BYTES_UNSECURE

rgoto MB64E_BUTTON_OnOff

rgoto MB64E_BUTTON_OnOnly

rgoto MB64E_BUTTON_Toggle

rgoto MB64E_BUTTON_OnOff

MB64e поддерживает также и переменные резиÑторы :

из setup_midibox16e.asm файла :

; Although MIDIbox64E has been designed for rotary encoders, it can also handle with

; up to 64 pots/faders or up to 8 motorfaders.

, и ÑÑƒÐ´Ñ Ð¿Ð¾ опиÑанию к MB64e, в принципе может управлÑÑ‚ÑŒ большим количеÑтвом цифровых входов - до 128.

Cветодиоды Ð´Ð»Ñ VU - метра наÑтроены в MBSid v2, например.

Posted (edited)

СпаÑибо Janis1279

По поводу проблемы Ñ ÐºÐ¾Ð´ÐµÑ€Ð°Ð¼Ð¸ Ñ Ð¿Ð¾Ð½Ñл.

Я так понимаю вы предлагаете мне вмеÑто ain64_din128_dout128_v2c, иÑпользовать МВ64Е?

Правильно ли Ñ Ð¿Ð¾Ð½Ñл что МВ64Е подойдет под моё железо Ñ: AIN = 24,DOUT = 128, DIN = 76?

и чем вÑÑ‘ таки лучше МВ64Е, чем ain64_din128_dout128_v2c(Ñ Ð¼Ð½Ð¾Ð³Ð¾ иÑкал по форуму но так и не Ñмог найти ответа на Ñтот вопроÑ)

Edited by Chubaka
Posted

Что отноÑитÑÑ Ðº DOUT=128 Ñ Ð½Ðµ уверен, но Ñо входами вÑÑ‘ должно получитÑÑ. Привожу цитату из опиÑÐ°Ð½Ð¸Ñ Ðº MB64e :

In priniciple 128 digital inputs are available, every button allocates one input, every rotary encoder allocates 2 inputs. The rotary encoder(s) control 128 virtual pots of a bank, regardless how many physical encoders are connected. The application is very flexible, a lot of different configurations are supported, so don't hesitate to take a look into the main.asm file in order to get an impression about the possibilities.

Ðадо пытатьÑÑ ÑпроÑить у тех, кто уже Ñобирал Ñвои DJ контроллеры, ÑпроÑить в англицком форуме, там более менее отвечают на вопроÑÑ‹.

Posted (edited)

Да по поводу 128 digital inputs Ñ ÑƒÐ¶Ðµ читал, но мне очень нужно 128 DOUT выходов.

Что каÑаетÑÑ Ð°Ð½Ð³Ð»Ð¾Ñзычного форума, то Ñ ÑƒÐ¶Ðµ пыталÑÑ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ вопроÑÑ‹ Ñ Ð¼Ð¾Ð¸Ð¼ корÑвым английÑким и воÑпринимать тех.информацию Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ñ‡Ð¸ÐºÐ¾Ð¼. Половину из моих вопроÑов они не понÑли, и ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ñ Ñ‚Ð¾ что Ñ Ð² програмирование нечего не понимаю половину из их ответов не понÑл Ñ :rolleyes:

так что буду Ñ Ð²Ñётаки работать Ñ ain64_din128_dout128_v2c, тем более что spongebob обещал помочь, но пока куда то он иÑчез.

p.s. большое ÑпаÑибо за подÑказку Ñ ÐºÐ¾Ð´ÐµÑ€Ð°Ð¼Ð¸, попробовал изменить и вÑÑ‘ получилоÑÑŒ :frantics:

Edited by Chubaka
Posted

ОÑновное внимание в английÑком форуме уделено ÑамоÑтоÑтельному программированию на базе MB64e. Ртакже Ñовет почитать больше о проекте Protodeck.

http://www.midibox.org/dokuwiki/doku.php?do=search&id=Protodeck+

Posted

никуда Ñ Ð½Ðµ иÑчез

Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð¸Ñ€ÑƒÑŽ :)

по поводу OnOff и Toggle: Ñто можно наÑтроить в Ñофте (трактор, еÑли Ñ Ð½Ðµ ошибаюÑÑŒ)

VU-метр: какие команды поÑылает трактор? Ð’ MPROC_NotifyReceivedEvnt пишем обработчик.

Делим диапазон 0-127 на промежутки (по количеÑтву Ñветодиодов + 1). Допутим их будет 5. 0-x1-x2-x3-x4-127

Далее проÑто :

evnt2>x1 ? MIOS_DOUT_PinSet (n1,1) : MIOS_DOUT_PinSet(n1,0);

evnt2>x2 ? MIOS_DOUT_PinSet (n2,1) : MIOS_DOUT_PinSet(n2,0);

evnt2>x3 ? MIOS_DOUT_PinSet (n3,1) : MIOS_DOUT_PinSet(n3,0);

evnt2>x4 ? MIOS_DOUT_PinSet (n4,1) : MIOS_DOUT_PinSet(n4,0);

ну что-то типа того...

Posted (edited)

Привет spongebob

по поводу OnOff и Toggle: Ñто можно наÑтроить в Ñофте (трактор, еÑли Ñ Ð½Ðµ ошибаюÑÑŒ)

Да можно, и вÑÑ‘ работает кроме одной кнопочки shift, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð² тракторе включает modifer.Ðе очень удобно вÑÑ‘ Ð²Ñ€ÐµÐ¼Ñ Ð´ÐµÑ€Ð¶Ð°Ñ‚ÑŒ Ñту клавишу Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ñ‚Ð¾Ñ€Ð¸Ñ‡Ð½Ñ‹Ñ… функций.

VU-метр: какие команды поÑылает трактор?

Ñ Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸Ð» таблицу там должно быть понÑтно, незнаю как объÑÑнить техничеÑким Ñзыком)))

// vu-metr for deck a

evnt2>19 ? MIOS_DOUT_PinSet (76,1) : MIOS_DOUT_PinSet(76,0);

evnt2>31 ? MIOS_DOUT_PinSet (77,1) : MIOS_DOUT_PinSet(77,0);

evnt2>43 ? MIOS_DOUT_PinSet (78,1) : MIOS_DOUT_PinSet(78,0);

evnt2>55 ? MIOS_DOUT_PinSet (79,1) : MIOS_DOUT_PinSet(79,0);

evnt2>67 ? MIOS_DOUT_PinSet (80,1) : MIOS_DOUT_PinSet(80,0);

evnt2>79 ? MIOS_DOUT_PinSet (81,1) : MIOS_DOUT_PinSet(81,0);

evnt2>91 ? MIOS_DOUT_PinSet (82,1) : MIOS_DOUT_PinSet(82,0);

evnt2>103 ? MIOS_DOUT_PinSet (83,1) : MIOS_DOUT_PinSet(83,0);

evnt2>115 ? MIOS_DOUT_PinSet (84,1) : MIOS_DOUT_PinSet(84,0);

evnt2>127 ? MIOS_DOUT_PinSet (85,1) : MIOS_DOUT_PinSet(85,0);

по моей таблице так должно быть?))) Ргде указывать что вÑе Ñти pin Ñ 76 по 85 Ñто нота E5?

Edited by Chubaka
Posted (edited)

Ðу Ñ‚Ñ‹ Ñту конÑтрукцию заключи в уÑловие:

if evnt1 == (номер ноты E5) {

// vu-metr for deck a

}

if evnt1 == (номер ноты F5) {

// vu-metr for deck b

}

if evnt1 == (номер ноты F#5) {

// track progress deck b

}

if evnt1 == (номер ноты G5) {

// track progress deck b

}

и Ñ‚.д. по вÑем нотам

по тем нотам, где на одну ноту один Ñветодиод - лучше Ñделать маÑÑив, где номер ноты Ñто Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива, а значение - номер пина Ñветодиода

По шифту Ñделай переменную-триггер, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ переключатьÑÑ Ð¸Ð· одного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое только по команде 0x90

P.S. из чего делал лицевую панель? чем наноÑил надпиÑи? как делал отверÑтиÑ?

Edited by spongebob
Posted
и Ñ‚.д. по вÑем нотам

по тем нотам, где на одну ноту один Ñветодиод - лучше Ñделать маÑÑив, где номер ноты Ñто Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива, а значение - номер пина Ñветодиода

По шифту Ñделай переменную-триггер, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ переключатьÑÑ Ð¸Ð· одного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое только по команде 0x90

знал бы Ñ ÐµÑ‰Ñ‘ как делаетÑÑ Ð¼Ð°ÑÑив и переменнаÑ-тригер - цены бы мне небыло))))

Лицевую панель делел из черного оргÑтекла, Ñначало хотел из Ð°Ð»ÑŽÐ¼Ð¸Ð½Ð¸Ñ Ð½Ð¾ дороговато вырезка Ñтоит.

РиÑовал в кореле (можно любую прогу Ñ ÐºÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ‚Ð°Ð¼Ð¸, отдавал в рекламную шаражку (печати, штампы и.Ñ‚.д.)у них, почти у вÑех Ñ‰Ð°Ñ ÐµÑÑ‚ÑŒ лазеры маломощные. Ñтим же лазером можно и гравировку делать, надпиÑи Ñделанны именно так, и залиты краÑкой.

Кнопки по тому же принципу, из матового оргÑтекла, Ñклеены Дихлоретаном, ÑÐ´Ð¾Ð²Ð¸Ñ‚Ð°Ñ ÑˆÑ‚ÑƒÐºÐ° но клеет намертво.

Posted

дихлорÑтана через мои руки прошло больше чем пива :) ни одну модель Ñамолёта/Ð°Ð²Ñ‚Ð¾Ð¼Ð¾Ð±Ð¸Ð»Ñ Ñклеил в боÑоногом детÑтве :)

про резку лазером Ñ Ñразу подумал, но не знал что им же можно Ñделать гравировку

кÑтати, откуда Ñ‚Ñ‹? и Ñколько у Ð²Ð°Ñ Ñтоит метр прохода лазером?

теперь вернёмÑÑ Ðº триггерам и маÑÑивам

в начале иÑходника поÑле #include вÑтавлÑем

//триггер

unsigned char shiftA_state;

unsigned char shiftB_state;

В DIN_NotifyToggle добавим обработчик

switch switch( evnt1 ) {

номер ноты shiftA:

if !pin_value {shiftA_state ? shiftA_state = 0 : shiftA_state = 1;}

отправлÑем миди-команду

break;

номер ноты shiftB:

if !pin_value {shiftB_state ? shiftB_state = 0 : shiftB_state = 1;}

отправлÑем миди-команду

break;

default:

обработка других кнопок

отправлÑем миди-команду

}

но можно Ñделать и проще (имхо)

//маÑÑив

const unsigned char led_map[76] = {номера пинов через запÑтую в ÑоответÑтвии Ñ Ð½Ð¾Ñ‚Ð°Ð¼Ð¸};

но так как у Ñ‚ÐµÐ±Ñ Ð¸ так они подрÑд (ÑÑƒÐ´Ñ Ð¿Ð¾ таблице), то можно обойтиÑÑŒ и без маÑÑива

Ð’ MPROC_NotifyReceivedEvnt добавлÑем

if evnt1 < (номер ноты Е5) {

if( evnt0 == 0x80 || evnt2 == 0x00 ) {

MIOS_DOUT_PinSet(evnt1, 0); // Note Off

} else {

MIOS_DOUT_PinSet(evnt1, 1); // Note On

}

}

Ñкинь Ñвой иÑходник в текущем виде, попробую на доÑуге (читай на работе :)) занÑÑ‚ÑŒÑÑ

Posted

по шифту хрень напиÑал не Ñмотри туда :)

иÑходники шли :)

Posted

Вот иÑходник. Ñто в принципе "ain64_din128_dout128_v2c" но Ñ ÑƒÐ¶Ðµ пропиÑанными кодерами, уÑтановленным количеÑтвом AIN входов и убранными Ñтрочками Ð´Ð»Ñ Ð´Ð¸ÑÐ¿Ð»ÐµÑ Ð¸Ð· main.c

Из Оренбурга Ñ.., незнаю Ñколько Ñтоит метр но вÑÑ‘ вмеÑте (переднÑÑ Ð¿Ð°Ð½ÐµÐ»ÑŒ Ñ Ð³Ñ€Ð°Ð²Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹, подложка под переднюю панель, кнопки Ñ Ð³Ñ€Ð¾Ð²Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹, подложка под кнопки + ещё одна подложка под кнопки, круги Ð´Ð»Ñ Ð´Ð¶Ð¾Ð³Ð¾Ð² 6 штук) обошлоÑÑŒ мне в 5100Ñ€. Можно обойтиÑÑŒ без подложек, дешевле, но так как Ñ Ð½Ðµ нашел нужной толщины оргÑтекла пришлоÑÑŒ Ñклеивать...

zvezda.rar

Posted

а Ñ Ð¸Ð· города-невеÑÑ‚ Иваново :)

как у Ð²Ð°Ñ Ð² городе Ñ Ñ€Ð°Ð´Ð¸Ð¾Ð´ÐµÑ‚Ð°Ð»Ñми? оÑобенно Ñ smd. у Ð½Ð°Ñ Ð²Ñего 2 магазина радиодеталей, в одном Ñмд Ñ€Ñдами по 5-10 шт., в другом номиналами, но по 100 шт. :(

Ñ Ñ Ð½ÑƒÐ»Ñ Ð½Ð°Ñ‡Ð°Ð» делать программу, но рабочий день закончилÑÑ :) завтра допишу (надеюÑÑŒ) и залью Ñюда

думаю разморозить Ñвой проект (контроллер Ð´Ð»Ñ ableton, Ñ…Ð¾Ñ‚Ñ Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾ была Ð¸Ð´ÐµÑ Ñделать подобие vestax vci-100): матрица кнопки+двухцветные диоды 8на8, 24 потенциометра + 16 кнопок Ñ Ð¿Ð¾Ð´Ñветкой. дизайн проекта похож на akai apc40.

Posted

У Ð½Ð°Ñ 4 магазина, маленьких и там нечего нету)))

Я вÑÑ‘ заказывал на elitan.ru, там цены более менее нормальные.

Posted

В локальные переменные добавить:

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);	}

	}

}

}

Обработка кнопочек: (кнопки Shift Ñрабатывают по нажатию, а не отпуÑканию)
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();

}

У Ð¼ÐµÐ½Ñ ÐºÐ°ÐºÐ¸Ðµ-то глюки Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ñцией. РугаетÑÑ Ð½Ð° Ñнкодеры, ругаетÑÑ Ð½Ð° опции компилÑтора...

У Ñ‚ÐµÐ±Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð¸Ñ€ÑƒÐµÑ‚ÑÑ Ð½Ð¾Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð¾? Я проÑто давно не брал в руки шашек, может делаю что не так :)

Может Janis1279 чего подÑкажет?

Posted (edited)

Отбой, вÑÑ‘ компилируетÑÑ Ð½Ð°Ð¼Ð°Ð½Ð°... забыл ; поÑтавить :)

#include <cmios.h>

#include <pic18fregs.h>

#include "main.h"

unsigned char shifta;

unsigned char shiftb;


MIOS_ENC_TABLE {

	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),

	MIOS_ENC_EOT

};


void Init(void) __wparam

{

  // set shift register update frequency

  MIOS_SRIO_UpdateFrqSet(1); // ms


  // we need to set at least one IO shift register pair

  MIOS_SRIO_NumberSet(NUMBER_OF_SRIO);


  // debouncing value for DINs

  MIOS_SRIO_DebounceSet(DIN_DEBOUNCE_VALUE);


  MIOS_SRIO_TS_SensitivitySet(DIN_TS_SENSITIVITY);


  // initialize the AIN driver

  MIOS_AIN_NumberSet(AIN_NUMBER_INPUTS);

#if AIN_MUXED_MODE

  MIOS_AIN_Muxed();

#else

  MIOS_AIN_UnMuxed();

#endif

  MIOS_AIN_DeadbandSet(AIN_DEADBAND);


  MIOS_ENC_SpeedSet(0, MIOS_ENC_SPEED_FAST, 2);

  MIOS_ENC_SpeedSet(1, MIOS_ENC_SPEED_FAST, 2);

  MIOS_ENC_SpeedSet(2, MIOS_ENC_SPEED_FAST, 2);


  shifta=0;

  shiftb=0;

}

Это начало, в предыдущем поÑте продолжение :)

Должно работать. 7 килобайт получилÑÑ hex, должен влезть в пик.

ЕÑÑ‚ÑŒ мелкие Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð¸Ñ Ñ Ñ‚Ð²Ð¾ÐµÐ¹ таблицей, но Ñто поправишь уже в тракторе, когда будешь мапить кнопки-лампочки.

Удачи в дальнейшей Ñборке! ЕÑли что - обращайÑÑ ÐµÑ‰Ñ‘.

Edited by spongebob
Posted (edited)

1.Лампочки, VU-метры и трек прогреÑÑ Ñ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‚ :drool:

Правда Ñ‚Ñ‹ немного Ñ Ð½Ð¾Ð¼ÐµÑ€Ð°Ð¼Ð¸ нот ошибÑÑ, но Ñ Ð¿Ð¾Ð¿Ñ€Ð°Ð²Ð¸Ð».

2.С кнопками проиÑходит Ñ‚Ð°ÐºÐ°Ñ Ñ„Ð¸Ð³Ð½Ñ:

нажимаеш шифт, поÑылаетÑÑ 7f, отпуÑкаеш - 00; нажимаем второй раз - 00, отпуÑкаем - 00, нажимем третий раз - 7f, отпуÑкаем - 00, и так по кругу.

еÑÑ‚ÑŒ мыÑлÑ, чиÑто логичеÑки, что pin6 и pin46 надо убрать из общего правила.

Ñ‰Ð°Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð¾Ð¼ "научного тыка")) буду пытатьÑÑ Ñто иÑправить.

3.Энкодеры и крутилочки Ñ Ñделал ещё раньше (ну кроме 10bit на темпо) там Ñтрочка одна у Ñ‚ÐµÐ±Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð¾:

.

MIOS_MIDI_TxBufferPut(0x18 + encoder); // CC# is 0x18 (24) for first encoder

.

:frantics:

прочитал первое Ñообщение и не поÑмотрел что еÑÑ‚ÑŒ Ð²Ñ‚Ð¾Ñ€Ð°Ñ Ñтраница :rolleyes:

а Ñ 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),

MIOS_ENC_EOT

в mios_enc_table.inc прÑм пропиÑал и в в common.mk

Ð´Ð¾Ð¿Ð¸Ñ Ðº Ñтроке - MIOS_WRAPPER_DEFINES e.g.: -DSTACK_HEAD=0x37f -DSTACK_IRQ_HEAD=0x33f -DDONT_INCLUDE_MIOS_ENC_TABLE и вроде вÑÑ‘ работает нормально.

или Ð½ÐµÐ»ÑŒÐ·Ñ Ñ‚Ð°Ðº :sad:

Edited by Chubaka
Posted

10 bit на команду CC не получитÑÑ, они тока 7 бит поддерживают (вроде бы)

Ñ ÑˆÐ¸Ñ„Ñ‚Ð¾Ð¼ нарна намудрил чота :)

нужно проверÑÑ‚ÑŒ... но не ÑÐµÐ¹Ñ‡Ð°Ñ :) ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¸Ð²Ð½Ð¾Ð¹ вечерок :)

Posted (edited)

С Праздником!!!

if ((pin==46 || pin==6) && pin_value==1) {

return;

}

ÑпаÑибо, вечером поÑле работы попробую

7 килобайт получилÑÑ hex, должен влезть в пик

Ñ Ñ‚Ð°Ðº понимаю, что уже не получитÑÑ Ñделать функции типа кнопки onoff\ononly\toggle, Ñветодиод на Ñередине регулÑтора tempo?

Ñ ÐµÑ‰Ñ‘ подумывал blink Ñделать кое Ñ Ñ‡ÐµÐ¼?

Edited by Chubaka

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...