Jump to content

Michael Ellis

Member
  • Posts

    72
  • Joined

  • Last visited

Recent Profile Visitors

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

Michael Ellis's Achievements

Newbie

Newbie (1/14)

2

Reputation

  1. Good news. I've written a script that does exactly what I want. Bad news. I had to use Reaper 5.1 to do it. Notice that it correctly (correctly in my opinion, anyway) handles timing (meter and tempo) changes that occur within slices. It replicates the timing changes into the moved slices and copies, ensures that partial measures at the end of items are finished in the right timing, inserts a full bar in the correct timing for the next item, and offsets the start of each item so that it starts on the correct beat. See this thread in the Reaper forum for more info and access to the source files. http://forum.cockos.com/showthread.php?p=1603260#post1603260 Reaper provides an API to almost all its internals and in 4 different computer languages (C, EEL, Lua, Python). Apple, are you listening? (of course not ...).
  2. Plowman, Eric, Arnaud, Thanks again to you all. It's great to have more than one way to do things. I can see that Licecap is going to be really useful. I get lots of requests from friends for computer help. Being able to send an animation is going to reduce the time and confusion. If anyone from Apple is reading this, please entertain a request for a scripting interface for region manipulation. I'd love to be able to write something like regions = getSelectedRegions() onebar = getBarLength() next_insert = regions[0].start ## start of first region for region in regions region.moveTo(next_insert) next_insert += region.length + onebar ## one bar silence region.copyTo(next_insert) ## dup next_insert += region.length + onebar ## one bar after end of dup and save it as a macro for re-use. Note that the above should work even if some regions have different lengths. I don't think that's doable in one fell swoop with the GUI tools.
  3. Hey Plowman, thanks! That's pretty slick and I've verified it works for audio regions, too. Took me a few tries to realize you meant Shuffle Right instead of Left but once I got past that I was able to make it work just like your gif illustration. BTW, how did you create that? It's a great way to illustrate sequences of operations in GUI's. As you noted, it's not quite so clean if some regions are different length. Fortunately, I have some latitude with the region lengths and can make most of them the same duration and manually fix the few exceptions.
  4. Suppose I have a track with dozens of short regions, e.g A B C D ... Z ... , where each letter represents a region. Most, but not all, the regions are the same length, e.g. 2 bars. I'm looking for an automated way to duplicate each region so that A B C D ... Z ... becomes A A B B C C D D ... Z Z ... Right now, the only way I know is manually doing ^F ( select all following ), dragging to the right to open a space, then selecting the previous region and Option-dragging it to make a copy. That's really tedious and error prone for long sequences of regions. Does anyone know a better way? I'm willing to write and share code if that's what it takes. Thanks, Mike
  5. My pleasure, Eric. One small usage note: When recording, press the sustain pedal AFTER the cursor enters the recording zone. Otherwise the down event won't be part of the region and the lovely legato won't happen on playback.
  6. This is my first experiment with the LX Scripter API. I like the way it turned out, so I thought I'd share it. I've never liked the way sustain pedals work, even on real pianos, so here's an alternative you might find useful from time to time. It reads the sustain pedal (CC #64) state and behaves as follows: * While the pedal is down, each note is held until the next note is played. This is done by queuing NoteOff events until the next NoteOn event. * When the pedal goes up, any remaining NoteOff events in the queue are sent immediately. This prevents stuck notes and allows you to move freely between legato and staccato execution. * The pedal event is always swallowed to keep from triggering the normal sustain behavior in your AU. You can use this script to make it easier to play melodies (and chord sequences) perfectly legato, with each note connected smoothly to its successor. You can also hold a chord down in one hand while playing a melody with the other. The chord will sound as long as you hold the notes down and the melody will sound one note at a time, still perfectly legato. To use it, just copy the code below and paste it into a Script Editor window. Be sure to delete the window's previous contents to prevent duplicate function names. If you like what it does, Save it under some convenient name ( I called mine Legato) and it will be available to all your projects. Enjoy! /* Intelligent Legato script for Logic Pro X Version 1.0 Author: Michael Ellis Copyright 2015 Ellis & Grant, Inc. License: GPL This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ var Legato=false; // True while sustain (damper) pedal is Down var Pedalnum = 64; // Standard midi number for the pedal var Threshold = 64; // interpretation of pedal down/up value var Q = [] // the queue for deferred Note Off events function HandleMIDI(event) { if (event instanceof ControlChange && event.number==Pedalnum) { /* Set the value of Legato based on the pedal state */ Legato = event.value >= Threshold; if (Legato == false) { /* Clear any NoteOff events still in the queue */ Release() } } else if (event instanceof NoteOff ) { /* If the pedal is down, save the off event until the next NoteOn or Pedal up event. */ Legato == true ? Hold(event) : event.send(); } else if (event instanceof NoteOn) { /* After sending the event, release any NoteOff events in the queue. */ event.send(); Release(); } else { /* Send anything else with no other action */ event.send(); } } function Hold(eoff) { /* Push a NoteOff event onto the queue */ Q.push(eoff); } function Release() { /* Send all accumulated NoteOff events and clear the queue */ Q.forEach( function (e) { e.send(); }); Q = []; } /* End of Script */
  7. Cool! I'm glad I didn't know about Soundplane when I got the Linnstrument, otherwise I'd have been spiraling about in tight little circles of indecision . Love the look of the all-wood surface; not so sure about the tapping noises, though, the silicone pads on the Linnstrument are nearly silent. Here's a little unedited improv I did last night with an Alto Sax sound. Please don't laugh. I've only had the Linnstrument 3 days and I've never touched a real saxophone. [soundcloud] [/soundcloud]
  8. Agreed. I think that's a whole new frontier to be explored. Over the years, sound designers have obviously had to put a lot of effort into programming envelopes and LFO's (or equivalents in other synth technologies) to compensate for having velocity as the major expressive input. As MDE controllers like Linnstrument, Continuum and Eiegenharp become widely adopted, I'm hoping more attention will be put into models based on the resonances and transient responses of instrument bodies. I've not yet played with other AU's. I got an newsletter from Roger offering a key for a free copy of Bitwig 'lite', but I haven't followed up yet. I also haven't tried to experiment with Alchemy, but that's on the to do list ...
  9. I hear you about the videos. I rationalized my purchase by noting that the instrument's been available for less than year. There's not been time for anyone, no matter how talented, to develop virtuoso technique.
  10. Oops, forgot to mention those "ultra-hi-tech" monitor stands. Heavy duty polyethylene milk crates. $7 each at Home Depot Look down further in the photo and you'll see that my 7 x 3 standing desk is made from a sheet of 3/4 plywood supported by 4 stacks of the same crates. It's very stable and puts everything at just the right height for me.
  11. How do I like it so far? I've only had it for 3 days, so this is very preliminary, but here's what I notice so far. The 3D expression capability (pressure, x, y) gets an A+. It's extremely effective on patches that can take advantage of it. It feels 'natural' in the sense that the forces and magnitudes of the finger motions are similar to what I'd do the make a vibrato on the violin or a slide on a guitar. The maker provides a Logic X template with, at present, 17 instruments that take advantage of the expressive outputs including guitars (pedal steel, slide, Strat, classical), blues harp, electric piano, upright bass, arpeggiated drums, synths ( delay, pulse, fm, digiwaves), two cellos, alto sax, and trumpets. You can view videos that demo most of these at http://rogerlinndesign.com. Other Logic instruments respond more or less as they would to a normal MIDI keyboard. The Linnstrument has 3 major MIDI modes: Single Channel, Channel Per Note, and Channel Per Row. For broadest compatibility it defaults to Single Channel but I noticed better expressiveness and function after switching to Channel Per Note -- which LX supports out of the box. The touchpads take some getting used to. What's great is they're instantly responsive yet thresholded so that false notes are not a problem. What's challenging is that a fraction of the force you'd use to play mezzo-piano on a real piano or weighted keyboard drives the velocity output to 127 even when you set velocity sensitivity to 'Low' (Medium is the default). I'm not going to grade them at this point as I feel I haven't got enough hours in yet to know how well my aging neuromuscular machinery will adapt to the difference. On the positive side, I did notice while playing in sync with some pre-recorded audio that the responsiveness of the touchpads greatly reduced my tendency to be a little behind the beat when I'm playing my weighted Technics P-30. There are 200 pads in 8 rows of 25. They're chromatic along rows (half-step per pad) and the rows can be tuned at intervals up to an octave apart. Think of each row as one string on an instrument. I started out in fifths on the theory that my violin experience would make it easier to find my way along the intervals. That was true visually but turned out to be frustrating from an ergonomic standpoint. The pads are spaced 19mm ( about 3/4 inch) on center. That makes it, for me, a (mostly) 3 finger instrument as I'm finding it hard to use the pinkie and thumb as I would on a piano keyboard. Switching back to the default tuning in fourths made scales and arpeggios much easier mechanically. For any equal row tuning, the keypad is completely isomorphic; you play chords and scales with exactly the same shapes and fingertip spacing no matter what key or octave you're in. The LED lighting scheme is configurable. It defaults to lighting the piano white keys in green with 'C' accented in blue. You can light any combination of the 12 pitches. I can already attest that this is really useful for getting chord shapes under your fingers. For example, to practice voicing fully diminished sevenths, set the LEDS to light C, Eb, Gb, A, and start exploring with your fingers. Once the shape is in your hands you can move left or right to play in other keys. In summary, it's a serious musical instrument with exciting potential for making expressive and innovative music. Being different from any other instrument I've played, it's going to require some serious work on my part to achieve a reasonable degree of fluency. It's also great fun even at this early stage in my learning. Cheers, Mike P.S. Roger has open-sourced the firmware code to allow the user community to customize and contribute to development. It's developed in C using the Arduino Due chip set and software libraries.
  12. Just got mine 2 days ago. Like it a lot so far but it's clearly going to take some time to play it proficiently. Linnstrument in studio
  13. Menu Logic Pro X : Key Commands: Presets: US: fixed it. Works now as you described. Now if I could only get it to sound the notes on each change (as dragging in the Event List does) I'd be a very happy camper
  14. Thanks, Jordi, That's potentially better than the alternatives I knew about. It works as you described for -, and Shift -, but either combination with + just gives a System beep. Must be something messed up in my key assignments. I'll let you know if/when I get it working.
  15. In Piano Roll, the Option-arrow combinations work nicely for timing and pitch correction. Editing velocity, however, requires fussy mouse work to use either the Velocity Tool or to edit in the event list. Is there no simple shortcut to increment/decrement the velocity of selected notes?
×
×
  • Create New...