Forum Rule: Always post complete source code & details to reproduce any issue!
Results 1 to 8 of 8

Thread: DJ Midi Controller using optical encoder

  1. #1
    Junior Member
    Join Date
    Jul 2017
    Posts
    4

    DJ Midi Controller using optical encoder

    I'm trying to make a Midi DJ Controller that relies on the rotation of a turntable to control the playback speed of any midi mappable dj software. I'm thinking about using a US digital optical encoder( https://www.usdigital.com/products/e.../rotary/kit/E2 ). I already have a device that I can place this encoder inside of called the Tascam TT-M1, which is basically a device with a rubber wheel that sits on the record and the wheel is directly attached to an optical encoder. I am new to making electronic devices from scratch using Teensy. I have two questions, first question is how hard is it to use these types of encoders with Teensy for midi purposes. My 2nd question is where would I find information for the correct programming using teensy and optical encoders with midi?

  2. #2
    Senior Member
    Join Date
    Jan 2017
    Location
    Maastricht
    Posts
    168
    For the MIDI part start with the USBmidi documentation and take a good look at the examples. There's an excellent encoder library available for rotary encoders so reading the encoder shouldn't be an issue. You might need a level shifter to connect the encoder (5V) to the teensy (3.3V) if the teensy does not tolerate 5V on the inputs. I'm not quite clear on what you are trying to achieve and how this would be used. What kind of midi control does the DJ software expect? A simple 0 to 127 value or is it a pitchbend or NRPN controller value?

    regards,

    Gerrit

  3. #3
    Junior Member
    Join Date
    Jul 2017
    Posts
    4
    Basically it is going to be a unit that sits on the edge of a turntable, and a rubber wheel is directly connected to an optical encoder inside the unit. The wheel sits on the record and when the vinyl record spins, so does the wheel. The encoder is going to translate the speed and direction of the wheel into a midi velocity value. The velocity value is still 0-127 but here's the issue, that value needs to represent 63-0 forward backward rotation speed and 65-127 for forward rotation speed, 64 will be the normal playback speed. I understand this will take some programming to get the correct speed to match the playback speed of the song on the computer. That is all I want this device to do. This is also why I chose a high resolution encoder like the "U.S. digital" version.

  4. #4
    Junior Member
    Join Date
    Jul 2017
    Posts
    4
    I have to fix my last reply. The reason I said 64-0 for backward rotation and 65-127 for forward rotation is because I was using an example of midi messages sent by most touch sensitive jog wheels on the market which also send a midi note on and off. However, since my device is spinning from the turntable directly, all I will really need is the backward rotation and forward rotation midi values so there is no need for the midi not on/off or midi velocity value of 64.

  5. #5
    Senior Member
    Join Date
    Jan 2017
    Location
    Maastricht
    Posts
    168
    Is the turntable only used as a controller or does it play records also? If it needs to play records I would look for a contactless solution to prevent rumble. Also I wonder if you need a high resolution encoder, if a small wheel on the encoder touches the platter it will make a lot of revolutions. For this use case the encoder library is probably not the best choice as you only need the direction and speed, not the position.
    Personally I would try to create my own 'encoder' directly on the platter, perhaps it is even possible to tap a speed sensor signal of the turntable itself.

    regards,

    Gerrit

  6. #6
    Junior Member
    Join Date
    Jul 2017
    Posts
    4
    The turntable is only used as a controller, so basically the platter spins and moves the record on top and my device uses an encoder attached to a rubber wheel that moves with the vinyl record. I'm not playing anything out of the turntable itself. Thats why this device is running only from the rotation of the record. So whether record spins left or right, it doesn't matter. As long as the rubber wheel on the device is making contact with the vinyl record, the encoder will take that speed and direction information and be converted into midi velocity data that communicates with the computer. Here is a picture of the device i'm looking to update.
    http://img.audiofanzine.com/images/u...t-m1-24177.jpg

    I assumed I would need an optical quadrature encoder because it's dual channel that can send midi information for both directions.

  7. #7
    Senior Member
    Join Date
    Jan 2017
    Location
    Maastricht
    Posts
    168
    A picture is indeed worth a thousand words In this case an optical encoder is probably the easiest to implement. The Bourns EN series (with ball bearing) could also be used for this purpose. Remember that quadrature encoders will produce 4 times the rated cycles per revolution after decoding (4 pulses per cycle), so a 256 CPR encoder will produce 1024 pulses per revolution.

    regards,

    Gerrit

  8. #8
    Senior Member Pensive's Avatar
    Join Date
    Aug 2014
    Location
    Basingstoke, UK
    Posts
    561
    For what it's worth - (And I do love the idea of what you're doing - built this back in 2001 - https://hackaday.io/project/4180-digital-vinyl)

    I think you'd be much better off using control vinyl and a needle - you could fairly easily modify xwax to send midi commands from a raspberry pi if you really wanted to work through midi - but with Mixxx being totally free and supporting control vinyl it's almost a no brainer IMHO.

    But honestly there is a reason why control vinyl/needle won the digital vinyl battle......

    Nevertheless, good luck - hope it works great however you approach it

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •