wiki:hosting_atom_2_in_ns2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:hosting_atom_2_in_ns2 [2021/05/03 02:23] MisplacedDevelopmentwiki:hosting_atom_2_in_ns2 [2021/05/14 22:55] (current) MisplacedDevelopment
Line 1: Line 1:
-=====Atom 2 and NS2=====+Atom 2 and NS2
  
-====Why use Atom 2 and NS2?====+=====Why use Atom 2 and NS2?=====
  
 NS2 already provides one of the best interfaces for arranging a song.  Using a high level zoomable view of your song you can easily manipulate clips of MIDI on a timeline.  Adding Atom 2 to NS2 means you can harness this superior song arrangement capability and combine it with the superb clip launching and MIDI editing capability of Atom 2. NS2 already provides one of the best interfaces for arranging a song.  Using a high level zoomable view of your song you can easily manipulate clips of MIDI on a timeline.  Adding Atom 2 to NS2 means you can harness this superior song arrangement capability and combine it with the superb clip launching and MIDI editing capability of Atom 2.
Line 7: Line 7:
 * Reuse of musical phrases in your timeline. Your musical phrases are stored as patterns and your song is built by starting these patterns.  If you don’t like a phrase which is repeated 20 times in your song you change it in one place and it automatically changes everywhere else. I only want to store one copy of my chorus and I also only want to store one copy of the music that makes up my chorus and Atom makes that possible, even inside a DAW. All my DAW does now is arrange when things start and end, the music is decoupled from the timeline. * Reuse of musical phrases in your timeline. Your musical phrases are stored as patterns and your song is built by starting these patterns.  If you don’t like a phrase which is repeated 20 times in your song you change it in one place and it automatically changes everywhere else. I only want to store one copy of my chorus and I also only want to store one copy of the music that makes up my chorus and Atom makes that possible, even inside a DAW. All my DAW does now is arrange when things start and end, the music is decoupled from the timeline.
  
-* Ability to quickly try different phrases together. When you write phrase you are throwing together notes that you like the sound of. When you arrange a song then you are throwing together phrases that sound good in a particular order. Clip launching lets you experiment with this in a much more free way than shifting bits of MIDI around a timeline.+* Ability to quickly try different patterns together. When you create pattern you are throwing together notes that you like the sound of. When you arrange a song then you are throwing together patterns that sound good in a particular order. Clip launching lets you experiment with this in a much more free way than shifting chunks of MIDI around a timeline.
  
 The utility provided by NS2 clips means you can store whole named sections of clip launch instructions together logically and move them around the timeline. You also benefit from the ability to alias clips so you can have one clip that can be repeated throughout your song yet you only need to change one of the clips to change them all. This way you really are repeating the minimal amount of data to arrange your song. The utility provided by NS2 clips means you can store whole named sections of clip launch instructions together logically and move them around the timeline. You also benefit from the ability to alias clips so you can have one clip that can be repeated throughout your song yet you only need to change one of the clips to change them all. This way you really are repeating the minimal amount of data to arrange your song.
  
-==== Adding Atom 2 ====+===== Adding Atom 2 =====
  
 You should add Atom 2 as an External MIDI FX plugin: You should add Atom 2 as an External MIDI FX plugin:
Line 17: Line 17:
 {{ :wiki:atom2ns2:screenshot_2021-05-02_at_10.44.19.png?200 |}} {{ :wiki:atom2ns2:screenshot_2021-05-02_at_10.44.19.png?200 |}}
  
-If you intend on recording MIDI rather than manually adding notes in Atom then I recommend that you create a second instance of Atom 2 for each track.  This will be explained in more detail later on but you will use the second instance for recording and the first for triggering:+If you intend on recording MIDI rather than manually adding notes in Atom then I recommend that you create a second instance of Atom 2 for each track. This will be explained in more detail later on but you will use the second instance for recording and the first for triggering:
  
 {{ :wiki:atom2ns2:screenshot_2021-05-02_at_10.49.32.png?200 |}} {{ :wiki:atom2ns2:screenshot_2021-05-02_at_10.49.32.png?200 |}}
  
