MIDI Dj Controller ZVEZDA

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

#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;

}

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

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

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

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

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:

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

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

нужно проверÑть… но не ÑÐµÐ¹Ñ‡Ð°Ñ :slight_smile: ÑÐµÐ¹Ñ‡Ð°Ñ Ð¿Ð¸Ð²Ð½Ð¾Ð¹ вечерок :slight_smile:

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

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

	return;

	}

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

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

return;

}

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

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

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

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

Ñ Ð¿Ð»Ð¾Ñ…Ð¾ понимаю что значит onoff ononly toggle :slight_smile:

Ñветодиод можно Ñделать, почему нет-то?

а вот Ñ Ð±Ð»Ð¸Ð½ÐºÐ¾Ð¼ как поÑтупить Ñ Ð½Ðµ знаю… нужно форум шерÑтить, кто-то делал

Ð˜Ð½Ð´Ð¸ÐºÐ°Ñ†Ð¸Ñ 0%. Ð’ AIN_NotifyChange добавлÑем:

if (pin==4) { (pin_value==64) ? MIOS_DOUT_PinSet (30,1) : MIOS_DOUT_PinSet(30,0); }

	if (pin==5) { (pin_value==64) ? MIOS_DOUT_PinSet (62,1) : MIOS_DOUT_PinSet(62,0); }

OnOff Ñ Ð¿Ð¾Ð»Ð°Ð³Ð°ÑŽ: нажал-отпуÑтил - включилоÑÑŒ, нажал-отпуÑтил - выключилоÑÑŒ

Toggle: нажал - включилоÑÑŒ, отпуÑтил - выключилоÑÑŒ

Это в тракторе наÑтраиваетÑÑ, еÑли Ñ Ð½Ðµ ошибаюÑÑŒ. Вот только зачем нужны были плÑÑки Ñ Ð±ÑƒÐ±Ð½Ð¾Ð¼ вокруг Shift? :slight_smile:

Ð OnOnly Ñто что? :slight_smile:

В локальные переменные:

unsigned char timer_tick;

unsigned char blink_led;

Ð’ Init:

timer_tick=0;

  blink_led=0;

  MIOS_TIMER_Init(0x03, 62500);

Добавить функцию тика по таймеру. ЗдеÑÑŒ Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ð° моргают 31 и 63 Ñветодиоды.

void Tick(void) __wparam

{

  if (timer_tick=>10) {

	timer_tick=0;

	}

  if (timer_tick==0) {

	// Ñделать что-то раз в 500mS

	(blink_led==1) ? (blink_led=0) : (blink_led=1);

	MIOS_DOUT_PinSet(31,(blink_led && MIOS_DOUT_PinGet(31)));

	MIOS_DOUT_PinSet(63,(blink_led && MIOS_DOUT_PinGet(63)));

	}

  timer_tick++;


}

Ð£Ð¼ÐµÐ½ÑŒÑˆÐ°Ñ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ñƒ timer_tick, а так же играÑÑÑŒ Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ MIOS_TIMER_Init добейÑÑ Ð½ÑƒÐ¶Ð½Ð¾Ð¹ паузы. Значение второго параметра MIOS_TIMER_Init не больше 65535.

OnOnly - нажал 7f, отпуÑтил - нет команды, нажал 7f и.Ñ‚.д

Я проÑто ещё и Ñ VirtualDJ хочу его пробовать, что-то в тракторе хорошего что-то в виртуале, ещё не определилÑÑ.

попробовал

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

return;

}

вÑе работает :frantics: . spongebob ты шаман однако :hairy:

Ñ‰Ð°Ñ Ð¾Ñтальное пробовать буду :shifty:

Toggle: нажал - включилоÑÑŒ, отпуÑтил - выключилоÑÑŒ

Ð OnOnly Ñто что? :slight_smile:

Как Ñ Ð¿Ñ€ÐµÐ´ÑтавлÑÑŽ, речь идёт об Ñтих режимах кнопок ( MB64 , MB 64e ) :

A special feature is implemented for the buttons: the behaviour of every button can be specified with the Snapshot Button before a event will be assigned to it:

Send learned value when button pressed, send zero when button released.

Send learned value only when button pressed, don’t send a zero value when button released.

Send learned value with the first keypress, send zero value with the second keypress.
cs31.gif

cs32.gif

cs33.gif

Вот вот именно так.

Ðга, понÑл

придумаем, не волнуйÑÑ :slight_smile:

void Tick Ñто не та Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ :slight_smile:

нада было void Timer

