Neil Parfitt Posted December 4, 2015 Share Posted December 4, 2015 Sometimes I’m bored while watching bad Netflix B movies... and this stuff happens... In the Logic environment you can use transformer maps to store and manipulate incoming MIDI data in real-time.. but you’re limited to 128 locations per map. So it got me thinking of ways to work around it. I was reading about general computer architecture and people making simple computers out of relays when it struck me that I could almost model core memory out of MIDI objects! So after reading a little more research how RAM operates in general - it seamed feasible that something similar could be built. Here’s my 16 x 16 “RAM” matrix. X and Y coords can be dialed in from a slider and you can then push a data value to the exact position with a value of 0 to 127. So now, you have 256 addressable storage areas! Because MIDI only moves in one direction, there’s a secondary MIDI event trigger that pushes that selected position data to the output bus. http://www.neilparfitt.com/logic/16x16.jpg Then I thought - why not take this into 3 dimensions with a X, Y and Z addressing like the old memory cubes! So, by rigging up a 16ch switch acting as Z axis, you can now read and write on up to 16 layers of X and Y memory positions. It looks like a mess - but it’s the same thing sandwiched on top of itself x 16. Blue cables are the Z addressing. So there you have it, From an initial map limit of saving 128 values.. to now being able to store and recall up to 4096 values in any order!! Nuts!! Currently each one of these ‘Ram’ addresses is a MIDI fader storing a value. http://www.neilparfitt.com/logic/16x16x16.jpg Then - I took it a step beyond. Instead of using a MIDI fader to store a value, what if transformer map was used instead? Then things get really interesting as each ‘Ram’ address can have a further 128 internal positions that you can store and recall a 0-127 value! Now data storage jumps from 4096 to 32768 locations PER Z slice. So if each 16 x 16 x 256 slice was arrayed in a stack of 16 (Z) you have 524288 memory locations! That’s a ton of addressable information! Maybe I can feed it punch card style programming and make space invaders - in Logic Audio. Here's a single Z slice - each one of these can be fully packed into a macro. http://www.neilparfitt.com/logic/16x16x128.jpg Below are some examples of fully working modules: CLOCK: This is just a general sequential clock that Advances each additional variable on rollover - so perfect for skimming through all those memory addresses quickly. It flip-flops between a Switch set and data push clock. This way, there's no chance of timing errors as Logic has a chance to set all the switches correctly before read/writing information. http://www.neilparfitt.com/logic/clockdriver.jpg MEMORY ACCESS: This controls which MAP/X/Y/Z position in the memory is being read or written to. http://www.neilparfitt.com/logic/memorycontrol.jpg TEXT PROGRAMMER: By defining some memory values that equal i.e.: Display Text, the data in memory can be used to save text information. Suitable for a display. Using this simple programmer is the equivalent of programming using a keypad vs. manual drawing map values within a transformer (like punch cards! Ewe!) http://www.neilparfitt.com/logic/textprogrammer.jpg DISPLAY DRIVER: This is an example of a subroutine. If a certain memory value is read (in my case, I defined value 80 as TEXT) the memory data further read will be redirected to this display driver. It basically decodes the map data and enters it as text on that little 3 row display! I've defined numbers 0-9, a -z, A - Z and 'blank' as options and these can be freely written to any row/position. As soon as the display driver reads 127, that's my universal value for "EXIT' subroutine and read memory data is directed back on to the main midi pathway. http://www.neilparfitt.com/logic/displaydriver.jpg BCD COUNTER: This will read a clock pulse and count. http://www.neilparfitt.com/logic/bcdcounter.jpg As the stored data can represent anything that can further control anything, I did some further experiments and created code-equivelent subroutine control, if/then loops, switch control, text decoders, counters and so on. Take super small chunks of these memory systems can be easily turned into small memory registers, ROM for creating programs and so on. Honestly, I don't know the point of any of this stuff - but it was a good brain buster trying to figure out. So that's why I tried. The fact that it's running within Logic Pro is kinda neat. Quote Link to comment Share on other sites More sharing options...
stardustmedia Posted December 4, 2015 Share Posted December 4, 2015 Neil, you're crazy I haven't understood anything, but it sounds awesome what you did. Quote Link to comment Share on other sites More sharing options...
lostmemories Posted December 4, 2015 Share Posted December 4, 2015 Wow, I love it! You are genius Neil! Could you imagine if the environment was still developed and connected to audio manipulation inside Logic ;o) Quote Link to comment Share on other sites More sharing options...
Neil Parfitt Posted December 5, 2015 Author Share Posted December 5, 2015 Totally - i.e.: if it had MIDI controllable modules like Plogue Bidule or Reaktor... ah well... Quote Link to comment Share on other sites More sharing options...
Eric Cardenas Posted December 5, 2015 Share Posted December 5, 2015 Very cool stuff Neil! Thank you so much for sharing. PS. How many Netflix movies did it take? Quote Link to comment Share on other sites More sharing options...
Neil Parfitt Posted December 5, 2015 Author Share Posted December 5, 2015 Thanks! Two! But I'll never fess up to what they were. One was a 90's romcom and the other was a lame thriller. Muahah! Quote Link to comment Share on other sites More sharing options...
Neil Parfitt Posted December 5, 2015 Author Share Posted December 5, 2015 Actually - more like 6 in the end. Once I figure out the first Working memory - it was easy to convert it to the other variations. Quote Link to comment Share on other sites More sharing options...
SRF_Audio Posted January 10, 2016 Share Posted January 10, 2016 I am so impressed, and so lost. I'm doing well when I get my If/then statements correct in Scripts. Quote Link to comment Share on other sites More sharing options...
David Nahmani Posted January 11, 2016 Share Posted January 11, 2016 WoW Neil. that BCD counter is so cool. Quote Link to comment Share on other sites More sharing options...
parkcomm Posted April 3, 2016 Share Posted April 3, 2016 Honestly, I don't know the point of any of this stuff - but it was a good brain buster trying to figure out. So that's why I tried. The fact that it's running within Logic Pro is kinda neat. You got there before me! So you've built a RAM space, addressing scheme and I/O controls. I guess whip up an ALU some backing store and a programming language and bingo a CPU built inside Logic! Quote Link to comment Share on other sites More sharing options...
Mikeitup Posted April 3, 2016 Share Posted April 3, 2016 That hurt my brain.... Quote Link to comment Share on other sites More sharing options...
Darude Posted April 4, 2016 Share Posted April 4, 2016 I took my hat of for you Neil and all this flew over the hat as well... ! Quote Link to comment Share on other sites More sharing options...
SRF_Audio Posted October 23, 2017 Share Posted October 23, 2017 Sorry, I'm bumping this thread, just because I'm still so damn impressed at this. Quote Link to comment Share on other sites More sharing options...
Dewdman42 Posted October 23, 2017 Share Posted October 23, 2017 Wow impressive!! Quote Link to comment Share on other sites More sharing options...
carlcaulkett Posted August 7, 2018 Share Posted August 7, 2018 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.