Chubaka

MIDI Dj Controller ZVEZDA

89 posts in this topic

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

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

Share this post


Link to post
Share on other sites

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

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

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

Edited by Chubaka

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

СпаÑибо Janis1279

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

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

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

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

Edited by Chubaka

Share this post


Link to post
Share on other sites

Что отноÑитÑÑ Ðº 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 контроллеры, ÑпроÑить в англицком форуме, там более менее отвечают на вопроÑÑ‹.

Share this post


Link to post
Share on other sites

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

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

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

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

Edited by Chubaka

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

по поводу 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);

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

Share this post


Link to post
Share on other sites

Привет 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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
и Ñ‚.д. по вÑем нотам

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

в начале иÑходника поÑле #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

}

}

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

zvezda.rar

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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 чего подÑкажет?

Share this post


Link to post
Share on other sites

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

#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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

Добавь в DIN_NotifyToggle в начале где-нибудь:

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

	return;

	}

Share this post


Link to post
Share on other sites

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

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

return;

}

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

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

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

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

Edited by Chubaka

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now