TABLE OF CONTENTS
INTRODUCTION 2 Distribution and Copying 2 Getting Started 2 Learning about FORMULA 3 TUTORIAL OVERVIEW 4 FORMULA BASICS 7 Processes 7 Per-Process Storage 7 Vocabularies 8 Fractional Number Syntax 8 Procedural Concatenation 8 NOTE-PLAYING PROCESSES AND GROUPS 10 Groups 10 Naming and Controlling Processes 10 TIMING 12 Time Coordinate Systems 12 Advancing in Time 12 Time Control Structures 12 Rational Time Intervals 13 MIDI Clock 14 PLAYING NOTES 16 $-Words 16 Quans and Pquans Used by the $-Words 16 Patch Changes and Sustain Pedal 16 Differential Functions and Continuous Controllers 17 Playing Groups of Notes 18 Drums 19 Pitch Names 19 Microtuning 20 Pitch Sets 21 Synthesizer Description Files 22 AUXILIARY PROCESSES 23 Embedded Definitions 23 External Creation and Deletion 24 Volume Control 24 Tempo and Rubato Control 25 Articulation Control 26 Timing Sequence Generators 27 Rhythm Patterns 29 THE SYNTHESIZER MANAGER 30 Specifying Synthesizer Configurations 30 Using Virtual Channels 31 BASIC MIDI OUTPUT 33 Sending MIDI Commands 33 The MIDI Output Driver 33 MIDI File Capture 34 INPUT HANDLING 35 MIDI Commands 35 MIDI Change-Patch Commands 35 MIDI System Exclusive Commands 36 Mouse Input Handling 36 Function Key Handling (Atari Only) 37 MISCELLANEA 38 Random Number Generators 38 Memory Allocation 38 Mutual Exclusion 38 EVENT AND PROCESS SCHEDULING 41 Event Scheduling 41 Process Scheduling Parameters 42 Background Processes 43 APPENDIX A _ FORTH AND FORTHMACS 44 APPENDIX B _ THE MIDI STANDARD 46 APPENDIX C _ DEBUGGING FORMULA PROGRAMS 47 APPENDIX D _ WRITING A SYNTHESIZER DRIVER 48 APPENDIX E _ CHANGES FROM VERSION 3.4 TO VERSION 4.0 50 APPENDIX F _ FORMULA ON THE ATARI ST 51 APPENDIX G _ FORMULA ON THE MACINTOSH 53