-==== Initial setup ====+**Edit/Note** I no longer use a second Atom instance in my workflow (see Advanced Topics section) but I have left this in case others prefer the way of working. 
 + 
 +===== Initial setup =====
  
 You can trigger Atom 2 patterns in a number of ways.  NS2 limits the usable trigger methods to velocity and note since program change and continuous controller MIDI are blocked by NS2.  For the purposes of this tutorial we will use note triggering as it is not easy to accurately set velocity in NS2. You can trigger Atom 2 patterns in a number of ways.  NS2 limits the usable trigger methods to velocity and note since program change and continuous controller MIDI are blocked by NS2.  For the purposes of this tutorial we will use note triggering as it is not easy to accurately set velocity in NS2.
  
-Open the first Atom 2 instance and set it up so that it looks like this:+Open the first Atom 2 instance and set it up so that it looks like this (click to zoom):
  
 {{ :wiki:atom2ns2:screenshot_2021-05-02_at_11.12.17.png?600 |}} {{ :wiki:atom2ns2:screenshot_2021-05-02_at_11.12.17.png?600 |}}
Line 36: Line 38:
  
 If you typically use fewer patterns per track then use your own defaults but be aware that if you run out of pattern slots then you will need to edit all existing trigger MIDI notes on that track to move the controller note to its new home.  This tutorial assumes you have used the suggested defaults. If you typically use fewer patterns per track then use your own defaults but be aware that if you run out of pattern slots then you will need to edit all existing trigger MIDI notes on that track to move the controller note to its new home.  This tutorial assumes you have used the suggested defaults.
 +
 +**Important** If the first Atom 2 plugin (the “controller” plugin) is active then you will not hear any sound when you play the in-built keyboard or if you send MIDI in to the track.  The plugin does not pass notes through because you do not want to hear the incoming controller MIDI interleaved with your song notes.  You must bypass the controller plugin to preview notes from the selected instrument.
  
 ==== Save initial setup ==== ==== Save initial setup ====
  
-Before creating any music it would be a good idea at this point to save the MIDI FX chain.  This is a feature of NS2 which saves the state of all of the defined plugins.  Here is the menu option:+Before creating any music, and to speed things up when creating new tracks, it would be a good idea at this point to save the MIDI FX chain.  This is a feature of NS2 which saves the state of all of the defined plugins.  Here is the menu option:
  
 {{ :wiki:atom2ns2:screenshot_2021-05-02_at_11.38.14.png?400 |}} {{ :wiki:atom2ns2:screenshot_2021-05-02_at_11.38.14.png?400 |}}
  
-You can now load this initial setup to a new track.  **Note** The loaded plugins will inherit all settings, including the track number.  I do not know what the side-effects are if there are two plugins with the same identifier so it is probably best to modify the track number after loading so that it is unique across the set of Atom plugins in other NS2 tracks.+**Note** The loaded plugins will inherit all settings, including the track number.  I do not know what the side-effects are if there are two plugins with the same identifier so it is probably best to modify the track number after loading so that it is unique across the set of Atom plugins in other NS2 tracks.
  
-==== Testing the configuration ====+===== Testing the configuration =====
  
-=== Creating the control notes ===+==== Creating the control notes ====
  
 Draw a new MIDI block for the track hosting your Atom 2 plugin: Draw a new MIDI block for the track hosting your Atom 2 plugin:
Line 66: Line 70:
  
 The second pattern switch note added is C#2 (49).  This will cause “Pattern 2” to be switched to for the second instance of the trigger note C4 (72).  Having the second trigger note C4 (72) forces the playhead to return to the start after switching to “Pattern 2”. The second pattern switch note added is C#2 (49).  This will cause “Pattern 2” to be switched to for the second instance of the trigger note C4 (72).  Having the second trigger note C4 (72) forces the playhead to return to the start after switching to “Pattern 2”.
 +
 +**Important** If a pattern change is not happening as expected then try removing the pattern change note and re-add it, or move it forward one step and then back to its original point in the timeline.  For whatever reason, if you either move or delete/add the *clip* control note then you need to re-add the pattern change note.  There is probably some order which NS2 presents the notes to Atom which gets messed up by moving/re-adding the control note.
  
 **Note** The pattern switch notes mark state changes and so the length of those notes is not significant. **Note** The pattern switch notes mark state changes and so the length of those notes is not significant.
  
