0dbfs

0dbfs — Sets the value of 0 decibels using full scale amplitude.

Description

Sets the value of 0 decibels using full scale amplitude.

Syntax

0dbfs = iarg

Initialization

iarg -- the value of 0 decibels using full scale amplitude.

Performance

The default is 32767, so all existing orcs should work.

These calls should all work:

ipeak = 0dbfs
        

asig oscil 0dbfs,freq,1
out  asig * 0.3 * 0dbfs
        

and so on.

As for documentation: the usage should be obvious - the main thing is for people to start to code 0dbfs-relatively (and use the ampdb() opcodes a lot more!), rather than use explicit sample values.

Floats written to a file, when 0dbfs = 1, will in effect go through no range translation at all. So the nunbers in the file are exactly what the orc says they are.

[Note] BIG NB

All the main sample formats are supported, but I haven't got around to dealing with the char formats. Probably it's straight-forward...

I have tried to cover the main utils - adsyn,lpanal etc. But there are bound to be things missing, sorry.

Some of the parsing code is a bit grungy because I have a variable with a leading digit!

Examples

Here is an example of the 0dbfs opcode. It uses the files 0dbfs.orc and 0dbfs.sco.

Example 20. Example of the 0dbfs opcode.

/* 0dbfs.orc */
; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

; Set the 0dbfs to the 16-bit maximum.
0dbfs = 32767

; Instrument #1.
instr 1
  ; Linearly increase the amplitude value "kamp" from 
  ; 0 to 1 over the duration defined by p3.
  kamp line 0, p3, 1

  ; Generate a basic tone using our amplitude value.
  a1 oscil kamp, 440, 1

  ; Multiply the basic tone (with its amplitude between 
  ; 0 and 1) by the full-scale 0dbfs value.
  out a1 * 0dbfs
endin
/* 0dbfs.orc */

        
/* 0dbfs.sco */
; Table #1, a sine wave.
f 1 0 16384 10 1

; Play Instrument #1 for three seconds.
i 1 0 3
e
/* 0dbfs.sco */

        

Credits

Author: Richard Dobson
May 2002

Example written by Kevin Conder.

New in version 4.20