Jump to content

Jakes Daddy

Members
  • Posts

    28
  • Joined

  • Last visited

    Never

About Jakes Daddy

  • Birthday 01/01/1

Profile Information

  • Gender
    Not Telling

Jakes Daddy's Achievements

MIDIbox Newbie

MIDIbox Newbie (1/4)

0

Reputation

  1. Yes, Traktor sends midi out signals, BUT only from Traktor 3.2.2 onwards. Also, there is only a limited amount of stuff it will send - basically for every MIDI IN signal you define (like when you make it 'learn' your play/cue/pitch midi signals etc), you can make it 'echo' them back as MIDI OUT. Therefore, you can press a button (eg. play), Traktor will read the MIDI IN signal, act accordingly, and will send the same MIDI signal back as MIDI OUT - its like its saying 'yes, I heard the signal, and I am now playing'. Your midibox can read that MIDI IN signal, and do something - eg. message on LCD or light an LED etc I'd love for it to send more detailed info - track name, time remaining to play, etc etc, but it doesn't do it yet ::) Hope this helps. JD
  2. Yes, both LCDs work perfectly - I wired them as described in the LCD Module section of the main site, with E for the 2nd LCD going to RC on J10 (I think) I can then address the 2nd LCD by setting the cursor position to 0x80 (1st char or 1st line of 2nd LCD) and write to it as normal :) So far I am only writing a limited number of messages to the LCDs - I have the pitch displayed roughly in line with where the original was displayed (so it lines up with the label printed on the unit). Unfortunately I cannot get Traktor to send the pitch value back as a MIDI signal, so I have to calculate and maintain it within my C app :( - I'd much rather just read it as a MIDI signal And then I have 'Playing' , 'Cue' , and 'Reverse'. These are much better - Traktor sends these status messages as MIDI signals, so I can simply read for them and display the appropriate message ;D JD
  3. Most certainly ;D - Here are some images I took last night when playing out with it. Sorry some of the images are slightly blurred - maybe I need a tripod and less beer ;D The first pic shows the unit installed in place of where the normal CD control unit goes, and you can also see my monitor with Traktor on the left - you can see why I call it the smallest DJ booth in the world >:( Next is a close up of the unit - all looks pretty much as Denon intended except for the blue LCDs And lastly a rather blurred close up of one of the blue LCDs I'll try to find time to get a full build description and pics onto my user pages on the wiki Enjoy ! JD
  4. Just to let you guys know; my MB, PC and Traktor performed amazingly well on Saturday night :D :D :D I got in a little bit early to set everything up, and it all worked faultlessly; and I even got comments on the 'quality' of the sound - looks like my nice new M-Audio Audiophile Firewire has better D-A convertors than the Numark CD players ;D The only slight issue was that I dropped my MB at the end of the night when I was packing everything away ::), but it still works (phew !) So, having lugged around a desktop PC, TFT flat screen, external sound card, MB & cables galore; it now looks like I'm looking for a laptop and that my MB and Traktor will make a regular outing ;D JD
  5. I'd love to, but the venue I play at has the worlds smallest DJ booth, and there really isn't room for a pair of 1210's. I occaisonally take 1 deck out with me, and play from CD to vinyl to CD - but the CD decks have absolutely had it now (on 1 CD deck, the drawer mechanism is bust so you have to 'help' it close and then it doesn't always read the CD !, and both CD decks have dodgy play buttons which mean that they never ever play when you hit play - if you are lucky you might get a half second delay, if you are unlucky, it wont play at all !!) I will of course post an update to let you know how I get on ....
  6. My Midibox project - a Traktor controller built out of a Denon DN1800F CD Controller - gets its first outing tomorrow night :o Technically, what I have built is still a prototype, in that the cabling inside is pretty messy, not all the buttons are mapped to Traktor functions yet, and the software could do with a couple of minor tweaks - but for the most part it does all work ! (My original plan was to build it as I have done, then re-build it nice and neat) But unfortunately, I am soooooo fed up with the dodgy equipment at the venue that I play at (cheap Numark CD players which have been used and abused !), that I have no choice but to take my PC and MB project ! :o And not only is it the first outing for my Midibox, but also for me using Traktor (I've only ever played with vinyl and CDs). I play a 5 hour set, so the PC, Traktor and the MB need to stay up and running for at least that long ! - I think this weekend could be a baptism of fire :o :o :o - wish me luck !!! JD
  7. Thanks for all the replies gents. You'll be pleased to hear that I have sorted it now ;D. The problem was one of those very subtle ones ...... My original code was as I originally posted, and in particular the problem was here: pin_value and zeroPosition are both unsigned, and the subtraction in brackets in the pitch=..... line would have resulted in an unsigned int. If pin_value was over 63 (the zeroPosition), the subtraction would have been correct, and the result would be a positive integer. If pin_value was below 63, the subtraction would have been incorrect, and the result would have been a very very large positive integer. So, my solution is to do the subtraction into a separate signed int as follows: So, as I said, a very subtle problem, but I'm glad its sorted now ! ;D
  8. I'm having a problem with a variable of type float which I hope someone can help with. Basically I have a pot which is my pitch fader. It sends MIDI values 0-127. The centre point of the pot is 0% pitch, and sends a MIDI value of 63. My pitch range is +-6.5% I am trying to write a C function which will calculate the pitch and display it on the LCD. My formula for working out the pitch is: Work out the equivilant pitch value for each pot step or movement: eachIncrementValue = totalPitch / totalPossibleValues eachIncrementValue = (6.5 X 2)/ 127 eachIncrementValue = 0.10236220472440944881889763779528 Then work out the pitch: pitch = 0.0 + ( eachIncrementValue * (pin_value - zeroPosition) ) pitch = 0.0 + ( 0.10236220472440944881889763779528 * (pin_value - 63) ) pitch is obviously dependant on pin_value, but if it were 12 pitch = -5.22..... If pin_value were 79, pitch = 1.63..... So far so good. Now, I want to display the value on the LCD, and this is where I'm getting a bit stuck. I want to only display the value to 1 decimal place (eg. 1.6323534 should be displayed as 1.6; and 1.0 should be displayed as 1.0), and I want to display the + or - sign. As I don't know C very well, like how to round down a float, or how the MIOS_LCD_Print* routines would handle a float and the polarity sign I decided to do it myself: unsigned char totalPitch = 13; unsigned char totalPossibleValues = 127; unsigned char zeroPosition = 63; float eachIncrementValue; float pitch; unsigned char wholeNum; float remainder; eachIncrementValue = (float)totalPitch / totalPossibleValues; pitch = 0.0 + ( eachIncrementValue * (pin_value - zeroPosition) ); // position the cursor on the correct display if (pin==0) { MIOS_LCD_CursorSet(0x46); } else { MIOS_LCD_CursorSet(0xc6); } // if the pitch is negative then we need to display the minus sign, then multiply the value by -1 so we get the positive value if (pitch < 0.0) { MIOS_LCD_PrintChar('-'); pitch = pitch * -1; } else if (pitch == 0.0) { MIOS_LCD_PrintChar(' '); } else { MIOS_LCD_PrintChar('+'); } wholeNum = pitch; // this will explicitally truncate the fractional portion of the pitch - so we are left with the whole number MIOS_LCD_PrintBCD1((unsigned char)wholeNum); MIOS_LCD_PrintChar('.'); remainder = (pitch - wholeNum) * 10; MIOS_LCD_PrintBCD1((unsigned char)remainder); It all works with the exception of the line that attempts to convert a negative value to a positive: // if the pitch is negative then we need to display the minus sign, then multiply the value by -1 so we get the positive value if (pitch < 0.0) { MIOS_LCD_PrintChar('-'); pitch = pitch * -1; } else The code goes into the if block correctly, and the - sign is correctly displayed. However, the pitch = pitch * -1; appears to corrupt the value, and what I get printed on screen is -F.F for any negative value !! I have tried pitch = pitch * -1; pitch = pitch * (-1); pitch = pitch - pitch - pitch; None of these work; and so all I can assume is there is something odd about a C float ?? Any ideas anyone ? Cheers JD
  9. So what MIDI events/data will Ableton send? From Traktor 3.2 (which is the version I have), it will send MIDI data, but its very basic - all you can do (AFAIK) is to duplicate a MIDI IN event and set it as output. EG. if you configure the DECK A PLAY function to respond to a given MIDI IN signal, you can make Traktor also send it back OUT on the same MIDI channel. So, you can write into the C code for the midibox to respond to this event. Its a bit like an acknowledgement of an event - I press the play button, mb sends the MIDI signal, Traktor receives it, Traktor sends the same MIDI signal back, mb receives it and lights the play led. I'd be very interested to know what Ableton will send back as MIDI data Wild Weasel is the man!, and I've already been in touch with him about his project. He gave me a lot of inspiration and ideas.
  10. I'm building a midibox version of a pro DJ CD deck - basically rip apart a broken CD control unit, stuff it with MB goodies, and use it with Traktor. My base hardware is a Denon 1800F (the top half of the picture - the bottom half is the CD players themselves and they are now in the bin !): I stripped out all of the inards including the original LCD panels (I think they are actually LED, but that does not matter - they are gone now !) - replaced both panels with a 16X2 LCD in exactly the same mounting position, and the plan is to display on it as much as I can based on the original units functionality (ie. pitch, play/pause indicator, time etc) - this is where I'm getting a bit stuck as Traktor does not send much MIDI data, and so pitch I am having to calculate myself based upon the AIN values for the pitch faders - and there is no hope that Traktor will ever send track info as MIDI data (such as time remaining) - never mind, its fun anyway !
  11. Perfect, thats worked a charm !! Many thanks JD
  12. Hi, I wonder if anyone can help. I'm building a MB with 2 LCD panels. I can initialize and write to both LCD panels no problem, but now I want to define a couple of custom characters for each LCD. I am currently doing something like this: // define the bit patterns for the special chars which will be written to the LCD tables // we'll use these for pitch up and down indicators (and up and down arrow !) const unsigned char charset_arrows[2*8] = { 0x00, 0x04, 0x0e, 0x1f, 0x1f, 0x04, 0x04, 0x00, // this is the up arrow 0x00, 0x04, 0x04, 0x1f, 0x1f, 0x0e, 0x04, 0x00 // this is the down arrow }; void Init(void) __wparam { // setup to use 2 16X2 lcds MIOS_LCD_YAddressSet(0x00, 0x40, 0x80, 0xc0); // add the special characters to the LCDs (up and down arrows for pitch up and down) MIOS_CLCD_SpecialCharsInit(charset_arrows); <rest of Init code> } void DIN_NotifyToggle(unsigned char pin, unsigned char pin_value) __wparam { // we need to see if either decks pitch- or pitch+ has been pressed or released as we need to display the appropriate icon on screen // we need to do it here rather than waiting on a MIDI in signal as Traktor does not send enough MIDI info for us to determine if it was - or + // is it deck a pitch - if (pin==26) { // either clear or display the down icon on deck a MIOS_LCD_CursorSet(0x09); MIOS_LCD_PrintChar( pin_value==0 ? ' ' : 0x01 ); // this works, correct custom char is displayed } else // is it deck a pitch + if (pin==27) { // either clear or display the up icon on deck a MIOS_LCD_CursorSet(0x09); MIOS_LCD_PrintChar( pin_value==0 ? ' ' : 0x00 ); // this works, correct custom char is displayed } else // is it deck b pitch - if (pin==58) { // either clear or display the down icon on deck b MIOS_LCD_CursorSet(0x89); MIOS_LCD_PrintChar( pin_value==0 ? ' ' : 0x01 ); // this does not work, correct custom char is not displayed } else // is it deck b pitch + if (pin==59) { // either clear or display the up icon on deck b MIOS_LCD_CursorSet(0x89); MIOS_LCD_PrintChar( pin_value==0 ? ' ' : 0x00 ); // this does not work, correct custom char is not displayed } <rest of DIN_NotifyToggle code> } So, when I try display one of the custom characters on the 2nd LCD (by positioning the cursor at an offset of 0x80), it positions correctly but displays a random character. Doing this on the 1st LCD works perfectly. So, I can only assume that my call to MIOS_CLCD_SpecialCharsInit(charset_arrows) only did it for the 1st LCD. Does anyone know how to get custom characters into the 2nd LCD ?? Thanks in advance JD
  13. Found the answer from reading the WIKI - I needed to call: MIOS_LCD_YAddressSet(0x00, 0x40, 0x80, 0xc0); Excellent ;D
  14. Hi All, Just wondering if anyone can help with this. I'm making a MB with 2 16x2 LCDs. The basic hardware is complete, all my buttons, faders and LEDs are connected, and I have a basic C app (based on the skeleton) that lights the LEDs, and displays on LCD 1 when a button is pressed or fader moved - perfect, all of my soldering is good ;D But I can't get the 2nd LCD to display anything. I've wired it as per (my understanding of) the instructions for 2 LCDs (ie. all the pins with the exception of E connected to both LCDs - E on the 2nd LCD goes to J10 RC. IE. LCD1 CoreJ15 LDC2 ------------D0--------------- ------------D1--------------- ------------D2--------------- ------------D3--------------- ------------D4--------------- ------------D5--------------- ------------D6--------------- ------------D7--------------- ------------B+--------------- ------------B---------------- ------------Vs--------------- ------------Vd--------------- ------------VO--------------- ------------RS--------------- ------------RW--------------- ------------E J10RC-- But I just can't get anything to display on LCD2 - My understanding of the C code is that I need to add 0X80 to the LCD cursor position to address the 2nd LCD - eg: MIOS_LCD_Clear(); MIOS_LCD_CursorSet(0x00); MIOS_LCD_PrintCString("MIDI Denon 1800F"); MIOS_LCD_CursorSet(0x80); MIOS_LCD_PrintCString("MIDI Denon 1800F"); MIOS_LCD_CursorSet(0x40); MIOS_LCD_PrintCString("Deck A"); MIOS_LCD_CursorSet(0xC0); MIOS_LCD_PrintCString("Deck B"); Only the 1st LCD displays the message - nothing at all on LCD2 !!! Any ideas ?? Cheers JD
×
×
  • Create New...