While there are many methods to move MIDI and audio data between programs on a computer, ReWire (developed by Propellerheads) has become the most popular system. It allows a fairly seamless integration of client and host applications, and is also well supported by most major DAW applications.
- Open Transport Rewire Ableton Mac Download
- Open Transport Rewire Ableton Macro
- Open Transport Rewire Ableton Machinery
- Open Transport Rewire Ableton Mac Free
- From Max/MSP to Your Host (Part 1)
- Host ReWire Client Applications (Part 2)
- Subversion with ReWire (Part 3)
- Using Max with Reason (Part 4)
I'm assuming you were expecting to open Live, open FL Studio afterward and then mash the giant ReWire button that popped up a la Windows style. That's what i expected. It certainly worked on XP and Windows 7 that way. I have used it on my Mac, but hadn't tried to ReWire since installing the Mac version. For Windows users, both the ReWire Host and ReWire Device may need to be run in administrator mode to successfully ReWire. To launch a program as Administrator, please see this guide. For Mac users, Live may also request admin privileges when first trying to configure the ReWire engine, as access to the system configuration is temporarily required.
In this tutorial, we will show connections to two major software packages: Ableton Live and Digital Performer. However, if you use a different application, you should check the documentation to learn more about its ReWire implementation. In most cases, the process is the same:
- You set up Max/MSP to speak to ReWire.
- You start your host application.
- You create a channel in the host to accept Max/MSP input.
- You create (or load) a Max/MSP patch and turn on the DSP output.
- Download the Max patches used in this tutorial.
In order to allow Max/MSP to speak to your ReWire host, you have to use a special output driver named ad_rewire. This output driver provides a connection to the host for routing audio, MIDI and timing information between the client (Max/MSP) and the host (your DAW application). You select this driver in the DSP Status dialog (available from the Options menu). When selected, you are also given the option to select the number of virtual MIDI ports that will be exposed by the ReWire interface. In this case, we will leave the number of ports set to '1'.
In order to create a simple test patch for our ReWire connection, I've created the most simple audio patch possible: a cycle~ object connected to an ezdac~ object. Since I will want to control the volume in my host application, I've avoided adding any other controls to this simple patch. Once created and locked, I can click on the output object to begin audio generation.
Within Ableton Live, I need to set a channel that will receive the ReWire audio input sent from my Max patch. Selecting an audio channel, I've changed the 'Audio From' menu to select MaxMSP, and verified that I am using the first two outputs (the default output of the ezdac~ object). Now, if I change the Monitor setting from Auto to In, I can see the level meters light up, and will hear a 74 Hz tone coming through Live's audio output.
Connecting a Max/MSP patch into Digital Performer is equally simple. Since Max (and my patch) is already operating as a ReWire client, there is no need to change anything there. I start DP and change to the Mixer view of my project, then create a new Aux channel – making sure it is routed to an appropriate audio output. I then select MaxMSP 1-2 from the 'New Stereo Bundle' list to complete the setup. If I start the output of the patch, I will see that the audio is routed into the Digital Performer channel, and I can change volume, pan or add effects.
Interacting with the Host DAW
While it is nice that we can get audio from Max/MSP into our host application, anything beyond the most basic patch will need to get some information from the host – particularly timing and transport information. This is one of the powerful features of ReWire: it not only pipes audio, but also provides the necessary data to create host-aware patches. In order to access this data within Max/MSP, we need to learn about the hostsync~ object.
The help patch for hostsync~ is very informative; it shows the object retrieving the transport status, current time, current 'musical' settings (like time signature and tempo) and even the current loop settings. This is most of the information necessary to make a custom patch interact with the host in a more predictable way.
You have probably noticed that there is a metro connected to the input of the hostsync~ object. Why? Because data streaming in from a ReWire connection happens very fast, and using this data would, in most cases, require more conversion than necessary. By having all of the output as standard Max data types (integers, floats and lists) and using an input bang to 'sample' the high-speed datastream, we can reduce the amount of conversion necessary to make use of the output data.
Using the hostsync~.help patch, then running it while connected to our host, we can see the interaction between the host program and a Max patch.
Each time metro generates a bang message, hostsync~ reports the current state to the connected display objects. The next step is to use this information to create a host-aware patch.
To create this patch, I'm going to use a subset of the hostsync~ data: specifically, I'm going to use the beat output to trigger random frequency settings, and the bar output to trigger random filter changes. It's a simple patch, but you should be able to see some of the possibilities when using the hostsync~ object.
The output of the bar and beat outlets are used to drive two random objects, scaled to an easily audible note range, changed into frequencies (using the mtof function) then routed to audio objects. If you turn on the ezdac~ and metro objects, then start the transport of your ReWire host, you will hear the output of the patch match the timing of the host.
This patch could easily be improved by turning off the output when the transport is stopped (by using the transport state outlet to control the ezdac~ object), or by speeding up the output (using the fraction beat outlet). But this patch is a good example of using the host information for musical/compositional purposes.
While the output of the hostsync~ object can be useful, sometimes you need a faster or more precise output. This is the domain of an object named hostphasor~, which provides a synchronized phasor-like output tied to the host transport. Altering the above patch to use hostphasor~ (in this case, for filter cutoff animation) is fairly simple:
Since the one-cycle-per-quarter-note movement of the filter may not be to your liking, you may want to use the rate~ object to speed up or slow down the movement of the waveform, or even use the hostphasor~ output to drive a different waveform (using it as a phase driver, rather than a direct output).
In this case, we've used the hostphasor~ object to drive a triangle~ object (tweaked to our liking), at a rate 16x slower than the typical beat cycle. We've also scaled the output to 0-8000 Hz, giving us a basic filter sweep that occurs in time with the host's timing.
At this point, you are probably getting a little tired of the random note generation, and would like to control the notes from a MIDI channel in the DAW. You might also like to make the sound of the oscillator a little more interesting, so we will use frequency modulation (FM) to make the sound more complex. These two changes will make up the last patch of this tutorial.
In order to create and access incoming MIDI, we need to start at our host. Create a MIDI channel with some notes in it, and route the output to the Max/MSP ReWire MIDI output. In Ableton Live, this means selecting the 'MaxMSP' MIDI output (not the 'to MaxMSP' outputs!). You will see that the port changes to 'ReWire 1', indicating that the first (and only) ReWire MIDI channel will be used for output.
Within our patch, we need to disconnect the random system from controlling the saw~ object, and use the output of the notein object instead. In order to choose the MIDI port, we use the common 'midiinfo-to-menu' selection objects that you will see in most MIDI-based patches. We follow it up with a stripnote object (to remove the note-off messages), and route the note number through an mtof object to control the sawtooth waveform frequency.
To make the patch more interesting (and to use that forlorn hostsync~ object), we will extend the patch to use the 'fractional position' output of hostsync~ to drive a second oscillator, and have it frequency modulate the main oscillator. The output of hostsync~ is scaled (to +/- 4.0), then combined with the note value to create a fractional note value that is constantly changing. This value drives a cycle~ object, which in turn is scaled and used to drive the sawtooth oscillator. Initially, there won't be any difference in the sound, but if you increase the 'FM Depth' number box (especially past a value of .25), you will hear the sound become more uncontrolled and harsh. Large setting will drastically change the timbre and perceived pitch of the base notes.
Finally, in order to make it even less irritating, we can set up the velocity part of the note message to trigger a line~ object, which in turn closes down the output when no MIDI messages are being received. This prevents the patch from squawking when the ReWire transport is turned off.
What we did, what you can do...
Open Transport Rewire Ableton Mac Download
In this article, we've created a ReWire connection to a host, and used the hostsync~, hostphasor~ and ReWire MIDI connection to create a Max/MSP patch that is controlled by the host. There are many ways you could extend this patch: you could add a synchronized sequencer for the note or filter settings, use the hostphasor~ for adding LFO-like modulations or add time-sync effects. One of the great side effects of the ReWire interface is the ease of creating patches that are responsive to the host environment.
In our next ReWire tutorial, we will look at having Max/MSP be the ReWire host, and using the rewire~ object to create a connection to several commercial ReWire clients. But until then, patch up a storm!
this tutorial was written in 2006, and it really solved my problem today in 2012.thanks
J
...and still in 2018....vital resource for beginners. Thanks Darwin! :thumbsup
I cannot get a MaxMSP 1-2, or any MaxMSP to show up in New Stereo Bundle in DP!There is a Propellerhead Software folder with a Rewire folder in it under my Mac hard drive icon/Application Support/Propellerhead Software.Is this is the wrong place?Can't figure out what I'm doing wrong.
I had a bunch of legacy Acid projects from my pre-Studio One days, as well as some Ableton Live projects that were part of my live performances. With live performance a non-starter for the past year, I wanted to turn them into songs, and mix them in Studio One’s environment.
Gregor’s clever video, Ableton Live and Studio One Side-by-Side, shows how to drag-and-drop files between Live and Studio One. But I didn’t want individual files, I needed entire tracks…including ones I could improvise in real time with Live. The obvious answer is ReWire, since both Acid and Live can ReWire into Studio One. However, you can’t record what comes into the Instrument tracks used by ReWire. Nor can you bounce the ReWired audio, because there’s nothing physically in Studio One to bounce.
It turned out the answer is temporarily messy—but totally simple. First, let’s refresh our memory about ReWire.
Setting Up ReWire
Start by telling Studio One to recognize ReWire devices. Under Options > Advanced > Services, make sure ReWire Support is enabled. In Studio One’s browser, under the Instruments tab, open the ReWire folder. Drag in the program you want to ReWire, the same way you’d drag in an instrument. (Incidentally, although you’re limited to dragging in one instance of the same ReWire client, you can ReWire two or more different clients into Studio One. Suitable clients includes Live, Acid Pro, FL Studio, Renoise, Reason before version 11, and others.)
After dragging in Ableton Live, open it. ReWired clients are supposed to open automatically, but that’s not always the case.
Now we need to patch Live and Studio One together. In Ableton Live, for the Audio To fields, choose ReWire Out, and a separate output bus for each track. In my project, there were 9 stereo tracks (Fig. 1).
Figure 1: Assign Ableton Live’s ReWire outputs to buses. These connect to Studio One as track inputs.
Then, expand the Instrument panel in Studio One, and check all the buses that were assigned in Ableton Live. This automatically opens up mixer channels to play back the audio (Fig. 2). However, the mixer channels can’t record anything, so we need to go further.
Figure 2: Ableton Live loaded into Studio One, which treats Ableton Live like a virtual instrument with multiple outputs.
Open Transport Rewire Ableton Macro
Recording the ReWired Program
As mentioned, the following is temporarily messy. But once you’re recorded your tracks, you can tidy everything up, and your Live project will be a Studio One project. (Note that I renamed the tracks in Studio One as 1-9, so I didn’t have to refer to the stereo bus numbers in the following steps.) To do recording:
- In each Studio One track, go to its Send section and choose Add Bus Channel. Now we have Buses 1-9—one for each track.
- Our original instrument tracks have served their purpose, so we can hide them to avoid screen clutter. Now Studio One shows 9 buses (Fig. 3).
Figure 3: The buses are carrying the audio from Ableton Live’s outputs.
- Create 9 more tracks in Studio One (for my project, these were stereo). Assign each track input to an associated bus, so that each of the 9 buses terminates in a unique track. Now we can hide the bus tracks, and record-enable the new tracks to record the audio (fig. 4).
Figure 4: Studio One is set up to record the audio from Ableton Live.
- Now you’re ready to record whatever is in Ableton Live over to Studio One, in real time.
- Fig. 5 shows the results of unhiding everything, narrowing the channels, and hitting play. At this point, if everything transferred over correctly, you can delete the ReWired tracks, remove the buses they fed, close Ableton Live, and you’re left with all the Live audio in Studio One tracks. Mission accomplished!
Figure 5: The Ableton Live audio has completed its move into Studio One. Now you can delete the instrument and bus channels you don’t need any more, close Ableton Live, return the U-Haul, and start doing your favorite Studio One stuff to supplement what you did in Live. Harmonic Editing, anyone?
Open Transport Rewire Ableton Machinery
Bonus tip: This is also the way to play Ableton Live instruments in real time, especially through Live’s various tempo-synched effects, while recording them in Studio One. And don’t forget about Gregor’s trick of moving Studio One files over to Live—this opens up using Live’s effects on Studio One tracks, which you can then record back into Studio One, along with other tracks, using the above technique.
Open Transport Rewire Ableton Mac Free
Granted, I use Studio One for most of my multitrack projects. But there’s a lot to be gained by becoming fluent in multiple programs.