-=== Creating the patterns ===+==== Creating the patterns ====
  
 We want to create two patterns, each of which are a half bar in length.  Open the first Atom 2 instance associated with the track in NS2.  Select the manual draw tool and add a couple of notes that fit within the first half bar of the default pattern: We want to create two patterns, each of which are a half bar in length.  Open the first Atom 2 instance associated with the track in NS2.  Select the manual draw tool and add a couple of notes that fit within the first half bar of the default pattern:
Line 85: Line 91:
 {{ :wiki:atom2ns2:screenshot_2021-05-02_at_12.24.40.png?600 |}} {{ :wiki:atom2ns2:screenshot_2021-05-02_at_12.24.40.png?600 |}}
  
-===Playing the music===+==== Playing the music ====
  
 We have now defined two patterns and some controller notes to trigger those patterns.  Make sure that the NS2 playhead is reset and hit play.  You should hear the first pattern play for half a bar, followed by the first half a bar of pattern two. We have now defined two patterns and some controller notes to trigger those patterns.  Make sure that the NS2 playhead is reset and hit play.  You should hear the first pattern play for half a bar, followed by the first half a bar of pattern two.
Line 91: Line 97:
 Try opening the Atom 2 plugin and watch the patterns change as each trigger is hit. Try opening the Atom 2 plugin and watch the patterns change as each trigger is hit.
  
-===Repeating the music===+==== Repeating the music ====
  
 Let’s extend the usefulness of this clip by giving it a name and repeating it a few times.  First we will name the clip using the “PROPERTIES” option at the bottom of the screen: Let’s extend the usefulness of this clip by giving it a name and repeating it a few times.  First we will name the clip using the “PROPERTIES” option at the bottom of the screen:
Line 107: Line 113:
 We now have a four bar intro made up from clips, each containing two half bar patterns.  If you reset the NS2 playhead and hit play then you will hear clip repeated four times. We now have a four bar intro made up from clips, each containing two half bar patterns.  If you reset the NS2 playhead and hit play then you will hear clip repeated four times.
  
-===Changing the music===+==== Changing the music ====
  
 We decide that we do not like the order of the patterns within the bar.  If all of our song data was stored on the timeline then we would need to move multiple notes around and hope that we do not make mistakes.  If we were using a DAW which did not have linked clips then we would need to ensure every copy of the clip in our song contained the new note ordering. We decide that we do not like the order of the patterns within the bar.  If all of our song data was stored on the timeline then we would need to move multiple notes around and hope that we do not make mistakes.  If we were using a DAW which did not have linked clips then we would need to ensure every copy of the clip in our song contained the new note ordering.
Line 119: Line 125:
 If you play the song now then you will hear that the order of the patterns has changed each time the linked clip is played. If you play the song now then you will hear that the order of the patterns has changed each time the linked clip is played.
  
-====Adding a second track====+===== Adding a second track =====
  
 The work we did with the first track to save the Atom configuration in a MIDI FX chain preset means that it is quick to set up a new track.  In this part of the tutorial we will add a Slate track with a basic beat. The work we did with the first track to save the Atom configuration in a MIDI FX chain preset means that it is quick to set up a new track.  In this part of the tutorial we will add a Slate track with a basic beat.
Line 159: Line 165:
 Now if you play the song through then you will hear your beat appear in the second and fourth bars. Now if you play the song through then you will hear your beat appear in the second and fourth bars.
  
-====Creating patterns over a loop====+===== Creating patterns over a loop =====
  
 You are likely to want to create patterns with other tracks looping underneath the one you are working on.  You should first understand that there is a bug in NS2 where it does not cope with a perfect loop if your control note is the first thing in the loop, as it would typically be.  Try looping bar two for example by double clicking on the timeline to enable looping and then dragging the start and end of the loop so that it is exactly one bar: You are likely to want to create patterns with other tracks looping underneath the one you are working on.  You should first understand that there is a bug in NS2 where it does not cope with a perfect loop if your control note is the first thing in the loop, as it would typically be.  Try looping bar two for example by double clicking on the timeline to enable looping and then dragging the start and end of the loop so that it is exactly one bar:
