Home -> Magazines -> Issues -> Articles in this issue -> View
Software Support | |
Hints, Tips & News From The World Of Music SoftwareArticle from Sound On Sound, December 1992 |
Sometimes it is not possible to exchange songs between sequencers by using the MIDI file option. For example, if your sequencer cannot transfer the data in a form that Cubase can read (such as a MS-DOS formatted disk), then the simplest method is to transfer the data in real time. It may at first seem that the thing to do is to connect the MIDI Out of one sequencer to the MIDI In of the receiver. This does work, but it is not necessarily the best way of doing things. This method works if you send both the note data and MIDI clock and MTC, but because the MIDI clock and MTC both have a higher priority in the MIDI system (or should have) they tend to push your notes out of the way.
A better approach is to connect the pair of sequencers in an out-in/out-in loop — ie. the Out from each sequencer is connected to the In of the other — and use Cubase as the master clock for the other sequencer. MIDI clock or MTC goes down one MIDI cable to drive the second sequencer, while the performance data of the song comes down the other cable into Cubase. You must put the other sequencer into external sync mode — ask it not to send any sync data itself, and remember to turn MIDI thru off on one or both sequencers. Press record on Cubase — after its count in it will go into record, and send sync to the other sequencer. The other sequencer then locks up to the incoming clocks, plays the song, and the performance data comes back to Cubase and is recorded.
All that remains is to sort the events on to different tracks according to their MIDI channels, which is easily done with the Remix Track option from the Structure menu. One last point: it may seem a good idea to crank up the tempo and get the job done fast. Unfortunately there is a drawback. The MIDI spec defines to within 1% the speed of transmission of MIDI data. The faster you send the data, the more the chance of your notes being moved around, by the (usually relatively insignificant) time quantisation effects of MIDI. Once you have tested that a few bars are being transmitted correctly, go back, set Cubase's tempo down to 30.000 bpm, put the kettle on and have a well earned rest. It takes a little longer to do, but works rather better.
It is not possible to load a Sound Bank into Satellite unless it has specifically been saved in a certain format by one of the Steinberg Synthworks programs. You cannot simply use the Dump Utility to download the sound parameters from a synth to a file and then load it into Satellite as a bank. The reason is simple: each synth manufacturer has their own format, and so does Satellite, so if we think of these formats as different languages then the only way to translate them for Satellite is by using the various Steinberg Synthworks.
This month we're going to take a look at how to deal with control sequences and some of the various event types that can be used with them. Many users don't take full advantage of the possibilities of control sequences, but many powerful things can be done with comparatively little effort. In short, control sequences are used to control how other sequences play back; a simple case is where sections of the piece which are on separate sequences are chained together to form a larger piece. This can, of course, be done just as effectively within Song Mode (Amiga users or Atari users prior to Version 4.0) or SongEdit (Atari users of Version 4.0 and above) but control sequences provide some interesting possibilities which cannot be readily achieved with either of those operation modes. In addition, some very complex music structures can be built up using nested control sequences. This allows users to develop a highly individual approach to music which would be difficult or impossible on other systems.
Let's look at a simple control structure first: here are two very different control sequences that do exactly the same thing:
Seq 1, Song 1a | ||||||||
MSR-BT: | ST | EVNT | TIME | CH | TYP | NOTE | VEL | DUR |
1-1: | 1 | 1 | 0 | ST | 2 | 0 | 1 | |
5-1: | 1 | 2 | 1536 | ST | 3 | 0 | 1 | |
9-1: | 1 | 3 | 1536 | ST | 4 | 0 | 1 | |
13-1: | 1 | 4 | 1536 | DE | ||||
Seq 1, Song 1b | ||||||||
MSR-BT: | ST | EVNT | TIME | CH | TYP | NOTE | VEL | DUR |
1-1: | 1 | 1 | 0 | ST | 2 | 0 | 1W | |
1-1: | 1 | 2 | 0 | ST | 3 | 0 | 1W | |
1-1: | 1 | 3 | 0 | ST | 4 | 0 | 1W | |
1-1: | 1 | 4 | 0 | DE |
In these examples, a piece is being constructed out of three sequences, each of which is four bars long. Looking at the first example, we see that Sequence 2 starts on the first beat of bar 1, at bar 5 Sequence 3 is started, and finally at bar 9, Sequence 4 (note that the values under Time assume a ppqn of 96). The second example, though it looks very different, does exactly the same thing; the important difference is in the use of the Wait statement at the end of the line. This prevents the following line from being executed until the first one has finished playing, however, attention must be paid to the state of the final DE event in each sequence. You must always ensure that all your sequences have a trailing DE event and that its position is correct, otherwise unexpected results will occur.
For example, if we imagine that while Sequences 2, 3, and 4 contain only four bars-worth of actual data, the final DE event could well be at a different point, say bar 17. The first example will play as intended because you are issuing specific start times for the sequences; the second will not as the triggering of subsequent sequences is dependent on the previous one finishing. What you'll get is a load of 'dead air' between one sequence and the next. You should also set the Repeat Time of the control sequence to 1 — actually this is not a hard and fast rule, but it will prevent nasty surprises such as this following example demonstrates:
Seq 1, Song 2a | ||||||||
MSR-BT: | ST | EVNT | TIME | CH | TYP | NOTE | VEL | DUR |
1-1: | 1 | 1 | 0 | ST | 2 | 0 | 1 | |
1-1: | 1 | 2 | 0 | ST | 3 | 0 | 1 | |
1-1: | 1 | 3 | 0 | ST | 4 | 0 | 1 | |
1-1: | 1 | 4 | 0 | DE | ||||
Seq 1, Song 2b | ||||||||
MSR-BT: | ST | EVNT | TIME | CH | TYP | NOTE | VEL | DUR |
1-1: | 1 | 1 | 0 | ST | 2 | 0 | 1 | |
1-1: | 1 | 2 | 0 | ST | 3 | 0 | 1 | |
1-1: | 1 | 3 | 0 | ST | 4 | 0 | 1 | |
5-1: | 1 | 4 | 1536 | DE |
In this example, we have a drum pattern in Sequence 2, a bass line in 3 and string pad in 4, all of which are four bars long. Our intention is to start them off at the same time and have them repeating. If Repeat Time is set to 99 (ie. play forever) and we started off the first example, KCS would indeed start all three sequences off as specified, but because the final DE event is on the same time step as the start time it would continuously re-trigger, playing virtually instantaneously — the resulting racket is best left to the imagination! The second example is better because the final DE event provides the necessary breathing space to allow the looping to work correctly, although in general you should avoid this practice. More on control sequences next month.
Technically Speaking |
Amiga Notes |
PC Notes |
Amiga Notes |
Power, Corruption & Spikes - Data Protection |
Software Support - Hints, Tips & News From The World Of Music Software |
Atari Notes |
When Is A Computer |
Amiga Notes |
Software Support - Hints, Tips & News From The World of Music Software |
Software Support |
Apple Notes |
Browse by Topic:
Feature
Previous article in this issue:
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!
New issues that have been donated or scanned for us this month.
All donations and support are gratefully appreciated - thank you.
Do you have any of these magazine issues?
If so, and you can donate, lend or scan them to help complete our archive, please get in touch via the Contribute page - thanks!