The event opcodes are some of my favorites in all of Csound. They are highly versatile in their application, as they can be used for algorithmically generating notes, transforming scores events, creating multiple interfaces to a single instrument, for triggering grains in a granular patch, etc. The list goes on and on.

Today’s example uses the event_i opcode to generate multiple score events from a single score event. The basic run down is this: Each instr 1 event generates 5 events for instr 2. Each of these 5 events are staggered in time, with the delay between notes set by the idelay parameter. The pitches also have a fixed half-step sequence of [0, 3, 7, 5, 10] in relation to the base pitch specified in the ipch parameter. Take a listen.

Download event_i.csd

Here are a couple of exercises to help get you going:

Exercise: 1

Create a new note pattern sequence. The last parameter of event_i is used to set the relative pitch. Set the value for x in ‘ipch * 2 ^ (x / 12)’.

Exercise: 2

Alter the rhythm. The third parameter controls how far into the future a particular event is trigger. The example uses integers, though using floats such 1.5 and 3.25 can completely transform the characteristics of the output.

Exercise: 3

Write a short etude with your modified instrument.

2 thoughts on “Event_i

  1. I’m hoping to explore event_i more thoroughly this month. Seems to me the phrases generated by an instrument that uses this opcode could be varied in a number of useful ways — not just pitch and rhythm, but the timbres of the generated events. Anything in the p-field list. Set up a linseg, line, or lfo that generates some data and then feed it to a p-field.

    There are many ways to create mutating soundscapes in Csound, but this approach has the advantage that it puts everything “under the hood” of the instrument that has the event_i in it.