Line 179: Line 185:
 **Important** Hold off creating the controller data for the new track because we want to get the notes down in Atom 2 first and do not want the controller data bleeding into our recording. **Important** Hold off creating the controller data for the new track because we want to get the notes down in Atom 2 first and do not want the controller data bleeding into our recording.
  
-Rather than opening the controller Atom 2 plugin, open the second instance of the Atom plugin that we will use only for recording. The controller plugin is set to not pass through notes so in order to record anything to the recording plugin then we will need to disable the controller plugin otherwise it will eat the incoming notes.+Rather than opening the controller Atom 2 plugin, open the second instance of the Atom plugin that we will use only for recording. The controller plugin is set to not pass through notes so in order to record anything to the recording plugin then we will need to disable the controller plugin otherwise it will eat the incoming notes
 + 
 +{{ :wiki:atom2ns2:screenshot_2021-05-02_at_18.15.36.png?600 |}}
  
 Start the NS2 transport and open your recording plugin.  You will see the playhead moving relative to the main timeline and will start just before a bar boundary (our loop starts just before a bar boundary, remember).  The next part is **important** as it will mean the difference between a successful loop and a loop that goes off in seemingly random directions. Start the NS2 transport and open your recording plugin.  You will see the playhead moving relative to the main timeline and will start just before a bar boundary (our loop starts just before a bar boundary, remember).  The next part is **important** as it will mean the difference between a successful loop and a loop that goes off in seemingly random directions.
Line 204: Line 212:
 **TIP:** If you are recording a piece with notes that fall near the end of the bar(s) being recorded then it is a good idea to extend the NS2 loop to some point just after the section being recorded.  Doing this will allow you to record any tails or notes that fall just outside the bar.  You may then decide that the one bar recording should actually be a 1.5 or two bar recording, or perhaps simply tidy up any overhanging notes. **TIP:** If you are recording a piece with notes that fall near the end of the bar(s) being recorded then it is a good idea to extend the NS2 loop to some point just after the section being recorded.  Doing this will allow you to record any tails or notes that fall just outside the bar.  You may then decide that the one bar recording should actually be a 1.5 or two bar recording, or perhaps simply tidy up any overhanging notes.
  
-====Transferring recorded patterns====+==== Transferring recorded patterns ====
  
 When you are happy with your new bar of notes then we need to move them to the controller plugin. When you are happy with your new bar of notes then we need to move them to the controller plugin.
Line 239: Line 247:
 {{ :wiki:atom2ns2:screenshot_2021-05-02_at_17.14.49.png?600 |}} {{ :wiki:atom2ns2:screenshot_2021-05-02_at_17.14.49.png?600 |}}
  
