Chubaka Posted December 19, 2010 Report Posted December 19, 2010 (edited) Сборка железа подходит к концу!!! ПереднÑÑ Ð¿Ð°Ð½ÐµÐ»ÑŒ немного не доделана. Edited January 17, 2011 by Chubaka Quote
Chubaka Posted December 20, 2010 Author Report Posted December 20, 2010 (edited) еÑÑ‚ÑŒ вопроÑик: Я хочу вмеÑто механичеÑкого Ñнкодера Ð´Ð»Ñ Ð´Ð¶Ð¾Ð³Ð¾Ð² Ñделать оптичеÑкий. Какое макÑимальное разрешение (pulses) за оборот Ñ Ð¼Ð¾Ð³Ñƒ Ñделать еÑли вешать Ñ ÐµÐ³Ð¾ буду на din рейку? Edited December 20, 2010 by Chubaka Quote
Janis1279 Posted December 21, 2010 Report Posted December 21, 2010 Может поможет поиÑк, например : "optical encoder " в Ñтраницах форума или WIKI http://picasaweb.google.com/rasteri/Scratchtroller# Quote
Chubaka Posted January 11, 2011 Author Report Posted January 11, 2011 чёт у Ð¼ÐµÐ½Ñ ÐºÐ°ÐºÐ¾Ð¹ то бред Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑŒÑ‘Ð¼ получаетÑÑ. иÑходник 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 - метра. з.Ñ‹. Ñ Ð¾Ð±Ñолютный ноль в програмье Quote
Janis1279 Posted January 11, 2011 Report Posted January 11, 2011 чёт у Ð¼ÐµÐ½Ñ ÐºÐ°ÐºÐ¾Ð¹ то бред Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑŒÑ‘Ð¼ получаетÑÑ. иÑходник 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, например. Quote
Chubaka Posted January 12, 2011 Author Report Posted January 12, 2011 (edited) СпаÑибо Janis1279 По поводу проблемы Ñ ÐºÐ¾Ð´ÐµÑ€Ð°Ð¼Ð¸ Ñ Ð¿Ð¾Ð½Ñл. Я так понимаю вы предлагаете мне вмеÑто ain64_din128_dout128_v2c, иÑпользовать МВ64Е? Правильно ли Ñ Ð¿Ð¾Ð½Ñл что МВ64Е подойдет под моё железо Ñ: AIN = 24,DOUT = 128, DIN = 76? и чем вÑÑ‘ таки лучше МВ64Е, чем ain64_din128_dout128_v2c(Ñ Ð¼Ð½Ð¾Ð³Ð¾ иÑкал по форуму но так и не Ñмог найти ответа на Ñтот вопроÑ) Edited January 12, 2011 by Chubaka Quote
Janis1279 Posted January 12, 2011 Report Posted January 12, 2011 Что отноÑитÑÑ Ðº 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 контроллеры, ÑпроÑить в англицком форуме, там более менее отвечают на вопроÑÑ‹. Quote
Chubaka Posted January 12, 2011 Author Report Posted January 12, 2011 (edited) Да по поводу 128 digital inputs Ñ ÑƒÐ¶Ðµ читал, но мне очень нужно 128 DOUT выходов. Что каÑаетÑÑ Ð°Ð½Ð³Ð»Ð¾Ñзычного форума, то Ñ ÑƒÐ¶Ðµ пыталÑÑ Ð·Ð°Ð´Ð°Ð²Ð°Ñ‚ÑŒ вопроÑÑ‹ Ñ Ð¼Ð¾Ð¸Ð¼ корÑвым английÑким и воÑпринимать тех.информацию Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ñ‡Ð¸ÐºÐ¾Ð¼. Половину из моих вопроÑов они не понÑли, и ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°Ñ Ñ‚Ð¾ что Ñ Ð² програмирование нечего не понимаю половину из их ответов не понÑл Ñ :rolleyes: так что буду Ñ Ð²Ñётаки работать Ñ ain64_din128_dout128_v2c, тем более что spongebob обещал помочь, но пока куда то он иÑчез. p.s. большое ÑпаÑибо за подÑказку Ñ ÐºÐ¾Ð´ÐµÑ€Ð°Ð¼Ð¸, попробовал изменить и вÑÑ‘ получилоÑÑŒ :frantics: Edited January 12, 2011 by Chubaka Quote
Janis1279 Posted January 12, 2011 Report Posted January 12, 2011 ОÑновное внимание в английÑком форуме уделено ÑамоÑтоÑтельному программированию на базе MB64e. Ртакже Ñовет почитать больше о проекте Protodeck. http://www.midibox.org/dokuwiki/doku.php?do=search&id=Protodeck+ Quote
spongebob Posted January 16, 2011 Report Posted January 16, 2011 никуда Ñ Ð½Ðµ иÑчез Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð¸Ñ€ÑƒÑŽ :) по поводу 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); ну что-то типа того... Quote
Chubaka Posted January 17, 2011 Author Report Posted January 17, 2011 (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 January 17, 2011 by Chubaka Quote
spongebob Posted January 17, 2011 Report Posted January 17, 2011 (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 January 17, 2011 by spongebob Quote
Chubaka Posted January 17, 2011 Author Report Posted January 17, 2011 и Ñ‚.д. по вÑем нотам по тем нотам, где на одну ноту один Ñветодиод - лучше Ñделать маÑÑив, где номер ноты Ñто Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива, а значение - номер пина Ñветодиода По шифту Ñделай переменную-триггер, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð±ÑƒÐ´ÐµÑ‚ переключатьÑÑ Ð¸Ð· одного ÑоÑтоÑÐ½Ð¸Ñ Ð² другое только по команде 0x90 знал бы Ñ ÐµÑ‰Ñ‘ как делаетÑÑ Ð¼Ð°ÑÑив и переменнаÑ-тригер - цены бы мне небыло)))) Лицевую панель делел из черного оргÑтекла, Ñначало хотел из Ð°Ð»ÑŽÐ¼Ð¸Ð½Ð¸Ñ Ð½Ð¾ дороговато вырезка Ñтоит. РиÑовал в кореле (можно любую прогу Ñ ÐºÐ¾Ð¾Ñ€Ð´Ð¸Ð½Ð°Ñ‚Ð°Ð¼Ð¸, отдавал в рекламную шаражку (печати, штампы и.Ñ‚.д.)у них, почти у вÑех Ñ‰Ð°Ñ ÐµÑÑ‚ÑŒ лазеры маломощные. Ñтим же лазером можно и гравировку делать, надпиÑи Ñделанны именно так, и залиты краÑкой. Кнопки по тому же принципу, из матового оргÑтекла, Ñклеены Дихлоретаном, ÑÐ´Ð¾Ð²Ð¸Ñ‚Ð°Ñ ÑˆÑ‚ÑƒÐºÐ° но клеет намертво. Quote
spongebob Posted January 17, 2011 Report Posted January 17, 2011 дихлорÑтана через мои руки прошло больше чем пива :) ни одну модель Ñамолёта/Ð°Ð²Ñ‚Ð¾Ð¼Ð¾Ð±Ð¸Ð»Ñ Ñклеил в боÑоногом детÑтве :) про резку лазером Ñ Ñразу подумал, но не знал что им же можно Ñделать гравировку кÑтати, откуда Ñ‚Ñ‹? и Ñколько у Ð²Ð°Ñ Ñтоит метр прохода лазером? теперь вернёмÑÑ Ðº триггерам и маÑÑивам в начале иÑходника поÑле #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 } } Ñкинь Ñвой иÑходник в текущем виде, попробую на доÑуге (читай на работе :)) занÑÑ‚ÑŒÑÑ Quote
spongebob Posted January 17, 2011 Report Posted January 17, 2011 по шифту хрень напиÑал не Ñмотри туда :) иÑходники шли :) Quote
Chubaka Posted January 17, 2011 Author Report Posted January 17, 2011 Вот иÑходник. Ñто в принципе "ain64_din128_dout128_v2c" но Ñ ÑƒÐ¶Ðµ пропиÑанными кодерами, уÑтановленным количеÑтвом AIN входов и убранными Ñтрочками Ð´Ð»Ñ Ð´Ð¸ÑÐ¿Ð»ÐµÑ Ð¸Ð· main.c Из Оренбурга Ñ.., незнаю Ñколько Ñтоит метр но вÑÑ‘ вмеÑте (переднÑÑ Ð¿Ð°Ð½ÐµÐ»ÑŒ Ñ Ð³Ñ€Ð°Ð²Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹, подложка под переднюю панель, кнопки Ñ Ð³Ñ€Ð¾Ð²Ð¸Ñ€Ð¾Ð²ÐºÐ¾Ð¹, подложка под кнопки + ещё одна подложка под кнопки, круги Ð´Ð»Ñ Ð´Ð¶Ð¾Ð³Ð¾Ð² 6 штук) обошлоÑÑŒ мне в 5100Ñ€. Можно обойтиÑÑŒ без подложек, дешевле, но так как Ñ Ð½Ðµ нашел нужной толщины оргÑтекла пришлоÑÑŒ Ñклеивать...zvezda.rar Quote
spongebob Posted January 17, 2011 Report Posted January 17, 2011 а Ñ Ð¸Ð· города-невеÑÑ‚ Иваново :) как у Ð²Ð°Ñ Ð² городе Ñ Ñ€Ð°Ð´Ð¸Ð¾Ð´ÐµÑ‚Ð°Ð»Ñми? оÑобенно Ñ smd. у Ð½Ð°Ñ Ð²Ñего 2 магазина радиодеталей, в одном Ñмд Ñ€Ñдами по 5-10 шт., в другом номиналами, но по 100 шт. :( Ñ Ñ Ð½ÑƒÐ»Ñ Ð½Ð°Ñ‡Ð°Ð» делать программу, но рабочий день закончилÑÑ :) завтра допишу (надеюÑÑŒ) и залью Ñюда думаю разморозить Ñвой проект (контроллер Ð´Ð»Ñ ableton, Ñ…Ð¾Ñ‚Ñ Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð¾ была Ð¸Ð´ÐµÑ Ñделать подобие vestax vci-100): матрица кнопки+двухцветные диоды 8на8, 24 потенциометра + 16 кнопок Ñ Ð¿Ð¾Ð´Ñветкой. дизайн проекта похож на akai apc40. Quote
Chubaka Posted January 18, 2011 Author Report Posted January 18, 2011 У Ð½Ð°Ñ 4 магазина, маленьких и там нечего нету))) Я вÑÑ‘ заказывал на elitan.ru, там цены более менее нормальные. Quote
spongebob Posted January 18, 2011 Report Posted January 18, 2011 Ð’ локальные переменные добавить: 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 чего подÑкажет? Quote
spongebob Posted January 18, 2011 Report Posted January 18, 2011 (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 January 18, 2011 by spongebob Quote
Chubaka Posted January 18, 2011 Author Report Posted January 18, 2011 (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 January 18, 2011 by Chubaka Quote
spongebob Posted January 18, 2011 Report Posted January 18, 2011 10 bit на команду CC не получитÑÑ, они тока 7 бит поддерживают (вроде бы) Ñ ÑˆÐ¸Ñ„Ñ‚Ð¾Ð¼ нарна намудрил чота :) нужно проверÑÑ‚ÑŒ... но не ÑÐµÐ¹Ñ‡Ð°Ñ :) ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¸Ð²Ð½Ð¾Ð¹ вечерок :) Quote
spongebob Posted January 19, 2011 Report Posted January 19, 2011 Добавь в DIN_NotifyToggle в начале где-нибудь: if ((pin==46 || pin==6) && pin_value==1) { return; } Quote
Chubaka Posted January 19, 2011 Author Report Posted January 19, 2011 (edited) С Праздником!!! if ((pin==46 || pin==6) && pin_value==1) { return; } ÑпаÑибо, вечером поÑле работы попробую 7 килобайт получилÑÑ hex, должен влезть в пик Ñ Ñ‚Ð°Ðº понимаю, что уже не получитÑÑ Ñделать функции типа кнопки onoff\ononly\toggle, Ñветодиод на Ñередине регулÑтора tempo? Ñ ÐµÑ‰Ñ‘ подумывал blink Ñделать кое Ñ Ñ‡ÐµÐ¼? Edited January 19, 2011 by Chubaka Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.