Jump to content

Neil Parfitt

Member
  • Posts

    133
  • Joined

  • Last visited

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Neil Parfitt's Achievements

Newbie

Newbie (1/14)

0

Reputation

  1. Hi all, Can anyone confirm if they're running more than 64 output channels from Logic? I'm running an RME MADI PCe (64in/out) for 32 stereo pairs to Protools HD but we want to widen that to 64 stereo pair with a MADI FX or XT. Cheers, Neil
  2. 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.
  3. 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!
  4. Totally - i.e.: if it had MIDI controllable modules like Plogue Bidule or Reaktor... ah well...
  5. 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.
  6. Hi All! This is probably a total nerdorama post - but felt it was worth sharing. This is the most complex environment I've designed to date and solved a huge number of hurdles to make it work. Basically it's a realtime MIDI guitar re-tuner with some added goodies: -128 slot preset memory -learn notes via MIDI controller keyswitch -learn notes via sequential note entry -preview the built chord as you go -advance the preset position via sustain pedal tap for to record in a part from start to finish -offline crunching of the preset data for inserting a preset or deleting a preset and sliding over the data accordingly THE CHALLENGES: 1) fully interactive GUI that *behaves* like a real computer interface. -Flip flop button behaviour. 2 buttons in a group, only one can be active at a given time. Clicking the other button disables the other button. If you repeatably click the same button, the modes still flip. -Nested Flip Flop button behaviour. Same as above, but the inner 'child' buttons only work if the master 'Parent' switch is enabled. This also updates status displays accordingly. "Tri-state'. -auto-updating status displays / select buttons etc. -Buttons as *fully disabled* when not involved in a current mode. This means the on/off doesn't work, and no midi from that button goes anywhere. 2) Preset Memory -128 memory positions for each strings. Read/write using maps. -up / down ping system to increase/decrease current position with a single button press (no on/off button required). 3) Learn modes for above: -Ability to learn notes via selecting strings via a keyswitch and writing to the memory system accordingly -Ability to learn notes by press 6 notes on a MIDI keyboard and writing to the memory system sequentially -Ability to preview the chord being built as you enter each note 4) Re-tuning -taking incoming MIDI guitar data, re-mapping to notes read from Map Memory -tracking additional frets pressed on the controller and applying this to the read note memory. IE: If the E string is tuned to a C, and you press the first fret, it'll tune that note to a C#. 5) Offline processing -Insert and Delete presets. Sounds simple right? However, as the environment is a real-time system... I had to design a pseudo computer to execute an exact number processing operations to crunch the preset data like code. This involved many of the bits from #2. The processor involves a controlled feedback delay line that creates a steady pulse. That pulse drives a 128 step counter circuit that continuously rolls over (Variable X). Upon roll over, it increases a nested counter (variable Y). With this in mind, there's 128 steps of processing per operation. So, to insert and delete data, each processor stage is fed from a switcher controlled by Y. Step 1: Disconnect memory system from real-time processor and disable MIDI out of Macro. Step 2: Copy all preset data to temporary 'clipboard' memory maps Step 3: Read from Presets and Slide data from current preset position +/- depending on insert/delete. Step 4: Zero out preset position+1 if insert (creates the blank gap). Step 5: Copy Data from Clipboard and overwrite Preset memory Step 6: Reconnect memory system from processor and re-enable MIDI out of Macro In BASIC it would sort of look like below - but remember, there's no code in the environment to pull off these array number crunch operations. There is a way to go the whole thing in an single 128 step process, but it was proving un-reliable as MIDI would sometimes get lost on a cable switchover. ON INSERT BUTTON PRESS: FOR Y = 0 to 3 'Y is reprsented by the Process Position switch. IF Y = 0 THEN 'COPY MAP PRESET DATA TO CLIPBOARDMEMORY (dark green wires) FOR X = 0 to 127 CLIPBOARDMEMORYP (X) = PRESETMEMORY (X) NEXT X ELSE IF Y = 1 THEN 'SLIDE DATA UP ONE ARRAY POSITION AFTER CURRENT PRESET POSITION (orange wires) FOR X = (CURRENTPRESETNUMBER + 1) to 127 CLIPBOARDMEMORY(X) = PRESETMEMORY (X-1) NEXT 'INITIALIZE 'the gap' PRESETMEMORY(CURRENTPRESETNUMBER + 1) = 0 ELSE IF Y = 2 THEN ' COPY CLIPBOARD DATA BACK TO PRESET MEMORY (blue wires) FOR X = 0 to 127 PRESETMEMORY (X) = CLIPBOARDMEMORY (X) NEXT X ELSE IF Y = 3 THEN 'ALL DONE STOP PLAYBACK: END PROCESS END IF NEXT Y TURN OFF INSERT BUTTON: RESET INTERNAL SWITCHES: RETURN ALL POINTERS TO 0 (red wires) The catch? For this insert/delete process, Logic must be in playback. It's not too bad though, as the entire process takes a split second and a 'stop playback meta' is triggered when it's complete. I WISH there was a start playback meta This is the full guts of the entire macro: The guts of the full macro I have since added the delete functionality. Anyway - there you have it! Here's a video from mid-January of it in action before I added the offline processing: (the vid cuts off at the end - but it took about 14 hours to figure out the main system, and another 8 for the offline number cruncher. http://www.neilparfitt.com/neilsguitarthingy.mp4 And here is a video showing the offline processor working: http://www.neilparfitt.com/neilsguitarprocessorjan28insert.mp4 I really hope this spawns some ideas with controlled calculations - the sky's the limit! I'm tempted to try and code pong using 2 vertical faders for the paddles, and the X/Y vector pad as the 'ball'!! Anyone?
  7. It's an absolute piece of s#!+ gongshow disaster. Imported stuff or opened session don't work properly that were fine from L5 to L9. Visually - awful - fonts - bugs - colours not working - misaligned everything... bad contrast. Whoever signed off on this BS should be fired from the Logic division. I've invested so many hours into workflow enhancements, only for this to be an absolute LX deal breaker. I'm in absolute disbelief. I can't even quickly trace problems that it's caused as it no longer highlights *all* attached cables to the selected module.
  8. What is up with LX environment?? The fonts are massive, colours are messed up, cables don't auto highlight where they're wired and you select an object, BG is dark, cables seem thicker UGH. It looks like absolute hell. Some of my more complicated environments from 9 don't work property that are flawless in 9. It's a gong show. Anyone else running into this kind of thing? Back to 9 I go.. again...
  9. edubz is right on the money. Apple has been changing things, and little of it has to do with innovation. Especially when they put time and resources into modifying stuff and still dont fix long standing bugs that have plagued logic for many versions... Changing default views, dumbing it down, changing key terminology and key commands that have been CONSISTENT for 20 years messes up everyone that uses this app to make a living. Because after muscle memory kicks in, it's burned in your brain forever. and ALL this stuff hinders productivity. If L9 is installed, LX installer should be smart enough to leave everything on that was on and keep matching key commands the same. This kind of stuff drives me mental. It was like when Nikon reversed zoom button controls after 10 years of DSLRs that all followed that format. STUPID. Or if Protools changed the command = to something else for no reason. LX is the first version where I'm debating jumping to a different DAW.
  10. This is just a crude in/out version to see if it works as expected (which it does). It's part of a larger grand mad-scientist scheme. Now I can implement my idea properly 8) This is a pic of me playing random notes on the caps lock keyboard. As you can see, it's dropped each note value sequentially into the map "memory" as I played them.
  11. Heya! I'm trying to figure out a way to do this - but have hit a wall... Basically I want to create the equivalent of "x = x +1" . The goal is to select map positions within a transformer sequentially everytime the meta fader controlling it receives a pulse or click etc. The goal being, every time i play note, the note number would be dumped into the map, the note off could then be transformed to advance the map to the next position and then the process repeats itself. Any ideas?
  12. Apple as usual, at its best.
×
×
  • Create New...