Jump to content

Wild_Weasel

Programmer
  • Posts

    216
  • Joined

  • Last visited

Everything posted by Wild_Weasel

  1. I read about tinning your homemade PCB yesterday. This guy used a iron, mounted upside down and this paste used by plumbers to solder copper pipes. It is made of grinded tin and lots of flux I think. I'll post the link whe I find it. Greetings Michael
  2. Hi! I can confirm that. Toner transfer is dead easy once you have found the right paper. For me a simple page from a glossy magazine worked best. Another trick is to sand the copper board (I thinked I used 400 paper) and to wash it faithful with soap so that any copper particles are washed out. Otherwise the toner won't stick to the copper. Another thing I confirm is that Fe03 etching sollutions leaves a green stain. Spilled a little and now some tiles are colored. Never mind. I believe it is the dissolved copper which causes that. Which program did you use to design your board. Looks very cool indeed. Do you mind if I make a 8 by 8 grid for my monome clone. My first lights out should arrive next week. regards Michael
  3. Hi! Is far is I know NI's Traktor only supports 7bit midi signals. But I realized that in the typical +/- 8% pitch range this is sufficient. Nevertheless I included extra fine pitch up and down buttons in my box for even smaller stepped pitching. Best regards Michael
  4. Hi! Du könntest einmal die original midibox64 firmware reinladen um zu sehen ob wirklich alles korrekt angeschlossen ist. Die Schalter dürfen kein Problem sein das ja das System jeden zustand weitersendet. D.h. zB Note on wenn taster offen; note off wenn taster(/schalter) zu. Was du noch kannst (solltest du ein Display haben) ist ein MIOS_Print_xxx einzufügen das dir sagt welcher Taster gedrückt ist. Grüße Michael
  5. Hi! As far is I know traktor can only handle 7bit singnals. It works ok for setting the pitch in a +/- 8% range (typical sl 1210 range). This setup gives you 64 steps in each direction which equals 0.125 % pitch 0 + 0.125 * 64 = 8 (%) 0 - 0.125 * 64 = -8 (%) This might not be as exact as for example Numark TTX-1 (which feature a display so I can tell) and are able so in/de-crease the pitch in a 0.1% grid. [in my opinion technics suck in this aspect, but hey they are 25 years old] I can't tell if there is a second digit internally but I guess not. For finetuning I included a set of two pushbuttons on my traktor controller to increase or decrease the pitch in even smaller steps. Rotary encoders will work for setting the pitch but you need to write a C programm which translates the encoder movements to up/ down midi singnals (you midibox needs to emulate push button hits for positive encoder rotation and negative and you need to assign two functions in traktor). Otherwise you would end with an 0-127 value which is not worse or better than the analog values coming from a pot. See this thread for the code of my traktor box. http://www.midibox.org/forum/index.php?topic=3852.0 ->page 2 I used the encoder trick for pitch bending in my box but this should also work for setting the pitch as well. Regards WW
  6. Hello everybody! Update time again! Finished the c code for use with the C interface. Includes now a working pitch bend and shuttle ring (see first post) sollution. A so called shift button is used to give the encoder and the shuttle further fuctionality -> shuttle_x_alt Faceplate is also finished and sprayed. Pictures will follow. regards M. /* * MIOS SDCC Wrapper * * ========================================================================== * * Copyright (C) 2004 Thorsten Klose (tk@midibox.org) * * ========================================================================== * * This file is part of a MIOS application * * This application is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This application is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with This application; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * * coded by Wild_Weasel. see http://forum.midibox.org/ for further information * * http://www.midibox.org/forum/index.php?topic=3852.0 * ========================================================================== */ #include "cmios.h" #include "pic18f452.h" unsigned char shuttle_1_alt; unsigned char shuttle_2_alt; ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after startup to initialize the // application ///////////////////////////////////////////////////////////////////////////// void Init(void) __wparam { // define number of shift registers MIOS_SRIO_NumberSet(8); MIOS_AIN_UnMuxed(); MIOS_AIN_NumberSet(8); MIOS_AIN_DeadbandSet(7); // update frequency of SRIO chain MIOS_SRIO_UpdateFrqSet(1); // ms } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS in the mainloop when nothing else is to do ///////////////////////////////////////////////////////////////////////////// void Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is periodically called by MIOS. The frequency has to be // initialized with MIOS_Timer_Set ///////////////////////////////////////////////////////////////////////////// void Timer(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when the display content should be // initialized. Thats the case during startup and after a temporary message // has been printed on the screen ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Init(void) __wparam { MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0x00); MIOS_LCD_PrintCString("Traktor Midibox"); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("by Wildweasel"); } ///////////////////////////////////////////////////////////////////////////// // This function is called in the mainloop when no temporary message is shown // on screen. Print the realtime messages here ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Tick(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a complete MIDI event has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedEvnt(unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { // print received MIDI event MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Received:"); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintHex2(evnt0); MIOS_LCD_PrintHex2(evnt1); MIOS_LCD_PrintHex2(evnt2); } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has been received // which has been specified in the MIOS_MPROC_EVENT_TABLE ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyFoundEvent(unsigned entry, unsigned char evnt0, unsigned char evnt1, unsigned char evnt2) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has not been completly // received within 2 seconds ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyTimeout(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI byte has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedByte(unsigned char byte) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS before the shift register are loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Prepare(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after the shift register have been loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Finish(void) __wparam { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when an button has been toggled // pin_value is 1 when button released, and 0 when button pressed ///////////////////////////////////////////////////////////////////////////// void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { unsigned char shuttle_1; unsigned char shuttle_2; shuttle_1_alt = MIOS_DIN_PinGet(31); shuttle_2_alt = MIOS_DIN_PinGet(33); if (pin >= 8 && pin <= 15 || pin == 31 || pin == 33) { unsigned char A = MIOS_DIN_PinGet(8); unsigned char B = MIOS_DIN_PinGet(9); unsigned char C = MIOS_DIN_PinGet(10); unsigned char D = MIOS_DIN_PinGet(11); unsigned char E = MIOS_DIN_PinGet(15); unsigned char F = MIOS_DIN_PinGet(14); unsigned char G = MIOS_DIN_PinGet(13); unsigned char H = MIOS_DIN_PinGet(12); if (shuttle_1_alt == 1) { MIOS_MIDI_TxBufferPut(0xb1); MIOS_MIDI_TxBufferPut(02); if (A == 0 && B == 1 && C == 1 && D == 0){shuttle_1 = 7; MIOS_MIDI_TxBufferPut(0x0a);} if (A == 0 && B == 0 && C == 1 && D == 0){shuttle_1 = 6; MIOS_MIDI_TxBufferPut(0x0a);} if (A == 0 && B == 0 && C == 0 && D == 0){shuttle_1 = 5; MIOS_MIDI_TxBufferPut(0x13);} if (A == 0 && B == 1 && C == 0 && D == 0){shuttle_1 = 4; MIOS_MIDI_TxBufferPut(0x1c);} if (A == 1 && B == 1 && C == 0 && D == 0){shuttle_1 = 3; MIOS_MIDI_TxBufferPut(0x25);} if (A == 1 && B == 0 && C == 0 && D == 0){shuttle_1 = 2; MIOS_MIDI_TxBufferPut(0x2e);} if (A == 1 && B == 0 && C == 1 && D == 0){shuttle_1 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (A == 1 && B == 1 && C == 1 && D == 0){shuttle_1 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (A == 1 && B == 1 && C == 1 && D == 1){shuttle_1 = 0; MIOS_MIDI_TxBufferPut(0x40);} if (A == 1 && B == 0 && C == 1 && D == 1){shuttle_1 = 1; MIOS_MIDI_TxBufferPut(0x49);} if (A == 1 && B == 0 && C == 0 && D == 1){shuttle_1 = 2; MIOS_MIDI_TxBufferPut(0x52);} if (A == 1 && B == 1 && C == 0 && D == 1){shuttle_1 = 3; MIOS_MIDI_TxBufferPut(0x5b);} if (A == 0 && B == 1 && C == 0 && D == 1){shuttle_1 = 4; MIOS_MIDI_TxBufferPut(0x64);} if (A == 0 && B == 0 && C == 0 && D == 1){shuttle_1 = 5; MIOS_MIDI_TxBufferPut(0x6d);} if (A == 0 && B == 0 && C == 1 && D == 1){shuttle_1 = 6; MIOS_MIDI_TxBufferPut(0x76);} if (A == 0 && B == 1 && C == 1 && D == 1){shuttle_1 = 7; MIOS_MIDI_TxBufferPut(0x7f);} MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Shuttle 1 "); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintBCD3(shuttle_1); } else { MIOS_MIDI_TxBufferPut(0xb1); MIOS_MIDI_TxBufferPut(10); if (A == 0 && B == 1 && C == 1 && D == 0){shuttle_1 = 7; MIOS_MIDI_TxBufferPut(0x0a);} if (A == 0 && B == 0 && C == 1 && D == 0){shuttle_1 = 6; MIOS_MIDI_TxBufferPut(0x0a);} if (A == 0 && B == 0 && C == 0 && D == 0){shuttle_1 = 5; MIOS_MIDI_TxBufferPut(0x13);} if (A == 0 && B == 1 && C == 0 && D == 0){shuttle_1 = 4; MIOS_MIDI_TxBufferPut(0x1c);} if (A == 1 && B == 1 && C == 0 && D == 0){shuttle_1 = 3; MIOS_MIDI_TxBufferPut(0x25);} if (A == 1 && B == 0 && C == 0 && D == 0){shuttle_1 = 2; MIOS_MIDI_TxBufferPut(0x2e);} if (A == 1 && B == 0 && C == 1 && D == 0){shuttle_1 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (A == 1 && B == 1 && C == 1 && D == 0){shuttle_1 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (A == 1 && B == 1 && C == 1 && D == 1){shuttle_1 = 0; MIOS_MIDI_TxBufferPut(0x40);} if (A == 1 && B == 0 && C == 1 && D == 1){shuttle_1 = 1; MIOS_MIDI_TxBufferPut(0x49);} if (A == 1 && B == 0 && C == 0 && D == 1){shuttle_1 = 2; MIOS_MIDI_TxBufferPut(0x52);} if (A == 1 && B == 1 && C == 0 && D == 1){shuttle_1 = 3; MIOS_MIDI_TxBufferPut(0x5b);} if (A == 0 && B == 1 && C == 0 && D == 1){shuttle_1 = 4; MIOS_MIDI_TxBufferPut(0x64);} if (A == 0 && B == 0 && C == 0 && D == 1){shuttle_1 = 5; MIOS_MIDI_TxBufferPut(0x6d);} if (A == 0 && B == 0 && C == 1 && D == 1){shuttle_1 = 6; MIOS_MIDI_TxBufferPut(0x76);} if (A == 0 && B == 1 && C == 1 && D == 1){shuttle_1 = 7; MIOS_MIDI_TxBufferPut(0x7f);} MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Shuttle 1 alt "); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintBCD3(shuttle_1); } if (shuttle_2_alt == 1) { MIOS_MIDI_TxBufferPut(0xb1); MIOS_MIDI_TxBufferPut(03); if (E == 0 && F == 1 && G == 1 && H == 0){shuttle_2 = 7; MIOS_MIDI_TxBufferPut(0x0E);} if (E == 0 && F == 0 && G == 1 && H == 0){shuttle_2 = 6; MIOS_MIDI_TxBufferPut(0x0E);} if (E == 0 && F == 0 && G == 0 && H == 0){shuttle_2 = 5; MIOS_MIDI_TxBufferPut(0x13);} if (E == 0 && F == 1 && G == 0 && H == 0){shuttle_2 = 4; MIOS_MIDI_TxBufferPut(0x1c);} if (E == 1 && F == 1 && G == 0 && H == 0){shuttle_2 = 3; MIOS_MIDI_TxBufferPut(0x25);} if (E == 1 && F == 0 && G == 0 && H == 0){shuttle_2 = 2; MIOS_MIDI_TxBufferPut(0x2e);} if (E == 1 && F == 0 && G == 1 && H == 0){shuttle_2 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (E == 1 && F == 1 && G == 1 && H == 0){shuttle_2 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (E == 1 && F == 1 && G == 1 && H == 1){shuttle_2 = 0; MIOS_MIDI_TxBufferPut(0x40);} if (E == 1 && F == 0 && G == 1 && H == 1){shuttle_2 = 1; MIOS_MIDI_TxBufferPut(0x49);} if (E == 1 && F == 0 && G == 0 && H == 1){shuttle_2 = 2; MIOS_MIDI_TxBufferPut(0x52);} if (E == 1 && F == 1 && G == 0 && H == 1){shuttle_2 = 3; MIOS_MIDI_TxBufferPut(0x5b);} if (E == 0 && F == 1 && G == 0 && H == 1){shuttle_2 = 4; MIOS_MIDI_TxBufferPut(0x64);} if (E == 0 && F == 0 && G == 0 && H == 1){shuttle_2 = 5; MIOS_MIDI_TxBufferPut(0x6d);} if (E == 0 && F == 0 && G == 1 && H == 1){shuttle_2 = 6; MIOS_MIDI_TxBufferPut(0x76);} if (E == 0 && F == 1 && G == 1 && H == 1){shuttle_2 = 7; MIOS_MIDI_TxBufferPut(0x7f);} MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Shuttle 2 "); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintBCD3(shuttle_2); } else { MIOS_MIDI_TxBufferPut(0xb1); MIOS_MIDI_TxBufferPut(04); if (E == 0 && F == 1 && G == 1 && H == 0){shuttle_2 = 7; MIOS_MIDI_TxBufferPut(0x0E);} if (E == 0 && F == 0 && G == 1 && H == 0){shuttle_2 = 6; MIOS_MIDI_TxBufferPut(0x0E);} if (E == 0 && F == 0 && G == 0 && H == 0){shuttle_2 = 5; MIOS_MIDI_TxBufferPut(0x13);} if (E == 0 && F == 1 && G == 0 && H == 0){shuttle_2 = 4; MIOS_MIDI_TxBufferPut(0x1c);} if (E == 1 && F == 1 && G == 0 && H == 0){shuttle_2 = 3; MIOS_MIDI_TxBufferPut(0x25);} if (E == 1 && F == 0 && G == 0 && H == 0){shuttle_2 = 2; MIOS_MIDI_TxBufferPut(0x2e);} if (E == 1 && F == 0 && G == 1 && H == 0){shuttle_2 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (E == 1 && F == 1 && G == 1 && H == 0){shuttle_2 = 1; MIOS_MIDI_TxBufferPut(0x37);} if (E == 1 && F == 1 && G == 1 && H == 1){shuttle_2 = 0; MIOS_MIDI_TxBufferPut(0x40);} if (E == 1 && F == 0 && G == 1 && H == 1){shuttle_2 = 1; MIOS_MIDI_TxBufferPut(0x49);} if (E == 1 && F == 0 && G == 0 && H == 1){shuttle_2 = 2; MIOS_MIDI_TxBufferPut(0x52);} if (E == 1 && F == 1 && G == 0 && H == 1){shuttle_2 = 3; MIOS_MIDI_TxBufferPut(0x5b);} if (E == 0 && F == 1 && G == 0 && H == 1){shuttle_2 = 4; MIOS_MIDI_TxBufferPut(0x64);} if (E == 0 && F == 0 && G == 0 && H == 1){shuttle_2 = 5; MIOS_MIDI_TxBufferPut(0x6d);} if (E == 0 && F == 0 && G == 1 && H == 1){shuttle_2 = 6; MIOS_MIDI_TxBufferPut(0x76);} if (E == 0 && F == 1 && G == 1 && H == 1){shuttle_2 = 7; MIOS_MIDI_TxBufferPut(0x7f);} MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Shuttle 2 alt "); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintBCD3(shuttle_2); } } else { MIOS_MIDI_TxBufferPut(0x90); MIOS_MIDI_TxBufferPut(pin); MIOS_MIDI_TxBufferPut(pin_value ? 0x00 : 0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Taster "); MIOS_LCD_PrintBCD4(pin); } } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when an encoder has been moved // incrementer is positive when encoder has been turned clockwise, else // it is negative ///////////////////////////////////////////////////////////////////////////// void ENC_NotifyChange(unsigned char encoder, char incrementer) __wparam { if (shuttle_2_alt == 1 && incrementer < 0 && encoder == 0) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x70); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("negativ"); MIOS_Delay(25); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x70); MIOS_MIDI_TxBufferPut(0x00); } if (shuttle_2_alt == 1 && incrementer > 0 && encoder == 0) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x71); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("positiv"); MIOS_Delay(25); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x71); MIOS_MIDI_TxBufferPut(0x00); } if (shuttle_2_alt == 0 && incrementer < 0 && encoder == 0) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x72); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder mode:alt "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("negativ"); MIOS_Delay(75); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x72); MIOS_MIDI_TxBufferPut(0x00); } if (shuttle_2_alt == 0 && incrementer > 0 && encoder == 0) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x73); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder mode:alt "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("positiv"); MIOS_Delay(75); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x73); MIOS_MIDI_TxBufferPut(0x00); } //--- if (shuttle_1_alt == 1 && incrementer < 0 && encoder == 1) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x04); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("negativ"); MIOS_Delay(25); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x04); MIOS_MIDI_TxBufferPut(0x00); } if (shuttle_1_alt == 1 && incrementer > 0 && encoder == 1) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x05); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("positiv"); MIOS_Delay(25); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x05); MIOS_MIDI_TxBufferPut(0x00); } if (shuttle_1_alt == 0 && incrementer < 0 && encoder == 1) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x06); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder mode:alt "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("negativ"); MIOS_Delay(75); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x06); MIOS_MIDI_TxBufferPut(0x00); } if (shuttle_1_alt == 0 && incrementer > 0 && encoder == 1) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x07); MIOS_MIDI_TxBufferPut(0x7f); MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder mode:alt "); MIOS_LCD_PrintBCD4(encoder); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("positiv"); MIOS_Delay(75); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x07); MIOS_MIDI_TxBufferPut(0x00); } } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a pot has been moved ///////////////////////////////////////////////////////////////////////////// void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) __wparam { MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0x00); MIOS_LCD_PrintCString("Potentiometer"); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintBCD4(pin); MIOS_LCD_PrintBCD4(MIOS_AIN_Pin7bitGet(pin)); MIOS_MIDI_TxBufferPut(0xb0); MIOS_MIDI_TxBufferPut(pin); MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); } Could some please move this topic into the HUI section. Thanks.
  7. How much is it? And where to get. Nothing on ebay though
  8. http://cgi.ebay.at/Keyboard-Schlagzeug-Rhytmusmaschine-fuer-Kinder-NEU_W0QQitemZ6032054549QQcategoryZ22132QQrdZ1QQcmdZViewItem
  9. Hi! Es gibt einen mod für Soundblaster Karten wo man dann mit 2 Tastern lauter und leiser stellen kann. Es gibt dafür Eingänge an bestimmten Soundblaster Karten. Link hab ich leider keinen -> google. Gruß M.
  10. Hi! I invested a couple of days to dig into the C interface and the midi protocol. First of all I want to excuse for the false alarm about the wind bug in T3. Is is still there and very anoying. But I came up with another sollution than sending a reset signal to T3. if (incrementer < 0 && encoder == 0) { MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x00); MIOS_MIDI_TxBufferPut(0x7f); MIOS_Delay(25); MIOS_MIDI_TxBufferPut(0x94); MIOS_MIDI_TxBufferPut(0x00); MIOS_MIDI_TxBufferPut(0x00); } You need to set two midi functions in T3. Deck Tempo Bend [glow=red,2,300]UP[/glow] and [glow=red,2,300]DOWN[/glow] So each time you turn the encoder an note on is sent. But different ones for each direction. After the delay (In my case 25ms) the note is sent off and the motion is stopped. This gives kind of "stepped" feel put it sufficient for beatmatching. You could decrease the delay put you would need to turn your encoder more often. I'll post the code of my full T3-Box in the next days since also programmed a sollution for the alps Shuttle rings. Regards Michael
  11. Hi! I would be interested in 100 pieces. Thanks Regards Michael
  12. Hi! I think I didn't explain very well what I want. I copied your code into the C skeleton, compiled and loaded up. As I understand in your app the Encoder is connected to the pins 2 and 3 of the first shift register und the activate button to the first?!!!!? When I turn the encoder it stays a 64 so I presume the activate button hasn't been pressed. Where can I define where the encoder an the buttons are attached? Regards Michael
  13. Hi! Just checked again. And it works. I'm using an alps fader with an notch at 64 so in can tell that it is right in the middle. Also checked with the display and it says 64. Traktor starts to wind when reaching 67 or 60 in the opposite direction and does not keep increasing the speed. You can even set the wind to around 86 and it keeps playing along just like you would have hit play. Application is MB 64E without any modifications. Had anybody have luck with the code postet in this thread? It just seems that I can't figure out how to set the activate button. regards Michael
  14. Hi! Just wanted to announce that the Traktor wind bug is gone. Just tested it with a regular pot. The track doesn't move any more when the wind is set to 64. Traktor Version is 3.0.2.098 Regards Michael
  15. Hi! Just one hint. Check out traktor 3 before cutting your frontpanel. You will definitively want to include controls for the filter section. m.
  16. Hi! Take care as the 1210's pitch faders are linear but not 10k ohm. These are 20k. I know this because I was messing around with a broken technics the other day. Regards Michael
  17. Hi! The backlight is connected to the supply voltage via a resistor and a transistor and not to an I/O of the pic. Therefore the backlight (I am speaking about the led backlight here) can't be turned on or of. But I am sure you can get the letters to blink. Another way would be to to connect the backlight to an output of the DOUT Module. But I think this can only be done with the help of another transistor since the DOUT is not able to drive the backlight. Regards M.
  18. Thanks for your PM and thanks for the effort you put in this. One question, though. Do you think that is possible to automate the "wind reset" procedure by sending the reset signal after a certain amount of time when the encoder has not been touched? Which traktor version do you use. Has Native Instruments been informed about this bug? [Hmm. I think I need to learn C ...] Thanks a lot. Regards Michael
  19. Hi! Just wanted to bring this up again! Has anybody had sucess with this code? Is development still going on? Regards Michael
  20. Hi! Have you made any progress. Can you show some pictures oder ideas? Regards Michael
  21. Hi! Get yourself an ohmmeter and check all resistors on the DIN module. Had also random midi events which turned out to be faulty resistors. regards Michael
  22. Bought a Midisport UNO yesterday for about 40€. It is very small an neat and I feel a bit guilty for breaking it apart. However....it contains only 2 chips. 1 optocoupler and one of these http://www.stmicroelectronics.com/stonline/products/literature/ds/5521.pdf in an M-Audio OEM Version. The pcb itself is only 60 by 25 millimeter so it will fit pefectly inside my box. First had a bit of trouble because the midisport wouldn't like my front usb port but after plugin it into the back of my computer and updating the driver it worked. http://stud3.tuwien.ac.at/~e0327352/ Pictures on my website Regards Michael
  23. Hi! I would be very happy if someone could code something for the shuttle ring. I started experimenting with 74HCxx chips (Inverter and NOR) to get direction and position. Not very elegant though and space consuming. I am no assembler coder and don't know how much effort this would be. I am thinking of emulating a pot with the shuttle (with jumps of course) Regards Michael
  24. Danke erstmal für die Antwort! Ich hab mich aber glaub ich missverständlich ausgedrückt. Wenn MIOS bootet stehen alle Regler "intern" auf 127 (wie auch auf dem Display). Sobald ich an den Encodern drehe geht der Wert nur runter (<127). Weil weiter rauf geht ja nicht mehr Ich hätte gern wenn MIOS bootet das die Werte auf 63 stehen und ich mich dann von dort nach oben oder unten arbeiten kann. Eine zweite Frage ist aufgetaucht. Jeroen hat das hier programmiert: http://www.midibox.org/forum/index.php?topic=5794.0 Leider werd ich nicht ganz schlau wo ich den Code reinkopieren muss damit das funktioniert. Weil das ist genau die letzte Funktion die mir auf der Midibox noch fehlt. Danke nochmals. Gruß Michael.
  25. Hallo! Kann mir jemand sagen ob man den Startwert von Pots oder Virtuellen Pots (Encodern) einstellen kann. Normal ist es ja so das alle Regler bei 127 starten. Ich hätte aber gerne das sie genau in der Mitte starten weil sonst hab ich immer Sprünge drinnen wenn ich den Pitch an meiner Traktor Midibox einstelle. Danke. Michael
×
×
  • Create New...