-====Mixdown====+===== Mixdown =====
 One of the great things about using Atom 2 in the way described in this tutorial is that mixdown works in the same way as it would do as if the notes had been recorded directly into the NS2 MIDI timeline. One of the great things about using Atom 2 in the way described in this tutorial is that mixdown works in the same way as it would do as if the notes had been recorded directly into the NS2 MIDI timeline.
  
 +===== Advanced Topics =====
 +==== Recording MIDI ====
 +To record MIDI from Atom you will need the excellent MIDI Tools app https://apps.apple.com/gb/app/midi-tools/id1446209019
 +
 +Decide where you want the recorded notes to be sent to.  This might be a new track which sends to the instrument track, or might be the instrument track itself.  When you have decided where the notes are to be recorded then ensure that the track is listening on a specific “NanoStudio 2” channel which is only used by that track.  Set the track to receive MIDI “ALWAYS”, for example:
 +
 +{{:wiki:atom2ns2:screenshot_2021-05-14_at_13.39.12.png?400|}}
 +
 +Add the MIDI Route plugin **after** the Atom instance that you want to record:
 +
 +{{:wiki:atom2ns2:screenshot_2021-05-14_at_13.38.29.png?400|}}
 +
 +I think by default the plugin will point to NanoStudio 2 so all you need to do is ensure that the MIDI channel that is being sent to matches the MIDI channel of the track you set up above.
 +
 +Hit record in NS2 and the output of Atom will be routed by MIDI Route to the NS2 channel and recorded into the track listening on this channel.
 +
 +If you are using an iPhone then MIDI Route is not available but you may be able to use this workaround:
 +
 +https://www.blipinteractive.co.uk/community/index.php?p=/discussion/989/how-to-record-aufx-midi-out-on-iphone
 +
 +==== Alternative (better?) workflow ====
 +Since writing the initial version of this guide I have changed my workflow so that every instrument has a control track which contains a single Atom instance - no secondary Atom instance is used for recording.  This control track does a MIDI send to the instrument track.  The control track is set up as a dummy Slate instrument - see below on how to set this up.  This lets you have a nicely numbered piano roll where the numbers match the patterns in Atom.  The instrument track is set to listen on its own MIDI port and so you can hear both the notes as played by Atom as well as an external controller.
 +
 +To record I set up a blank pattern in the control track Atom instance and loop the part of the song I want to record over.  I then open AUM and record into Helium or Atom attached to the NS2 port for the instrument I want to record for, which lets me hear exactly how the recording will sound and has the advantage of being able to hear the lead in bars for that instrument.  If you have LINK enabled in AUM/NS2 then you can set up a loop to record over in Atom/Helium and it should be in sync with NS2.  A current advantage of using Helium is that you can use the multi-take feature to try a few different ideas out.
 +
 +**Tip:** To quickly get a recording from Helium to NS2/Atom - save to the Media Bay, long press on the new MIDI clip and with your finger held down, use the other hand to navigate to the Atom instance in NS2 containing the empty pattern you set up earlier.  If you now release your finger you should see that the clip is pasted directly into the empty pattern, meaning you can avoid the need to export/import via the file system.  If the number of bars was set up correctly in Helium then the clip you imported should fit exactly into your song with no further editing required.
 +
 +==== Using Slate to trigger patterns ====
 +As you saw earlier, Slate kits allow you to name pads and these names appear in the piano roll.  Using this information we can create a simple Slate kit that does not actually contain any sound but can be used to more easily add patterns to controller clips.
 +
 +Create a Slate track and then create an Init kit in the Slate editor:
 +
 +{{ :wiki:atom2ns2:screenshot_2021-05-02_at_17.40.53.png?600 |}}
 +
 +Save the empty kit using a different name:
 +
 +{{ :wiki:atom2ns2:screenshot_2021-05-02_at_17.40.16.png?600 |}}
 +
 +Now you can assign useful names to the notes, or just label the controller as the others will automatically be numbered.  Pad 25 should be labelled as the controller note as this is by default C4 (72).  If you used the suggested default “Root Offset” setting then you will find that this starts at pad 1 which defaults to C2 (48):
 +
 +{{ :wiki:atom2ns2:screenshot_2021-05-02_at_17.43.30.png?600 |}}
 +
 +If you look at an NS2 MIDI clip under this track then you will see that the notes are labelled as a handy guide for adding the control notes and pattern switches:
 +
 +{{ :wiki:atom2ns2:screenshot_2021-05-02_at_17.44.54.png?600 |}}
 +
 +At the moment the control data is sitting on the Slate track and we need to use this to trigger Atom.  At this point you have two options - either store your Atom controller plugin with the Slate track and send all generated MIDI to an instrument track, OR host the Atom plugin on the instrument track and send only the controller data from the Slate track.  You route MIDI data in the usual way, either by grouping tracks or using MIDI Send from the Slate track:
 +
 +{{ :wiki:atom2ns2:screenshot_2021-05-02_at_18.21.31.png?600 |}}
  
  • wiki/hosting_atom_2_in_ns2.1619972632.txt.gz
  • Last modified: 2021/05/03 02:23
  • by MisplacedDevelopment