Reviews & Opinions
Independent and trusted. Read before buy Yamaha WX7!

Yamaha WX7

 

 

Yamaha WX7About Yamaha WX7
Here you can find all about Yamaha WX7 like manual and other informations. For example: review, for sale, midi wind controller, wind controller, piano.

Yamaha WX7 manual (user guide) is ready to download for free.

On the bottom of page users can write a review. If you own a Yamaha WX7 please write about it to help other people.
[ Report abuse or wrong photo | Share your Yamaha WX7 photo ]

Manual

Preview of first few manual pages (at low quality). Check before download. Click to enlarge.
Manual - 1 page  Manual - 2 page  Manual - 3 page 

Download (English)
Yamaha WX7, size: 1.8 MB

Yamaha WX7

 

 

Video review

THE SQUARE(T SQUARE) TRUTH (1987 spring)

 

User reviews and opinions

<== Click here to post a new opinion, comment, review, etc.

No opinions have been provided. Be the first and add a new opinion/review.

 

Documents

doc0

A special section on MIDI AND APPLICATIONS (p. 15) is provided as a simplified crash course in MIDI technology. This will give you a brief introduction to MIDI plus some system examples, to suggest just a few of the virtually unlimited number of ways to use the WX7 with a MIDI digital music system. For further reference on MIDI, consult the manual of your MIDI synthesizer or tone generator, as well as the variety of publications and magazines now available on the subject of this fast-growing technology. A GLOSSARY (p.17) has been included, which clearly explains the terminology used in this manual, partcularly for the benefit of the WX7 owner with a limited knowledge of digital music and MIDI. Following the technical SPECIFICATIONS (p.19), the MIDI IMPLEMENTATION (p.23) section gives full details of the MIDI technology used in the WX7, for users seriously interested in MIDI and computer applications of this advanced unit. The all-important FINGERING CHARTS (the last page of this manual) indicates in musical score form the available fingerings on the WX7. All the standard fingering positions are provided, plus additional fingering positions for fast, easy octave transposing.

PRECAUTIONS

GUIDE TO THE CONTROLS
Avoid placing your WX7 in direct sunlight or close to a source of heat. Also, avoid locations where the instrument is likely to be subjected to vibration, excessive dust, cold or moisture. All of these conditions could have a detrimental effect on both the mechanisms and the circuitry incorporated into the WX7. Avoid applying excessive force to the switches and keys. Use the mouthpiece and keys with as much care as you would with any other top quality wind instrument. Also avoid dropping the instrument or otherwise subjecting it to impact. While the internal circuitry is of reliable integrated circuit design, the WX7 should be treated with care. When not in use, even for short periods of time, always keep the WX7 in the supplied carrying case. When unplugging cords (MIDI, audio, power, etc.) from the WX7, never unplug by pulling on the cords; this can result in damage to the WX7 or the cords. All computer circuitry, including that of the WX7, is sensitive to power surges or voltage spikes, such as those caused by lightning. For this reason, the MIDI/Power Pack of the WX7 should be turned off and unplugged from the wall socket (if using it with AC power rather than the internal batteries) in the event of an electrical storm. Computer circuitry is also sensitive to electromagnetic radiation, such as is generated by television sets. Use your WX7 at a suitable distance from such equipment to avoid malfunctions in the WX7 or any other connected equipment.

MOUTHPIECE AND MOUTHPIECE COVER

Mouthpiece Cover

KEY ADJUSTMENT SHIMS
Make sure to push the plug as far in as it will comfortably go without forcing. Keep the drain plugs in their compartment in the carrying case when not in use.
INFORMATION BOOKLET AND CASSETTE TAPE
An informative booklet, Expressive FM Applications, and an accompanying cassette tape have been included. The booklet provides important playing and editing tips for most effectively using your tone generator with the WX7, and the cassette tape includes recorded performances of the WX7 as well as specially programmed TX8lZ and DX7II voice data.
Two sets of 14 key adjustment shims allow you to make minute adjustments of each keys playing height. 0.2 mm and 0.5 mm thick shims are provided, enabling you to set each key to one of three playing heights, to exactly suit your playing style. The shims are self-adhesive. Simply remove the plastic covering from the shim, and stick it firmly on the body of the WX7 just under the pad opposite the key you want to adjust, as shown in the above diagram.

SCREWDRIVER

DRAIN PLUGS

MIDI/DC Extension Cord

Two types of Drain Plugs are included: one that fully blocks the Drain Hole (with a circular cross-section), and one that partially blocks it (with a cross-shaped cross-section). In normal use (without plugs) the WX7 behaves like a regular saxophone: the air passes down the body of the instrument and out of the lower drain hole. Partially closing the upper drain hole creates a tighter blowing feel. Completely closing the drain hole creates an even tighter feel, suitable for saxophone players who tend to blow hard. Experiment with these options and select the one that suits you. The plugs are inserted into the drain hole while the mouthpiece is detached. The mouthpiece is detached by gently and firmly sliding it out from the top of the WX7. TAKE CARE NOT TO TOUCH THE THIN LIP SENSOR EXTENDING FROM THE INSTRUMENT. This device (which measures subtle variations in lip pressure) is delicate and can easily be bent or damaged.
The screwdriver is located on a plastic holder attached to the MIDI/DC extension cord. The screwdriver is used to adjust the four rotary pots (which control the lip pressure and breath pressure: refer to the ADJUSTING THE PLAYING RESPONSE section) and to change the positions of the DIP switches (see THE DIP SWITCHES section). Always keep the screwdriver in the plastic holder on the MIDI/DC extension cord.

PLAYING STRAP

A playing strap is included to hold the WX7 while playing. Connect the strap to the ring on the back of the instrument as shown in the rear view illustration in the GUIDE TO THE CONTROLS section.

8. After you have satisfactorily produced a variety of performances from your WX7, go on to read the rest of this manual in detail, so as to get a full understanding of this versatile and powerful MIDI instrument.

SETTlNG UP

