home *** CD-ROM | disk | FTP | other *** search
/ PC Musician 2000 / PC_Musician_2000.iso / PCMUSIC / NOTATION / SILENCE / README.TXT < prev    next >
Encoding:
Text File  |  1996-12-19  |  14.3 KB  |  404 lines

  1.  
  2.  
  3. <Picture>
  4.  
  5.  
  6.  
  7. S I L E N C E / Version 2.0
  8.  
  9.  
  10.  
  11. Vineyard Productions 
  12. 150 West 95th Street 
  13. Apartment 4-D 
  14. New York NY 10025 
  15. Telephone: (212) 222-4079
  16. http://www.pipeline.com/~gogins
  17. Email gogins@nyc.pipeline.com
  18.  
  19.  
  20.  
  21. 5 October 1996
  22.  
  23.  
  24.  
  25. Welcome
  26. What is WCsound?
  27. Software License
  28. Download and Installation
  29. Bibliography
  30.  
  31.  
  32.  
  33. Copyright (C) 1996 by Michael Gogins. 
  34. All rights reserved.
  35.  
  36.  
  37.  
  38. á 
  39. ------------------------------------------------------------------------
  40.  
  41.  
  42.  
  43.  
  44. Welcome
  45.  
  46.  
  47.  
  48. Welcome to Silence, a system for making music on computers by means of software alone. 
  49.  
  50.  
  51.  
  52. Silence is especially designed to support algorithmic composition and synthesis. I made it for my own very specific purposes, but I will be happy if you also find it useful. Silence consists of a number of components designed to work with each other, with Csound, with standard MIDI sequencers and soundfile editors, and with programming languages.
  53.  
  54.  
  55.  
  56. The basic idea is that you write whatever software you want or need to make notes, which are just six numbers each, and you put them into Silence. Silence then takes care of making the notes into music, either as MIDI sequences or as soundfiles (using Csound).
  57.  
  58.  
  59.  
  60. I have thrown in a bibliography of the books I used to make this system, also a page of links to sites I find useful in this field.
  61.  
  62.  
  63. Proprietary Executable Files in This Distribution WCsound.dllA Visual C++ 4.1 ActiveX object providing a graphical user interface, score manager, and Midi sequence translator for Csound.WCsound.exeA Visual C++ 4.1 standalone program that runs Wcsound.dll from the command line; useful for translating Midi sequences to and from Csound scores.Grifs.exeA Visual C++ 4.1 program that makes soundfiles using recurrent iterated function systems and the Gabor transform.Rifs.exeA Visual Basic 4.0 program that makes scores or soundfiles using recurrent iterated function systems and Csound. NOTE: Requires the Visual Basic runtime to work (VB40032.dll).LinMus.exeA Visual C++ 4.1 program that generates scores using Lindenmayer systems; uses WCsound.dll to manage the scores.ScrnMuse.exeA Visual C++ 4.1 program that translates screen shots of images from the Windows clipboard into WCsound scores, Csound scores, or Midi files; useful for translating fractals from Fractint into music; uses WCsound.dll to manage the scores. Also translates screen shots into Csound heterodyne filter analysis (ads) files; by then using Csound's adsyn instrument with the .ads file, you can turn the fractal image directly into a sound.MCsound.dllA MathLink program enabling WCsound.dll to serve as a Mathematica add-in. I sometimes use Mathematica for algorithmic composition and mathematical manipulation of scores.
  64.  
  65. á
  66.  
  67.  
  68.  
  69. Non-Proprietary Executable Files in This Distribution
  70.  
  71. Csound.exeA freely available software sound synthesis system that I have optimized for Win32 and extended with plugin opcodes.STK.OPCA public domain Win32 shared libary implementing Perry R. Cook's Synthesis Toolkit 95 as plugin opcodes for Csound.exe.
  72.  
  73.  
  74. ------------------------------------------------------------------------
  75. Software License
  76.  
  77.  
  78.  
  79. Silence is copyright (C) 1996 by Michael Gogins, all rights reserved.
  80.  
  81.  
  82.  
  83. This software is not freeware. 
  84.  
  85.  
  86.  
  87. You are permitted and encouraged to redistribute these files in the form of Silence.zip without charge or limit. You are not permitted to redistribute only a part of the proprietary executable files, or to modify the proprietary executable files and redistribute them.
  88.  
  89.  
  90.  
  91. There is no charge for purely private use of Silence. However, if you use any of the proprietary executable files listed above to make music for other people, or to create software for other people, you must purchase a software license by sending a check for $60 to the address above, payable toáMichael Gogins.
  92.  
  93.  
  94.  
  95. All music files (including Midi files, WCsound score (.osc) files, and Csound score (.sco) files) in this distribution are copyright by Michael Gogins. You are not permitted to play these files in public, or to perform the music in them in public, without written permission in advance by him.
  96.  
  97.  
  98.  
  99. Note that Csound.exe and STK.OPC are included in this distribution, but are not subject to this license. They have their own licenses under the terms of which they are freely available to use or modify for the purposes of education and research. Csound is copyrighted by MIT. The Csound copyright notice may be found in Csound.txt. STK.OPC is based on code and algorithms in the Synthesis Toolkit 95 by Perry R. Cook, with the exception of my implementation of his instruments as Csound opcodes, and the Synthesis Toolkit notice may be found in STK.txt; Mr. Cook's header files with his notes on patent issues may be found in the Rawwaves subdirectory of this distribution. 
  100.  
  101.  
  102.  
  103. In other words, you can get my version of Csound.exe from this distribution and use it as much as you like all by itself or with STK.OPC without owing me anything. However, if you use WCSound or any of the other proprietary files listed above to make music for the public, you owe me something.
  104.  
  105.  
  106.  
  107.  
  108. ------------------------------------------------------------------------
  109. Download and Installation
  110.  
  111.  
  112.  
  113. Silence requires Windows 95 or Windows NT for Pentium or higher microprocessors.
  114.  
  115.  
  116.  
  117. Silence likes to have a sound card and a Midi port installed.
  118.  
  119.  
  120.  
  121. Silence does not have a digitual audio waveform editor, a music notation editor, or a Midi sequencer built in. Silence is designed to work with other waveform editors and hard disk recorders, notation editors, and sequencers.
  122.  
  123.  
  124.  
  125. If you don't have Silence.zip, you can download it from here.
  126.  
  127.  
  128.  
  129. Once you've downloaded silence.zip, create a Silence directory on your hard disk and unzip the files in silence.zip into it.
  130.  
  131.  
  132.  
  133. The WCsound.dll shared library must be registered with Windows. If you simply run WCsound.exe, it will attempt to do this for you. If that fails, run:
  134.  
  135.  
  136.  
  137.  
  138.  
  139. RegSvr32.exe WCsound.dll
  140.  
  141.  
  142.  
  143.  
  144.  
  145. To enable Silence to work with other music applications, you must register "Edit" and "Play" actions for your Midi sequencer, soundfile editor, media player, etc., with the Windows shell ("My Computer" View menu, Options command, File types tab, Edit button, New button) for .mid, .wav, and perhaps .aif files.
  146.  
  147.  
  148.  
  149. And of course you must install Csound, either from silence.zip or from another archive such as the one at Leeds University.
  150.  
  151.  
  152.  
  153.  
  154. ------------------------------------------------------------------------
  155. What is WCsound?.. For that matter, what is Csound?
  156.  
  157.  
  158.  
  159. WCsound is a Windows 95 graphical front end, orchestra and score manager, and Midi sequence translator for Csound, one of the leading software sound synthesis systems for Unix and Windows. 
  160.  
  161.  
  162.  
  163. Csound is widely used both to teach computer music, and to realize computer music. It is perhaps the most widely used software sound synthesis system in the world, and is certainly the most widely used on IBM-compatible personal computers. Csound IS freely available and may be used without charge for education and research in accordance with its own software license and copyright. See the Csound.txt file for this copyright. 
  164.  
  165.  
  166.  
  167. Csound is available on the World Wide Web from many locations. The most useful location for the purposes of Silence is Leeds University, where John Fitch does us all a great service by maintaining several versions of Csound that run on IBM compatible personal computers, and that includes new opcodes contributed by engineers and composers all over the world. Another notable site for Csound is the Amsterdam Catalogue of Csound instruments.
  168.  
  169.  
  170.  
  171. However, Csound is a command-line program that reads a separate orchestra and score file, and perhaps other files, to produce a piece of music. WCsound provides a convenient graphical user interface for Csound; stores function statements (wavetable definitions), instrument definitions, and instrument statements (notes) in one file; and translates standard format 1 Midi files to and from Csound scores. The WCsound instruments are contained in an "orchestra" library, and the user selects from the library to build up an "arrangement" of instruments for actual use by the score. Furthermore, WCsound is a shared library that readily plugs into other programs using ActiveX classes. 
  172.  
  173.  
  174.  
  175. Indeed, WCsound is mainly designed to serve as a score manager component for algorithmic composition programs, and it can interface with such programs in several ways. WCsound works as a standalone executable (WCsound.exe) and as an ActiveX object (WCsound.dll).
  176.  
  177.  
  178.  
  179. For example, in Visual Basic 4.0, read in WCsound.tlb from the Tools menu References command, and write:
  180.  
  181.  
  182.  
  183.  
  184.  
  185. Dim CS As New CSOUND 
  186. CS.NoteAdd 2, 4.25, 3, 9, 72, .25, 10 
  187. CS.NoteAdd 4, 4.25, 6, 8.166667, 72, 1.25, 10 
  188. CS.DoModal
  189.  
  190.  
  191.  
  192.  
  193.  
  194. When run standalone, WCSound will attempt to open any .osc, .orc, .sco, or .mid file that is passed as a command line argument:
  195.  
  196.  
  197.  
  198.  
  199.  
  200. WCSound filename.xxx
  201.  
  202.  
  203.  
  204.  
  205.  
  206. Additional .orc, .mid, or .sco files will also be read and merged with the already opened file. This is convenient for opening an .osc file containing a standard orchestra and functions, and then importing into it an algorithmically generated .sco file, or a midifile:
  207.  
  208.  
  209.  
  210.  
  211.  
  212. WCSound template.osc generated.sco 
  213.  
  214.  
  215.  
  216. WCSound functions.sco orchestra.orc generated.sco 
  217.  
  218.  
  219.  
  220. WCSound functions.sco orchestra.orc sequenced.mid
  221.  
  222.  
  223.  
  224.  
  225.  
  226. If you want to use the the piano roll display, the rescaling commands, or the Midifile translation commands, you must follow the convention that all notes ("i" statements) in score (.sco) files use the following format for their first 6 parameter fields:
  227.  
  228.  
  229.  
  230.  
  231.  
  232. p1 Instrument number from 1 to 200.
  233. p2 Starting time of note in seconds.
  234. p3 Length of note in seconds.
  235. p4 Octave (pitch) of note in linear octaves (middle C = 8.0).
  236. p5 Decibels (loudness) of note from 0 to 96.
  237. p6 Pan from left (-1) through center (0) to right (+1).
  238. pn Additional pfields may be used (e.g. for instrument control).
  239.  
  240.  
  241.  
  242.  
  243.  
  244. Try using affine transformation matrices in Mathematica to perform serial compositional transformations of notes and rows of notes!
  245.  
  246.  
  247.  
  248. Please report any bugs to me. Thank you.
  249.  
  250.  
  251.  
  252. My Changes to Csound
  253.  
  254.  
  255.  
  256. In addition to providing a friendlier interface to Csound, I have also made changes in Csound itself. 
  257.  
  258.  
  259.  
  260. In particular, I have implemented...
  261.  
  262.  
  263.  
  264. Plugin Opcodes
  265.  
  266.  
  267.  
  268. Csound will now add to its instrument table any plugin instrument libraries that it finds. These libraries have the filename extension "OPC" and are loaded either from the local directory, or from the directory specified by the environment variable OPCODEDIR. As a demonstration of this facility, as well as an enhancement to Csound, I have included STK.OPC, a plugin library containing Csound implementations of all the physical modeling instruments in Perry R. Cook's Synthesis Toolkit 95.
  269.  
  270.  
  271.  
  272. Cook Physical Models
  273.  
  274.  
  275.  
  276.  
  277.  
  278. marimba
  279. vibraphone
  280. agogobell
  281. plucked
  282. mandolin
  283. clarinet
  284. flute
  285. brass
  286. bowed
  287. rhodes
  288. wurlitzer
  289. tubularbell
  290. heavymetal
  291. percussiveflute
  292. hammond
  293. fmvoices
  294. minimoog
  295. voiceformant
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302. These all work on the same plan, which is demonstrated in the "Cook Bowed String Model" instrument in Template.osc. For each of these opcodes, the Csound manual page would be like this one : 
  303.  
  304.  
  305.  
  306. ar bowed xcps, xamp, xconstatus, xcondata1, xcondata2, xmodwheel 
  307.  
  308.  
  309.  
  310. Audio output is a physical model of the named instrument based on waveguide synthesis, frequency modulation synthesis, or modal synthesis. 
  311.  
  312.  
  313.  
  314. Initialization
  315.  
  316.  
  317.  
  318. There are no specifically initialization-time variables. 
  319.  
  320.  
  321.  
  322. Performance
  323.  
  324.  
  325.  
  326. xcps
  327.  
  328. Frequency in cycles per second. 
  329.  
  330. xamp
  331.  
  332. Amplitude multiplier. 
  333.  
  334. xconstatus
  335.  
  336. MIDI control message status byte. Meaning depends upon opcode, but analogous to corresponding MIDI patch. 
  337.  
  338. xcondata1
  339.  
  340. MIDI control message data byte 1. Meaning depends upon opcode, but analogous to corresponding MIDI patch. 
  341.  
  342. xcondata2
  343.  
  344. MIDI control message data byte 2. Meaning depends upon opcode, but analogous to corresponding MIDI patch.. 
  345.  
  346. xmodwheel
  347.  
  348. MIDI modulation wheel value. Meaning depends upon opcode, but analogous to corresponding MIDI patch. 
  349.  
  350.  
  351.  
  352. Making New Plugin Opcodes
  353.  
  354.  
  355.  
  356. Each opcode library may contain any number of new opcodes. Each library must export and define the following structure which Csound calls to register its opcodes:
  357.  
  358.  
  359.  
  360. /*
  361.  *      Signature for opcode registration function.
  362.  *      Both Csound and opcode must be compiled 
  363.  *      with 8 byte structure member alignment.
  364.  */
  365. typedef PUBLIC long (CSOpcodeRegisterType)(//   Used to iterate through all opcodes in a library.
  366.     long         OpcodeSubscript,
  367.     //   Csound audio sampling rate in Hz.
  368.     float        *SamplingRateIn,
  369.     //   Csound control sampling rate in Hz.
  370.     float        *KontrolRateIn,
  371.     //   Control samples per audio sample.
  372.     int          *AudioSamplesPerKontrolSampleIn,
  373.     //   Channels in the soundfile.
  374.     int          *ChannelCountIn,
  375.     //   Address of the function table array in Csound.
  376.     FUNC         *FunctionTablesIn[],
  377.     //   Address of the opcode's dispatch table entry,
  378.     //   to be filled in by the opcode library.
  379.     OENTRY       *OpcodeEntryOut);
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386. This CSOpcodeRegister function either registers a different opcode for each OpcodeSubscript and returns 1, or it fails and returns 0. The opcode library is responsible for filling in the the arguments to CSOpcodeRegister, in particular the members of the OENTRY structure, especially the addresses of the opcode's signal processing functions.
  387.  
  388.  
  389.  
  390. Essentially, OENTRY is the virtual base class for Csound opcodes; the OENTRY structure contains templates for the return types and argument types of 3 virtual functions, which are called on opcode initialization, on every k or control sample, and on every a or audio sample. The OENTRY structure also contains references to the pfields for the note being processed by the opcode, and to the audio signal output array.
  391.  
  392.  
  393.  
  394. See the Csound manual for more information on how to create new opcodes.
  395.  
  396.  
  397.  
  398. Increased adsyn capacity
  399.  
  400.  
  401.  
  402. Computers have grown in power and memory since Csound was written. I have increased the capacity of the adsyn opcode from 50 partials to 1024, in order to be able to render Graphics Interchange Format files directly as sounds using time-stretched additive synthesis.
  403.  
  404.