const unsigned char btn_mode[78]={

0,0,1,1,1,1,1,2,2,1,

2,2,1,2,1,0,0,1,1,0,

1,0,0,0,0,0,0,0,1,0,

4,4,1,0,1,1,0,0,2,2,

1,2,2,1,1,2,1,1,1,1,

1,0,0,0,0,0,0,0,0,0,

1,0,4,4,2,1,1,1,1,1,

4,4,1,1,1,1,1,2};


unsigned char btn_state[78]={

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0};

void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam

{

switch(btn_mode[pin]){

case 0: // OnOff

	break;

case 1: // Toggle

	if (pin_value==0) {

		(btn_state[pin]==1) ? (btn_state[pin]=0) : (btn_state[pin]=1);

		if (btn_state[pin]==0) {return;}

	} else {return;}

	break;

case 2: // OnOnly

	if (pin_value==1) {return;}

	break;

}


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

}

Ð’ AIN_NotifyChange

поÑтавил вот так (подглÑдел в Traktorizer, main.c)

if (pin==4) if (pin_value >=62 && pin_value <=66) { MIOS_DOUT_PinSet (30,1) ; }else{ MIOS_DOUT_PinSet(30,0); }

еÑли Ñтавить pin_value==64 то её вообще трудно поймать , промаргивает проÑто.

вÑÑ‘ бы нечего тока вот Ñ Ð½Ðµ пойму чето: Ñветодиод Ñтот Ñрабатывает в Ñамом начале движениÑ, по монитору в mios studio Ñто получаетÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ðµ равно 7 или 8 (b0 04 07 и bo 04 08). при чём и в твоём варианте Ñрабатывал при тех же значениÑÑ….

const unsigned char btn_mode[78]={

0,0,1,1,1,1,1,2,2,1,

2,2,1,2,1,0,0,1,1,0,

1,0,0,0,0,0,0,0,1,0,

4,4,1,0,1,1,0,0,2,2,

1,2,2,1,1,2,1,1,1,1,

1,0,0,0,0,0,0,0,0,0,

1,0,4,4,2,1,1,1,1,1,

4,4,1,1,1,1,1,2};

unsigned char btn_state[78]={

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0,0,0,

0,0,0,0,0,0,0,0};

\

а Ñто что, и куда Ñувать :blink:

маÑÑивы пихай в начало, где переменные

первый маÑÑив - Ñто тип кнопки

второй - ÑоÑтоÑние (только Ð´Ð»Ñ toggle)

про Ñветодио не понÑл немного…

if ((pin==4) && (pin_value >=62 && pin_value <=66)) { MIOS_DOUT_PinSet (30,1);}

else {MIOS_DOUT_PinSet(30,0);}

понÑл куда))))

режим toggle и on only работают

режим onoff Ñ‰Ð°Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð°ÐµÑ‚ÑÑ Ñ‚Ð°Ðº: нажал - 7f, отпуÑтил-нечего, нажал второй раз- ничего, отпуÑтил - ничего, нажал 3 раз -7f

00 по второму нажатию не выдаёт

const unsigned char btn_mode[78]={

0,0,1,1,1,1,1,2,2,1,

2,2,1,2,1,0,0,1,1,0,

1,0,0,0,0,0,0,0,1,0,

4,4,1,0,1,1,0,0,2,2,

1,2,2,1,1,2,1,1,1,1,

1,0,0,0,0,0,0,0,0,0,

1,0,4,4,2,1,1,1,1,1,

4,4,1,1,1,1,1,2};

Ñто, Ñ ÐºÐ°Ðº понимаю вроде карты, а как её пользоватьÑÑ ÐµÑли Ñ Ð·Ð°Ñ…Ð¾Ñ‡Ñƒ поменÑть режимы каких нибудь кнопок?

про Ñветодио не понÑл немного…

if ((pin==4) && (pin_value >=62 && pin_value <=66)) { MIOS_DOUT_PinSet (30,1);}

else {MIOS_DOUT_PinSet(30,0);}

ну по Ñтрочке он должен зажигатьÑÑ Ð² значении переменного резиÑтора 63,64,65 тобиш по Ñередине, а он зажигаетÑÑ Ð² значении 07,08 тобиш почти в начале , причем в твоём варианте он также зажигалÑÑ Ð¿Ñ€Ð¸ значении 07,08 :huh: вот как то так

з.Ñ‹. Ñ Ð¼Ð°ÑÑивом разобралÑÑ, каждое значение ÑоответÑтвует номеру кнопки по порÑдку :rolleyes:

попробуй убрать case 0: break; из switch()

и поÑмотри что будет

тоже Ñамое, ничего не изменилоÑÑŒ.

ой не там пробовал подожди ещё