Dr.Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel 1: Algoritmische Kompositie

Hogeschool Gent - Departement Muziek en Drama


<Naar Inhoudstafel>

Nota: Deze paragraaf is nog niet afgewerkt!

1200

 

Samplers

 

 

Samplers zijn in feite de technologische opvolgers van wat in de vroegere analoge studiotechniek bekend stond als tape-loops. Rond dergelijke tape-loops werden reeds in de jaren na de tweede wereldoorlog (klavier)instrumenten gebouwd zoals bvb. de melotron.

Het principe is erg eenvoudig: van een bruikbaar geachte klank wordt een klein stukje op een stuk magnetische band opgenomen. Van dat stukje band wordt het uiteinde aan het begin vastgekleefd en dan via een bandopnemer eindeloos afgespeeld. Door de snelheid van de bandopnemer te sturen, kan nu de oorspronkelijke toonhoogte (en duur...) van het geluid over een of meer oktaven geregeld worden.

Een moderne (midi) sampler doet in wezen niets anders, tenzij dan dat het opslagmedium hier werd vervangen door hetzij floppy-disks, hetzij RAM- geheugens of geheugenkaarten, en , dat de gegevensopslag digitaal gebeurt in plaats van analoog.

Hieraan zijn onnoemelijk vele voordelen verbonden: het is middels samplers mogelijk de klank (het sample) te editten en onbeperkt te kopieren zonder kwaliteitsverlies.

 

[. uit te werken: ref. Artikel Hugh Davies ‘A History of Sampling’, cfr.bibiografie]

 

Toen de midi-standaard werd afgesproken, was er helemaal nog geen sprake van samplers enzomeer, zodat terzake in de eerste uitgaven van de standaard geen enkele afspraak kon gelden. Onder impuls van de diverse bouwers van samplers, werd de midi-standaard later uitgebreid met een reeks afspraken die het moeten mogelijk maken samples zelfs tussen diverse machines- onderling en via het midi-kanaal uit te wisselen.

 

MIDI-Sample data format:

Dit hier weergeven gegevens zijn gesteund op de appendices bij de midi- implementation sektie van de manual bij de 'Prophet 2000' sampler. Het data-formaat voor een data-dump van een sample (nooit in real-time!!!) ziet eruit alsvolgt:

 

start met system exclusive : F0 7E ......... F7

de non real time informatie komt na 7E !!

Handshaking word gebruikt wanneer de midi-loop gesloten is, d.w.z. wanneer midi out aangesloten is aan midi-in van het zendende toestel en midi-in aan midi-out van het ontvangende toestel.

De midi-code header omvat volgende gegevens:

- kanaal nummer

- sample nummer ( 0-16383)

- sample format ( 8-28 bits linear)

Dit is de resolutie waarmee de data in de file zijn opgenomen. Merk op dat men hier vooruitziend is geweest: immers resoluties tot 28 bits zijn voorzien. Dit is veel meer dan wat technisch nu en zelfs binnen een relatief verre toekomst mogelijk is.

- sample period ( 1 - 2.097.151 nanosec.)

Dit is de sampling rate, uitgedrukt als 1/f. Het voorziene bereik, uitgedrukt in samples per sekonde komt overeen met 1Ghz tot 336 Hz.

- sample lenght (0-2.097151 words Dit is het totaal aantal data-woorden waaruit het sample bestaat.

- sustain loop points

Dit zijn pointers naar plaatsen in het sample waar loops kunnen worden toegepast.

- sustain loop type ( forward only or backward/forward)

Hiermee kan worden gespecifieerd of de tevoren vastgelegde loops voorwaarts of over-en-weer toegepast moeten worden.

Na deze initiele gegevens volgt dan het data pakket zelf:

- kanaal nummer

- pakket nummer

- 120 databytes in lineair formaat wat dan overeenkomt met 60, 40, of 30 sample-words afhankelijk van het DAC formaat. Voor de Prophet 2000 omvat elk pakket 60 woorden.

- checksum for error correction

 

Daareenboven worden nog vier andere 'messages' gebruikt in sample dump en communicatie:

- sample dump request

- cancel dump

- Not Acknowledge

- Acknowledge

 

Vb.

DUMP REQUEST:

F0 7E cc 03 ss ss F7 : cc= channel number but is ignored

ss ss = sample requested , LSB first

For 16 samples the range of ss ss is:

00 00 tot 0F 00

ACK:

F0 7E cc 7F pp F7 cc= channel

pp= packet number

This is one of 4 handshaking flags

NAK:

F0 7E cc 7E pp F7 means:last data packet had error

please resend !

CANCEL:

F0 7E cc 7D pp F7 abort dump

 

WAIT:

F0 7E cc 7C pp F7 means "do not send anymore packets until I'm done with this one"

 

DUMP HEADER:

F0 7E aa 01 bb bb cc dd dd dd ee ee ee ff ff ff gg gg gg hh F7

aa= channel number

bb bb = sample number lsb first

cc=sample format , # of significant bits from 8-28

dd dd dd : sample period( 1/sample rate) in nanosec. LSB first

ee ee ee : sample lenght in words (LSB first)

ff ff ff : sustain loop start point ( word number ) lsb eerst

gg gg gg : sustain loop end point (word number) lsb eerst

hh : loop type (00=forwards only , 01=backwards/forwards)

 

DATA PACKET

F0 7E aa 02 ii <120 bytes> jj F7

aa= channel number

ii= running packet count (00-7F)

jj =checksum (EXOR of previous 7E,aa,02,ii,<120 bytes>)

 

vb.:sample rate sample period period in 7 bits (LSB first)

15 625 Hz FA00H nsec 00H 74H 03H

31 250 Hz 7D00H nsec 00H 7AH 01H

41 667 Hz 5DC0H nsec 40H 3BH 01H

 

Each data byte holds 7 bits . If the sample format is 8-14bit, 2 bytes form a word; 15-21 bits require 3 bytes/word ( giving 40 word per packer), and 22- 28 bits requires 4 bytes per word ( 30 words per packet). The receiver should be able to adjust depending on the sample format in the header. Information is left justified within the 7-bit bytes, and unused bits will be filled out with zeroes. For example, a sample word of FFFH will be sent as

01111111B 01111100B

A word of FFFH happens to represent a full positive value (000H represents full negative).

The checksum is the EXOR of 7E, (channel),02,packet number and the 120 data bytes.

 

BAUD RATE MIDI COMMAND FOR PROPHET 2000

Omdat het verzenden van lange samples via midi een halve eeuwigheid duurt (reden waarom het geen zin heeft dit in real-time te laten verlopen), heeft de fabrikant van de prophet voorzien in een versnellingsmogelijkheid. Dit echter door af te wijken van de midi-specifikatie. Verder dan een verdubbeling van de midi-baud rate kan je echter ook op de prophet niet gaan.

 

F0 01 7A <BAUD> F7

baud stands for an internal clock divide. It is calculated as follows:

500000/<baud> = baudrate

10H = normalbaud rate

8H = double speed

 

Overige normale Midi implementering:

System realtime:

F8 timing clock . Wanneer F8 ontvangen wordt wordt de arpegiator gestuurd

aan een tempo van 24 noten per vierde noot.

Bij transmit, wordt F8 uitgestuurd op elke 96ste noot waarop de arpegiator

wordt geklokt, hetzij intern hetzij vanuit midi.

Start:

FA dit start de midi-clock

Stop:

FC stopt de voormelde clock


Filedate:880804 - onaf!

<Naar inhoudstafel>

Naar homepage dr.Godfried-Willem RAES