Turing Machine.
  • I was walking the dog yesterday and I thought of a simple way to implement the variable amount of randomness in a looping sequence, like the Turing Machine. I'm not sure if someone else has already done this yet, but hopefully this will show up in a quick search. I suppose I can take a crack at the turing expanders if I can figure out what the heck is going on with them.
    Not Quite Turing Machine.audulus
    71K
    Screen Shot 2017-05-24 at 2.54.44 PM.png
    871 x 257 - 47K
  • I put one together a while back. I haven't implemented the CCW bit reversal yet but it works as the original from vertical to CW.
    I'll upload it when I'm next on my iPad.

    It'll be interesting to see if anyone can come up with a better way of passing the bit values along the line. I had to use delays which seemed a bit of a hack but it does work :)
  • Cool! I look forward to comparing the designs :)
  • Oh,I read your OP on my phone and didn't see that you had attached one too. I'll have a look :)
    Here's mine attached. I've added separate gate outs per bit so you can do the pulses expander in a more modular way ;)
    Turing Machine.audulus
    14K
  • I updated the interface of the NQTM to the Module Library design specs, changed the scaling on the RNG/loop knob to be more useful, and added a final sample and hold to the output to clean up the output.
    Not Quite Turing Machine.audulus
    79K
    Screen Shot 2017-06-04 at 6.00.27 PM.png
    948 x 348 - 59K
  • I've come up with a mux solution to pass the bits along the line. It all happens instantly, no delay in this one, I hope I'm on the right track. I put a counter on this one but vectors should work too.

    First is a bare bones patch "Mux solution for the Turing" to see the expressions and to see it working. Then I tidied it up in another patch for further development if anyone wants it.

    I did an 8 bit solution, but you can just delete the last mux on the right to make it 7 bit for the Turing. The method I used was to alter the mux "select" values adding expression nodes to correct the bottom muxes as I went along. To add more than 8 bits would require increasing amounts of nodes to correct it and I think beyond that, a better method of maths would be needed but 8 bits is good. I had to set the minimum sequence length to 3 but you can make the sequence (upwards) as long as you like by stacking in more muxes.

    Hope it comes in useful. Am coming up with a few ideas but need to work on it a bit more.
    MuxSolutionForTheTuring.audulus
    943K
    8BitPulseRing for development.audulus
    804K
    barebones.jpg
    1366 x 709 - 184K
    tidied up for dev.jpg
    1366 x 711 - 146K
  • Very interesting! I look forward to see what sort of interface you come up with :)
  • Here's my take. This is the Turing Machine with the Volts and Pulses expanders. I used a version of the d-type flip-flop I built for the phase detector in my (so far not working) PLL to construct the shift register and used the random node for the bit flipper. Like the original, the pulse width of the pulses expander is controlled by the clock input. The volts expander output is scaled to 0-1, but the octave output is adjustable for range and offset. I figured that it would be simpler to scale the volts expander output externally.

    08/06 edit - added a scaled volts module output. Updated files
    08/06 edit - minor UI update added logic to turn off LEDs for unused parts of the shift register. Updated files

    Turing Machine.audulus
    304K
    Screen Shot 2017-08-06 at 8.00.13 PM.png
    1468 x 895 - 216K
  • Loving these guys thanks for sharing!
  • @stschoen Awesome! I didn't even notice you had updated the patch! Looking pretty amazing.

    After having played with it for like 5 minutes, I'm a little confused what the volt knobs do, but I love the scale and offset. I am definitely going to record some generative patches with this guy.
  • The volt knobs are connected to bits one through eight and provide a variable value when their respective bit is high. The values are summed and sent to the v output. V out is a 0-1 output. The scale and offset give you a signal more suitable for driving the octave input of an oscillator at scaled v in the same way as the the scale and offset controls for the "o" output scale the output of the 8 bit dac. The m output is also the dac, but scaled 0-1 The pulse outputs are the various bits anded together. Their width matches the width of the clock pulse. I found the schematics for the V2 expanders at muffwiggler and basically copied them. I still need to add some graphic symbols and separators, but I think the internals are pretty close to the original design. BTW thanks for the oscillator design, At the moment my macs (high sierra beta) won't run the native oscillator or filters, but they're still much better for building patches. The phazor still works and it's nice to have some sound. I had fun playing with this module and drove my wife crazy. She made me switch to headphones.
  • Thanks for that, I see, the loop is altered by a randomly activated flipflop, so when the probability is 100, all the bits are reversed..
  • Yes, the noise source in the original is a reversed biased transistor, Audulus has a noise node that is functionally equivalent. In both cases the loop/random knob (bit flipper) controls the probability that the bit fed back into the shift register will be flipped. At one extreme no bits will be flipped and at the other all bits will be flipped. 50% are flipped at 12 o'clock. The first 8 bits in the register are converted to an 8 bit number to provide the output. The write 1 and 0 triggers override the bit flipper and allow you to inset bits into the ring. The length knob controls the length of the the shift register. The original had a choice of 8 or 16 and the MkII changed to a rotary knob with a choice of 2, 3, 4, 5, 6, 8, 12 and 16. My copy runs from 1 to 16. A high on the set and clear inputs will set all the bits to one or 0 respectively. They weren't available on the original module, but I thought they might be convenient.The scale and offset knobs mimic the original's range knob. See above for a description of the volts and pulses expanders.
    There's a good description at https://www.thonk.co.uk/Documents/Turing/Turing Machine Build Doc v2.1.pdf
  • Finished the UI today. It's done (if anything in Audulus is truly finished)
    Turing Machine.audulus
    422K
    Screen Shot 2017-08-07 at 9.24.34 PM.png
    1043 x 946 - 190K
  • The interface looks spectacular~ ! The dividers and image guides explain the i/o very clearly now. Here's a patch I'm going to play around with on the modular ;-)
    20170807 cv.audulus
    1M
  • Thanks for the compliment. I'll check out the patch when I get back to the Mac. I might play around with a horizontal layout as well. It would allow me to keep all the I/O on the ends.
  • Love the patch! It's headphone time again. Sure will be nice when I can run Audulus on the mac again. The patch runs at about 45% on my aiPad Air 2, but no glitches and great sound. I did a horizontal layout of the UI. Let me know what you think. It's a little larger, but I think it may be clearer what goes with what. Still couldn't get all the I/O on the ends without making it ridiculously large.
    STS Turing Machine.audulus
    782K
    Screen Shot 2017-08-08 at 10.23.54 PM.png
    975 x 907 - 173K
  • The horizontal layout is definitely more natural in Audulus, but it doesn't always lend itself to compactness. On the whole it's very well laid out, but if I may nitpick, the scale and offset labels should be uniformly aligned with their knobs. Fortunately that's something I can easily change myself.

    Another thing I noticed is that when I hit the 1111 gate input, a different number of lights turn on. Eight for the vertical version and 10 for the horizontal.

    image

    I'm unsure if that really makes a difference but there you have it.

    Thanks again!
    Screen Shot 2017-08-08 at 2.48.46 PM.png
    1027 x 503 - 187K
  • Oops on the labels. As far as the lights, the vertical is set for a register length of 8 and the horizontal is set for 10. I suppress the LEDs for the unused bits in the register.
  • >I suppress the LEDs for the unused bits in the register.

    Ah! It all makes sense now.
  • Updated the file
  • This is one of the best-looking most realized modules yet, along with the HBO. Really shows off what Audulus is capable of! Thanks guys :)
  • Thanks for the kind words. It was a lot of fun putting it together. Just curious, which layout do you prefer, horizontal or vertical?
  • I like both just about the same, but I think the horizontal is easier to get with the 0010 binary stuff, since it reads straight across.
  • I think the horizontal one is quite nice. I was really enjoying it yesterday, I can see why they are so popular now. Organically evolving the rhythm and melody is addictive!
  • I can see advantages to both layouts. A horizontal flow seems more natural in Audulus, but vertical is the more traditional eurorack approach and at least in this case is more compact. Not necessarily a big deal on a mac or PC, but space is at a premium on the iPad.
    @RobertSyrett, my wife wife thought your patch was pretty cool which is saying quite a lot! (She usually makes me put on headphones when I'm playing around with Audulus). I have to admit the binary numbering was really more because I didn't want to fill in the holes on the 4, and 8. I thought it was perhaps a bit obscure, but added to the digital flavor of the module. The SVG library Taylor uses doesn't support even-odd filling and so for curves with open areas inside you have to fill in the hole with a black shape. At some point I plan to do a full set of numbers in each color, but it's enough work that I want to be satisfied with the font and size before I slog through it.
    This was my first exposure to this module and I enjoyed playing with it. It's interesting to feed the output to an oscillator use the pulses module to trigger an ADSR, the volts module to modulate the ADSR settings and drive a filter and envelope. I can see why people liked the expanders. The other ones I came across seemed to be more in the nature of various filters and frankly I think SansNom has that covered pretty well.
  • I'm only getting round to taking a closer look at this now – looks amazing.

    My 2 cents on the layout considerations – I agree that the horizontal layout seems more natural in Audulus, and am slowly starting to prefer placing all the external inputs at the top of the module – the reason, given my admittedly iPad-centric use of Audulus, is that in that way the knobs are closest to my fingers, a little like placing the menu bar at the bottom of the screen in a phone UI, and I can still clearly see the connections at the top.
  • @Rudiger - if you make your own version, please upload it so other people can check it out! You make a good point there for iOS playability. I think sts does most of his work on computer, like I do, so you don't always key into those things.
  • @Rudiger, that's an excellent idea. If you swap the module top to bottom let me know.
  • @biminiroad @stschoen I spent some time today playing around with the Copier demo patch, and in this case I have to say that the horizontal layout of the Turing Machine works just fine (on an iPad) :-).

    I guess it depends a lot on context. In the case of my scale bender where there are a lot of external inputs I tried out various layouts and quickly realized that it worked best with the inputs at the top. With Robert Syrett’s 8XRandom module, intended for use in conjunction with a sequencer, it makes sense that the outputs are at the bottom. With small oscillators etc. having the inputs and outputs on the sides often works really well. I’m still finding my way with it all.

    As soon as one has a number of modules collected in a patch one ends up having to navigate around on an iPad, whatever the case. When it comes to larger modules though keeping the main controls free at the bottom has been a good realization for me.

    Here's my version of the Copier demo patch that I was playing around with. I’m looking forward to delving into the Turing Machine in more depth soon.
    STS Copier Maschine Lite V2 Demo RM.audulus
    2M
  • Cool sounds! It has a very oriental vibe to it. Must be the Pythagorean scale. I'm really liking this module as a source of randomness, so glad that @RobertSyrett started this thread and introduced me to the original module.
  • OK, I got round to looking at the Turing Machine a little more closely today – and ended up changing the layout.

    Since I didn’t really know the Turing Machine I decided to work through the MTM Mk 2 demo (http://musicthing.co.uk/modular/?p=1391), and recreate the different parts of it in Audulus as I went along.

    I started off using the vertical layout version as it was easiest to follow along with the video and orientate myself as to what was what. As I collected the various modules needed to recreate the different sections of the demo I quickly got into a messy tangle on my iPad, so I jumped in and changed the layout of the horizontal version so that the pulse section is at the top. That’s worked out quite well I think – it was certainly more fun connecting the little percussion modules to the various pulse outputs.

    Here’s the patch will the modules I collected for following along with the demo.

    There’s a final patch in the video in which he demonstrates clocking the Turing Machine at audio rates. I haven’t been able to recreate those sounds very successfully with the Audulus clone, but I’ve included it here as a second patch with some of the modules needed for setting it up. It seems as if Audulus is hitting some limits here, or perhaps it needs to be set up more carefully – whatever the case, one can still get a little bit of an idea of how the audio rate clocking thing works.

    Thanks STS for the fine work you put into this – It’s been a lot of fun!
    STS Turing Machine - MTM Demo Pt.1 - RM.audulus
    1023K
    STS Turing Machine - MTM Demo Pt. 2 - RM.audulus
    684K
  • I love part 1, really sounds great! I watched the video and I see what you mean about clocking it at audio rates. I suspect it's my shift register design. When I originally designed the register using a standard hardware design, I found that the hardware design relied on the propagation delay across the flip-flops in order to function. My copy flipped all the bits at once instead of shifting the bits. The current design has a cascade of S&H nodes the provide a similar function, however I suspect that they are limiting the clock rate. I've since modified the design in another project. I'll plug it in and see what happens.
  • Looking forward to see what you discover with the shift register design.

    I've recently been enjoying and making good use of Robert Syrett’s various oscillator modules, but with this tryout the phasor aliasing started to bother me, so I went back to the Audulus oscillator node – and that sounds a lot cleaner: If only it had the phase alignment and modulation possibilities that the phasor based oscillators do!

    And then there’s @SansNom’s wonderful SEM.
  • After @Rudiger pointed out that my Turing design wouldn't clock at audio frequencies, I thought I would see if I could optimize it. The basic problem was my use of a module which generates a short pulse. The module has a fixed pulse width and can't be clocked any faster. I removed the pulse modules, significantly redesigned the shift register and now, not only will the module clock at audio rates, it only uses about 30%-40% of the CPU cycles it did before. While I was at it I noticed that the new version of the pulses add-on in the video had added bits 3, 5 ,and 6 to the original 1, 2, 4, 7, etc. so I added them as well. @Rudiger had moved the pulse unit to the top, which I thought made sense for the horizontal layout. Other than the higher clock rate and efficiency, the only other difference is now the set and reset gates require one clock pulse to operate. Definitely worth the effort to re-visit the design. As before, I have included a vertical and horizontal layout as well as a text only version for our Windows friends.

    -edit 07:47PM 09-26-17 updated file loaded fixed wiring error
    Screen Shot 2017-09-26 at 4.32.39 PM.png
    1691 x 977 - 331K
    STS Turing Machine Version 2.audulus
    693K
  • Wow, that was quick! Great.
    And nice with the pulses for bits 3, 5, and 6 as well.
    Looking forward to playing around with the audio frequency clocking.
  • Sounds pretty close to the video. Even if you don't clock it at audio rates, it's way more efficient than the original.
  • @stschoen Thanks for the labels for the windows version! The ins on the sample and holds in the machines are miss wired, on 5 & 6 from the mux, just to let you know.
  • Can you grab a screenshot, Jimbo?
  • Here you go... is 4,5 & 6
    turingmisswire.jpg
    1366 x 768 - 307K
  • Oops! My bad. I've uploaded the corrected files. Thanks for debugging. Too many wires I guess.
  • Well I've been jamming with the bugged version for about an hour, so I think it's a fairly small bug, or one that blends right into the randomness.
  • It only affected bits 5 & 6 on the Volts module. Hard to tell when it's random :)
  • I’ve been playing around a bit with the audio rate clocking – specifically trying out the volts waveshaping and changing the pulse width on the pulse out, as in the last section of the MTM video. It seems to be working very nicely.

    Here’s my (updated) tryout patch (which also has Robert Syrett’s little sequencer ready to go if one would like to try out clocking a sequence of pitches):
    STS Turing Machine - MTM Demo Pt. 2 - RM.audulus
    828K
  • Rad! Kind of a "March of the Daleks" (if you're into Dr. Who). I think one of the best things about posting on the forum is seeing how others build on your work. All of us put together definitely have more than half a brain. Thanks!