SETTING THE MIDI SOUND SOURCE
In this section you will learn how to prepare the WX7 for playing, and connect it up to your MIDI synthesizer or tone generator. Information will also be given on how to set up your MIDI sound source to be controlled by the WX7. Three vital points must be remembered when setting up your MIDI Synthesizer or tone generator to be controlled by the WX7: (1) MIDI data can actually be sent on any of 16 MIDI channels, allowing instruments within a complex MIDI system to communicate independently. When two MIDI instruments communicate, they should be set to the same MIDI channel. The WX7 normally TRANSMITS MIDI data on MIDI channel 1, so your MIDI sound source should be set to RECEIVE MIDI data on MIDI channel 1 (or it can be set to OMNI, a MIDI mode which allows it to receive MIDI data on all 16 MIDI channels).
CONNECTION OF THE MIDI/POWER PACK
Plug the MIDI/DC cord coming from the MIDI/DC Power Pack into the MIDI/DC jack of the WX7. In both cases, the connection can be locked by turning the outer sleeve of the connecting plug. A strap on the case of the MIDI/Power Pack lets you attach it to your belt. You can also use the 5-meter (15-foot) MIDI/DC extension cord which allows you to put the MIDI/Power Pack in any convenient location. Extra MIDI/DC extension cords may be purchased, but it is not recommended that you use more than three extension cords, as MIDI signals may deteriorate if the cable length is more than 15 meters (45 feet).
In the Dual Play mode, the WX7 can be used to transmit MIDI data on two separate MIDI channels. You can also change the MIDI Transmit channel of the WX7. Refer to THE DIP SWITCHES section (DIP Switches #5 and #6) for more information. (2) The MIDI sound source should normally be set to receive MIDI Breath Control data. On the Yamaha DX7II synthesizer, for example, this is known as BC and can be independently set for each voice. Four parameters (functions) can be controlled by BC, as follows: Pitch Modulation (vibrato level) Amplitude Modulation (tremolo level) EG Bias (volume and/or timbre) Pitch Bias (Pitch)
CONNECTION TO THE MIDI SOUND SOURCE
Use the supplied MIDI cable or any standard MIDI cable to connect the MIDI OUT jack of the MIDI/Power Pack to the MIDI IN jack of your MIDI synthesizer or tone generator. The diagram below shows how the WX7 can be connected for controlling a TX81Z tone generator, but a virtually limitless number of other configurations using many different kinds of MIDI devices are also possible. Please refer to the MIDI AND APPLICATIONS section for more information on how to use the WX7 with a MIDI system.

BASIC PLAY OPERATION

Producing notes with the WX7 depends on three conditions: (1) Your connected MIDI synthesizer or tone generator. is set to a program that will produce a sound via your sound system. This program MUST be one that is set to respond to MIDI Breath Control or After Touch data (refer to the SETTING UP section for more information on setting up your MIDI sound source).
The reed is bitten against the flat area of the mouthpiece. When bite is relaxed, the reed bends down flattening pitch. when bite is increased, the reed bends up against the curved area of the mouthpiece, raising pitch.
There is a narrow dead zone in the center where small changes of bite dont alter the pitch. This dead zone makes it easy to remain at concert pitch. LIP ZERO sets the position of the central data zone. You can adjust the amount by which the reed responds to lip pressure (the Lip Gain parameter). Refer to the ADJUSTING THE PLAYING RESPONSE section for details on how to adjust both these parameters. (2) LOOSE LIP MODE. In the Loose Lip mode, the lower lip is loose, and for normal concert-pitch playing, no bite is applied to the reed. Pitch is bent by increasing the bite on the reed, and in this mode, pitch can only be bent upward. However, the range of pitch bend is greater than that in the Tight Lip mode. In this mode, the Lip Zero parameter lets you set the pitch from which lip pressure will create a pitch bend.
(2) You are blowing into the mouthpiece with breath pressure that is higher than the Wind Zero point (a breath threshold point that you can set by following the instructions in the ADJUSTlNG THE PLAYING RESPONSE section). (3) You are fingering a note (the WX7 system plus some the FINGERING the keys correctly so as to produce uses the standard Bhm fingering special fingering positions: refer to CHARTS).
No sound will be produced unless all three conditions are fulfilled. In short, when you blow AND finger the keys correctly, a note will be heard. When you stop blowing OR fingering, the note will end. The note that you hear will respond to both lip pressure and breath pressure, as described in the following paragraphs.
The reed normally stays in its lowest position. Any lip pressure bends the reed up, raising pitch.
Again, refer to the ADJUSTING THE PLAYING RESPONSE section for details on how to adjust the pitch bend response.

BREATH PRESSURE

The WX7s Wind Sensor allows you to use breath pressure to control volume, tone, vibrato and tremolo. Refer to the SETTING UP section, and consult the owners manual supplied with your MIDI synthesizer or tone generator, for information about which parameters may be affected by Breath Control (BC) data. When first trying out your WX7, set the parameter values on your MIDI sound source so that the results of a change in breath pressure will be obvious. For example, if you are using a Yamaha TX8lZ FM Tone Generator, set the Pitch Modulation Depth to at least 70 and the LFO Speed to about 40. Increasing the breath pressure on your WX7 will create a pronounced vibrato effect on the TX81Z. As with the Lip Sensor, the WX7s Wind Sensor has two response parameters which may be adjusted. The Wind Zero parameter lets you set the minimum amount of breath pressure needed to make a note speak. The Wind gain parameter lets you select the amount by which the WX7 will respond to a change in breath pressure. See the ADJUSTING THE PLAYING RESPONSE section for details.

The Program Change key can also be used as an easy (and silent) way to find out if you have correctly made all MIDI connections and MIDI channel settings. By holding down the Program Change key and pressing one of the Octave Transpose keys on the WX7 you should see the attached tone generator change its internal programs.

OCTAVE TRANSPOSE KEYS

While playing the WX7, you can instantly transpose the instrument to other octaves by pressing the Octave Transpose keys. Pitch can be lowered by one or two octaves or raised by one, two or three octaves. The Octave Transpose keys are located on the rear of the WX7 and can be pressed singly or in succession by rolling or sliding the left thumb across them (see the GUIDE TO THE CONTROLS section). With this feature, you can create very rapid octave changes while you play. The Octave Transpose function increases the total range of the WX7 to over 7 octaves.
WHOLE TONE/SEMITONE UP KEYS
The WX7 has whole tone/semitone up keys which can be used either for execution of trills or for alternative fingering of notes. These are conveniently located in a central position (see the GUIDE TO THE CONTROLS section). Unlike on a normal saxophone, the same keys are used regardless of the pitch of the note that is being trilled (yet another of the advantages of MIDI!). Two trill keys are provided: the lower key raises the pitch of the note by a semitone; the upper trill key raises the pitch by a whole tone.

PITCH BEND WHEEL

Pitch can be controlled by moving the Pitch Bend Wheel conveniently located under your right thumb. The Pitch Bend range must be set on your MIDI sound source (usually 1 to 12 semitones). The WX7s Pitch bend Wheel then operates in exactly the same way as the Pitch Bend Wheel on a synthesizer such as the Yamaha DX7II (i.e., when you push the wheel past the dead zone in the center position, pitch is bent; on releasing the wheel, it returns automatically to the center position). NOTE: When the Pitch Bend Wheel is at its maximum or minimum setting, the Lip Sensor will not bend the pitch any higher or lower than that setting.

HOLD KEY

The Hold key lets you sustain a selected note for use in the Key Hold and Dual Play modes. This note will be sustained until you press the Hold key a second time. Other special effects such as parallel harmony and breath-controlled sustain can be used. Refer to THE DIP SWITCHES section, DIP switches #5 and #6 for more information about the Key Hold and the Dual Play modes. The Hold key is normally played by the right thumb (see the GUIDE TO THE CONTROLS section).

PROGRAM CHANGE KEY

Use the Program Change key (with the Octave Transpose keys) to change the voice programs on your MIDI sound source. Holding down the Program Change key alters the function of the Octave Transpose keys. With the Program Change key held down, the top Octave Transpose key is used to select program number 1, the Octave Transpose key below that is used to select program number 2, and so on down to the last Octave Transpose key, which is used to select program number 5. Normally the right thumb is used to hold down the Program Change key (see the GUIDE TO THE CONTROLS section). NOTE: No sound can be produced when changing programs.

THE DIP SWITCHES

DIP SWITCH #2 MIDI Volume
The DIP switches are eight tiny switches (similar to those found on computers) located under a cover on the upper back of the WX7, just above the Octave Transpose keys.

OFF ON

You can use breath pressure to control the volume of your tone generator while simultaneously controlling another parameter (such as pitch or tone). This feature allows you to still take advantage of the dynamically expressive control of MIDI for those voices that dont respond to Breath Control or After Touch data. Voices that do respond to Breath Control or After Touch data will also respond to MIDI Volume data when this switch is turned on. Set DIP Switch #2 to one of the following positions: OFF: ON: the WX7 does not send MIDI Volume data. the WX7 sends MIDI Volume data.
Use the WX7s screwdriver to move these switches. Be sure to replace the screwdriver in its holder after use. For each DIP switch, set the switch to the left for the OFF position; to the right for the ON position. The DIP switches control the type of data sent out, transpose to pitches other than concert pitch, set the Dual Play type, select how the WX7 will respond to breath (Wind Curve), and select the Lip Sensor mode. Each of these functions is described in more detail below.
DIP SWITCHES #3 AND #4 Transpose
The normal playing key of the WX7 is C (corresponding to that of a flute or oboe). Using DIP Switches #3 and #4, you can transpose UP to E flat (corresponding to soprano, alto and baritone saxophones), DOWN to B flat (corresponding to soprano, tenor and bass saxophones, and clarinet) or UP by an octave. Set DIP Switches #3 and #4 to the following positions: DIP SWITCH #3 DIP SWITCH #4 OFF OFF ON ON KEY C B flat E flat C (octave up)
DIP SWITCH #1 Breath Control/After Touch
You can use the WX7 not only to play notes from your MIDI device but also alter the tonal character, volume and pitch by breath pressure. The WX7 monitors changes in breath pressure and sends them out as MIDI Breath Control data. Yamaha MIDI instruments such as the DX7II Digital Programmable Algorithm Synthesizer or the TX8lZ and TX802 FM Tone Generator respond to Breath Control data. However, if your tone generator doesnt respond to Breath Control data, this switch will let the WX7 send breath pressure changes as After Touch data. Set DIP Switch #1 to one of the following positions: OFF: ON: the WX7 sends Breath Control data. the WX7 sends After Touch data.

per second, and simply transmits a number corresponding to the current position of the control (together with a message indicating which control is currently being altered). You should know how the MIDI messages transmitted by the WX7 affect the sound of the slave (i.e., your MIDI synthesizer or tone generator) and how you can program your MIDI instrument to respond to these messages. For that information, please consult the owners manuals of your MIDI instruments. In essence, MIDI is extremely simple: it simply reduces all musical data to numbers, which can easily be sent from one instrument to another (hence the term Digital Interface). In practice, MIDI is unbelievably versatile, which is as it should be, for it is designed to fulfill the demands of professional musicians. Indeed, new uses of MIDI are being discovered at an extraordinary rate, both by MIDI engineers, and by musicians like yourself, experimenting and refining the art of digital music on stages and in studios around the world. A short explanation of some of the possibilities of MIDI will perhaps be helpful in triggering some ideas on how best to use your WX7. In the following system setups, the WX7 is used to change voice programs on tone generators and synthesizers and, at the same time, call up custom effect settings like chorusing, repeat delays, and reverb on digital effect units (for example, the REX 50, the SPX90II, and the REV 5).
Play several synthesizers at one time from a single keyboard controller. Control performance functions such as pitch bend and modulation on the remote synthesizers as expressively as if they were being played directly. Change voices on remote synthesizers and tone generators, for impressive and effortless sound changes in real time. Connect synthesizers with sequencers or MIDI-compatible computers, for flawless, noise-free recording and playback of both music data and program change data, with automatic timing correction (quantizing) and enormously flexible editing facilities. Control digital drum machines for a perfectly synchronized performance. Set effects devices such as digital delay and digital reverberation units to change their effects programs along with voice program changes, to add just the right processing to each voice program. Use a Tape Sync signal recorded onto one channel of a multitrack tape deck, to perfectly synchronize MIDI sequencers and drum machines with a vocal or acoustic performance recorded on tape. In this way, the seemingly opposed worlds of traditional acoustic music and stateof-the-art digital music can be blended and merged, providing enormous creative potential.

As you can see, MIDI is a very powerful musical tool. However, you wont need a course in computer science to use your WX7 effectively with other MIDI instruments. All you need to know is what MIDI devices can do, and how you can control them with your WX7. After that, MIDI does all the work for you. In every MIDI setup there is a master and a slave. The master can be a keyboard, sequencer, computer or a WX7 and the slave (a sound-generating instrument) is played by it. The master transmits MIDI messages to the slave in the form of computer type signals. The messages depend on how the instrument is being played, which keys are pushed, etc. In the case of the WX7, Note On and Note Off messages are sent at the start and end of each breath respectively, indicating to the slave the start and end of each note. A Program Change message is sent every time you press the Program Change and Octave Transpose keys. When a continuous message needs to be sent (such as when you are moving the Pitch bend Wheel, or gradually changing breath pressure) MIDI technology slices the continuous change into thousands of slices
1. WX7 PLUS TX81Z MULTI-TIMBRAL FM TONE GENERATOR.
to play a flute sound on MIDI channel 1 and a cello voice on channel 2. Press the Hold Key to create a cello drone, while playing a flute melody above it. Also, the DX7II has an innovative Pitch Bias feature, allowing you to use Breath Control to affect pitch as well as other parameters (vibrato, tremolo, etc). In this way, pitch control can be executed from the WX7 using breath pressure as well as lip pressure and Pitch bend Wheel, for expanded expressivity.
3. WX7 PLUS TX802 FM TONE GENERATOR SYSTEM
In this basic yet versatile arrangement, the WX7 is used to control the Yamaha TX81Z FM Tone Generator, which can create up to eight superb FM voices simultaneously. The eight voices could be set to different octaves for a full, powerful sound. Programming each voice to occupy a separate register of the WX7s 7-octave pitch. range also allows you to experiment with various split and layer combinations. For example, program a bass sound for F0 to C2, piano and cello sounds layered together in the C#2 to C4 range, 4 different string sounds between C#4 and F5, and a clarinet sound at the top. Depending on which register you play in, you can get four distinct sounds. Voices can also be set to overlap, for added tonal interest. You could also transpose four of the TXS1Zs voices to form a chord. Assign these chordal voices to MIDI channel 2, and the other four voices to MIDI channel 1. With the WX7 in the Dual Play mode, you could then add chordal harmonies your rich 4-voice lead line.

I I OUTPUT

MIDI OUT MIDI MIDI FOOT CONTROLLER MFCl
Like the TXS1Z, the TX802 FM Tone Generator can create eight FM voices, but with even greater richness and tonal possibilities. For example, you could use the TX802 to create an eight-sound drum or percussion set. Assign each drum sound to a different note (perhaps to a convenient eight-note scale). With the WX7s Breath Control ability, you can hit each instrument of the drum set with different strengths, creating amazingly realistic dynamic changes. Also, the TX8023 unique Alternative Assign feature means that every time you play a note, a different voice is selected. For example, you could use eight slightly different string voices, so that when you play a string melody, the sound changes in a subtle, vibrant fashion, enhancing the effect of a live string orchestra.
2. WX7 PLUS DX7II SYNTHESIZER
The world-famous Yamaha DX7II Digital Programmable Algorithm Synthesizer has a feature that makes it an ideal match for the WX7: reception of music data on two separate MIDI channels, for independent control of two voices. For example, use the WX7 in the Dual Play (No Breath) mode 16

GLOSSARY

after touch: A type of touch sensitivity in which the pressure
applied to the key after it has reached and is resting on the keybed is sensed. This, depending on what function settings have been programmed into a synthesizer, is used to change parameters of the sound (such as volume, pitch, or timbre). Also applies to a category of MIDI messages. The WX7 can be set to transmit after touch data instead of breath control data. called algorithms (for example, one carrier modulated by three modulators, or two carrier/modulator pairs). The TX802 and TX816 Tone Generators, and professional range DX series synthesizers feature six operators, for added richness. The level and pitch of each operator can be modified in a wide variety of ways, enabling recreation of the complex and random harmonic changes over time that occur in acoustic instruments.
function parameter: An aspect of a synthesizers sound that
is usually changed while the sound is being played, for musical expression. Examples of these include pitch, volume, tone (EG Bias), and vibrato (pitch modulation).
algorithm: See FM. breath control: A type of MIDI message which is used to
control function parameters of a synthesizers sound (usually vibrato depth, tremolo depth, volume and tone). Breath Control data is created by breath pressure, and can be sent by blowing into a breath controller (such as the BC1 or BC2 Breath Controllers, designed for use with the Yamaha DX7II synthesizer). In normal use, the WX7 sends Breath Control data.
initialize: To reset the parameters of a device to zero or to

MIDI OUT: A MIDI terminal on a MIDI device that transmits MIDI data. The WX7s MIDI/Power Pack has a MIDI OUT terminal, through which MIDI data is transmitted to a connected MIDI sound source. MIDI THRU: A MIDI terminal on a MIDI device that
relays, unchanged, the data received at its MIDI IN terminal. This enables you to connect several MIDI devices together in a daisy chain configuration, permitting a number of MIDI devices to be controlled by one master MIDI device such as the WX7.
mode: The manner in which a device is currently operating.
In MIDI operation there are four modes, which describe how devices respond to data, are omni on/poly, omni on/mono, omni off/poly, and omni off/mono. When omni is on, the device responds to MIDI data arriving on any channel. When omni is off, it only responds to data arriving on the set channel. When poly is on, the device will play the maximum number of simultaneous notes (usually 16). When mono is on, it will play only one note at a. time. Mode can also be used to describe other manners of operation, such as the Tight Lip Mode on the WX7.
polyphonic: Also called poly. Capable of producing more
than one note at a time. The DX7II is a typical MIDI polyphonic instrument in that it can produce up to 16 notes simultaneously. Although, for obvious reasons, only ten notes can be played at any one time, other notes may be required to sustain at the same time (for example, when using the sustain pedal on a piano voice), hence the need for more than 10 simultaneous notes. Also, when using a sequencer such as the QX5 Digital Sequence Recorder to play the DX7II, up to 16 independent melody lines could be transmitted, enabling performance of 16-part orchestral arrangements.
modulation: The process of modifying the sound of a synthesizer. Some examples of modulation include pitch modulation (vibrato), amplitude modulation (tremolo), and brightness (called EG Bias on Yamaha DX series synthesizers and TX series tone generators).
program: [1] (verb) A general term meaning to set parameter
values in a MIDI instrument, in order to create a voice, select MIDI receive/transmit settings, etc. [2] (noun) see voice. setting: The number or value to which a parameter has been programmed.

modulation wheel: A wheel controller located on the left side
of most keyboards. It sends a MIDI message to modulate the sound of a synthesizer, for vibrato or tremolo effects.
modulator: See FM. monophonic:Also called mono. Capable of producing only
one note at a time. Normally the WX7 is a monophonic instrument (when not set to the Dual Play mode).
slave: Any device (tone generator, drum machine, etc.) that is being controlled by another device called a master. The TX802 FM Tone Generator is a typical example of a slave it has no keyboard or other playing device, and is basically a black box containing tone generators which produce FM voices which can be played by an external master-type device such as the WX7. voice: [1] A synthesizer sound, preset, or patch program. [2] The basic sound generating portion of a synthesizer. For example, a monophonic synthesizer is a one-voice instrument, whereas the polyphonic DX7II has 16 voices.
note off: A MIDI message indicating the end of a note. This
message is sent whenever a key is released on a MIDI keyboard. On the WX7, a Note Off message is sent when breath ceases to be applied to the mouthpiece. If the MIDI sound source has been programmed with a long release time, the note will continue and fade out, after the note off message is received. Also known as key off.
note on: A MIDI message indicating the start of a note. This message is sent whenever a key is pressed on a MIDI keyboard. On the WX7, a Note On message is sent when a note is fingered and breath is applied to the mouthpiece. If the MIDI sound source has been programmed with a long attack time, the note may take some time to fade in after receiving a note on message. Also known as key on. operator: See FM. parameter: An aspect of a synthesizers sound that can be
changed. Some parameters (called function parameters) can be changed while playing, whereas others (called voice parameters) can only be programmed to be a permanent part of the sound. Some examples of parameters include LFO speed, key transpose, and portamento time.
pitch bend wheel: A controller on a MIDI instrument that
is used to bend pitch up or down on a note as it is being played. The wheel is usually spring-loaded, so that it automatically returns to a central (concert pitch) position when released. In addition, there is usually a central dead zone so that very small changes in the position of the wheel will not affect pitch. On a DX7II synthesizer, the pitch bend range is variable between 1 to 12 semitones. The WX7 has a pitch bend wheel.

SPECIFICATIONS

WX7 MAIN UNIT

WX7 MIDI/POWER PACK

SENSORS
Wind Sensor (Breath Pressure); Lip Sensor (Lip Pressure)

TERMINALS

DC Out/MIDI In (single connector); MIDI OUT; AC IN

CONTROLS

Keys x 14; Pitch Bend Wheel; Key Hold; Program Change; Octave Transpose (-2 to +3 octaves)

SWITCH

Power On/Off

POWER SOURCE

EITHER: AA batteries (1.5 V) X 6 OR: 12V DC, using optional Yamaha PA-1 12V Voltage convertor connected to one of the following power supplies: 120V, 50/60 Hz [U.S., Canada] 220V, 50/60 Hz [General] 240V, 50/60 Hz [Britain]
DC In/MIDI Out (single connector)

MIDI TRANSMIT CHANNELS

1 or 3 [Normal Mode]; 1 + 2 or 3 + 4 [Dual Play Mode]

DIP SWITCHES

After Touch; MIDI Volume; Transpose to B flat; Transpose to E flat; Key Hold Normal/Follow; Dual Play No Breath/Use Breath; Wind Curve Select; Loose Lip/Tight Lip

DIMENSIONS (W x D x H)

111x x m m (4-3/8 x 1-3/8 x 3-3/4)

WEIGHT

300 grams (11 oz.)

ADJUSTABLE POTS

Lip Zero; Lip Gain; Wind Zero; Wind Gain

ACCESSORIES

57 x 64 x 538 mm (2-1/4 x 2-1/2 x 21-1/4) MIDI/Power pack w/soft case (1 ea.) AA battery (6) MIDI/DC extension cord (1) MIDI cable (1) Mouthpiece (1), attached Extra mouthpiece (1) Mouthpiece cover (1) Adjustment shim (0.2 mm t x 14,0.5 mm t x 14) Drain plug (2) Screw driver w/holder (1 ea.) Polishing cloth (1) Carrying case (1) Playing strap (1) Information booklet w/cassette tape (1 ea.)

380 grams (13 - 1/2 oz.)

MIDI Data Format

System Exclusive

Condition Acknowledge

MIDI CHANNEL

MIDI channel output is basically done through channel 1, however, channel 2 is used when DIP Switch #6 is ON (DUAL NO/USE BREATH). Furthermore, channel 3 is used when power is turned on while the keyhold switch and the program change switch are held. Channel 4 is used when DIP Switch #6 is ON, provided that channel 3 is used as a basic channel.

00111001 00110111

$f0 $43 $00 $7d $0c $00 L M 7
;system exclusive ;YAMAHA ID ;bulk dump ;condition acknowledge ;data bytes LSB ;data bytes MSB ;message
DETAILS OF OUTPUT MESSAGE

110100 0ddddddd $d0, d1 ;after touch ($d2, d3) $dd ;data 0 127
When SW1 is ON, WIND data is output as after touch.

Pitch Bend

$e0, e1 ;pitch bend ($e2, e3) 0 l l l l l l $LL ;data LSB 0mmmmmmm $mm ;data MSB (resolution 7 bit) 111000
[ Wind MIDI Controller ] Date : 4/7, 1987 Model WX7 MIDI Implementation Chart Version : 1. 0 Transmitted Function. Basic Default Channel Changed Mode Default Messages Altered 1 1&2 , 3&4

Remarks

***************
o 9nH,v=1~127 x 9nH,v=0 x
Note 20 - 122 Number : True voice ************* Velocity Note ON Note OFF After Touch Key's Ch's
*bit resolution *1 *1 Breath control Volume

Pitch Bender

Prog Change : True #
System Exclusive System : Song Pos : Song Sel Common : Tune System :Clock Real Time :Commands Aux :Local ON/OFF :All Notes OFF Mes- :Active Sense sages:Reset Notes

o 0~4 ***************

*1 = Select by DIP SW
: OMNI Mode 3 : OMNI Mode 1

ON, OFF,

POLY POLY

Mode Mode

OMNI ON, OMNI OFF,

MONO MONO

o : Yes x : No
WX7 FINGERING CHART (NORMAL PITCH)
TABLE DE DOIGTE WX7 (HAUTEUR NORMALE)
FINGERING-TABELLE FR WX7 (NORMALE TONLAGE)
WX7 FlNGERlNG CHART (OCTAVE TRANSPOSE)
Shaded keys are fingered. Octave changes (from two octaves below concert pitch to three octaves above) can also be made using the Octave Transpose keys. Octave changes made with these keys are in addition to those made using the fingerings shown in the charts. Refer to the rear view illustration in the Guide to the Controls section for more about the Octave Transpose keys.
TABLE DE DOIGTE WX7 (TRANSPOSITION A LOCTAVE)
Les touches en ombr sont joues. Les changements doctave (de 2 octaves au dessous du diapason de concert 3 octaves au dessus) peuvent galement tre effectus en utilisant les touches de transposition doctave. Les changements doctave raliss avec les touches sajoutent ceux effectus par des doigts indiqus dans les tables. Reportez-vous lillustration de la vue arrire dans la section GUIDE DES COMMANDES pour plus de dtails sur la touche de transposition d-octave.
FINGERING-TABELLE FR WX7 (OKTAVEN-TRANSPONIERUNG)
Die schraffierten Tasten sind auf Fingered gestellt. nderungen der Oktavlage (von zwei Oktaven unter dem Kammerton bis zu drei Oktaven darber) sind auch mit Hiffe der Oktaven-Transponiertasten mglich. Auf diese Weise vorgenommene nderungen der Oktavlage erfolgen zustzlich zu den nderungen, die ber die in der Grifftabelle gezeigten Griffe ausgefhrt werden. Weitere Einzelheiten zu den Oktaven-Transponiertasten finden Sie in der Rckansicht des WX7 im Kapitel BESCHREIBUNG DER BEDIENELEMENTE.

doc1

An Investigation Into The Design Of Musical Performance Instruments
Dylan Menzies-Gow Music Technology MSc University of York August 1995

Abstract

The Yamaha VL1 has attracted much interest as the first generally available synthesiser to emulate the subtle dynamic response of acoustic instruments, and yet not be constrained to copy these instruments wholesale. While the VL1 is a powerful, state of the art machine, the possibility is explored here of enriching the control dynamics side of existing MIDI equipment by the computer processing of MIDI control signals with an Atari ST. The WX7 windcontroller and the polyphonic aftertouch keyboard are considered as controlling devices. This leads onto more general considerations of musical performance instruments. Csound running in real time on an SGI Indy equipped with a MIDI interface is used to explore techniques not accessible on MIDI synthesisers. Several useful examples are presented, and some ideas for future work which the author feels encouraged to undertake.

Acknowledgements

I would like to thank Ross Kirk and Andrew Hunt for their enthusiasm and help with this project. Valuable conversations with Music Technology students past and present have left their mark, I'm sure. Thankyou.

Contents

Introduction.... Background.... 2.1 Review of instrument designs... 2.1.1 The tenor saxophone... 2.1.2 The pianoforte... 2.1.3 Modern instruments.. 2.2 2.3 What is a musical performance instrument?.. Design criteria.... 17 17
Design Investigation.... 3.1 3.2 Scope of investigation.... MIDI equipment only.... 21 3.2.1 Use of the Ensoniq EPS in a live electro-acoustic piece.. 21 3.2.2 The Yamaha WX7 windcontroller.. 22 3.2.3 WX7 windcontroller with an M1, limitations.. 23 3.3 MIDI equipment with an Atari ST and Lattice C.. 24 3.3.1 Arpeggiation instrument using the WX7 / Korg T3. 24 3.3.2 Granular synthesis instrument using the WX7 / SY55.. 25 3.3.3 Additive synthesis instrument using the EPS / K1. 27 3.4 MIDI controllers with an SGI Indy running Csound. 28 3.4.1 A bird-like instrument using the WX7..28 3.4.2 A whistle-like instrument using the WX7.. 29 3.4.3 A brass-like instrument using the WX7.. 29 3.4.4 A conga drum using a keyboard.. 30 3.4.5 A filter bank using a poly aftertouch keyboard.. 30 3.5 Sequenced spacial sound processing on the SGI Indy in C.. 31 3.5.1 A four-speaker delay... 31 3.5.2 An implementation of 'Solo' by Stockhausen..: 31 4
Design Ideas For Future Work... 32

Conclusion...

Bibliography....
Appendix A Appendix B Appendix C Appendix D
Contents of the tape recording.. Primer for use of Csound for real time..39 Complete Listings of computer code with index. The duck family tree..

Chapter 1

Introduction
This chapter presents some motivations and first ideas for the project in an informal language. More detailed discussion of the concepts will appear later.

The role of performance

The project grows from a desire to create musical performance instruments with modern digital technology that might attain the same credibility as a classical performance instrument. Why focus on performance? There are a host of good reasons. Here are a few are listed:
1. A stage performer can add to the listening experience, and possibly respond or interact with the audience. Even on recordings, if the listener thinks the music was performed 'live' in some way it can affect the perception.
2. The performer can be an effective way of adding life and original interpretation to a written score. Even in a large section of an ensemble, the result would not be the same without the 'Life' of each performer.
3. Conversely composers are often inspired by the qualities of a particular instrument or performer. They mentally improvise.
4. The performer can improvise aloud, and generate new techniques and perhaps musical ideas dependent on these.

5. Finally there is the pleasure of playing an instrument itself: an interactive musical experience, possibly with other players.
These reasons alone account for the huge and ongoing interest all around the world, at all levels of technology in inventing new musical instruments. Of course this doesn't invalidate the use of non-performance sound. And the past has shown there is plenty of room for both, and combinations. 6
The current state of electronic performance keyboards and their limitations
Many current electronic synthesisers being marketed as performance keyboards lack the control possibilities seen in acoustic instruments, and are often very similar to one another. The key to there usefulness is often just the variety and novelty of the samples they contain. They are all used in a similar way: a keyboard note press triggers a sound: Aftertouch is used to filter or modulate the sound while it plays. The pitch wheel alters the pitch in a clichd fashion.
The use of effects processors to augment instruments
Effects processors serve to enrich the response of the instrument as well as changing its sound. A good example is delay: A complex, interesting and slightly unpredictable sound can be generated with a few notes. The control of the 'delay-instrument' is more complex, and interesting than without delay: The output depends significantly on the player's input sometime before. It is natural therefore to consider the general class of instruments in which the sound output at a given time depends on the history of input by the player. This shall be the main consideration in the designs described later. In retrospect, acoustic instruments exhibit 'temporal complexity' in the control of their sound, which certainly contributes to their musical value.
Unprocessed sounds from sample-playback keyboards have a very static quality: On repetition, exactly the same sound is output. Apply an effects processor and this is not true as many effects algorithms are time dependent and/or highly sensitive to initial conditions. The control may be uninteresting note on/off but the sound in itself is interesting. This changing quality is very apparent in real instruments like the piano, and is an important design consideration later. The question arises 'how far can temporal complexity alone be musically useful without using 'changing sounds?'

The Yamaha VL1

The Yamaha VL1 is the first generally available synthesiser to emulate the rich response of acoustic instruments, and the main inspiration for this project. It is one of the few today to take an integrated approach to being a musical performance instrument rather than a synthesiser with a keyboard attached. A synthesiser may be capable of producing sounds similar to the VL1 with much effort, but a performer can only become involved and produce good music if the whole
instrument is good: the physical side and the response as well as the synthesiser. The WX7 windcontroller is relatively simple and physically unappealing by comparison with a saxophone, yet it can be used to stunning effect with the VL1. This demonstrates the importance of the 'response feel' or temporal complexity of the instrument over the 'physical feel', and hence provides some validation for the use of the WX7 in the following designs. In the VL1 the synthesis is tightly bound to the control response, because it is based on a waveguide model of real instruments: While the VL1 is admired for the 'new' instruments which can be constructed, its response characteristics are inevitably constrained to the waveguide model.

Analog instruments in the 70's
The explosion in analogue keyboards used by the pop industry since the 70's has had a continuing, if sporadic, influence. Electronic integration had allowed more complex functions than were possible in the days of the Theremin: The keyboard controllers were augmented with panels of dials and switches linked to filters, low frequency oscillators, pulse width modulators etc. Maybe
it wasn't the original intention, but the dials created many performance possibilities in the hands of people such as Brian Eno. Effects such as portamento transform the feel of a traditional keyboard. There was interest in windcontroller-synthesisers: An instrument called 'The Lyricon' was praised for its expressiveness. The use of processing such as plate reverberation, flanging and echo were used as part of a performance keyboard just as for an electric guitar. Sometimes in recordings it is difficult to distinguish the use of processing as part of a performance from something which is applied afterwards, and therefore miss the value of processing in performance.

The MIDI era

The keyboard has continued to be the universal control device for electronic instruments. MIDI is really based around a keyboard architecture. There is some processing of MIDI data on some keyboards. For example arpeggiation, one finger chording. These effects can be useful but also easily become clichd. The irony of MIDI, 'Musical Instrument Digital Interface' is that it has led to the emphasis on performance being reduced. This is due to the sequencer. Some people do use the sequencer in a performance context, for instance the Utah Saints, but this is far from main stream.

The sampler

The sampler is a superb tool for composition but it takes imagination to turn it into a performance tool, something which is left to the user: You cannot just pick a sampling keyboard up and start playing. To a great extent the utility in playing a performance patch on a sampler comes from the novelty of the recorded sounds, more than the subtlety of expression with which these sounds can be controlled. As such, the patches can easily be overused.
The latest trend in synthesisers : control
There has been a trend over the last two years to revitalise the synthesiser market with keyboards that have better claim to being called performance instruments, both in the physical quality of controlling devices and more importantly the quality of the sound and its response to control.
The Yamaha VL1 is based on the waveguide technology developed at CCRMA by J.O.Smith primarily. See Smith (1992) for an introduction to waveguide synthesis. Waveguide synthesis is 14
an efficient scheme for modelling acoustic instruments in which the wave motion is primarily in one dimension. All harmonic instruments are of this form, as harmonics are a product of a one dimensional wave equation. The art to waveguide synthesis is the incorporation of the control signals in to the model. Precise information on this is not generally available. The WX7 or WX11 windcontrollers are used, in addition to the modulation wheels, foot pedal and keyboard. The instrument is duophonic and very impressive. As well as delivering convincing imitations of real acoustic instruments, it can be used to generate completely abstract ones. Listen to the tape recording for examples. Yamaha plan to release a 16 note polyphonic version soon. It is worth mentioning the build quality and style of the instrument: It is much more expensive, and closer to the aesthetics of classical instruments than the conventional keyboard synthesiser.

The dynamics of vel1 are very simple but effective. vel1 'leaks' at a constant rate and breath control 'tops' vel1 up. Obviously the upper and lower levels have to be limited. On reflection it would be an interesting to make the 'leak' a function of vel1; then a steady breath value would eventually lead to a steady vel1 value other than zero or maximum.
3.3.3 A dynamic additive synthesis instrument using 2 KAWAI K1s
The K1 conveniently has 13 sine wave harmonics as presets. There have been many keyboards produced with drawbars for controlling harmonics. Here the idea is to use the lower keys on a keyboard to interact dynamically with the harmonic levels, whilst the upper keys play notes consisting of these harmonics.

Instrument description

One of the k1's is used as the controlling keyboard. The lowest octave starting at C is used to effect the harmonic levels: Hitting a key hard makes the corresponding harmonic level rise faster. Repeated hitting adds to the 'velocity'. The velocity is being leaked so eventually the harmonic level returns to zero. The upper keys form a monophonic keyboard which plays notes consisting of the mixed harmonics.
Notes on the code, additive.c
The principals are very similar to the previous programs, with slight reorganisation. The dynamics are more complex, as the harmonic level 'velocity', hvel, is a dynamic variable aswell as the harmonic level itself, hlevel. It is very important for the perceived unity of a tone that the harmonics do not change relative to one another to fast.
3.4 MIDI controllers with an SGI Indy running Csound
The use of Csound in realtime does not appear to be well documented. The unexperienced reader is referred to the Appendix for an introduction to some general techniques which are important.
3.4.1 A bird-like instrument using the WX7
The three programs birdy1.orc, birdy2.orc, birdy3.orc, were produced in a very experimental manner. The key idea is to apply a damped resonant filter to the control signals. The second two programs are just different combinations of two resonant filters.

It is important to note that only sine waves are used. All the real processing is done at the control rate.
birdy1.orc Sudden changes in breath cause a 'ripple' on the pitch output. Closing the reed raises the resonant frequency from 0 to just sub audio. With an open reed the pitch can be controlled by breath. With a closed reed the pitch can only be controlled by the keys.
birdy2.orc This is similar to birdy1.orc, except 2 sine tones mix. For a closed reed they are a fifth apart. Their interval for an open reed is variable and difficult to control exactly. This provides some interest.
birdy3.orc Similar to birdy2.orc, except that the tones are in unison when the reed closes, and one tone ripples much less.
Notes on the code, birdy1.orc birdy2.orc birdy3.orc
The orchestras are divided into the MIDI collection instrument and the control processing and synthesis instrument. This is so that a continuous, unbroken, sine tone can be generated despite the midi instrument switching on and off. The smoothed breath control, gkv, is resonantly filtered 30
by applying it as the driving force to a damped simple harmonic oscillator. Global variables gkx, gky are used to integrate the differential equations. The input is subtracted from the 'position', gkx, to generate a pitch offset for the sine tone. The resonant frequency is changed by controlling the integration time increment, gkdt, from the reed control.
3.4.2 A whistle-like instrument using the WX7
This instrument arises from the observation that filtered noise produces a very natural tone. A minimal amount of control is required to create a convincing whistle sound.
At low breath the sound is noisy and rough. As breath is increased, the pitch rises a little and the tone becomes more focused. Switches between notes slightly overlap. At higher breath still a sequence of harmonics are mixed in.
Notes on the code, whistle.orc
The noise filter is fourth order achieved using to 'reson's. Removing one of the resons gives a very breathy sound. A little dynamic variation is applied across the scale: High notes respond faster and have less overlap than low notes. The overlap is deliberate here in contrast with birdy1.orc. It is achieved using linenr which extends an instrument duration beyond the note-off.
3.4.3 A brass-like instrument using the WX7
Waveshaping is a very efficient method of harmonically distorting a signal, and is therefore worth investigating for realtime.
The breath controls volume and timbre off the sound, which becomes brighter at higher volumes. The reed effects pitch. The lower keys have sluggish response compared to the upper keys. There is a slight 'attack' when switch between notes. An interesting effect occurs when the breath increases sharply: Instead of perceiving a steady change in timbre, the sound takes on a kind of steady 'transition timbre'.
Notes on the code, wave.orc
The orchestra is structured into midi collector and synthesiser as for birdy. gbuzz is used for its rich harmonic content, which interacts more when waveshaped. The values used were found by experimentation. Some other options are commented out in the code. Two copies of the wave synthesiser play together, but each is controlled by slightly different dynamics. This helps to enrich the sound and add dynamic interest.

receiving control messages, at least for the SGI Indy. However, controller 7 can be read with chpress; mono and poly aftertouch with aftouch; and pitch-bend with pchbend.

Control rates

The MIDI control signals only have a resolution of 128, so before applying to control dynamics or synthesis, they must be filtered otherwise glitches will appear in the audio output. There is not really a wholly satisfactory way of achieving this easily. Depending on the application good results can be achieved with port. This can be used to do dynamics processing as well if long time constants are used. One draw back of port is that it resets its initial value each time an instrument starts using it. This can be circumvented by emulating port with an expression using global variables:
gkout = gkout + ( gkin - gkout ) / giconstant

Global variables

These are useful generally for tying several Csound instruments together into a group-instrument, and providing continuity in the audio output. The latter is especially important if dynamic processing of the control input is required.

Appendix C

A complete listing of the code
Atari Lattice C code weird.c.. granny.c.. additive.c. mus_libd.h. midi.c.. midib.c.. 59 59
Csound midi.sco.. command line. birdy1.orc. birdy2.orc. birdy3.orc. whistle.orc.. 65 67
wave.orc.. conga.orc.. natural.orc..
SGI Indy C code delay4.c.. solo.c.. 74 76

weird.c

/** /** /** /** weird.c A windcontroller-arpeggiator instrument Use the WX7 Dylan Menzies-Gow August 95 **/ **/ **/ **/
#include <mus_libd.h> #define #define #define K qwerty_input() LOWER SPAN 20 70
void fill_table(int *); void process_midi(void); void process_note(void); int delay[128]; int jump=0; int PB=64; int pitch=73; int count=0; int vel=0; int key; void main( void ) { fill_table(delay); clear_midi_buffer(); prog_change(1,5); control_change(7,1,0); while( !K ) { process_midi(); count++; if (count > delay[PB]) process_note(); } } /* Calculate next note and send MIDI */ /* Receive and process and MIDI input */ /* /* Windchimes on the Korg T3 */ Reset volume to zero */ /* Table for calculating note length from reed control */ /* Current jump between successive notes */ /* Current reed control value */ /* Initial pitch = hands off pitch */ /* Counter used for giving length to each note */ /* Velocity of last MIDI note-on received */ /* Current key being pressed */
void process_midi(void) { int type, data1, data2, channel; type = get_midi_event(&data1, &channel, &data2); switch( type )
{ case PITCH_BEND : { PB = data2; break; } case NOTE_EVENT : if (data2>0) { vel = data2/2; key = data1; if (data2>0) jump = data1-73+128; /* 73 -> no hands gives zero jump */ /* 128 -> an aid to modulo arithmetic later */ /* ( % does not work with negative numbers */ if (data1>=0x4a) { midi_note(pitch,1,0); pitch = data1-12; midi_note(pitch,1,90+vel); } break; } case CONTROL { data2*=3; data2*=(1+PB/64); /* Harder to blow down norrower gap */ /* -this compensates reduced flow */ if (data2 > 127) data2=127; if (data2 < 5) data2=0; control_change(7,1,data2); } } } /* Limit volume within MIDI range */ : if (data1==7) /* Give accent to 'special' note */ /* Reset the current note value */ /* Reed control */

void process_note() { count=0; /* Reset timer */
if ( jump != 128 ) { midi_note(pitch,1,0); /* Kill last note */ pitch -= LOWER; pitch += jump; pitch %= SPAN; pitch += LOWER; midi_note(pitch,1,64+vel); /* Start new note */ }; /* Calculate next note by adding 'jump' modulo */ /* 'SPAN' with offset 'LOWER' */
void fill_table( int *table) { int i,j; for(i=0; i<128; i++) { j = i; if (j<64) table[i] = 1000000 else table[i] = 1000/(j-63); } }

granny.c

/** /** /** /** /** /** /** /** /** /** /** /** /** granny.c Dynamic-granular-windcontroller instrument Use the WX7 This program was initally written for a multi patch on a Yamaha SY55. The key features of the patch are : Channel 1 : a short attack and decay envelope on a breathy sound Note reserve = 16 Channel 2 : a much longer attack and decay on a 'digital' sound. Note reserve = 7 Dylan Menzies-Gow, August 95 **/ **/ **/ **/ **/ **/ **/ **/ **/ **/ **/ **/ **/
#include <mus_libd.h> void dynamics(void); void grains_out(void); void process_midi(void); int bump(int); int step(int); int BC; int PB; int note int main_note = 0; float vel1=0; /* Latest breath control value */ /* Latest reed control value */ /* Latest key pressed */ /* The last note actually played */ /* The velocity on channel 1, a dynamic variable */
void main(void) { int wait; control_change(7, 1, 127); /* Volume on channel 1 stays constant at maximum */ while(!qwerty_input()) { process_midi(); grains_out(); dynamics(); /* Receive any MIDI and process */ /* Calculate if sound shall be output, then output */ /* Process the dynamic variable(s) */ /* Pause */
for(wait=1; wait<5000; wait++); } }
void process_midi(void) { int event, data1, data2, channel, i; event = get_midi_event(&data1,&channel,&data2); if (event==NOTE_EVENT) { if (data2>0) note=data1; else { for(i=0; i<5; i++) midi_note(main_note,2,0); main_note=0; } } else if (event==CONTROL && data1==7) { BC=data2; vel1 += data2 * 0.05 /* Dynamic velocity is effected by breath here *?/ /* Set volume on channel 2 */ /* This is not dynamic */ } else if (event==PITCH_BEND) { PB=data2; pitch_bend(2, PB/2); /* Reed control of pitch on channel 2 */ } } if (vel1 > 127) vel1 = 127; /* Upper velocity limit */ control_change(7, 2, BC); /* Note off */ /* 5 of the last notes to start, at the same pitch, on channel 2 are killed */ /* Note on */
void grains_out(void) { /* Notes are started according to a pseudo-poisson process */ /* ( like geiger counter clicks ) */ if ( rand()<(int)(step(vel1) ) ) /* Note start more likely if vel1 is bigger */ midi_note(40, 1,vel1); if ( rand()<(int)(step(BC)*0.02) ) { midi_note(note, 2,127); /* Velocity is fixed, but volume is controlled in process_midi */ main_note = note; } /* Register that a note has been started */ /* on the current key value */ /* Use dynamic variable vel1 */

/********************************/ /* Include Standard Headers */ #include <stdio.h> #include <stdlib.h> #include <gemlib.h> #include <osbind.h> #include <math.h>

#define TRUE

#define FALSE 0 #define WAIT 0 #define IMMEDIATE 1 #define NOTHING 0
#define NOTE_EVENT 1 #define PITCH_BEND 2 #define CONTROL 3 #define POLY_PRESS 4 #define NEXT_MIDI (unsigned char)Bconin(3)&0xFF /* FUNCTION DECLARATIONS */ int random(int, int);
void midi_note(int, int, int); int get_midi_note(int *, int *, int *); int get_midi_event(int *, int *, int *); unsigned char get_next_midi(int); void clear_text_buffer(void); short qwerty_input(void); char input_char(void); void Move_cur(char, char); long timer(void); void pause(int); void main(void); void pitch_bend(char, char); void control_change(char, char, char);
void prog_change(char, char); /*********************************************/ /* THE SOURCE CODE FOR THE LIBRARY FUNCTIONS */ /*********************************************/
/* RANDOM NUMBER GENERATOR */ int random(minm, maxm) int minm, maxm; { static short first_time = TRUE; unsigned short value; int range, rand_val; if (first_time) { srand( timer() ); first_time = FALSE; } value = rand(); range = maxm - minm + 1; rand_val = (((long)value * range) / 32768) + minm; return (rand_val); }
/* MIDI NOTE PLAYER */ void midi_note( pitch, channel, velocity ) int pitch, channel, velocity; { unsigned char midiword[3]; midiword[0] = 0x90 + (unsigned char)channel - 1; midiword[1] = (unsigned char)pitch; midiword[2] = (unsigned char)velocity; Midiws(2, midiword ); } void pitch_bend( channel, bend ) char channel, bend;
{ unsigned char midiword[3]; midiword[0] = 0xE0 + (unsigned char)channel - 1; midiword[1] = 0; midiword[2] = (unsigned char)bend; Midiws(2, midiword ); }
void control_change( num, channel, val ) char num, channel, val; { unsigned char midiword[3]; midiword[0] = 0xB0 + (unsigned char)channel - 1; midiword[1] = (unsigned char)num; midiword[2] = (unsigned char)val; Midiws(2, midiword ); }
void prog_change( channel, prog ) char channel, prog; { unsigned char midiword[2]; midiword[0] = 0xC0 + (unsigned char)channel - 1; midiword[1] = (unsigned char)prog; Midiws(2, midiword ); }
/* FETCH NEXT MIDI NOTE EVENT */ int get_midi_note(pitch, channel, velocity) int *pitch,*channel,*velocity; { static unsigned char last_status = 0; unsigned char midibyte; int note_received = 0; int more_to_get = 1; while(more_to_get) { if(Bconstat(3)) { /* If there's MIDI present */
midibyte = get_next_midi(IMMEDIATE); /* Fetch the byte */ if (midibyte != 0) { /* If there's still a valid byte there */ /* It's a STATUS byte */

if(midibyte >= 128) {

last_status = midibyte; if((midibyte&0xE0) == 0x80) { note_received = 1; *channel = midibyte&0x0F; *pitch = get_next_midi(WAIT); *velocity = get_next_midi(WAIT); } } else { note_received = 1; *channel = last_status&0x0F; *pitch = midibyte; *velocity = get_next_midi(WAIT); } } } if (note_received) { *channel += 1; /* Turn note OFF's into velocity 0 */ /* This is a DATA BYTE */ /* Last Status was Note Event */ if((last_status&0xE0) == 0x80) { /* Note Event */

whistle.orc

; ; ; ; ; ; whistle.orc A windcontroller instrument. Filtered noise with added sine tones for harmonics. Increased breath tightens the filter. Pitch is affected by the breath as well as keys and reed controls Dylan Menzies-Gow, August 1995
sr = 15000 kr = 1000 ksmps = 15 nchnls = 1 ga1 gkv gkb init 0 init 0 init.2 ; filtered volume control ; filtered pitch bend
instr 1 kbend pchbend gkb = icps cpsmidi irise = 60/icps ; limit rise time : trills ; less for higher notes kvol chpress 10000 gkv = gkv + (kvol-gkv)/10000*icps ; smooth out MIDI resolution ; make higher notes respond quicker kcps = as kbw icps*(.8+gkb)*(1-10/gkv) 0.4 gkb + (kbend-gkb)/50

rand gkv,.45 = 5000/gkv

; one reson for noisy whistle: a1 a1 km1 km2 km3 km4 km5 km6 a3 a4 reson as, kcps, kbw reson a1, kcps, kbw tablei tablei tablei tablei tablei tablei gkv/20+60, 12 gkv/50+60, 11 gkv/50+40, 11 gkv/50+20, 11 gkv/50+10, 11 gkv/50+00, 11 ; alter response of overtones here.
oscil km2, kcps*3, 1 oscil km3, kcps*4, 1

a5 a6 a7

oscil km4, kcps*5, 1 oscil km5, kcps*6, 1 oscil km6, kcps*7, 1

a1 a1 a1 ga1

balance a1, as = a1*km1 + (a3+a4+a5+a6+a7)*2000 a1, irise, 0.1, irise ; fade out note to prevent glitches

linenr out = endin a1

instr 99 a1 ga1 reverb out = endin instr 100 endin aga1, 1.5

wave.orc

; ; ; wave.orc A windcontroller instrument based on wave shaping. Mixes two elements with different response times.
sr = 15000 kr = 1000 ksmps = 15 nchnls = 1 ga1 gkv gkb init 0 init 0 init.2
gkv2 init 0 ;gkp init 0 ;gkp2 init 0 ; ; This collects midi data on channel 1 possibly several notes at once. instr 1 ;kcps cpsmidib ;kcps init icps
kbend pchbend gkb = icps cpsmidi gkcps =

gkb + (kbend-gkb)/50

icps*(.8+gkb)/4 ; 2 octaves down
gkvol chpress 10000 ;gkp = ;gkp2 = ;gkp = ;kvfluct gkp + (kcps-gkp)/200 gkp2 + (kcps-gkp2)/500 kcps randi (1-gkv/10000)*0.8, 10,.12
;kvfluct = kvfluct + 1 endin
; This is SYNTH CENTRAL instr 100

kdv kdv gkv

(gkvol-gkv)/4000*gkcps ( kdv>0 ? kdv : kdv*2 ) ; quicker decay than attack gkv + kdv; smooth out MIDI resolution ; make higher notes respond quicker gkv2 + (gkvol-gkv2)/10000*gkcps

gkv2 =

;a11 gbuzz gkv, gkcps, 10, 2, 0.1, 1 ; sliding door ;a11 gbuzz gkv, gkcps, 1, 4, 0.5, 1 ; woody up top, helicoptor down below ;a11 oscil gkv, gkcps, 1 ; simple, hollow, elecroacoustic a11 a1 a22 a2 gbuzz gkv, gkcps, 100, 1,.5, 1 ; Brassy. = a11

gbuzz gkv2, gkcps, 100, 1,.5, 1 = a22 randi.2, 3,.12 ; Some random variation. a1/2*(1+koffset), 5, 0, 4096 ; waveshaping a2/2, 6, 0, 4096

koffset a1 a2 a1 a1

tablei tablei =

(a1+a2) * 7000

balance a1, a11

out ga1 = endin gkvol =

a1 ga1 + a1 0

conga.orc

; ; ; conga.orc A keyboard conga instrument. Dylan Menzies-Gow, August 95
sr = 32000 kr = 1000 ksmps = 32 nchnls = 1 ga1 init 0
instr 1 idec1 = idec2 = khp klevel ivel veloc imax =.3 ; max length of drum sound 0.00 0.02 ; normal rate of attenuation ; extra rate of attenuation when touching the drum

init 10000 init 1

koct octmidib kcps cpsmidib kdec2 aftouch 0.3 ;kv = ; additional attenuation caused by pressure
kv + (kat-kv)/1000 idec2+kdec2,.001,.001,.01 1,0,imax,1 ; generate a variable indicating a note-off

kgate linenr kdummy

linenr
; extend instr life long enough for sound to complete ;khp = klevel ;klevel ;a1 ;a1 ;a1 a1 a2 a3 khp * (1-kgate) ; During note-on khp decays = klevel * (1-idec1-kgate) 1, 1,.01

expseg

randi 200, kcps*(1+kat)*4 gbuzz 200, 400, 100, 1,.5, 1 oscil 200, 400, 1 loscil loscil loscil 200, 400, 20, 200, 0,0,16000 200, 400, 21, 200, 0,0,16000 200, 400, 22, 200, 0,0,16000 koct * 25, 30 ; 20 = "conga1.aiff" ; 21 = "conga2.aiff"
; 22 = "conga22.aiff"

kmix1 tablei a2 =

a3 * kmix1 + a2 * (1-kmix1) koct * 30, 30

kmix2 tablei a1 =

a2 * kmix2 + a1 * (1-kmix2)

;a1 a1

reson a1, kcps, kcps = out a1 * klevel * ivel a1 ga1 + a1

natural.orc

; ; ; ; natural.orc A poly aftertouch keyboard instrument Filtering a natural sound to create pitch/harmony Dylan Menzies-Gow, August 95
sr = 32000 kr = 4000 ksmps = 8 nchnls = 1

ga1 gkb

init 0 init 0
instr 1 kbend pchbend gkb = icps cpsmidi icps = gkcps = icps*4 ; 2 octs up 0.4

gkb + (kbend-gkb)/200

icps*(.8+gkb)
kchpr aftouch.002 ; for EPS. ;kchpr chpress.001 ; for WX7
reson ga1, gkcps, gkcps/200 a1*kchpr+ga1 ; mix in original sound to maintain power across the spectrum amix, ga1

amix = ga1

balance endin
instr 100 out ga1,a2 ; ga1 in endin ga1 soundin "stream.aiff" ; 'in' can be used to read sound directly from the ; sound port if implemented.

delay4.c

/****************************************************************************** ******************************************************************************* Description: Tool for balancing a 4 speaker array by ear. Quad echo, using one delay line with taps, mono input from microphone. Author: Date: Comments: Dylan Menzies-Gow, JOShUA Interactive. 17/5/95 Have fun.
******************************************************************************* ******************************************************************************/
#include <audio.h> #define SAMPLE_RATE 44100 #define DELAY 40000 void main(void) { ALport port_address_out; ALport port_address_in; /* Pointer audio port for SGI Indigo */ /* Pointer audio port for SGI Indigo */
ALconfig config_in, config_out; long buf[] = { AL_CHANNEL_MODE, AL_4CHANNEL,
AL_INPUT_SOURCE, AL_INPUT_MIC, AL_INPUT_RATE, SAMPLE_RATE, AL_OUTPUT_RATE, AL_RATE_INPUTRATE, AL_MIC_MODE, AL_MONO, AL_SPEAKER_MUTE_CTL, AL_SPEAKER_MUTE_ON, AL_LEFT_INPUT_ATTEN, 0, AL_RIGHT_INPUT_ATTEN, 0 }; short delay_line[DELAY]; /* = (short *)calloc( DELAY*4, sizeof(short)); */ long count1, count2, count3, count4; short samples[4], S; config_in=ALnewconfig(); config_out=ALnewconfig(); ALsetwidth(config_in, AL_SAMPLE_16); ALsetwidth(config_out, AL_SAMPLE_16); ALsetchannels(config_in, 2); ALsetchannels(config_out, 4); ALsetparams(AL_DEFAULT_DEVICE, buf, 6);
ALsetqueuesize(config_in, 4000); ALsetqueuesize(config_out, 4000); port_address_in = ALopenport("input","r",config_in); port_address_out = ALopenport("output","w",config_out); for(count1=0; count1<DELAY; count1++) delay_line[count1] = 0; count1=0; count2=DELAY/4; count3=DELAY/2; count4=DELAY*3/4; while(1) { ALreadsamps(port_address_in, samples, 2); delay_line[count1++] = (samples[0] += delay_line[count1]>>1); samples[1] = delay_line[count2++]; samples[2] = delay_line[count3++]; samples[3] = delay_line[count4++]; if (count1>=DELAY) count1=0; if (count2>=DELAY) count2=0; if (count3>=DELAY) count3=0; if (count4>=DELAY) count4=0; ALwritesamps(port_address_out, samples, 4); } }

solo.c

/****************************************************************************** ******************************************************************************* An implementation of the delay line for SOLO by Stockhausen. Feedback, microphone levels and timing are all sequenced. Performance output on channels 1,2. Click track on channel 3,4. Set number of clicks per period, for each section in char clicks[]. (c) Dylan Menzies-Gow, June 95. ******************************************************************************* ******************************************************************************/
#include <audio.h> #include <stdio.h> #define SAMPLE_RATE 44100 #define SPEED 1 #define MAX_DELAY 2231460 #define SECTIONS 6 void main(void) { ALport port_address_out; ALport port_address_in; long buf[] = { /* Pointer audio port for SGI Indigo */ /* Pointer audio port for SGI Indigo */
ALconfig config; /* Temporary varialbe to set SGI audio parameters */ AL_CHANNEL_MODE, AL_4CHANNEL, AL_INPUT_SOURCE, AL_INPUT_MIC, AL_INPUT_RATE, SAMPLE_RATE, AL_OUTPUT_RATE, AL_RATE_INPUTRATE, AL_MIC_MODE, AL_MONO }; short delay_line1[MAX_DELAY]; short delay_line2[MAX_DELAY]; char mic_level1_table[] = { -1, /* extra beat */
3, -1, -1, 2, -1, -1, 0, 2, 3, -1, -1, 4, 2, 3, 0, 3, 2, 3, -1, 4, -1, -1, 3, -1, -1, -1, 5, -1, -1, 4, -1, -1, -1, 3, -1, 2, -1, 3, -1, -1, -1, 2, -1, 2, -1, -1, 1 -1, 2, -1, -1 }; char mic_level2_table[] = { -1, -1, 2, 1, -1, 0,1, -1, -1, 1, 2, 1, 3, 0, 2, 2, 2, 0, 0, -1, 1, 0, 2, -1, 3, 2, 1,
-1, 4, 3, -1, -1, -1, 2, 1, 1, 1, 1, -1, 1, 2, -1, -1, 2, -1, -1, 3, -1, 2, -1, 2, -1 }; char feedback_level1_table[] = { -1, -1, 2, 0, 1, 1, -1, -1, 1, 1, 0, 1, -1, 1, 1, 0, 0, 1, 2, 1, -1, 3, -1, -1, 2, 0, 2, -1, 3, -1, -1, 2, -1, -1, -1, 1, 1, -1, -1, 1, 2, -1, -1, 0, 1, 1, 0, 1, -1, -1, 2, -1 }; char feedback_level2_table[] = { -1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1, 1, -1, 0, 1, 1, 1, 0, 1, -1, -1, 0, 1, -1, -1, 1, 1, -1, -1, 2, -1, -1, -1, -1, 0, 0, 0, 1, 0, 0, 1, 0, -1, -1, 1, -1, -1, -1, -1, 1, 2, -1 }; char clicks[] = { 4, 4, 4, 4, 4, 4 }; char periods[] = { 12, 8, 7, 6, 9, 10 }; /* NB extra period at start for sync */ float delay_times[] = { 6, 14.2, 19, 25.3, 10.6, 8 }; long delay_sizes[6]; long click_counts[6]; short del_samp[4], mic_samp[4]; long count; long delay_pos, delay_size, click_pos, click_count; char mic_level1, mic_level2, feedback_level1, feedback_level2; char period, section, period_total; /* Open up SGI port for audio output */ config=ALnewconfig();/* Default structure for audio configuration */ ALsetwidth(config, AL_SAMPLE_16); ALsetchannels(config, 4); ALsetparams(AL_DEFAULT_DEVICE, buf, 10); ALsetqueuesize(config, 10000); port_address_in = ALopenport("input","r",config); /* Open SGI audio port */ /* Open SGI audio port */ port_address_out = ALopenport("output","w",config); for(count=0; count<MAX_DELAY; count++) { delay_line1[count] = 0; delay_line2[count] = 0; /* 16-bit samples */

 

Tags

LE40R89BD X-550 MF-FM37s4K Audi A5 HT-150 XR-4200R NV-GS11 TX-DS676 Urc-6211 SMX-F40 Blue LBP-1210 DTR-1R-2 Dimage Z1 V66LT L1246EL P4SGL-VM Heidleberg CD51 SW80010-M RQ-SX43 DR-MH200 770R-serials-407104738-thru Photosmart M517 RX-V450 Cuvlvm Roadster CDP-311 Arxd 109 MFC-6490CW Dmcfs10 Piano 41135 NV-GS250 CLP-315W XAA Midi Wind Controller ME-6B Radar GUN Binatone A350 2800-600 DVB712 Powerseeker 127 SPH-A660 Futaba 3PM LE32B554 MDE3706AGW Projectmix For Sale RF26dash CTK-451 VDR-D310EG PC140 Alesis QS82 HBH-PV710 CQ-VA7800N CLX-8380ND XAA SA3124 5000 VA Wind Controller WF-T1141tp3 EWF1092 F45FD Pctv 300I Guide ML-1660 Review 80 F 71300 MFC-620CN CDX-GT110 780 1 1125CR LAV70330-W PS-P2 0 Motorola W218 8624 400 LG C970 Pocketdv 5700 DCD-960 EWF1090 Asus L2D Quest 2 7600GTR Plug-IN 150SV Itrip DMX6fire2496 AX-700S Twain PRO 1805-S253 CD4450B KV-28FQ86B Mount Reference Card 32PW9765 7908vowbra SMT-1721P Vista M12 26PFL3405H LT240 Effects Sxc-2003 CDR570 D1100 UT-106 PKG-1000P LS743

 

manuel d'instructions, Guide de l'utilisateur | Manual de instrucciones, Instrucciones de uso | Bedienungsanleitung, Bedienungsanleitung | Manual de Instruções, guia do usuário | инструкция | návod na použitie, Užívateľská príručka, návod k použití | bruksanvisningen | instrukcja, podręcznik użytkownika | kullanım kılavuzu, Kullanım | kézikönyv, használati útmutató | manuale di istruzioni, istruzioni d'uso | handleiding, gebruikershandleiding

 

Sitemap

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101