Jump to content

Wise

Members
  • Posts

    113
  • Joined

  • Last visited

Everything posted by Wise

  1. Skapligt billiga komponenter kan du hitta på: http://www.trimlog.se http://www.kjell.com Själv håller jag på för fullt med en Traktor box, ska beställa från trimlog och kjell snart faktiskt. Om du kan, undvik elfa och farnell, de är hutlöst dyra i små kvantiteter, men å andra sidan kan de ha just den där knappen eller ratten man så gärna vill ha :) /Wise
  2. Ahh, good sugestion ! :) But how about the 230V~ ? /Wise
  3. I'm in the process of building a case to my Traktor controller. It's going to be a robust flightcase (plywood and alu-profiles): More pictures @ : http://www.gavle.to/~henrik.m/box/index.html. The bottom part of the case ia aprox 280*630*150mm, the lid aprox. 40mm heigh Going to be the home for this: http://www.gavle.to/~henrik.m/traktor.jpg I have two questions: 1. The case feels a bit to high right now, should I try to lower the bottom part to get a more confortable working height ? 2. Any suggestions how to make the contacts for 230V~, midi in/out, possible line in connector etc ? I want the conectors to be protected during transportation, no risk for dust dirt etc. How to ? somekind of hatch ? Other thougts ? Best Wise
  4. Another thing to think about is if you connect many LED's, lets say for worst case 128 LEDs. And every LED is drawing approx. 15mA. Then all LEDs (if ON) draw a total of 1,92A !!. Thats a to high current to draw from the core in a tiny flatcable to the DOUT boards. Also the regulator on the core can't deliver this current. ??? Or is there something I miss here ? /Wise
  5. Thx ! :) I can defenitively say that this is the way i'm going to make my boards in the future /Wise
  6. Wow ! Last night i tested this UV-source, and : First try - Success at once ! Amazing, I exposed the PCB for 2min @ 2 cm from 100 W UV-lighttube 8) 8) The develop and the etching went just as perfect you want ! So now I can expose PCB's up to 60*200cm doubble side ;D ;D ;D (the developing and etching is another question..hehe) Some pictures for your pleasure Notice the size of the UB-tubes compare to the DIN, note that all MIDI equipment nearby was wearing UV-protection glasses and was not harmed during this experiment ! 8) After etching: /Wise
  7. Thx for the tip about "PaP", will try that when I got the time. Anyway, back to the topic... I think this will work, a quick google and I found: http://www.arubaaloe.com/uva-b.htm Info about UV/A UV/B http://www.wolffsystem.de/download/Gold_Sun_RS_100W.pdf The light tubes in the solarium I got The common UV tubes that you can bye for PCB porposes have a wavelength of 365nm, wich is the same as the tubes in the solarium 8) 8) Someone with a bit of experience have a thought about a good exposure time ? I'll maybe find some time today to test this :) I'll let you know for sure /wise
  8. ;D ;D Hehe, I think everyone here can imagine 8) /Wise
  9. Have anyone any kind of experience with PCB UV lightning from a solarium ? I got a bed with 15 light tubes in the top half and 10 in the lower half. The tube have the model: Goldsun RS Longlife Fasttan G2-10 100W. So a total of 1500W in the top and 1000 in the lower. So my questions: 1. Have this kind of UV light the right wavelength for the photoresist on a PCB ? 2. How long do you think I have to "tan" my PCB for a god result ? (my guess approx. just a few sec's....) Happy taning /Wise
  10. WOW ! :P :P Realy nice work ! Would love to se the inside of this beaty ? /Wise
  11. Hehe, you just have to love this screaming maniac GUNDEMAN :) /Wise (from Sweden....)
  12. One option to run digital (or analog) signals over a long cables is to use a differential transmission. You could try to implement a RS-422 communication between the core and the DIN. And then chain to the next DIN in the same way. RS-422 is digital, so this rules out the AIN, but if you can live with encoders is should be doable...Speed should not be a problem with this method. Check out this http://www.epanorama.net/links/tele_interface.html#rs422 Another option is to build a couple of current loop transievers. http://www.epanorama.net/links/tele_interface.html#currentloop This is just my first thougts, have't tryed them myself. Don't know if this current method could handle the dataspeed from the core... Sorry for my bad english.... /Henrik
  13. Snapshot from 20050123 is no longer aviable from SDCC homepage, anyone have it zip'ed ? Or Is it ok to use a newer snapshot or should i exepct some buggs ? Well, I'll try anyway.... best /Wise
  14. Nice site ;D Maybe I'm blind, but, I can't find a link to this forum nor ucapps.de ? Just a thought... /Wise
  15. :( :( :( No luck.... Checked your sugestions again without any luck. Changed the relevant code as follow: #include "cmios.h" //#include <pic18f452.h> unsigned char deviation; unsigned char value; unsigned char timer_counter; unsigned char counts; unsigned char shift; unsigned char i; unsigned char SHIFT_BUTTON1; unsigned char SHIFT_BUTTON2; const SB1 = 0; const SB2 = 1; const ON = 1; const OFF = 0; ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after startup to initialize the // application ///////////////////////////////////////////////////////////////////////////// void Init(void) { timer_counter = 0; // If 1 pulse/sec is minimum resolution, timer_counter should have a // frequency of 64 Hz = 15,625ms // calculate the required number of clocks for this period: // clocks = period / 400 nS = 15,625 mS / 400 nS = 39062 MIOS_TIMER_Init(4,39062); // define number of shift registers MIOS_SRIO_NumberSet(4); MIOS_AIN_Muxed(); MIOS_AIN_NumberSet(4); MIOS_AIN_DeadbandSet(8); // update frequency of SRIO chain MIOS_SRIO_UpdateFrqSet(1); // ms } void Timer(void) { if (timer_counter < 64) timer_counter++; } void ENC_NotifyChange(unsigned char encoder, unsigned char incrementer) { counts = timer_counter; timer_counter = 0; //Over 1 sec from last function call ? // if (counts >= 64) // counts = 64; //Calculate diviation deviation = 64 - counts; //Depending on the direction if (incrementer < 128) value = 64 + deviation; else value = 64 - deviation; /* MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder #: "); MIOS_LCD_PrintBCD1(encoder); if (incrementer == 1) MIOS_LCD_PrintCString(" Pos"); else if (incrementer == 255) MIOS_LCD_PrintCString(" Neg"); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("Value: "); MIOS_LCD_PrintBCD2(value); */ MIOS_MIDI_TxBufferPut(0xb0); MIOS_MIDI_TxBufferPut(encoder); MIOS_MIDI_TxBufferPut(value); } This is annoying, sould be a fairly easy thing to do, not to complex...But obviously I can't see what's wrong.. If you got any more ideas I would be glad :) Another way to get round this is to devide "counts" in intervalls, like from '0-10','11-15','16-25', etc..because I realy dont need the +-64 step resolution. Maybe just 5-10 different values depending on encoder speed from 0 to max. Well, over and out for this time. Time for some sleep (sure.....) /wise
  16. Hi TK ! I just had 10 min's to test your suggestions this morning, unfortunately with no luck. But I was in a hurry and may have overlooked something. And now I don't have access to my hardware untill thursday night :( But it would be strange if it was a "calculation timing" problem, since the problems start appear as the encoder is turned slowly. But how knows, stange things can happen in the MCU world ;) I'll keep you informed when I get the hands on my hardware. Best. /Wise
  17. Hi !, cool ripping a Denon apart :) I'm also looking for a way to output parameters from Traktor. If You find a solution, I would be very interested. Check my Traktor thread at: http://www.midibox.org/cgi-bin/yabb/YaBB.cgi?board=concepts;action=display;num=1080423478 /Wise
  18. I have a problem with a code implementation for SDCC and the C wrapper. The thing I want to do is a "wind wheel" for Traktor with an encoder. The wind funktion in Traktor is working in the following manner: * When deck is paused, and aMIDI input of 40Hex (64= 128/2 = half range) there is no wind. * From 64 down to 0 the deck winds faster and faster in reverse. * From 64 up to 127 the deck winds faster and faster in forward direction. So I want my "Wind encoder" to work as follow: * When I turn it slow clockwise I want to send 64 + "little deviation" i.e 65 or 66. * The faster I turn the encoder the bigger values are outputet, up to 127. * Same thing when turning counterclockwise, but from 64 downto 0.. Thougt solution: * Use a timer to increase a variable every time the timer function is called. * Then when the ENC_NotifyChange function is called I check the counter variable how many ticks it has gone since the last call of ENC_NotifyChange. * Then calculate the deviation from 64 and send it to Traktor. * Finally set the counter variable to zero. Here is the code : /* * C example * * ========================================================================== * * 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 * * ========================================================================== */ #include "cmios.h" //#include <pic18f452.h> unsigned int deviation; unsigned int value; unsigned int timer_counter; unsigned int counts; ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after startup to initialize the // application ///////////////////////////////////////////////////////////////////////////// void Init(void) { timer_counter = 0; // If 1 pulse/sec is minimum resolution, timer_counter should have a // frequency of 64 Hz = 15,625ms // calculate the required number of clocks for this period: // clocks = period / 400 nS = 15,625 mS / 400 nS = 39062 MIOS_TIMER_Init(4,39062); // define number of shift registers MIOS_SRIO_NumberSet(16); MIOS_AIN_Muxed(); MIOS_AIN_NumberSet(8); MIOS_AIN_DeadbandSet(8); // 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) { } ///////////////////////////////////////////////////////////////////////////// // This function is periodically called by MIOS. The frequency has to be // initialized with MIOS_Timer_Set ///////////////////////////////////////////////////////////////////////////// void Timer(void) { timer_counter++; } ///////////////////////////////////////////////////////////////////////////// // 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) { // clear screen MIOS_LCD_Clear(); } ///////////////////////////////////////////////////////////////////////////// // This function is called in the mainloop when no temporary message is shown // on screen. Print the realtime messages here ///////////////////////////////////////////////////////////////////////////// void DISPLAY_Tick(void) { } ///////////////////////////////////////////////////////////////////////////// // 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) { // 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 envt2) { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI event has not been completly // received within 2 seconds ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyTimeout(void) { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a MIDI byte has been received ///////////////////////////////////////////////////////////////////////////// void MPROC_NotifyReceivedByte(unsigned char byte) { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS before the shift register are loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Prepare(void) { } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS after the shift register have been loaded ///////////////////////////////////////////////////////////////////////////// void SR_Service_Finish(void) { } ///////////////////////////////////////////////////////////////////////////// // 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) { } ///////////////////////////////////////////////////////////////////////////// // 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, unsigned char incrementer) { counts = timer_counter; //Over 1 sec from last function call ? if (counts >= 64) counts = 64; //Calculate diviation deviation = 64 - counts; //Depending on the direction if (incrementer == 1) value = 64 + deviation; else value = 64 - deviation; MIOS_LCD_Clear(); MIOS_LCD_PrintCString("Encoder #: "); MIOS_LCD_PrintBCD1(encoder); if (incrementer == 1) MIOS_LCD_PrintCString(" Pos"); else if (incrementer == 255) MIOS_LCD_PrintCString(" Neg"); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("Value: "); MIOS_LCD_PrintBCD2(value); MIOS_MIDI_TxBufferPut(0xb0); MIOS_MIDI_TxBufferPut(encoder); MIOS_MIDI_TxBufferPut(value); timer_counter = 0; } ///////////////////////////////////////////////////////////////////////////// // This function is called by MIOS when a pot has been moved ///////////////////////////////////////////////////////////////////////////// void AIN_NotifyChange(unsigned char pin, unsigned int pin_value) { MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintBCD4(pin); MIOS_LCD_PrintBCD4(pin_value); MIOS_LCD_PrintBCD4(MIOS_AIN_Pin7bitGet(pin)); MIOS_MIDI_TxBufferPut(0xb0); MIOS_MIDI_TxBufferPut(pin); MIOS_MIDI_TxBufferPut(MIOS_AIN_Pin7bitGet(pin)); } and in mios_tables.inc: . . . MIOS_ENC_PIN_TABLE ;; encoders 1-16 ;; SR Pin Mode ENC_ENTRY 1, 2, MIOS_ENC_MODE_DETENTED ENC_EOT ENC_EOT . . . . Problem: When I turn encoder very slow, 64 is sent. When I slowly increase the turnspeed the value is supposed to change from 64 to 65-66-67-68-69 and so on to 127. But….It’s almost impossible to get stable values between 64 and 80 (which is the most important range to fine seek for a beat). Same counter-clockwise, hard to get values between 64 and 40. Value is jumping from 64 to e.i 74. Am I way off here or have someone else a better solution? Anyone have some thoughts about this? /Wise
  19. Thanks TK ! The timer is up and running as a swiss clock now :) Now I have some other problems, but I don't think this is the right thread to ask them in. So how about a new topic under "MIOS programming", "C programming" or something like that ? Just to separate "MIOS asm" and "MIOS C". /Wise
  20. How is "mode and period" defined in MIOS_TIMER_Init ? extern void MIOS_TIMER_Init(unsigned char mode, unsigned int period); Is the mode the prescaler and period in ms for: void Timer(void) to trigger ? Happy new year ! /Wise
  21. HI, have redesigned my layout : http://hem.spray.se/munktell/traktor251_general.jpg note: maybe no Traktor logo on final version (big picture) Comments appreciated Wise
  22. Looks perfec´t, should work. (But I don't have it myself) /Wise
  23. In the progress of redesign my panel.. i'm dreaming.. Think I gonna have som space on it above the player section. maybe... maybe.. In a future update of Traktor it maybe support midi out of the song possition and the other info on the displays. You guess what I'm thinking of ? ;D Adding 2*20 LCD for each player would be VERY cool !!! ;D ;D ;D Then to get all this to work under MIOS is another question ;)
  24. Hi Kris Check out okw: http://www.okw.co.uk/catalogue/tuning/info_pages/comknobsinfo.htm I got the 50mm ones. They are a bit plastic. Want more "rubber" feeling in the jogg :-/ But they will do till i got something else. As for the buttons, i consider thoose: http://www.rjs-electronics.co.uk/cms/html/modules.php?set_albumName=album06&id=Fujisoku_TM_TR&op=modload&name=gallery&file=index&include=view_photo.php The 12*12 mm ones with inbuilt LED. Thougths ? /Wise
  25. Hi and thank you for all the answers ! Kostix, intosite: I have also thought about someting like that. But my windows programming skills are to low for that. Hopefully someone else could make this and contribute it to the MB community :) Rogic: I don't know what you mean with "round function for BPM, SET for offset, etc.", but suppose you men Play/Cue, pause/ loop in/out etc ? And you'r totaly right about the design of the poanel to be more like a regular audio mixer. I will redesign my panel as soon i get the time to it. Will post it asap. Kelper: I'm planing to use the jogg as a wind option, scroll in playlists, fine tuning the tempo/pitch, scratch or anywhere you could think of a rotary encoder :) The function of the jogg is chosen by the "layer" buttons. For more info, se: http://www.midibox.org/cgi-bin/yabb/YaBB.cgi?board=mios;action=display;num=1069513897 (I have not finished this MIOS mod yet.... :-/ ) beezle: Cool thing :) As said before, of course my design will be free to use för the forum menbers. kris: Thanks. I'll go for my redisigned box and really consider using leds for the player and loop functions of the controller. I got the joggwheel as free samples from OKW. I'm also curious about all the Traktor controllers being built out there :) I'll keep ypu informed about my design when i get something new on it.. But it could take a while, coz i got my thesis work to do. And on the weekends i got work on Ericsson, soldering SMD components under microscope 2*12h/weekend :-/ And now a question for ya all: Someone know og a button with the right "dj feeling" to for the play/cue, pause, set, loop in/out buttons. Minimal force requierd to operate and a minimal travel length? /Wise
×
×
  • Create New...