NewtonScriptProgramLanguage - Manuels - Apple Apple sur FNAC.COM

 

 

 

TELECHARGER LE PDF :

http://manuals.info.apple.com/MANUALS/1000/MA1508/en_US/NewtonScriptProgramLanguage.PDF

 

 

Voir également d'autres Guides APPLE :

Apple-iPhone-User-Guide-For-iOS-6-Software

Apple-iPhone-Manual-del-usuario-Para-el-software-iOS-5-1

Apple-iPhone-Benutzerhandbuch-Fur-iOS-5-1-Software

Apple-Enterprise_Deployment_Guide_CH

Apple-iphone_manuali_i_perdoruesit

Apple-iphone_user_guide_bg

Apple-iphone_manual_do_usuario

Apple-iPhone_Anvandarhandbok

Apple-iphone_user_guide_ta

Apple-iphone_4s_il_mondo_tra_le_dita

Apple-iPhone-OS-Enterprise-Deployment-Guide-Second-Edition-for-Version-3-2-or-later

Apple-iPhone_Bluetooth_Headset_Manual_del_usuario

Apple-iPhone_3G_Important_Product_Information_Guide_en_US

Apple-iphone_4s_informations_importantes_sur_le_produit

Apple-Case-Design-Guidelines

Apple-ipad_brugerhandbog

Apple-ipod_touch_user_guide_ta

Apple-macbook_air-13-inch_mid-2012-qs_br

Apple-iphone_4s_podstawy

Apple-ipad_user_guide_ch

Apple-ipod_touch_user_guide_cn

Apple-Manuel_de_l'utilisateur_de_Final_Cut_Server

Apple-iMac_G5_de_lutilisateur

Apple-Cinema_Tools_4.0_User_Manual_F

Apple-Personal-LaserWriter300-User-s-Guide

Apple-QuickTake-100-User-s-Guide-for-Macintosh

Apple-User-s-Guide-Macintosh-LC-630-DOS-Compatible

Apple-iPhone_iOS3.1_User_Guide

Apple-iphone_4s_important_product_information_guide

Apple-iPod_shuffle_Features_Guide_F

Liste-documentation-apple

Apple-Premiers_contacts_avec_iMovie_08

Apple-macbook_pro-retina-mid-2012-important_product_info_br

Apple-macbook_pro-13-inch-mid-2012-important_product_info

Apple-macbook_air-11-inch_mid-2012-qs_br

Apple-Manuel_de_l_utilisateur_de_MainStage

Apple-Compressor_3_User_Manual_F

Apple-Color_1.0_User_Manual_F

Apple-guide_de_configuration_airport_express_4.2

Apple-TimeCapsule_SetupGuide

Apple-Instruments_et_effets_Logic_Express_8

Apple-Manuel_de_l_utilisateur_de_WaveBurner

Apple-Macmini_Guide_de_l'utilisateur

Apple-PowerMacG5_UserGuide

Disque dur, ATA parallèle Instructions de remplacement

Apple-final_cut_pro_x_logic_effects_ref_f

Apple-Leopard_Installationshandbok

Manuale Utente PowerBookG4

Apple-thunderbolt_display_getting_started_1e

Apple-Compressor-4-Benutzerhandbuch

Apple-macbook_air_11inch_mid2011_ug

Apple-macbook_air-mid-2012-important_product_info_j

Apple-iPod-nano-Guide-des-fonctionnalites

Apple-iPod-nano-Guide-des-fonctionnalites

Apple-iPod-nano-Guide-de-l-utilisateur-4eme-generation

Apple-iPod-nano-Guide-de-l-utilisateur-4eme-generation

Apple-Manuel_de_l_utilisateur_d_Utilitaire_de_reponse_d_impulsion

Apple-Aperture_2_Raccourcis_clavier

AppleTV_Setup-Guide

Apple-livetype_2_user_manual_f

Apple-imacG5_17inch_harddrive

Apple-macbook_air_guide_de_l_utilisateur

Apple-MacBook_Early_2008_Guide_de_l_utilisateur

Apple-Keynote-2-Guide-de-l-utilisateur

Apple-PowerBook-User-s-Guide-for-PowerBook-computers

Apple-Macintosh-Performa-User-s-Guide-5200CD-and-5300CD

Apple-Macintosh-Performa-User-s-Guide

Apple-Workgroup-Server-Guide

Apple-iPod-nano-Guide-des-fonctionnalites

Apple-iPad-User-Guide-For-iOS-5-1-Software

Apple-Boot-Camp-Guide-d-installation-et-de-configuration

Apple-iPod-nano-Guide-de-l-utilisateur-4eme-generation

Power Mac G5 Guide de l’utilisateur APPLE

Guide de l'utilisateur PAGE '08 APPLE

Guide de l'utilisateur KEYNOTE '09 APPLE

Guide de l'Utilisateur KEYNOTE '3 APPLE

Guide de l'Utilisateur UTILITAIRE RAID

Guide de l'Utilisateur Logic Studio

Power Mac G5 Guide de l’utilisateur APPLE

Guide de l'utilisateur PAGE '08 APPLE

Guide de l'utilisateur KEYNOTE '09 APPLE

Guide de l'Utilisateur KEYNOTE '3 APPLE

Guide de l'Utilisateur UTILITAIRE RAID

Guide de l'Utilisateur Logic Studio

Guide de l’utilisateur ipad Pour le logiciel iOS 5.1

PowerBook G4 Premiers Contacts APPLE

Guide de l'Utilisateur iphone pour le logiciel ios 5.1 APPLE

Guide de l’utilisateur ipad Pour le logiciel iOS 4,3

Guide de l’utilisateur iPod nano 5ème génération

Guide de l'utilisateur iPod Touch 2.2 APPLE

Guide de l’utilisateur QuickTime 7  Mac OS X 10.3.9 et ultérieur Windows XP et Windows 2000

Guide de l'utilisateur MacBook 13 pouces Mi 2010

Guide de l’utilisateur iPhone (Pour les logiciels iOS 4.2 et 4.3)

Guide-de-l-utilisateur-iPod-touch-pour-le-logiciel-ios-4-3-APPLE

Guide-de-l-utilisateur-iPad-2-pour-le-logiciel-ios-4-3-APPLE

Guide de déploiement en entreprise iPhone OS

Guide-de-l-administrateur-Apple-Remote-Desktop-3-1

Guide-de-l-utilisateur-Apple-Xserve-Diagnostics-Version-3X103

Guide-de-configuration-AirPort-Extreme-802.11n-5e-Generation

Guide-de-configuration-AirPort-Extreme-802-11n-5e-Generation

Guide-de-l-utilisateur-Capteur-Nike-iPod

Guide-de-l-utilisateur-iMac-21-5-pouces-et-27-pouces-mi-2011-APPLE

Guide-de-l-utilisateur-Apple-Qadministrator-4

Guide-d-installation-Apple-TV-3-eme-generation

User-Guide-iPad-For-ios-5-1-Software

[TXT]

 Apple-mac_mini_mid20..> 28-Feb-2014 15:10  2.9M  

[TXT]

 Apple-Premiers_conta..> 28-Feb-2014 15:10  3.5M  

[TXT]

 Apple-Pages09_Guide_..> 28-Feb-2014 15:09  4.1M  

[TXT]

 Apple-apple_tv_3rd_g..> 28-Feb-2014 15:09  3.5M  

[TXT]

 Apple-ipod_touch_use..> 28-Feb-2014 15:08  4.5M  

[TXT]

 Apple-iPod_classic_1..> 28-Feb-2014 15:08  4.3M  

[TXT]

 Apple-AirPort-Time-C..> 28-Feb-2014 15:06  4.6M  

[TXT]

 Apple-AirPort-Extrem..> 28-Feb-2014 15:06  4.6M  

[TXT]

 Apple-macbook_air-mi..> 28-Feb-2014 15:05  4.6M  

[TXT]

 Apple-boot_camp_inst..> 28-Feb-2014 15:05  4.7M  

[TXT]

 Apple-iPod-touch-Gui..> 28-Feb-2014 15:03  5.1M   

[TXT] Apple-MacBook-Pro-Gu..> 28-Feb-2014 15:03 4.8M 

[TXT]

 Apple-Power-Macintos..> 28-Feb-2014 10:25  1.3M  

[TXT]

 Apple-MacBook_13inch..> 28-Feb-2014 10:25  1.4M  

[TXT]

 Apple-iPad-Anvandarh..> 28-Feb-2014 10:25  1.7M  

[TXT]

 Apple-AirPort-Extrem..> 28-Feb-2014 10:25  1.4M  

[TXT]

 Apple-Mac_Pro_Early2..> 28-Feb-2014 10:24  1.8M  

[TXT]

 Apple-AirPort-Time-C..> 28-Feb-2014 10:24  1.8M  

[TXT]

 Apple-iPod_nano_4th_..> 28-Feb-2014 10:23  2.0M  

[TXT]

 Apple-iPod_nano_5th_..> 28-Feb-2014 10:23  2.1M  

[TXT]

 Apple-premiers_conta..> 28-Feb-2014 10:23  2.2M  

[TXT]

 Apple-ipad_gebruiker..> 28-Feb-2014 10:23  2.5M  

[TXT]

 Apple-Formulas_and_F..> 28-Feb-2014 10:22  3.5M  

[TXT]

 Apple-Manual_del_usu..> 28-Feb-2014 10:22  2.9M

 [TXT] Apple-nikeipod_guide..> 27-Feb-2014 10:13 3.2M  

[TXT]

 Apple-Logic-Express-..> 27-Feb-2014 10:11  3.5M  

[TXT]

 Apple-iMac-G5-Manual..> 27-Feb-2014 10:11  1.4M  

[TXT]

 Apple-DVD-Studio-Pro..> 27-Feb-2014 10:10  1.9M  

[TXT]

 Apple-Loops-Utility-..> 27-Feb-2014 10:10  2.0M  

[TXT]

 Apple-Final-Cut-Pro-..> 27-Feb-2014 10:09  3.1M  

[TXT]

 Apple-Final-Cut-Stud..> 27-Feb-2014 10:09  2.1M  

[TXT]

 Apple-iPod-mini-User..> 27-Feb-2014 10:08  3.2M  

[TXT]

 Apple-Xserve -Apple-..> 27-Feb-2014 10:08  3.2M  

[TXT]

 Apple-Logic-Pro-7.2 ..> 27-Feb-2014 10:07  4.4M  

[TXT]

 Apple-Soundtrack-Pro..> 27-Feb-2014 10:07  4.1M  

[TXT]

 Apple-Time-Capsule-I..> 27-Feb-2014 10:06  4.6M  

[TXT]

 Apple-MacBook-Pro-Ma..> 27-Feb-2014 10:06  4.5M  

[TXT]

 Apple-iPhone-OS-Ente..> 05-Dec-2013 07:30  2.4M  

[TXT]

 Apple-Mac_OSX_Server..> 05-Dec-2013 07:29  2.1M  

[TXT]

 Apple-Compressor-4-ã..> 05-Dec-2013 07:23  2.8M  

[TXT]

 Apple-Remote-Desktop..> 27-Jun-2013 08:59  2.3M  

[TXT]

 Apple-MacBook_Pro_17..> 27-Jun-2013 08:51  3.0M  

[TXT]

 Apple-Compressor-Man..> 06-Jun-2013 14:35  2.1M  

[TXT]

 Apple-Soundtrack_Pro..> 06-Jun-2013 14:35  3.4M  

[TXT]

 Apple-LiveType_2_Use..> 06-Jun-2013 14:35  2.3M  

[TXT]

 Apple-Motion_3_User_..> 06-Jun-2013 14:34  5.8M  

[TXT]

 Apple-MacBook_13inch..> 06-Jun-2013 14:34  6.0M  

[TXT]

 Apple-MainStage-Manu..> 06-Jun-2013 14:32  6.0M  

[TXT]

 Apple-PowerMacG5_Use..> 06-Jun-2013 14:32  6.1M  

[TXT]

 Apple-MacBook-Air-Ma..> 06-Jun-2013 14:30  6.1M  

[TXT]

 Apple-iMac_G5_de_lut..> 06-Jun-2013 14:30  6.3M  

[TXT]

 Apple-final_cut_pro_..> 06-Jun-2013 14:28  7.6M  

[TXT]

 Apple-Xcode_User_Gui..> 06-Jun-2013 14:28  6.6M  

[TXT]

 Apple-macbook_pro_17..> 06-May-2013 17:01  3.5M  

[TXT]

 Apple-Cocoa-Bindings..> 09-Nov-2012 10:25  1.9M  

[TXT]

 Apple-Stream-Program..> 09-Nov-2012 09:19  3.0M  

[TXT]

 Apple-View-Programmi..> 09-Nov-2012 09:19  3.2M  

[TXT]

 Apple-OpenGL-Program..> 09-Nov-2012 09:18  3.5M  

[TXT]

 Apple-Preferences-an..> 09-Nov-2012 09:18  3.6M  

[TXT]

 Apple-AV-Foundation-..> 09-Nov-2012 09:17  3.7M  

[TXT]

 Apple-Windows-Guide-..> 09-Nov-2012 09:16  3.7M  

[TXT]

 Apple-Date-and-Time-..> 09-Nov-2012 09:15  1.4M  

[TXT]

 Apple-Event-Driven-X..> 09-Nov-2012 09:15  1.5M  

[TXT]

 Apple-OpenCL-Program..> 09-Nov-2012 09:15  1.6M  

[TXT]

 Apple-Core-Text-Prog..> 09-Nov-2012 09:15  1.7M  

[TXT]

 Apple-Document-Based..> 09-Nov-2012 09:14  1.8M  

[TXT]

 Apple-URL-Loading-Sy..> 09-Nov-2012 09:14  3.0M  

[TXT]

 Apple-livetype_2_use..> 09-Nov-2012 08:07  2.0M  

[TXT]

 Apple-iPod_nano_4th_..> 09-Nov-2012 08:07  1.8M  

[TXT]

 Apple-iPhone_4_Deux_..> 09-Nov-2012 08:06  2.1M  

[TXT]

 Apple-airportextreme..> 09-Nov-2012 08:06  2.0M  

[TXT]

 Apple-Object-Oriente..> 09-Nov-2012 08:05  2.3M  

[TXT]

 Apple-TableView_iPho..> 09-Nov-2012 08:05  2.2M  

[TXT]

 Apple-Universal-Bina..> 09-Nov-2012 08:05  2.4M  

[TXT]

 Apple-Objective-C-Ru..> 09-Nov-2012 08:05  2.5M  

[TXT]

 Apple-Local-and-Push..> 09-Nov-2012 08:04  2.7M  

[TXT]

 Apple-Mac-App-Progra..> 09-Nov-2012 08:04  2.6M  

[TXT]

 Apple-CocoaEncyclope..> 09-Nov-2012 08:03  2.9M  

[TXT]

 Apple-Blocks-Program..> 09-Nov-2012 08:03  2.9M  

[TXT]

 Apple-External-Acces..> 09-Nov-2012 08:02  3.0M  

[TXT]

 Apple-multimediaprog..> 09-Nov-2012 08:02  2.9M  

[TXT]

 Apple-iphone_3gs_fin..> 08-Nov-2012 10:12  2.6M  

[TXT]

 Apple-SafariWebConte..> 08-Nov-2012 10:12  1.7M  

[TXT]

 Apple-ARD3_AdminGuid..> 08-Nov-2012 10:12  2.9M  

[TXT]

 Apple-iTunes_Videoan..> 08-Nov-2012 10:11  2.0M  

[TXT]

 Apple-ipod_nano_3rd_..> 08-Nov-2012 10:11  2.1M  

[TXT]

 Apple-Event-Handling..> 08-Nov-2012 10:10  2.3M  

[TXT]

 Apple-QuickTime7_Use..> 08-Nov-2012 10:10  2.4M  

[TXT]

 Apple-drawingprintin..> 08-Nov-2012 10:10  2.6M  

[TXT]

 Apple-SharkUserGuide..> 08-Nov-2012 10:09  2.6M  

[TXT]

 Apple-Location-Aware..> 08-Nov-2012 10:09  2.7M  

[TXT]

 Apple-Key-Value-Obse..> 08-Nov-2012 10:08  2.7M  

[TXT]

 Apple-CocoaTextArchi..> 08-Nov-2012 10:08  1.4M  

[TXT]

 Apple-Text-System-Us..> 08-Nov-2012 10:07  1.4M  

[TXT]

 Apple-iTunes_Extrasa..> 08-Nov-2012 10:07  1.5M  

[TXT]

 Apple-Archives-and-S..> 08-Nov-2012 10:07  1.5M  

[TXT]

 Apple-TV_2nd_gen_Set..> 08-Nov-2012 09:11  2.6M  

[TXT]

 Apple-WorkingWithUSB..> 08-Nov-2012 07:57  2.6M  

[TXT]

 AppleSafariVisualEff..> 08-Nov-2012 07:29  2.7M  

[TXT]

 Apple-Resource-Progr..> 08-Nov-2012 07:28  2.8M  

[TXT]

 Apple-Cryptographic-..> 08-Nov-2012 07:28  1.7M  

[TXT]

 Apple-CocoaDrawingGu..> 08-Nov-2012 07:27  2.0M  

[TXT]

 Apple-macbook_pro-13..> 08-Nov-2012 07:27  2.0M  

[TXT]

 Apple-Xsan_2_Admin_G..> 08-Nov-2012 07:27  2.2M  

[TXT]

 Apple-ipad_wifi_info..> 08-Nov-2012 07:26  2.3M  

[TXT]

 Apple-ipad_uzivatels..> 08-Nov-2012 07:26  2.9M  

[TXT]

 Apple-ipad_manual_de..> 08-Nov-2012 07:26  2.6M  

[TXT]

 Apple-Nike_Plus_iPod..> 08-Nov-2012 07:25  3.0M  

[TXT]

 Apple-iphone_user_gu..> 08-Nov-2012 07:25  3.7M  

[TXT]

 Apple-ipad_user_guid..> 08-Nov-2012 07:24  4.3M  

[TXT]

 Apple-ipad_user_guid..> 08-Nov-2012 07:24  4.6M  

[TXT]

 Apple-macbook_pro_re..> 08-Nov-2012 07:22  2.7M  

[TXT]

 Apple-AppStoreMarket..> 08-Nov-2012 07:22  2.7M  

[TXT]

 Apple-macbook_air-13..> 08-Nov-2012 07:22  2.8M  

[TXT]

 Apple-macbook_air_us..> 08-Nov-2012 07:21  2.8M  

[TXT]

 Apple-Logic-Pro-9-TD..> 08-Nov-2012 07:21  2.8M  

[TXT]

 Apple-InstrumentsUse..> 08-Nov-2012 07:20  1.6M  

[TXT]

 Apple-Core-Data-Mode..> 07-Nov-2012 21:59  2.5M  

[TXT]

 Apple-App-Sandbox-De..> 07-Nov-2012 21:24  2.0M  

[TXT]

 Apple-iTunes-Connect..> 07-Nov-2012 21:24  1.9M  

[TXT]

 Apple-Transitioning-..> 07-Nov-2012 21:23  2.0M  

[TXT]

 Apple-RED_Workflows_..> 07-Nov-2012 21:23  2.0M  

[TXT]

 Apple-KernelProgramm..> 07-Nov-2012 21:23  2.4M  

[TXT]

 Apple-iPod_shuffle_4..> 07-Nov-2012 19:37  2.1M  

[TXT]

 Apple-Mac-Pro-2008-P..> 07-Nov-2012 19:31  2.2M  

[TXT]

 Apple-iOS_Security_M..> 07-Nov-2012 19:31  2.3M  

[TXT]

 Apple-macbook_pro-re..> 07-Nov-2012 19:31  2.2M  

[TXT]

 Apple-PackageMaker_U..> 07-Nov-2012 19:30  2.3M  

[TXT]

 Apple-Apple_Server_D..> 07-Nov-2012 19:30  2.3M  

[TXT]

 Apple-OS-X-Server-Pr..> 07-Nov-2012 19:29  2.3M  

[TXT]

 Apple-OS-X-Mountain-..> 07-Nov-2012 19:29  2.4M  

[TXT]

 Apple-mac_mini-late-..> 07-Nov-2012 19:29  2.4M  

[TXT]

 Apple-KeyValueObserv..> 07-Nov-2012 19:29  2.4M  

[TXT]

 Apple-ViewController..> 07-Nov-2012 19:28  2.6M  

[TXT]

 Apple-CodeSigningGui..> 07-Nov-2012 19:28  2.7M  

[TXT]

 Apple-TimeCapsule_Se..> 07-Nov-2012 19:27  2.8M  

[TXT]

 Apple-TimeCapsule_Se..> 07-Nov-2012 19:27  2.7M  

[TXT]

 Apple-time_capsule_4..> 07-Nov-2012 19:26  2.8M  

[TXT]

 Apple-TimeCapsule_Se..> 07-Nov-2012 19:26  2.8M  

[TXT]

 Apple-Apple_AirPort_..> 07-Nov-2012 19:26  2.8M  

[TXT]

 Apple-Secure-Coding-..> 07-Nov-2012 19:25  1.9M  

[TXT]

 Apple-String-Program..> 07-Nov-2012 19:25  1.6M  

[TXT]

 Apple-Apple_Composit..> 01-Nov-2012 13:36  3.9M  

[TXT]

 Apple-Premiers-conta..> 01-Nov-2012 13:36  2.1M  

[TXT]

 AppleiPod_shuffle_4t..> 01-Nov-2012 13:36  2.1M  

[TXT]

 Apple-ipod_touch_geb..> 01-Nov-2012 13:35  2.4M  

[TXT]

 Apple-Instruments_et..> 01-Nov-2012 13:35  3.8M  

[TXT]

 Apple-ipad_manual_do..> 01-Nov-2012 13:35  4.1M  

[TXT]

 Apple-UsingiTunesPro..> 01-Nov-2012 13:34  4.2M  

[TXT]

 Apple-wp_osx_configu..> 01-Nov-2012 13:33  4.2M  

[TXT]

 Apple_ProRes_White_P..> 01-Nov-2012 13:32  4.2M  

[TXT]

 Apple-ipod_nano_kayt..> 01-Nov-2012 13:32  4.4M  

[TXT]

 Apple-Instrumentos_y..> 01-Nov-2012 13:31  3.4M  

[TXT]

 Apple-nike_plus_ipod..> 01-Nov-2012 13:31  2.1M  

[TXT]

 Apple-Pages09_Anvand..> 01-Nov-2012 13:30  2.8M  

[TXT]

 Apple-aperture3.4_10..> 01-Nov-2012 13:30  2.8M  

[TXT]

 Apple-ipod_nano_benu..> 01-Nov-2012 13:29  3.0M  

[TXT]

 Apple-airmac_express..> 01-Nov-2012 13:29  3.0M  

[TXT]

 Apple-Aan-de-slag-Ne..> 01-Nov-2012 13:28  1.7M  

[TXT]

 Apple-iphone_priruck..> 01-Nov-2012 13:28  2.1M  

[TXT]

 Apple-Apple_TV_Opsti..> 01-Nov-2012 11:14  2.7M  

[TXT]

 Apple-iPod_touch_2.2..> 01-Nov-2012 11:13  3.1M  

[TXT]

 Apple-VoiceOver_Gett..> 01-Nov-2012 11:13  2.8M  

[TXT]

 Apple-iPod_classic_1..> 01-Nov-2012 11:12  3.2M  

[TXT]

 Apple-iPod_shuffle_3..> 01-Nov-2012 11:12  3.2M  

[TXT]

 Apple-Qmaster-4-User..> 01-Nov-2012 11:11  2.3M  

[TXT]

 Apple-iPod_touch_2.1..> 01-Nov-2012 11:11  2.9M  

[TXT]

 Apple-Final-Cut-Pro-..> 01-Nov-2012 11:11  3.1M  

[TXT]

 Apple-DEiPod_photo_B..> 01-Nov-2012 11:10  3.2M  

[TXT]

 Apple-AirPort_Expres..> 01-Nov-2012 11:10  3.2M  

[TXT]

 Apple-MacBook_Pro_15..> 01-Nov-2012 11:09  3.2M  

[TXT]

 Apple-Xserve-RAID-Pr..> 01-Nov-2012 11:09  3.4M  

[TXT]

 Apple-MacBook_13inch..> 01-Nov-2012 11:08  3.5M  

[TXT]

 Apple-MacBook_Pro_Mi..> 01-Nov-2012 11:07  3.5M  

[TXT]

 Apple-AirPort_Networ..> 01-Nov-2012 11:07  3.7M  

[TXT]

 Apple-Compressor-4-B..> 01-Nov-2012 11:06  3.3M  

[TXT]

 Apple-ipad_guide_de_..> 01-Nov-2012 11:05  3.8M  

[TXT]

 Apple-ResEdit-Refere..> 01-Nov-2012 11:05  3.5M  

[TXT]

 Apple-ipod_classic_f..> 28-Oct-2012 20:54  2.7M  

[TXT]

 Apple-MacBook_Mid200..> 28-Oct-2012 20:49  2.7M  

[TXT]

 Apple-MacBook_13inch..> 28-Oct-2012 20:49  1.9M  

[TXT]

 Apple-iMac_Mid2010_U..> 28-Oct-2012 20:49  2.0M  

[TXT]

 Apple-Guide_de_confi..> 28-Oct-2012 20:48  2.1M  

[TXT]

 Apple-videocard.pdf-..> 28-Oct-2012 20:48  2.1M  

[TXT]

 Apple-atacable.pdf-M..> 28-Oct-2012 20:47  2.1M  

[TXT]

 Apple-Pile-Interne-M..> 28-Oct-2012 20:47  2.1M  

[TXT]

 Apple-Boitier-de-l-o..> 28-Oct-2012 20:47  2.1M  

[TXT]

 Apple-battery.cube.p..> 28-Oct-2012 20:47  2.1M  

[TXT]

 Apple-Couvercle-Manu..> 28-Oct-2012 20:46  2.1M  

[TXT]

 Apple-iPhone_Finger_..> 28-Oct-2012 20:46  2.1M  

[TXT]

 Apple-Carte-AirPort-..> 28-Oct-2012 20:45  2.1M  

[TXT]

 Apple-Lecteur-Optiqu..> 28-Oct-2012 20:45  2.1M  

[TXT]

 Apple-Server_Adminis..> 28-Oct-2012 20:44  2.5M  

[TXT]

 Apple-Administration..> 28-Oct-2012 10:54  2.3M  

[TXT]

 Apple-Supplement_au_..> 28-Oct-2012 10:53  2.5M  

[TXT]

 Apple-Aperture_Perfo..> 28-Oct-2012 10:53  2.6M  

[TXT]

 Apple-Network_Servic..> 28-Oct-2012 10:52  2.1M  

[TXT]

 Apple-MacBook_Pro_15..> 28-Oct-2012 10:52  2.2M  

[TXT]

 Apple-Final_Cut_Expr..> 28-Oct-2012 10:52  2.2M  

[TXT]

 Apple-AirPort_Extrem..> 28-Oct-2012 10:51  2.3M  

[TXT]

 Apple-iOS_Business.p..> 28-Oct-2012 10:51  2.3M  

[TXT]

 Apple-iPod_nano_5th_..> 28-Oct-2012 10:51  2.5M  

[TXT]

 Apple-Designing_AirP..> 28-Oct-2012 10:50  1.9M  

[TXT]

 Apple-Opstillingsvej..> 28-Oct-2012 10:50  2.6M  

[TXT]

 Apple-Administration..> 28-Oct-2012 10:49  2.8M  

[TXT]

 Apple-Time_Capsule_I..> 28-Oct-2012 10:49  2.8M  

[TXT]

 Apple-Feuille_de_ope..> 28-Oct-2012 10:48  2.8M  

[TXT]

 Apple-iPod_2ndGen_US..> 28-Oct-2012 10:48  2.9M  

[TXT]

 Apple-Comment_demarr..> 28-Oct-2012 10:47  1.5M  

[TXT]

 Apple-MacBook_Pro_17..> 28-Oct-2012 10:47  1.6M  

[TXT]

 Apple-iPod_touch_2.0..> 28-Oct-2012 10:47  1.8M  

[TXT]

 Apple-Mac_OS_X_Serve..> 28-Oct-2012 10:46  2.2M  

[TXT]

 Apple-Mac_mini_Late2..> 28-Oct-2012 10:46  2.0M  

[TXT]

 Apple-MacBookPro_Lat..> 28-Oct-2012 10:46  2.6M  

[TXT]

 Apple-Mise_a_niveau_..> 28-Oct-2012 10:46  2.5M  

[TXT]

 Apple-Aperture_Getti..> 23-Oct-2012 16:20  1.8M  

[TXT]

 Apple-Mac-OS-X-Serve..> 23-Oct-2012 16:19  2.3M  

[TXT]

 Apple-Apple_AirPort_..> 23-Oct-2012 16:19  2.2M  

[TXT]

 Apple-MacBook_Pro_17..> 23-Oct-2012 16:18  2.7M  

[TXT]

 Apple-Administration..> 23-Oct-2012 16:18  2.6M  

[TXT]

 Apple-iPod_touch_Fun..> 23-Oct-2012 16:17  2.8M  

[TXT]

 Apple-iPhone-et-iPad..> 23-Oct-2012 16:17  2.8M  

[TXT]

 Apple-F034-2262AXerv..> 22-Oct-2012 17:35  2.2M  

[TXT]

 Apple-Mac_OS_X_Serve..> 22-Oct-2012 17:00  2.2M  

[TXT]

 Apple-F034-2262AXerv..> 22-Oct-2012 16:59  2.2M  

[TXT]

 Apple-Deploiement-d-..> 22-Oct-2012 16:59  2.2M  

[TXT]

 Apple-iPod_mini_2nd_..> 22-Oct-2012 16:41  2.7M  

[TXT]

 Apple-getting_starte..> 22-Oct-2012 16:41  2.6M  

[TXT]

 Apple-Aperture_Getti..> 22-Oct-2012 16:37  2.6M  

[TXT]

 Apple-FUIntroduction..> 22-Oct-2012 16:37  2.3M  

[TXT]

 Apple-Logic_Studio_I..> 22-Oct-2012 16:36  2.8M  

[TXT]

 Apple-sur-Fnac.com.htm  22-Oct-2012 16:36  2.3M  

[TXT]

 Apple-imacg5_17inch_..> 22-Oct-2012 16:35  2.9M  

[TXT]

 Apple-Mac_Pro_Early2..> 22-Oct-2012 16:35  2.9M  

[TXT]

 Apple-Mac_mini_Mid20..> 22-Oct-2012 16:34  3.0M  

[TXT]

 Apple-XsanGettingSta..> 22-Oct-2012 16:27  2.3M  

[TXT]

 Apple-iBook-G4-Getti..> 22-Oct-2012 16:26  2.8M  

[TXT]

 Apple-iPod_nano_4th_..> 22-Oct-2012 16:26  3.0M  

[TXT]

 Apple-imacg5_17inch_..> 22-Oct-2012 16:25  2.8M  

[TXT]

 Apple-Administration..> 22-Oct-2012 16:25  2.7M  

[TXT]

 Apple-MacBook_Late20..> 22-Oct-2012 16:24  2.3M  

[TXT]

 Apple-Guide_de_confi..> 22-Oct-2012 16:24  2.2M  

[TXT]

 Apple-Guide_des_fonc..> 22-Oct-2012 16:24  2.2M  

[TXT]

 Apple-Mac_mini_UG-Ea..> 22-Oct-2012 16:23  2.1M  

[TXT]

 Apple-iphone_bluetoo..> 22-Oct-2012 16:23  2.0M  

[TXT]

 Apple-FRLogic_Pro_7_..> 22-Oct-2012 16:14  275K  

[   ]

 telecharger.php         17-Oct-2012 14:20  960   

[TXT]

 Liste-documentation-..> 17-Oct-2012 10:02   62K  

[TXT]

 Apple-Installation_d..> 17-Oct-2012 09:43  208K  

[TXT]

 Apple-MacBook_Pro_15..> 17-Oct-2012 09:43  420K  

[TXT]

 Apple-MacBook_Pro_13..> 17-Oct-2012 09:43  347K  

[TXT]

 Apple-Pages-Guide-de..> 17-Oct-2012 09:43  580K  

[TXT]

 Apple-Installation_d..> 17-Oct-2012 09:43  443K  

[TXT]

 Apple-PowerBookG3Use..> 17-Oct-2012 09:42  701K  

[TXT]

 Apple-iBookG3_DualUS..> 17-Oct-2012 09:42  730K  

[TXT]

 Apple-iMacG3_2002Mul..> 17-Oct-2012 09:42  761K  

[TXT]

 Apple-MainStage-2-Us..> 17-Oct-2012 09:42  1.0M  

[TXT]

 Apple-Concurrency-Pr..> 17-Oct-2012 09:42  1.2M  

[TXT]

 Apple-iOS-App-Progra..> 17-Oct-2012 09:42  1.5M  

[TXT]

 Apple-Advanced-Memor..> 17-Oct-2012 09:42  1.5M  

[TXT]

 Apple-Wireless_Might..> 17-Oct-2012 09:41  1.5M  

[TXT]

 Apple-ipod_touch_fea..> 17-Oct-2012 09:41  1.7M  

[TXT]

 Apple-iPod_nano_5th_..> 17-Oct-2012 09:41  1.8M  

[TXT]

 Apple-iPod_classic_1..> 17-Oct-2012 09:40  2.0M  

[TXT]

 Apple-iPod_shuffle_3..> 17-Oct-2012 09:40  2.0M  

[TXT]

 Applairportextreme_8..> 17-Oct-2012 09:40  2.1M  

[TXT]

 Apple-Color-User-Man..> 17-Oct-2012 09:40  2.7M  

[TXT]

 Apple-ipod_shuffle_f..> 17-Oct-2012 09:39  2.8M  

[TXT]

 Apple-aluminumAppleK..> 17-Oct-2012 09:39  2.8M  

[TXT]

 Apple-Shake_4_User_M..> 17-Oct-2012 09:38  3.4M  

[TXT]

 Apple-Aperture_Quick..> 17-Oct-2012 09:37  3.4M  

[TXT]

 Apple-prise_en_charg..> 17-Oct-2012 09:37  2.7M  

[TXT]

 Apple-FCP6_Formats_d..> 17-Oct-2012 09:36  2.9M  

[TXT]

 Apple-imacg5_20inch_..> 17-Oct-2012 09:36  3.0M  

[TXT]

 Apple-iMac_Guide_de_..> 17-Oct-2012 09:35  3.0M  

[TXT]

 Apple-Installation_d..> 17-Oct-2012 09:35  3.0M  

[TXT]

 Apple-Guide_de_l_uti..> 17-Oct-2012 09:34  3.1M  

[TXT]

 Apple-imacG5_20inch_..> 17-Oct-2012 09:34  3.0M  

[TXT]

 Apple-imacg5_20inch_..> 17-Oct-2012 09:33  2.5M  

[TXT]

 Apple-eMac_2005UserG..> 17-Oct-2012 09:33  2.6M  

[TXT]

 Apple-premiers_conta..> 17-Oct-2012 09:33  2.6M  

[TXT]

 Apple-premiers_conta..> 17-Oct-2012 09:33  2.5M  

[TXT]

 Apple-Nouvelles-fonc..> 17-Oct-2012 09:32  2.6M  

[TXT]

 Apple-MacBook_Pro_Ea..> 17-Oct-2012 09:32  2.6M  

[TXT]

 Apple-iSightUserGuid..> 17-Oct-2012 09:31  2.6M  

[TXT]

 ApplePowerMacG5_(Ear..> 17-Oct-2012 09:31  2.8M  

[TXT]

 Apple-MacBook_Late20..> 17-Oct-2012 09:30  2.6M  

[TXT]

 Apple-MacBook_Air_Su..> 17-Oct-2012 09:30  2.6M  

[TXT]

 Apple-Migration_10.4..> 17-Oct-2012 09:29  2.8M  

[TXT]

 Apple-XsanAdminGuide..> 14-Oct-2012 21:10  2.0M  

[TXT]

 Apple-Xserve_Intel_D..> 14-Oct-2012 20:58  1.5M  

[TXT]

 Apple-Xsan_Migration..> 14-Oct-2012 20:58  1.6M  

[TXT]

 Apple-PowerBookG4_UG..> 14-Oct-2012 20:58  1.7M  

[TXT]

 Apple-Welcome_to_Tig..> 14-Oct-2012 20:57  1.8M  

[TXT]

 Apple-Keynote2_UserG..> 14-Oct-2012 20:57  2.2M  

[TXT]

 Apple-MacBook_UsersG..> 14-Oct-2012 18:40  1.5M  

[TXT]

 Apple-MacBook_Air_Us..> 14-Oct-2012 18:40  1.3M  

[TXT]

 Apple-iPod_shuffle_F..> 14-Oct-2012 18:39  1.6M  

[TXT]

 Apple-iMacG5_17inch_..> 14-Oct-2012 18:39  1.6M  

[TXT]

 Apple-Aperture_Perfo..> 14-Oct-2012 18:39  1.6M  

[TXT]

 Apple-iMacG5_iSight_..> 14-Oct-2012 18:39  1.9M  

[TXT]

 Apple-QuickTime71_Us..> 14-Oct-2012 18:38  1.3M  

[TXT]

 Apple-nikeipod_users..> 14-Oct-2012 18:22  1.3M  

[TXT]

 Apple-Aperture_Photo..> 14-Oct-2012 18:21  1.3M  

[TXT]

 Apple-iPod_nano_6thg..> 14-Oct-2012 17:31  1.7M  

[TXT]

 Apple-MacPro_HardDri..> 14-Oct-2012 17:30  1.5M  

[TXT]

 Apple-MacBook_Pro_15..> 14-Oct-2012 17:22  2.5M  

[TXT]

 Apple-iWork09_formle..> 14-Oct-2012 17:22  3.0M  

[TXT]

 Apple-PowerBook G4 K..> 14-Oct-2012 17:21  3.2M  

[TXT]

 Apple-Logic_Pro_8_Ge..> 14-Oct-2012 17:21  2.5M  

[TXT]

 Apple-iMacG5_Battery..> 14-Oct-2012 17:21  2.5M  

[TXT]

 Apple-Xserve_Intel_D..> 14-Oct-2012 17:20  1.8M  

[TXT]

 Apple-StoreKitGuide...> 14-Oct-2012 17:20  1.9M  

[TXT]

 Apple-iPod_classic_1..> 14-Oct-2012 17:03  2.4M  

[TXT]

 Apple-Apple_AirPort_..> 14-Oct-2012 17:02  2.3M  

[TXT]

 Apple-iPad_iOS4_Bruk..> 14-Oct-2012 16:55  2.5M  

[TXT]

 Apple-MacBook_13inch..> 14-Oct-2012 16:53  2.8M  

[TXT]

 Apple-iPhone_3G_Vikt..> 14-Oct-2012 16:53  2.8M  

[TXT]

 Apple-MacBook_13inch..> 14-Oct-2012 16:52  2.7M  

[TXT]

 Apple-iMac_Mid2010_U..> 14-Oct-2012 16:52  2.6M  

[TXT]

 Apple-MacBook_Air_11..> 14-Oct-2012 16:51  2.9M  

[TXT]

 Apple-iDVD_08_Komme_..> 14-Oct-2012 16:51  2.5M  

[TXT]

 Apple-imac_mid2011_u..> 14-Oct-2012 16:50  2.8M  

[TXT]

 Apple-MacBook_Pro_15..> 14-Oct-2012 16:50  2.8M  

[TXT]

 Apple-GarageBand_09_..> 14-Oct-2012 16:50  3.1M  

[TXT]

 Apple-MacBook_13inch..> 14-Oct-2012 16:49  3.1M  

[TXT]

 Apple-iPod_Fifth_Gen..> 14-Oct-2012 16:49  3.2M  

[TXT]

 Apple-Wireless_Keybo..> 14-Oct-2012 16:49  3.3M  

[TXT]

 Apple-MacBook_13inch..> 14-Oct-2012 16:48  2.4M  

[TXT]

 Apple-iPhone_3GS_Vik..> 14-Oct-2012 16:48  2.5M  

[TXT]

 Apple-MacBook_13inch..> 14-Oct-2012 16:47  2.6M  

[TXT]

 Apple-Pages09_Bruker..> 14-Oct-2012 16:47  3.1M  

[TXT]

 Apple-MacBook_Air_Br..> 14-Oct-2012 16:46  3.2M  

[TXT]

 Apple-iPhoto_08_Komm..> 14-Oct-2012 16:46  3.2M  

[TXT]

 Apple-ipad2_brukerha..> 14-Oct-2012 16:45  2.4M  

[TXT]

 Apple-Mac_mini_Early..> 14-Oct-2012 16:45  2.4M  

[TXT]

 Apple-macbook_air_13..> 14-Oct-2012 16:45  2.5M  

[TXT]

 Apple-iMacG5_iSight_..> 14-Oct-2012 11:29  1.8M  

[TXT]

 Apple-Snow_Leopard_I..> 14-Oct-2012 11:29  1.8M  

[TXT]

 Apple-iPhone_3GS_Hur..> 14-Oct-2012 11:29  1.8M  

[TXT]

 Apple-TimeCapsule_Kl..> 14-Oct-2012 11:28  1.4M  

[TXT]

 Apple-Velkommen_til_..> 14-Oct-2012 11:28  1.6M  

[TXT]

 Apple-MacBook_Pro_17..> 14-Oct-2012 11:28  1.5M  

[TXT]

 Apple-MacBook_Pro_13..> 14-Oct-2012 11:27  1.7M  

[TXT]

 Apple-NiPod_photo_Br..> 14-Oct-2012 11:27  1.8M  

[TXT]

 Apple-Numbers09_Bruk..> 14-Oct-2012 11:27  2.2M  

[TXT]

 Apple-MacBook_Pro_15..> 14-Oct-2012 11:27  2.3M  

[TXT]

 Apple-MacBook_Air_13..> 14-Oct-2012 11:26  2.3M  

[TXT]

 Apple-iPod_touch_iOS..> 14-Oct-2012 11:26  2.7M  

[TXT]

 Apple-iPod_nano_6thg..> 14-Oct-2012 11:25  2.8M  

[TXT]

 Apple-GE_Money_Bank_..> 14-Oct-2012 11:24  1.5M  

[TXT]

 Apple-ipad_brukerhan..> 14-Oct-2012 11:24  1.8M  

[TXT]

 Apple-iPod_Handbok_S..> 14-Oct-2012 11:24  1.4M  

[TXT]

 Apple-Boot_Camp_Inst..> 14-Oct-2012 11:24  1.4M  

[TXT]

 Apple-Network-Servic..> 14-Oct-2012 11:23  1.4M  

[TXT]

 Apple-iPod_classic_1..> 14-Oct-2012 11:23  1.5M  

[TXT]

 Apple-iMovie_08_Komm..> 14-Oct-2012 11:23  1.6M  

[TXT]

 Apple-Apple_TV_Klarg..> 14-Oct-2012 11:23  1.3M  

[TXT]

 Apple-iPhone_4_Vikti..> 14-Oct-2012 11:22  1.4M  

[TXT]

 Apple-iPod_shuffle_3..> 14-Oct-2012 11:22  1.5M  

[TXT]

 Apple-MacOSX10.3_Wel..> 14-Oct-2012 11:22  1.5M  

[TXT]

 Apple-Boot_Camp_Inst..> 14-Oct-2012 11:22  1.5M  

[TXT]

 Apple-iPod_touch_2.1..> 14-Oct-2012 11:21  1.7M  

[TXT]

 Apple-PowerMacG5_Use..> 14-Oct-2012 11:21  1.8M  

[TXT]

 Apple-Welcome_to_Leo..> 14-Oct-2012 11:21  1.5M  

[TXT]

 Apple-System_Image_A..> 14-Oct-2012 09:43  2.1M  

[TXT]

 Apple-Administration..> 14-Oct-2012 09:42  2.1M  

[TXT]

 Apple-L-Apple-Multip..> 14-Oct-2012 09:42  2.1M  

[TXT]

 Apple-MagSafe_Airlin..> 14-Oct-2012 09:42  1.9M  

[TXT]

 Apple-AirPort_Expres..> 14-Oct-2012 09:42  1.9M  

[TXT]

 Apple-Mail_Service_v..> 14-Oct-2012 09:41  2.2M  

[TXT]

 Apple-iPod_2ndGen_US..> 14-Oct-2012 09:41  2.2M  

[TXT]

 Apple-Network_Servic..> 14-Oct-2012 09:40  2.5M  

[TXT]

 Apple-User_Managemen..> 14-Oct-2012 09:40  2.1M  

[TXT]

 Apple-Aperture_Insta..> 14-Oct-2012 09:39  2.1M  

[TXT]

 Apple-PCIDualAttache..> 14-Oct-2012 09:39  2.2M  

[TXT]

 Apple-iOS_Business_M..> 14-Oct-2012 09:39  2.3M  

[TXT]

 Apple_Component_AV_C..> 14-Oct-2012 09:38  2.3M  

[TXT]

 Apple-AppleCare_Prot..> 14-Oct-2012 09:38  2.4M  

[TXT]

 Apple-Mac_OS_X_Serve..> 14-Oct-2012 09:37  3.5M  

[TXT]

 Apple-iPod_touch_2.2..> 14-Oct-2012 09:37  2.0M  

[TXT]

 Apple-atadrive_pmg4m..> 14-Oct-2012 09:36  2.2M  

[TXT]

 Apple-iPhone開発ã‚..> 14-Oct-2012 09:36  2.4M  

[TXT]

 Apple-AirMac-カーã..> 14-Oct-2012 09:36  2.0M  

[TXT]

 Apple-Power-Mac-G4-M..> 14-Oct-2012 09:36  1.3M  

[TXT]

 Apple-iPhone_3GS_Fin..> 14-Oct-2012 09:35  1.4M  

[TXT]

 Apple-iMac_Intel-bas..> 14-Oct-2012 09:35  1.4M  

[TXT]

 Apple-Print_Service...> 13-Oct-2012 10:09  2.0M  

[TXT]

 Apple-MacOSX10.3_Wel..> 13-Oct-2012 09:45  1.9M  

[TXT]

 Apple-g4mdd-fw800-lo..> 13-Oct-2012 09:44  1.9M  

[TXT]

 Apple-Motion_3_New_F..> 13-Oct-2012 09:44  1.9M  

[TXT]

 Apple-Windows_Servic..> 13-Oct-2012 09:44  1.7M  

[TXT]

 Apple-DVD_Studio_Pro..> 13-Oct-2012 09:43  3.2M  

[TXT]

 Apple-iBookG3_14inch..> 13-Oct-2012 09:43  1.7M  

[TXT]

 Apple-boot_camp_inst..> 13-Oct-2012 09:43  3.2M  

[TXT]

 Apple-Mac-OS-X-Serve..> 13-Oct-2012 09:42  3.5M  

[TXT]

 Apple-Administration..> 13-Oct-2012 09:41  4.0M  

[TXT]

 Apple-guide_des_fonc..> 13-Oct-2012 09:41  4.1M  

[TXT]

 Apple-Installation_d..> 13-Oct-2012 09:40  4.1M  

[TXT]

 Apple-iMac_Intel-bas..> 13-Oct-2012 09:40  4.2M  

[TXT]

 Apple-PowerBookG4_17..> 13-Oct-2012 09:39  3.1M  

[TXT]

 Apple-Xserve_Setup_G..> 13-Oct-2012 09:39  3.1M  

[TXT]

 Apple-Decouverte_d_A..> 13-Oct-2012 09:38  3.3M  

[TXT]

 Apple-guide_de_l_uti..> 13-Oct-2012 09:38  3.9M  

[TXT]

 Apple-Mac_Pro_Early2..> 13-Oct-2012 09:37  3.9M  

[TXT]

 Apple-Web_Technologi..> 13-Oct-2012 09:36  4.1M  

[TXT]

 Apple-QT_Streaming_S..> 13-Oct-2012 09:35  4.2M  

[TXT]

 Apple-Nouvellesfonct..> 13-Oct-2012 09:35  2.8M  

[TXT]

 Apple-macbook_air_11..> 12-Oct-2012 21:01  3.2M  

[TXT]

 Apple-iphone_guide_d..> 12-Oct-2012 21:01  3.6M  

[TXT]

 Apple-imac_mid2011_u..> 12-Oct-2012 21:01  3.7M  

[TXT]

 Apple-Motion_Supplem..> 12-Oct-2012 21:00  3.9M  

[TXT]

 Apple-mac_pro_server..> 12-Oct-2012 20:59  3.2M  

[TXT]

 Apple-RemoteSupportJ..> 12-Oct-2012 20:42  3.2M  

[TXT]

 Apple-iPod_nano_6thg..> 12-Oct-2012 20:42  3.4M  

[TXT]

 Apple-World_Travel_A..> 12-Oct-2012 20:42  3.3M  

[TXT]

 Apple-Recycle_Contra..> 12-Oct-2012 20:41  3.4M  

[TXT]

 Apple-081811_APP_iPh..> 12-Oct-2012 20:41  3.4M  

[TXT]

 Apple-ARA_Japan.pdf.htm 12-Oct-2012 20:40  3.4M  

[TXT]

 Apple-iPod_shuffle_4..> 12-Oct-2012 20:40  3.5M  

[TXT]

 Apple-mac_integratio..> 12-Oct-2012 20:38  3.0M  

[TXT]

 Apple-Guide_de_confi..> 12-Oct-2012 20:38  2.9M  

[TXT]

 Apple-AppleCare-prot..> 12-Oct-2012 13:41  4.1M  

[TXT]

 PowerBook-G4-15-pouc..> 12-Oct-2012 13:19  3.2M  

[TXT]

 Apple-PowerBook-G4-1..> 12-Oct-2012 13:18  2.8M  

[TXT]

 Apple-Remote-Desktop..> 12-Oct-2012 13:18  3.2M  

[TXT]

 Apple-Manuel-de-l-ad..> 12-Oct-2012 13:18  3.4M  

[TXT]

 Apple-CUPS−Manuel-..> 12-Oct-2012 13:17  3.5M  

[TXT]

 Apple-The-gnu-Binary..> 12-Oct-2012 13:16  3.6M  

[TXT]

 Apple-Motion-5-Manue..> 12-Oct-2012 13:16  3.8M  

[TXT]

 Apple-Mac_mini_Intel..> 12-Oct-2012 13:15  2.9M  

[TXT]

 Apple-Compressor_3_B..> 12-Oct-2012 13:14  3.0M  

[TXT]

 Apple-Mac_mini_Early..> 12-Oct-2012 13:14  3.0M  

[TXT]

 Apple-emac-memory.pd..> 12-Oct-2012 13:13  3.0M  

[TXT]

 Apple-aperture_photo..> 12-Oct-2012 13:13  3.1M  

[TXT]

 Apple-Logic9-examen-..> 12-Oct-2012 13:12  3.2M  

[TXT]

 Apple-Final-Cut-Pro-..> 12-Oct-2012 13:12  3.3M  

[TXT]

 Apple-mac_integratio..> 12-Oct-2012 13:11  2.7M  

[TXT]

 Apple-Prise_en_charg..> 12-Oct-2012 13:11  2.2M  

[TXT]

 Apple-Mac_mini_Intel..> 12-Oct-2012 13:11  2.4M  

[TXT]

 Apple-Premiers__cont..> 12-Oct-2012 13:11  2.3M  

[TXT]

 Apple-ard_admin_guid..> 12-Oct-2012 13:10  2.7M  

[TXT]

 Apple-Nike_+_iPod_Us..> 12-Oct-2012 13:10  2.4M  

[TXT]

 Apple-Open_Directory..> 12-Oct-2012 13:09  1.8M  

[TXT]

 Apple-Final-Cut-Pro-..> 12-Oct-2012 13:09  1.8M  

[TXT]

 Apple-Tiger_Guide_In..> 12-Oct-2012 13:08  1.8M  

[TXT]

 Apple-premiers_conta..> 12-Oct-2012 13:08  1.9M  

[TXT]

 Apple-Guide_de_l_adm..> 12-Oct-2012 13:08  2.3M  

[TXT]

 Apple-Apple-Installa..> 12-Oct-2012 13:08  2.0M  

[TXT]

 Apple-Apple-iPad-Man..> 10-Oct-2012 16:03  2.6M  

[TXT]

 Apple_Universal_Dock..> 10-Oct-2012 16:02  2.7M  

[TXT]

 Apple-MacBook_Pro_15..> 10-Oct-2012 16:02  2.8M  

[TXT]

 Apple-MainStag- 2-ut..> 10-Oct-2012 16:01  2.8M  

[TXT]

 Apple-Xserve_Guide_d..> 10-Oct-2012 16:01  2.8M  

[TXT]

 Apple-Logic-Pro-9-Pr..> 10-Oct-2012 16:01  3.5M  

[TXT]

 Apple-Impulse-Respon..> 10-Oct-2012 16:00  2.9M  

[TXT]

 Apple-iPod-shuffle-B..> 10-Oct-2012 15:59  3.6M  

[TXT]

 Apple-iPod-shuffle-B..> 10-Oct-2012 15:59  3.5M  

[TXT]

 Apple-boot_camp_inst..> 10-Oct-2012 15:58  3.7M  

[TXT]

 Apple-Manual_de_func..> 10-Oct-2012 15:58  3.7M  

[TXT]

 Apple-Xserve_TO_J070..> 10-Oct-2012 08:01  4.0M  

[TXT]

 Apple-Logic-Pro-9-Ef..> 10-Oct-2012 07:58  3.0M  

[TXT]

 Apple-Guide_de_l_uti..> 10-Oct-2012 07:57  2.6M  

[TXT]

 Apple-iPhone_Bluetoo..> 10-Oct-2012 07:57  2.1M  

[TXT]

 Apple-services_de_co..> 10-Oct-2012 07:56  2.9M  

[TXT]

 Apple-premiers_conta..> 10-Oct-2012 07:56  2.7M  

[TXT]

 Apple-iMacG5_iSight_..> 10-Oct-2012 07:55  3.0M  

[TXT]

 Apple-Mac_Pro_User_G..> 10-Oct-2012 07:55  3.1M  

[TXT]

 Apple-systemoverview..> 10-Oct-2012 07:54  3.8M  

[TXT]

 Apple-MainStage-User..> 10-Oct-2012 07:24  5.2M  

[TXT]

 Apple-Compressor-4-U..> 10-Oct-2012 07:23  5.9M  

[TXT]

 Apple-Administration..> 10-Oct-2012 07:22  3.0M  

[TXT]

 Apple-iBookG4Getting..> 10-Oct-2012 07:21  3.1M  

[TXT]

 Apple-iPod_classic_1..> 10-Oct-2012 07:21  3.3M  

[TXT]

 Apple-iPod_shuffle_3..> 10-Oct-2012 07:20  3.4M  

[TXT]

 Apple-PowerBookG4_15..> 09-Oct-2012 18:51  4.8M  

[TXT]

 Apple_iPod_touch_Use..> 09-Oct-2012 18:40  3.7M  

[TXT]

 Apple-guide_des_fonc..> 09-Oct-2012 18:40  3.9M  

[TXT]

 Apple-iDVD5_Getting_..> 09-Oct-2012 18:38  4.2M  

[TXT]

 Apple-iphone_user_gu..> 09-Oct-2012 18:38  4.1M  

[TXT]

 Apple-iMac_Late2009_..> 09-Oct-2012 18:37  4.3M  

[TXT]

 Apple-iMac_Mid2010_U..> 09-Oct-2012 18:37  4.3M  

[TXT]

 Apple-macbook_pro_13..> 09-Oct-2012 18:36  4.6M  

[TXT]

 Apple-MacBook_Pro_15..> 09-Oct-2012 18:36  4.6M  

[TXT]

 Apple-LED_Cinema_Dis..> 09-Oct-2012 18:34  4.7M  

[TXT]

 Apple-MacBook_Pro_15..> 09-Oct-2012 18:34  4.6M  

[TXT]

 Apple-Logic_Pro_8.0_..> 09-Oct-2012 18:33  4.8M  

[TXT]

 Apple_ipad_user_guid..> 01-Oct-2012 09:56  3.5M  

[TXT]

 Apple_iphone_upute_z..> 01-Oct-2012 09:53  3.2M  

[TXT]

 Apple_iphone_4s_fing..> 01-Oct-2012 09:50  2.8M  

[TXT]

 Apple_Time_Capsule_E..> 01-Oct-2012 09:48  2.8M  

[TXT]

 Apple_Guide_de_l_uti..> 01-Oct-2012 09:46  2.8M  

[TXT]

 Apple_macbook_pro_13..> 01-Oct-2012 09:44  2.7M  

[TXT]

 Apple_macbook_pro_re..> 01-Oct-2012 09:37  2.6M  

[TXT]

 Apple_iphone_4s_fing..> 01-Oct-2012 09:35  2.6M  

[TXT]

 Apple_ipod_touch_man..> 01-Oct-2012 09:30  2.6M  

[TXT]

 Apple_TV_2nd_gen_Set..> 01-Oct-2012 09:28  2.3M  

[TXT]

 Apple_ipod_touch_use..> 01-Oct-2012 09:26  2.3M  

[TXT]

 apple_Macintosh-User..> 01-Oct-2012 09:24  2.0M  

[TXT]

 apple_macbook_pro-re..> 01-Oct-2012 09:21  3.3M  

[TXT]

 apple_apple_tv_3rd_g..> 01-Oct-2012 09:19  3.3M  

[TXT]

 apple_iphone_brukerh..> 01-Oct-2012 09:17  3.2M  

[TXT]

 apple_iphone_5_info.htm 01-Oct-2012 09:15  2.9M  

[TXT]

 apple_iphone_gebruik..> 01-Oct-2012 09:13  2.9M  

[TXT]

 apple_earpods_user_g..> 01-Oct-2012 09:11  2.5M  

[TXT]

 apple_tv_3rd_gen_imp..> 22-Sep-2012 18:53  2.5M  

[TXT]

 Apple_TV_2e_gen_Guid..> 22-Sep-2012 18:51  2.4M  

[TXT]

 Apple-MacBook_Pro_13..> 22-Sep-2012 18:49  3.7M  

[TXT]

 Apple-MacBook_13inch..> 22-Sep-2012 18:48  3.6M  

[TXT]

 Apple-MacBook_Air_Gu..> 22-Sep-2012 18:41  3.5M  

[TXT]

 Apple_Xserve_Diagnos..> 22-Sep-2012 18:39  3.4M  

[TXT]

 Apple-MacBook_Pro_17..> 22-Sep-2012 18:35  3.3M  

[TXT]

 Apple-Apple_Wireless..> 22-Sep-2012 18:31  3.2M  

[TXT]

 Apple-NVIDIA_GeForce..> 22-Sep-2012 18:30  3.2M  

[TXT]

 Apple-CinemaDisplays..> 22-Sep-2012 18:26  3.2M  

[TXT]

 Apple-iPhone_Finger_..> 22-Sep-2012 18:22  3.1M  

[TXT]

 Apple-Boot_Camp_Guid..> 22-Sep-2012 12:03  3.1M  

[   ]

 Apple-iphone_5_guide..> 22-Sep-2012 12:01   14M  

[TXT]

 Apple-iPhone-5-Guide..> 22-Sep-2012 12:00  3.1M  

[TXT]

 Apple-iphone_ios5_gu..> 22-Sep-2012 11:59  2.8M  

[TXT]

 Apple-mac_pro_mid201..> 22-Sep-2012 11:58  2.4M  

[TXT]

 Apple-iPod_nano_6thg..> 22-Sep-2012 11:58  3.0M  

[TXT]

 Apple-thunderbolt_di..> 22-Sep-2012 11:57  2.9M  

[TXT]

 Apple-Numbers09_guid..> 22-Sep-2012 11:56  2.8M  

[TXT]

 Apple-boot_camp_inst..> 22-Sep-2012 11:56  2.9M  

[TXT]

 Apple-imacdebut2006g..> 22-Sep-2012 11:55  2.9M  

[TXT]

 Apple-MacBook_Pro_Us..> 22-Sep-2012 11:55  2.8M  

[TXT]

 Apple-iBook.htm         22-Sep-2012 11:54  2.6M  

[TXT]

 Apple-Apple_Qmaster_..> 22-Sep-2012 11:54  2.6M  

[TXT]

 Apple-iPhone_3G_Guid..> 22-Sep-2012 11:53  2.4M  

[TXT]

 Apple-Wireless_Might..> 22-Sep-2012 11:53  2.3M  

[TXT]

 Apple-Logic_Studio_0..> 22-Sep-2012 11:52  2.2M  

[TXT]

 Apple-Xserve_2008_Gu..> 22-Sep-2012 11:52  2.2M  

[TXT]

 Apple-iMac_24inch_Ve..> 22-Sep-2012 11:51  2.9M  

[TXT]

 Apple-Mac-OS-X-Serve..> 22-Sep-2012 11:51  2.9M  

[TXT]

 Apple-Decouverte_d_A..> 22-Sep-2012 11:50  2.8M  

[TXT]

 Apple-PowerBookG4_12..> 22-Sep-2012 11:13  2.5M  

[TXT]

 Apple-ipad_petunjuk_..> 21-Sep-2012 16:40  2.8M  

[TXT]

 apple-airmac_express..> 21-Sep-2012 16:36  2.8M  

[TXT]

 Apple-QuickTake-150.htm 21-Sep-2012 16:32  2.7M  

[TXT]

 Apple-Apple_TV_2nd_g..> 21-Sep-2012 16:28  2.7M  

[TXT]

 Apple-Macintosh-Perf..> 21-Sep-2012 16:25  2.7M  

[TXT]

 Apple-MacBook_Pro_15..> 21-Sep-2012 15:03  2.5M  

[TXT]

 Apple-macbook_air-11..> 21-Sep-2012 14:59  2.4M  

[TXT]

 Apple-iphone_brugerh..> 21-Sep-2012 14:57  2.4M  

[TXT]

 Apple-iPod_shuffle_4..> 21-Sep-2012 14:54  2.9M  

[TXT]

 Apple-compressor_4_u..> 21-Sep-2012 14:51  3.3M  

[TXT]

 Apple-share_monitor_..> 21-Sep-2012 14:49  2.7M  

[TXT]

 Apple-macbook_air-13..> 21-Sep-2012 14:47  3.1M  

[TXT]

 Apple-macbook_pro-15..> 21-Sep-2012 14:45  3.1M  

[TXT]

 Apple-Guide_de_l_uti..> 21-Sep-2012 14:31  3.1M  

[TXT]

 Apple-iPodshuffledel..> 21-Sep-2012 14:28  3.3M  

[TXT]

 Apple-MacBook_13inch..> 21-Sep-2012 14:25  3.7M  

[TXT]

 Apple-iPhone_Deux_do..> 21-Sep-2012 14:20  3.5M  

[TXT]

 Apple-ipad_2_manual_..> 21-Sep-2012 14:18  3.5M  

[TXT]

 Apple-macbook_air-11..> 21-Sep-2012 14:15  3.2M  

[TXT]

 Apple-Power-Macintos..> 21-Sep-2012 14:08  2.9M  

[TXT]

 Apple-Enterprise_Dep..> 21-Sep-2012 10:42  2.7M  

[TXT]

 Apple-iPhone-Benutze..> 21-Sep-2012 10:39  4.0M  

[TXT]

 Apple-iPhone-Manual-..> 21-Sep-2012 10:36  3.6M  

[TXT]

 Apple-iPhone-User-Gu..> 21-Sep-2012 10:32  3.3M  

[TXT]

 Apple-iphone_4s_il_m..> 21-Sep-2012 10:17  3.7M  

[TXT]

 Apple-iphone_user_gu..> 21-Sep-2012 10:12  3.7M  

[TXT]

 Apple-iPhone_Anvanda..> 21-Sep-2012 10:09  3.5M  

[TXT]

 Apple-iphone_manual_..> 21-Sep-2012 10:06  3.2M  

[TXT]

 Apple-iphone_user_gu..> 21-Sep-2012 10:03  4.0M  

[TXT]

 Apple-iphone_manuali..> 21-Sep-2012 10:00  3.6M  

[TXT]

 Apple-ipod_touch_use..> 21-Sep-2012 09:57  3.2M  

[TXT]

 Apple-ipad_user_guid..> 21-Sep-2012 09:52  3.2M  

[TXT]

 Apple-iphone_4s_pods..> 21-Sep-2012 09:50  3.1M  

[TXT]

 Apple-macbook_air-13..> 21-Sep-2012 09:46  3.1M  

[TXT]

 Apple-ipod_touch_use..> 21-Sep-2012 09:44  3.1M  

[TXT]

 Apple-ipad_brugerhan..> 21-Sep-2012 09:41  3.0M  

[TXT]

 Apple-Case-Design-Gu..> 21-Sep-2012 09:36  2.7M  

[TXT]

 Apple-Accessibility-..> 21-Sep-2012 09:33  2.7M  

[TXT]

 Apple-iphone_4s_info..> 21-Sep-2012 09:28  2.7M  

[TXT]

 Apple-iPhone_3G_Impo..> 21-Sep-2012 09:25  2.6M  

[TXT]

 Apple-iPhone_Bluetoo..> 21-Sep-2012 09:24  2.5M  

[TXT]

 Apple-Premiers_conta..> 18-Sep-2012 10:55  2.3M  

[TXT]

 Apple-iPod_shuffle_F..> 18-Sep-2012 10:51  2.2M  

[TXT]

 Apple-iphone_4s_impo..> 18-Sep-2012 10:49  3.5M  

[TXT]

 Apple-iPhone_iOS3.1_..> 18-Sep-2012 10:47  3.4M  

[TXT]

 Apple-User-s-Guide-M..> 18-Sep-2012 10:46  3.1M  

[TXT]

 Apple-QuickTake-100-..> 18-Sep-2012 10:42  2.9M  

[TXT]

 Apple-Personal-Laser..> 18-Sep-2012 10:39  2.8M  

[TXT]

 Apple-Cinema_Tools_4..> 18-Sep-2012 10:36  2.8M  

[TXT]

 Apple-iMac_G5_de_lut..> 18-Sep-2012 10:34  2.2M  

[TXT]

 Apple-Manuel_de_l'ut..> 18-Sep-2012 10:32  2.1M  

[TXT]

 Apple-TimeCapsule_Se..> 18-Sep-2012 09:45  1.8M  

[TXT]

 Apple-guide_de_confi..> 18-Sep-2012 09:40  3.1M  

[TXT]

 Apple-Color_1.0_User..> 18-Sep-2012 09:37  4.6M  

[TXT]

 Apple-Compressor_3_U..> 18-Sep-2012 09:35  4.0M  

[TXT]

 Apple-Manuel_de_l_ut..> 18-Sep-2012 09:32  3.4M  

[TXT]

 Apple-macbook_air-11..> 18-Sep-2012 09:29  3.2M  

[TXT]

 Apple-macbook_pro-13..> 18-Sep-2012 09:27  3.2M  

[TXT]

 Apple-macbook_pro-re..> 18-Sep-2012 09:25  3.5M  

[TXT]

 Apple-macbook_air-mi..> 18-Sep-2012 09:18  3.4M  

[TXT]

 Apple-macbook_air_11..> 18-Sep-2012 09:14  3.4M  

[TXT]

 Apple-Compressor-4-B..> 18-Sep-2012 09:12  4.1M  

[TXT]

 Apple-thunderbolt_di..> 18-Sep-2012 09:09  3.6M  

[TXT]

 Apple-Manuale-Utente..> 18-Sep-2012 09:07  3.5M  

[TXT]

 Apple-Leopard_Instal..> 18-Sep-2012 09:03  3.4M  

[TXT]

 Apple-final_cut_pro_..> 18-Sep-2012 09:01  3.4M  

[TXT]

 Apple-imacg5_HD17_DI..> 18-Sep-2012 08:58  3.4M  

[TXT]

 Apple-PowerMacG5_Use..> 18-Sep-2012 08:55  3.4M  

[TXT]

 Apple-Macmini_Guide_..> 18-Sep-2012 08:53  3.2M  

[TXT]

 Apple-Manuel_de_l_ut..> 18-Sep-2012 08:50  3.8M  

[TXT]

 Apple-Instruments_et..> 18-Sep-2012 08:48  4.5M  

[TXT]

 Apple-Nouvelles_fonc..> 18-Sep-2012 07:58  3.7M  

[TXT]

 Apple-Workgroup-Serv..> 18-Sep-2012 07:41  3.9M  

[TXT]

 Apple-Macintosh-Perf..> 18-Sep-2012 07:41  4.0M  

[TXT]

 Apple-Macintosh-Perf..> 18-Sep-2012 07:40  4.2M  

[TXT]

 Apple-PowerBook-User..> 18-Sep-2012 07:40  4.2M  

[TXT]

 Apple-Keynote-2-Guid..> 18-Sep-2012 07:39  4.4M  

[TXT]

 Apple-MacBook_Early_..> 18-Sep-2012 07:38  4.4M  

[TXT]

 Apple-macbook_air_gu..> 18-Sep-2012 07:37  4.6M  

[TXT]

 Apple-imacG5_17inch_..> 18-Sep-2012 07:37  4.6M  

[TXT]

 Apple-livetype_2_use..> 18-Sep-2012 07:36  4.8M  

[TXT]

 AppleTV_SetupGuide.htm  18-Sep-2012 07:35  3.5M  

[TXT]

 Apple-Aperture_2_Rac..> 18-Sep-2012 07:34  3.6M  

[TXT]

 Apple-Manuel_de_l_ut..> 18-Sep-2012 07:34  3.6M  

[TXT]

 Apple-iPod-nano-Guid..> 17-Sep-2012 17:31  3.7M  

[TXT]

 Apple-iPod-nano-Guid..> 17-Sep-2012 17:30  3.7M  

[TXT]

 Apple-iPod-nano-Guid..> 17-Sep-2012 17:20  3.4M  

[TXT]

 Apple-Boot-Camp-Guid..> 17-Sep-2012 17:18  3.5M  

[TXT]

 Apple-iPad-User-Guid..> 17-Sep-2012 17:15  3.5M  

[TXT]

 APPLEmanuelutilisate..> 05-Sep-2012 07:20  7.0M  

[TXT]

 User-Guide-iPad-For-..> 05-Sep-2012 07:16  2.9M  

[TXT]

 Guide-d-installation..> 05-Sep-2012 07:03  2.6M  

[TXT]

 Guide-de-l-utilisate..> 05-Sep-2012 06:57  2.6M  

[TXT]

 Guide-de-l-utilisate..> 05-Sep-2012 06:54  2.6M  

[TXT]

 Guide-de-l-utilisate..> 05-Sep-2012 06:50  3.1M  

[TXT]

 Guide-de-l-utilisate..> 05-Sep-2012 06:41  3.9M  

[TXT]

 Guide-de-configurati..> 04-Sep-2012 16:49  3.9M  

[TXT]

 Guide-de-configurati..> 04-Sep-2012 16:45  3.9M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 16:41  3.8M  

[TXT]

 Guide-de-l-administr..> 04-Sep-2012 16:36  3.7M  

[TXT]

 Guide-de-deploiement..> 04-Sep-2012 16:32  3.4M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 16:21  3.2M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 16:19  2.8M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 16:15  2.8M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 16:11  2.3M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 16:01  2.2M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 15:57  2.1M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 15:53  1.9M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 15:48  1.7M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 12:49  1.3M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 12:30  4.5M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 12:23  4.3M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 12:16  4.4M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 12:05  4.4M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 12:00  4.3M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 12:00  5.1M  

[TXT]

 Guide-de-l-Utilisate..> 04-Sep-2012 11:52  4.1M  

[TXT]

 PowerBook-G4-15-pouc..> 04-Sep-2012 11:21  3.7M  

[TXT]

 iPad-Guide-de-l-util..> 04-Sep-2012 11:08  5.1M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 10:51  3.4M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 10:37  3.4M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 10:32  2.8M  

[TXT]

 Guide-de-l-utilisate..> 04-Sep-2012 10:26  2.5M  

[TXT]

 Power-Mac-G5-Guide-d..> 04-Sep-2012 10:20  2.0M  

[TXT]

 iPod_nano_6thgen_Gui..> 30-Aug-2012 10:53  142K  

[TXT]

 iphone_guide_de_l_ut..> 30-Aug-2012 10:36  377K  

[TXT]

 iPod_nano_6thgen_Use..> 29-Jan-2012 11:37  119K  

[TXT]

 iPadguideutilisateur..> 29-Jan-2012 10:59  379K  

[   ]

 PowerMacG5_UserGuide..> 24-Jan-2012 09:55  9.2M  

[   ]

 TimeCapsule_SetupGui..> 24-Jan-2012 09:55  843K  

[   ]

 quicktime_guide_de_l..> 24-Jan-2012 09:54  617K  

[   ]

 premiers_contacts_av..> 24-Jan-2012 09:54  1.1M  

[   ]

 PowerBookG4_12inch1...> 24-Jan-2012 09:54  2.3M  

[   ]

 PB_G4_15inch1.33-1.5..> 24-Jan-2012 09:53  2.2M  

[   ]

 MacBookPro_17inch_Us..> 24-Jan-2012 09:53  3.2M  

[   ]

 macbookpro_15and17-i..> 24-Jan-2012 09:52  1.8M  

[   ]

 MacBook_Early_2008_G..> 24-Jan-2012 09:52  2.4M  

[   ]

 macbook_air_guide_de..> 24-Jan-2012 09:52  2.0M  

[   ]

 Instruments_et_effet..> 24-Jan-2012 09:51   11M  

[   ]

 livetype_2_user_manu..> 24-Jan-2012 09:51  3.9M  

[   ]

 iSightUserGuide.pdf     24-Jan-2012 09:50  882K  

[   ]

 ipodhifi2006guide.pdf   24-Jan-2012 09:50  5.1M  

[   ]

 guide_des_fonctionna..> 24-Jan-2012 09:48  6.6M  

[   ]

 iMac_G5_de_lutilisat..> 24-Jan-2012 09:48  3.0M  

[   ]

 iMac_Early2008_Guide..> 24-Jan-2012 09:47  2.5M  

[   ]

 Guide_de_lutilisateu..> 24-Jan-2012 09:46  548K  

[   ]

 Guide_de_l_utilisate..> 24-Jan-2012 09:46  727K  

[   ]

 Guide_de_l_utilisate..> 24-Jan-2012 09:46  4.7M  

[   ]

 guide_de_l_utilisate..> 24-Jan-2012 09:46  4.1M  

[   ]

 guide_de_l_utilisate..> 24-Jan-2012 09:44  3.2M  

[   ]

 Comment_demarrer_Leo..> 24-Jan-2012 09:44  8.1M  

[   ]

 Guide_de_l_utilisate..> 24-Jan-2012 09:43  3.7M  

[   ]

 guide_de_configurati..> 24-Jan-2012 09:42  909K  

[TXT]

 AppleMacBookAir14 GH..> 26-Oct-2011 15:54  7.7K

The NewtonScript Programming Language  Apple Computer, Inc. © 1996, Apple Computer, Inc. All rights reserved. No part of this publication or the software described in it may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, mechanical, electronic, photocopying, recording, or otherwise, without prior written permission of Apple Computer, Inc., except in the normal use of the software or to make a backup copy of the software. The same proprietary and copyright notices must be affixed to any permitted copies as were affixed to the original. This exception does not allow copies to be made for others, whether or not sold, but all of the material purchased (with all backup copies) may be sold, given, or loaned to another person. Under the law, copying includes translating into another language or format. You may use the software on any computer owned by you, but extra copies cannot be made for this purpose. Printed in the United States of America. The Apple logo is a registered trademark of Apple Computer, Inc. Use of the “keyboard” Apple logo (Option-Shift-K) for commercial purposes without the prior written consent of Apple may constitute trademark infringement and unfair competition in violation of federal and state laws. No licenses, express or implied, are granted with respect to any of the technology described in this book. Apple retains all intellectual property rights associated with the technology described in this book. This book is intended to assist application developers to develop applications only for licensed Newton platforms. Apple Computer, Inc. 20525 Mariani Avenue Cupertino, CA 95014 408-996-1010 Apple, the Apple logo, APDA, AppleLink, LaserWriter, Macintosh, and Newton are trademarks of Apple Computer, Inc., registered in the United States and other countries. The light bulb logo, MessagePad, NewtonScript, and Newton Toolkit are trademarks of Apple Computer, Inc. Adobe Illustrator and PostScript are trademarks of Adobe Systems Incorporated, which may be registered in certain jurisdictions. FrameMaker is a registered trademark of Frame Technology Corporation. Helvetica and Palatino are registered trademarks of Linotype Company. ITC Zapf Dingbats is a registered trademark of International Typeface Corporation. Simultaneously published in the United States and Canada. LIMITED WARRANTY ON MEDIA AND REPLACEMENT If you discover physical defects in the manual or in the media on which a software product is distributed, APDA will replace the media or manual at no charge to you provided you return the item to be replaced with proof of purchase to APDA. ALL IMPLIED WARRANTIES ON THIS MANUAL, INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, ARE LIMITED IN DURATION TO NINETY (90) DAYS FROM THE DATE OF THE ORIGINAL RETAIL PURCHASE OF THIS PRODUCT. Even though Apple has reviewed this manual, APPLE MAKES NO WARRANTY OR REPRESENTATION, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THIS MANUAL, ITS QUALITY, ACCURACY, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. AS A RESULT, THIS MANUAL IS SOLD “AS IS,” AND YOU, THE PURCHASER, ARE ASSUMING THE ENTIRE RISK AS TO ITS QUALITY AND ACCURACY. IN NO EVENT WILL APPLE BE LIABLE FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES RESULTING FROM ANY DEFECT OR INACCURACY IN THIS MANUAL, even if advised of the possibility of such damages. THE WARRANTY AND REMEDIES SET FORTH ABOVE ARE EXCLUSIVE AND IN LIEU OF ALL OTHERS, ORAL OR WRITTEN, EXPRESS OR IMPLIED. No Apple dealer, agent, or employee is authorized to make any modification, extension, or addition to this warranty. Some states do not allow the exclusion or limitation of implied warranties or liability for incidental or consequential damages, so the above limitation or exclusion may not apply to you. This warranty gives you specific legal rights, and you may also have other rights which vary from state to state. 11/95 iii Contents Figures, Tables, and Listings ix Preface About This Book xi About the Audience xi Related Books xi Sample Code xii Conventions Used in This Book xiii Special Fonts in Text xiii Syntax Conventions xiv Developer Products and Support xv Undocumented System Software Objects xvi Chapter 1 Overview 1-1 Introduction 1-1 Semantic Overview 1-2 Expressions 1-2 The Object Model 1-2 Data Types and Classes 1-3 Scope 1-4 Extent 1-6 Garbage Collection 1-6 How Is NewtonScript Dynamic? 1-7 Basic Syntax 1-8 Semicolon Separators 1-8 In-Line Object Syntax 1-9 Character Set 1-9 Comments 1-10 A Code Example 1-10 Compatibility 1-11 iv Chapter 2 Objects, Expressions, and Operators 2-1 Objects and the Class System 2-1 Classes and Subclasses 2-3 Immediate and Reference Values 2-5 The NewtonScript Objects 2-8 Character 2-8 Boolean 2-9 Integer 2-10 Real 2-11 Symbol 2-12 String 2-13 Array 2-15 Array Accessor 2-16 Frame 2-17 Frame Accessor 2-19 Path Expression 2-20 Expressions 2-22 Variables 2-23 Local 2-23 Constants 2-26 Constant 2-26 Quoted Constant 2-28 Operators 2-29 Assignment Operator 2-29 Arithmetic Operators 2-31 Equality and Relational Operators 2-33 Boolean Operators 2-34 Unary Operators 2-35 String Operators 2-36 Exists 2-37 Operator Precedence 2-38 v Chapter 3 Flow of Control 3-1 Compound Expressions 3-1 If…Then…Else 3-2 Iterators 3-3 For 3-4 Foreach 3-6 Loop 3-10 While 3-11 Repeat 3-12 Break 3-13 Exception Handling 3-13 Working with Exceptions 3-14 Defining Exceptions 3-15 Exception Symbol Parts 3-16 Exception Frames 3-16 The Try Statement 3-18 Throwing Exceptions 3-19 Throwing an Exception to Another Handler 3-20 Catching Exceptions 3-21 Responding to Exceptions 3-24 Chapter 4 Functions and Methods 4-1 About Functions and Methods 4-1 Function Constructor 4-2 Return 4-3 Function Invocations 4-3 Message-Send Operators 4-4 Call With 4-6 Global Function Declaration 4-7 Global Function Invocation 4-8 Passing Parameters 4-8 vi Function Objects 4-9 Function Context 4-10 The Lexical Environment 4-10 The Message Environment 4-11 An Example Function Object 4-13 Using Function Objects to Implement Abstract Data Types 4-15 Native Functions 4-16 Chapter 5 Inheritance and Lookup 5-1 Inheritance 5-2 Prototype Inheritance 5-2 Creating Prototype Frames 5-2 Prototype Inheritance Rules 5-3 Parent Inheritance 5-4 Creating Parent Frames 5-4 Parent Inheritance Rules 5-5 Combining Prototype and Parent Inheritance 5-6 Inheritance Rules for Slot and Message Lookup 5-7 Inheritance Rules for Testing for the Existence of a Slot 5-9 Inheritance Rules for Setting Slot Values 5-9 An Object-Oriented Example 5-11 Chapter 6 Built-In Functions 6-1 Compatibility 6-2 New Functions 6-2 New Object System Functions 6-2 New String Functions 6-3 New Array Functions 6-3 New Sorted Array Functions 6-3 New Message Sending Functions 6-4 vii New Data Stuffing Functions 6-4 New Functions to Get and Set Globals 6-4 New Miscellaneous Functions 6-4 Obsolete Functions 6-5 Object System Functions 6-5 String Functions 6-16 Bitwise Functions 6-23 Array Functions 6-23 Sorted Array Functions 6-36 Integer Math Functions 6-45 Floating Point Math Functions 6-48 Managing the Floating Point Environment 6-65 Financial Function 6-69 Exception Functions 6-71 Message Sending Functions 6-73 Data Extraction Functions 6-77 Data Stuffing Functions 6-81 Getting and Setting Global Variables and Functions 6-86 Miscellaneous Functions 6-89 Summary of Functions and Methods 6-92 Appendix A Reserved Words A-1 Appendix B Special Character Codes B-1 Appendix C Class-Based Programming C-1 What Are Classes Good For? C-1 Classes: A Brief Reminder C-2 Inheritance in NewtonScript C-3 viii The Basic Idea C-3 Practical Issues C-6 Class Variables C-7 Superclasses C-9 Using Classes to Encapsulate Soup Entries C-10 ROM Instance Prototypes C-10 Leaving Instances Behind C-11 Conclusion C-11 Appendix D NewtonScript Syntax Definition D-1 About the Grammar D-2 Phrasal Grammar D-2 Lexical Grammar D-12 Operator Precedence D-16 Appendix E Quick Reference Card E-1 Glossary GL-1 Index IN-1 ix Figures, Tables, and Listings Chapter 1 Overview 1-1 Figure 1-1 A sample data structure 1-4 Listing 1-1 A simple frame 1-3 Listing 1-2 A dynamic example 1-11 Chapter 2 Objects, Expressions, and Operators 2-1 Figure 2-1 NewtonScript built-in classes 2-3 Figure 2-2 NewtonScript code sample 2-6 Figure 2-3 C code sample 2-7 Table 2-1 Characters with special meanings 2-9 Table 2-2 Codes for specifying special characters within strings 2-14 Table 2-3 Special slot names and their specifications 2-19 Table 2-4 Constant substitution work-arounds 2-27 Table 2-5 Operator precedence and associativity 2-39 Chapter 3 Flow of Control 3-1 Figure 3-1 Data objects and their relationships 3-9 Table 3-1 Result comparison for the iterators foreach and foreach deeply 3-10 Table 3-2 Exception frame data slot name and contents 3-17 Table 3-3 Exception frame examples 3-17 Listing 3-1 Exception symbols 3-16 Listing 3-2 The Throw function 3-19 Listing 3-3 Several onexception clauses ordered improperly 3-22 x Listing 3-4 The onexception clauses properly ordered 3-22 Listing 3-5 Improperly nested try blocks 3-23 Listing 3-6 Nested try block problem fixed using begin and end (shown in bold) 3-23 Listing 3-7 Handling a soup store exception 3-24 Listing 3-8 An exception handler checking the exception frame 3-25 Chapter 4 Functions and Methods 4-1 Figure 4-1 The parts of a function object 4-10 Figure 4-2 functionObject1 dissected 4-14 Chapter 5 Inheritance and Lookup 5-1 Figure 5-1 A prototype frame 5-3 Figure 5-2 A prototype chain 5-4 Figure 5-3 Parent-child relationship 5-5 Figure 5-4 Prototype and parent inheritance interaction order 5-7 Figure 5-5 An inheritance structure 5-12 Chapter 6 Built-In Functions 6-1 Table 6-1 Floating point exceptions 6-65 Table 6-2 Exception frame data slot name and contents 6-72 Appendix B Special Character Codes B-1 Table B-1 Character codes sorted by Macintosh character code B-1 Table B-2 Character codes sorted by Unicode B-7 P R E F A C E xi About This Book The NewtonScript Programming Language is the definitive reference for anyone learning the NewtonScript programming language. If you are planning to begin developing applications for the Newton platform, you should read this book first. After you are familiar with the NewtonScript language you should read the Newton Programmer’s Guide for implementation details and the Newton Toolkit User’s Guide to learn how to install and use Newton Toolkit, which is the development environment for writing NewtonScript programs for the Newton platform. About the Audience This book is for programmers who have experience with high level programming languages, like C or Pascal, and who already understand object-oriented programming concepts. If you are not familiar with the concepts of object-oriented programming there are many books available on the subject available at your local computer bookstore. Related Books This book is one in a set of books included with Newton Toolkit, the Newton development environment. You’ll also need to refer to these other books in the set: ■ Newton Programmer’s Guide: System Software. This set of books is the definitive guide and reference for Newton programming topics other than communications. P R E F A C E xii ■ Newton Programmer’s Guide: Communications. This book is the definitive guide and reference for Newton communications programming. ■ Newton Toolkit User’s Guide. This book introduces the Newton development environment and shows how to develop Newton applications using Newton Toolkit. You should read this book first if you are a new Newton application developer. ■ Newton Book Maker User’s Guide. This book describes how to use Newton Book Maker and Newton Toolkit to make Newton digital books and to add online help to Newton applications. You have this book only if you purchased the Newton Toolkit package that includes Book Maker. ■ Newton 2.0 User Interface Guidelines. This book contains guidelines to help you design Newton applications that optimize the interaction between people and Newton devices. Sample Code The Newton Toolkit product includes many sample code projects. You can examine these samples, learn from them, experiment with them, and use them as a starting point for your own applications. These sample code projects illustrate most of the topics covered in this book. They are an invaluable resource for understanding the topics discussed in this book and for making your journey into the world of Newton programming an easier one. The Newton Developer Technical Support team continually revises the existing samples and creates new sample code. You can find the latest collection of sample code in the Newton developer area on eWorld. You can gain access to the sample code by P R E F A C E xiii participating in the Newton developer support program. For information about how to contact Apple regarding the Newton developer support program, see the section “Developer Products and Support,” on page xv. Conventions Used in This Book This book uses various conventions to present information. Special Fonts in Text The following special fonts are used: ■ Boldface. Key terms and concepts appear in boldface on first use. These terms are also defined in the Glossary. ■ Courier typeface. Code listings, code snippets, and special identifiers in the text such as predefined system frame names, slot names, function names, method names, symbols, and constants are shown in the Courier typeface to distinguish them from regular body text. If you are programming, items that appear in Courier should be typed exactly as shown. ■ Italic typeface. Italic typeface is used in code to indicate replaceable items, such as the names of function parameters, which you must replace with your own names. The names of other books are also shown in italic type, and rarely, this style is used for emphasis. P R E F A C E xiv Syntax Conventions In this manual, syntax is presented in two formats, as an extended BNF, and as bubble diagrams defined as follows: Bubble Diagram Extended BNF Description terminal Oval boxes / courier text indicates a word or character that must appear exactly as shown. Ambiguous terminal characters are enclosed in single quotes (‘’). nonterminal Rectangular boxes / italics indicate a word that is defined further. [] Dashed lines / brackets indicate that the enclosed item is optional. {choose|one} Forked arrows / a group of words, separated by vertical bars (|) and grouped with curly brackets, indicates an either/or choice. []* A dashed box with a repeating arrow / an asterik (*) indicates that the preceding item(s), which is enclosed in square brackets, can be repeated zero or more times. []+ A solid box with a repeating arrow / a plus sign (+) indicates that the preceding item(s), which is enclosed in square brackets, can be repeated one or more times. terminal non-terminal optional optional option 1 choice option 2 repeat/optional repeat P R E F A C E xv Developer Products and Support APDA is Apple’s worldwide source for hundreds of development tools, technical resources, training products, and information for anyone interested in developing applications for Apple computer platforms. Customers receive the Apple Developer Catalog featuring all current versions of Apple and the most popular third-party development tools. APDA offers convenient payment and shipping options, including site licensing. To order product or to request a complimentary copy of the Apple Developer Catalog: APDA Apple Computer, Inc. P.O. Box 319 Buffalo, NY 14207-0319 If you provide commercial products and services, call 408-974-4897 for information on the developer support programs available from Apple. Telephone 1-800-282-2732 (United States) 1-800-637-0029 (Canada) 716-871-6555 (International) Fax 716-871-6511 AppleLink APDA America Online APDAorder CompuServe 76666,2405 Internet APDA@applelink.apple.com P R E F A C E xvi Undocumented System Software Objects When browsing in the NTK Inspector window, you may see functions, methods, and data objects that are not documented in this book. Undocumented functions, methods, and data objects are not supported, nor are they guaranteed to work in future Newton devices. Using them may produce undesirable effects on current and future Newton devices. Introduction 1-1 C H A P T E R 1 Overview 1 NewtonScript is a state-of-the-art, dynamic, object-oriented programming language, developed for the Newton platform. Introduction 1 The goal of NewtonScript is to enable developers to create fast, smart applications easily. This calls for a language that is ■ expressive, flexible, and straightforward to use ■ consistent enough to allow reuse of concepts and structures ■ portable enough to permit exploration of different architectures, and ■ sufficiently compact to work with limited RAM The constraints of the Newton system require a language capable of producing reusable code libraries, which uses memory efficiently, and collects garbage automatically. NewtonScript is based on principles first used in Smalltalk and LISP, and was also influenced by Self, a language developed at Stanford University. Figure 1-0 Listing 1-0 Table 1-0 C H A P T E R 1 Overview 1-2 Semantic Overview Semantic Overview 1 This section briefly introduces some special features of the NewtonScript language. Expressions 1 NewtonScript is an expression-based language, rather than statement-based, as many other programming languages are. Almost everything in NewtonScript returns a value. Therefore, we talk about expressions rather than statements or commands in this manual. The Object Model 1 NewtonScript is built on an object model. All data is stored as objects, or typed pieces of data. This differs from other object-oriented languages like C++ or Object Pascal, where data is a hybrid of objects and regular data types. NewtonScript also differs from Smalltalk, although, like Smalltalk, it represents all data as objects. Only one kind of NewtonScript object, the frame, can receive messages. The Newton object model structures data by using two kinds of 32-bit values to represent objects. These values are ■ immediates—in which the 32 bits contain immutable data ■ references—in which the 32 bits refer indirectly to an object This is explained in greater detail in the section “Immediate and Reference Values” beginning on page 2-5 of Chapter 2, “Objects, Expressions, and Operators.” C H A P T E R 1 Overview Semantic Overview 1-3 Data Types and Classes 1 NewtonScript uses a class as a semantic type as opposed to a typical data type. The Newton platform uses classes to let parts of the system, like the Intelligent Assistant (which is described in the Newton Programmer’s Guide) determine properties of the object at run time. Thus it can treat particular types of objects in interesting and different ways. For instance, you can set up a data object containing personal data as shown in Listing 1-1. Note that the curly braces surrounding Listing 1-1 denote a frame object, that contains places, or slots, for objects that have the identifiers name, company, and phones. Listing 1-1 A simple frame { name: "Walter Smith", company: "Apple Computer", phones: ["408-996-1010", "408-555-1234"] } In the Newton system, objects can be typed. For instance, the values of name and company are plain strings. However, you can further define phones as being of type workPhone and faxPhone. These user-defined objects can then be manipulated by the Newton system in different ways. For instance, when the person using your application uses a fax phone number, a set of actions different from those for a work phone number is initiated. The data object constructed in Listing 1-1 is shown in Figure 1-1. The facility that lets the system know about an object’s type is known as latent typing. Types are associated with objects. This means that a variable can hold any kind of object and can hold different types of objects at different times. The class system is explained in further detail in “Objects and the Class System” beginning on page 2-1. C H A P T E R 1 Overview 1-4 Semantic Overview Figure 1-1 A sample data structure Note Smalltalk enthusiasts should keep in mind that NewtonScript classes have nothing in common with those used in class-based programming in a language such as Smalltalk. You can, however, use class-based programming concepts to organize parts of your NewtonScript application. For more information about this see Appendix C, “Class-Based Programming.” ◆ Scope 1 The part of a program within which a variable can be used is called the scope of the variable. Normally a variable is available within the function where it is defined, although slots that are used like variables can also be inherited from proto and parent frames. See the section “Frame” beginning on page 2-17, and Chapter 5, “Inheritance and Lookup,” for more information about frames and inheritance, respectively. When looking up the value of a variable, NewtonScript first searches local variables, then global variables, and finally inherited variables, through the proto and parent chains. Frame Full Name "Walter Smith" Corp Name "Apple" Array Work phone FAX phone 0 1 Work Phone 408-996-1010 FAX Phone 408-555-1234 Name: Company: Phones: "Walter Smith" "Apple" ["408-966-1010", "408-555-1234"] Name Company Phones C H A P T E R 1 Overview Semantic Overview 1-5 Consider, for example, the following code segment: aFrame:= {foo: 10, bar: func(x) begin if foo then Print ("hello"); if x > 0 then begin local foo; //local variable to function foo:= 42; end return foo; end; } Here the local variable foo is restricted in scope to the function definition bar. Even though foo is declared within a begin … end code segment, its scope is not confined by that construct. When foo is used in the expression, if foo then Print ("hello"); before it is declared as a local variable, it is already defined by the compiler as an implicit local and is initialized to the value of nil. If the slot variable, foo, with the value of 10, is to be used as the value for foo, that is stated explicitly as if self.foo then Print ("hello"); Otherwise, the search for the value of the variable goes by the rules, first to local variables, (the local variable foo was initialized to nil), then to global variables named foo, and then to inherited slot variables named foo. In this example, the compiler creates a local variable foo, which is local to the method bar and is not initialized until the if expression that assigns it the value 42 executes. Therefore, nothing is ever printed. C H A P T E R 1 Overview 1-6 Semantic Overview When you send the message, bar, with a parameter value of ten, to the aFrame object, in the expression aFrame:bar(10) a value of 42 is returned. The same message with a parameter value of negative five aFrame:bar(-5) returns nil. See the section “Function Invocations” in Chapter 4 to learn more about message sending. Extent 1 The extent of a variable refers to the period of time in which it may be used. In many languages, the scope of a variable is the same thing as its extent. However, in NewtonScript a variable has data storage space allocated for it while it is referenced anywhere in executing code. Automatic garbage collection occurs only after an object is no longer referenced anywhere. Therefore, storage allocated for data structures is available until no references to the structure exist. Make sure not to leave any references to large data structures you’ve allocated after you’re finished using them. If you do, NewtonScript will not reclaim the associated memory. An example of where you might think about this on the Newton platform is when you close an application, you can set slots to nil in the application’s base frame to conserve memory. Garbage Collection 1 In NewtonScript, garbage collection—that is, reclaiming the storage of objects that are no longer used—is carried out automatically by the system. Thus, the programmer does not need to worry about memory management. C H A P T E R 1 Overview Semantic Overview 1-7 In fact, in NewtonScript it’s impossible to have “dangling pointers,” which often cause the most insidious and hard to find bugs in an application. If you’ve had to do garbage disposal manually in another language you can relax; the Newton system reclaims memory for you sometime after the last reference to an object goes away. Setting the value of all slots and variables referring to an object to nil allows the Newton garbage collector to reclaim the memory used by the object. Automatic garbage collection is triggered every time the system runs out of memory. There’s not really any reason to invoke garbage collection manually. However, if you must do so, you can call the global function GC. For more information on this function, see the chapter “Debugging” in The Newton Toolkit User’s Guide. How Is NewtonScript Dynamic? 1 In general, the term “dynamic” refers to the ability of the language to change properties of objects at run time. Therefore, the NewtonScript dynamic model is useful when you want to change an object at run time. For instance, it’s possible to change an object to another kind of object in response to a user’s actions while the application is running, if needed. You can also add new data to objects while an application is in use. For instance, you can write NewtonScript code that dynamically adds a new variable to an executing object at run time and uses it, then adds a method to the same object and uses it, and finally changes the inheritance structure of the object by adding a special reference to another object. (This “special reference” is what is denoted as _parent in Listing 1-2 on page 1-11). The object can now use a method it inherits from the parent frame. All of these operations are impossible in a static language, and they require a great deal of thought and discipline in dynamic languages. Though this powerful feature enables you to interactively program in a way that is impossible in static languages, it should be used sparingly and with caution. C H A P T E R 1 Overview 1-8 Basic Syntax Basic Syntax 1 Rather than invent an entirely new syntax, NewtonScript was designed with Pascal in mind. Wherever possible, its syntax is modeled closely on Pascal’s. Semicolon Separators 1 The semicolon (;) is used to separate lines, not to terminate them. Though semicolons are not required at the end of a line, you may spread one expression over several lines or enter multiple expressions on a single line by using the semicolon. Expressions can be entered in a free-form manner, but we recommend that standard indentation be used for enhanced readability, as in this example: if expression then expression else another_expression; NewtonScript syntax allows you to use as much white space as you wish; it is ignored. Note If you forget to add an important semicolon at the end of a NewtonScript expression, the interpreter uses whatever is on the next line as it tries to interpret a larger statement than intended, thus causing unusual error reports. ◆ C H A P T E R 1 Overview Basic Syntax 1-9 In-Line Object Syntax 1 NewtonScript has two syntax features that make it easy to create objects: object literals and object constructors. The object literal syntax lets you put a complex object into your program as easily as an integer. This syntactic mode is entered by writing a single quote, as shown in this simple example of a frame containing two strings: x := '{name: "xxx", phone: "yyy"}; The object is constructed at compile time, and a reference to the same object results each time the object literal is evaluated. The object constructor syntax makes it easy to construct objects at run time. The syntax is similar to object literals, but without the quote. In the object constructor syntax the slot value positions are evaluated expressions rather than nested literals. Each time the constructor is evaluated, a new object is created, and its slots are filled in with the results of the slot expressions. An object constructor is much easier to read than the equivalent operation written without it, as shown in the following two examples. First, the example with an object constructor: x := {name: first && last, tax: wage * taxRate}; Next, the equivalent operation without the object constructor: x := {}; x.name := first && last; x.tax := wage * taxRate; Character Set 1 NewtonScript uses the standard 7-bit ASCII character set rather than the enhanced ASCII character set used by Macintosh computers. This ensures that your code will work in any Newton development environment. C H A P T E R 1 Overview 1-10 A Code Example Comments 1 NewtonScript uses the same convention for delineating comments as the C++ programming language. Multiline comment text needs to be surrounded by an opening right slash, asterisk (/*) and a matching asterisk, right slash (*/) at the end. For example: /* This is an example of a comment. It can be on one line or as many lines as you need. */ If your comment is short enough to keep to one line, you can use two back slashes (//) before the text to signal that the rest of the line is a comment and should be ignored. This is often useful for putting a comment on the same line as a line of code, as in this example: x:= 5 ; //This is a single-line comment. Note that nested multiline comments are not allowed. However, within a /* ... */ comment block, comments using the // notation are allowed. A Code Example 1 If you like to try to understand code before reading the manual, continue on through this section. Otherwise, stop here and go to the next chapter. Note that in the code the curly brackets ({}) denote a frame object, colonequal (:=) is the assignment operator, and the colon (:) is the message-send operator, which sends the message following it to the frame expression that appears before it. The code shown in Listing 1-2 is partially described in the section “How Is NewtonScript Dynamic?” beginning on page 1-7. C H A P T E R 1 Overview Compatibility 1-11 Listing 1-2 A dynamic example y := { YMethod: func () print("Y method"), yVar: 14 }; x := { Demo: func () begin self.newVar := 37; print(newVar); self.NewMethod := func () print("hello"); self:NewMethod(); self._parent := y; print(yVar); self:YMethod(); end }; x:Demo(); 37 "hello" 14 "Y method" #2 NIL Compatibility 1 There are two main enhancements to the 2.0 version of the NewtonScript language: ■ new subclassing mechanism ■ native functions The new subclassing mechanism is described in the section “Classes and Subclasses” on page 2-3. This new subclassing mechanism allows userdefined classes to have more precise semantic definitions, while preserving the logical structure of these categories. C H A P T E R 1 Overview 1-12 Compatibility Native functions, described in the section “Native Functions” on page 4-16, are executed directly by the Newton processor, instead of going through the interpreter. This can increase the speed of your functions, but can also slow them down. In addition, two type identifiers have been added to the language to speed up processing of native functions: int and array. There are two places where these type identifiers can be used: in declaring local variables, and in the argument list of a function declaration. For information on their syntax, see the section “Local” on page 2-23, and “Function Constructor” on page 4-2. For a detailed discussion of native functions and the use of type identifiers, see the chapter “Tuning Performance,” of the Newton Toolkit User’s Guide. The 2.0 version of the language also includes new built-in functions, for a list of these see the section “Compatibility” beginning on page 6-2 of Chapter 6, “Built-In Functions.” Objects and the Class System 2-1 C H A P T E R 2 Objects, Expressions, and Operators 2 This chapter discusses objects, expressions, and operators. Objects and the Class System 2 The semantic type of an object is identified by a class. The Newton object system has four built-in primitive classes which describe an object’s basic type. They are: ■ Immediate ■ Binary ■ Array ■ Frame Figure 2-0 Listing 2-0 Table 2-0 C H A P T E R 2 Objects, Expressions, and Operators 2-2 Objects and the Class System You can determine the primitive class of an object, obj, by executing the expression PrimClassOf(obj). Similarly, you can determine the class of an object, obj, by executing the expression ClassOf(obj). A number of functions exist to check if an object is of a particular type, which are faster than ClassOf and PrimClassOf. These are IsArray, IsFrame, IsInteger, IsSymbol, IsCharacter, IsReal, and IsString. These and the other Newton built-in functions are documented in Chapter 6, “Built-In Functions.” The primitive classes are of two categories: immediates and reference objects. The reference object category is composed of the binary, array, and frame classes. See “Immediate and Reference Values” beginning on page 2-5 for a more detailed discussion of the differences between these two categories of objects. Objects with Immediate as their primitive class can be further identified as belonging to a class of Int, Char, or Boolean. System-defined objects with Binary as their primitive class can also be further identified as belonging to a class of Symbol, String, or Real. NewtonScript also allows user-defined classes for reference objects. The NewtonScript class structure is shown in Figure 2-1 Classes function as semantic types that inform the system about the data in a reference object. For example, the class 'string indicates a binary object containing a string and the class 'phoneNumber indicates a string containing a phone number. With this knowledge, a Newton device could use phone numbers in ways it would not use other strings (to dial a phone, for instance.) C H A P T E R 2 Objects, Expressions, and Operators Objects and the Class System 2-3 Figure 2-1 NewtonScript built-in classes Classes and Subclasses 2 NewtonScript provides the SetClass(obj, classSymbol) function to assign a class, classSymbol, to a reference object, obj. Arrays and frames also have internal mechanisms for setting user-defined classes, but for binary objects the SetClass function must be used. These mechanisms are described in “Array” beginning on page 2-15, and “Frame” beginning on page 2-17. Primitive Classes Reference Reference Reference Reference Array 0 1 2 3 Slot1 Slot2 Slot3 Slot4 Frame Classes Binary Reference Reference Reference Reference String Real "A string" 3.14159 Int Char Boolean 42 $A true Symbol 'someSymbol Immediate Value Binary Data C H A P T E R 2 Objects, Expressions, and Operators 2-4 Objects and the Class System Class symbols are arranged in a hierarchy; that is, some classes have subclasses. This allows objects to have more precise semantic definitions, while preserving the logical structure of these definitions. To create a subclass add a period (.) and a symbol to the class name. For example, '|rectangle.square| is a subclass of 'rectangle. Thus, a class symbol X is a subclass of a class symbol Y if either X is the same as Y, or Y is a prefix of X at a period (.) boundary. Everything is a subclass of the empty symbol ||. The symbol added after the period cannot, of course, itself contain a period (.). And neither symbol can contain a semicolon (;), which is reserved for future expansion. Furthermore, a class symbol that contains periods (.), must be surrounded by vertical bars (|), this is required by the syntax of a symbol which is described in “Symbol” beginning on page 2-12. You can use the built-in function IsSubclass(x, y) to determine if x is a subclass of y. You can determine if an object obj is of class x or any subclass of x by using the function IsInstance(obj, x). Note that this is just shorthand for IsSubclass(ClassOf(obj), x). For more information about these functions see Chapter 6, “Built-In Functions.” Note The period method of creating subclasses is new to NewtonScript; it is not supported by the NewtonScript interpreter on 1.x Newton devices. If your application might be run on a 1.x machine, do not use this mechanism. ◆ Adding classes to objects increases the complexity of your application. If you do not need to, do not add a class to your objects. Note also that the there is no subclass relationship in the sense being discussed in this section between the built-in primitive classes and those classes that are derived from them. String, for example, is not a subclass of Binary. The only class whose subclasses are important to the NewtonScript builtin functions is 'string. There are several string-manipulation functions that require their arguments to have either the class 'string or a subclass of 'string. C H A P T E R 2 Objects, Expressions, and Operators Objects and the Class System 2-5 A number of class symbols are automatically understood by the Newton system to be subclasses of 'string. These are: 'company, 'address, 'title, 'name, 'phone, 'homePhone, 'workPhone, 'faxPhone, 'otherPhone, 'carPhone, 'beeperPhone, and 'mobilePhone. To create other subclasses of 'string, e.g. 'firstName, define the class explicitly as '|string.firstName|. Immediate and Reference Values 2 In NewtonScript, values are stored in 32 bits, two of which are used for class information. Immediate objects (integers, characters, and Booleans) contain their values within the remaining 30 bits. Reference objects, (binaries, arrays, and frames) on the other hand, contain a reference to the area of memory where their data resides. This is an important distinction to keep in mind when assigning values to a variable. When a variable is assigned an immediate object, that object is copied directly into the variable. When a variable is assigned a reference object, on the other hand, only a reference to the object is copied in. The behavior caused by this can be somewhat confusing. Consider, for example the following code fragment: local a := {x: 1, y: 3}; local b := a; a.x := 2; // at this point b.x = 2 The first line declares a local variable, a, and assigns to it a frame with two slots – named x and y – whose values are 1 and 3, respectively. The second line creates another local variable, b, and assigns to it the value of a, which is a reference to the frame object created in the first line. Thus both local variables a and b now refer to the same are of memory. The third line (a.x := 2;) changes the value of the x slot. Since both variables a and b refer to the same frame, the value of b.x now also equals C H A P T E R 2 Objects, Expressions, and Operators 2-6 Objects and the Class System 2, though it was not explicitly assigned. You can see these results in Figure 2-2. Figure 2-2 NewtonScript code sample Consider now the C code: struct foo { int x,y; }; foo a; foo b; a.x = 1; a.y = 3; b = a; a.x = 2; // at this point b.x = 1 a.x : = 2; reference local a : = {x:1, y:3}; a reference a reference b reference a reference b x 2 y 3 x 1 y 3 x 1 y 3 local b : = a; C H A P T E R 2 Objects, Expressions, and Operators Objects and the Class System 2-7 In this example there are two separate struct objects, a and b, residing in separate areas of memory. Each struct contains two integers, x and y. The integer a.x is assigned the value 1. The value of struct a is saved in struct b and a.x then is set to 2. As you would expect, the value of b.x is unchanged at this point (it is still 1.) The results of this code example are shown in Figure 2-3. Figure 2-3 C code sample Note that assignments of references in NewtonScript are handled in the same manner as assignments of arrays and strings in C, since arrays and strings in C are pointers. Thus NewtonScript does not fundamentally differ from C in this respect. a.x = 2; x 1 y 3 a a x 1 y 3 b x 1 y 3 a x 2 y 3 b x 1 y 3 a.x = 1; a.y = 3; b = a; C H A P T E R 2 Objects, Expressions, and Operators 2-8 The NewtonScript Objects The NewtonScript Objects 2 This section individually discusses the objects listed in “NewtonScript built-in classes” on page 2-3: characters, Booleans, integers, reals, symbols, strings, arrays, and frames. Character 2 $ { nonEscapeCharacter |\ { \ | n | t |hexDigit hexDigit | u hexDigit hexDigit hexDigit hexDigit } } Characters in the standard character set are specified in your code by the dollar sign ($) and ■ a backslash escape character (\) followed by a special character specification such as, \, n, and t, or by 2 hexadecimal digits ■ a backslash escape character (\) followed by u (for Unicode) and four hexadecimal digits ■ a non-escape character The character set in Newton is stored as Unicode, in two bytes, to facilitate international conversions. By design, the first 128 characters match the ASCII character set. You must use Unicode character codes to specify special characters other than the ASCII character set. $ non-escape-character hex-digit hex-digit \ t u n \ hex-digit hex-digit hex-digit hex-digit C H A P T E R 2 Objects, Expressions, and Operators The NewtonScript Objects 2-9 Characters are immediate objects. (For more information about immediate objects see “Immediate and Reference Values” beginning on page 2-5.) nonEscapeCharacter Consists of any ASCII character with code 32–127 except the back slash (\). hexDigit Consists of: {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9| a | b| c | d | e | f | A | B | C | D | E | F} For example, $a or $7 represent the characters “a” and “7”, respectively. Special characters like “π” must be specified as Unicode (16-bit) characters by using the four-digit hex character code preceded by $\u. For example, the Unicode equivalent of “π” is: $\u03C0. You specify a new line by imbedding the code $\n in a string. Special character codes are summarized in Table 2-1. See Appendix B, “Special Character Codes,” for a list of the special characters and their Unicode equivalents. Boolean 2 NewtonScript defines only one Boolean constant, true. Functions and control structures use nil as false and anything else as true. When you don't have anything else to use as true, use the special immediate true. Table 2-1 Characters with special meanings Character code Meaning $\n newline character $\t tab character $\\ backslash character $\ hexDigit hexDigit hexadecimal $\u hexDigit hexDigit hexDigit hexDigit Unicode C H A P T E R 2 Objects, Expressions, and Operators 2-10 The NewtonScript Objects Integer 2 [ - ] {[ digit ]+ | 0x [hexDigit ]+} All integers in NewtonScript can be written in either decimal or hexadecimal. When a digit is prefixed with zero and the letter x (0x) it signifies a hexadecimal value. The optional minus sign (-) before a digit signifies a negative integer. Here are some examples of integers: 13475 -86 0x56a Integers range from 536870911 through -536870912. When that limit is exceeded behavior is undefined. Integers are immediate objects. (For more information about immediate objects see “Immediate and Reference Values” beginning on page 2-5.) digit Consists of: {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9} hexDigit Consists of: {digit | a | b| c | d | e | f | A | B | C | D | E | F} Note The integer -536870912 can’t be specified as a literal but it can be computed. ◆ - x hex-digit digit 0 C H A P T E R 2 Objects, Expressions, and Operators The NewtonScript Objects 2-11 Real 2 [-] [digit ]+.[ digit ]* [ { e | E } [ - ] [ digit ]+ A real number consists of one or more digits followed by a decimal point with zero or more additional digits. The optional minus (-) at the start indicates a negative number. You can specify scientific notation by placing the letter e (upper or lower case) directly after the last digit and following it with a negative or positive digit in the range of -308 to +308. digit Consists of: {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9} NewtonScript floating point real numbers are represented internally in double precision; 64 bits. They have approximately 15 decimal digits of precision. Some examples of real numbers include: -0.587 123.9 3.141592653589 Here are some examples of exponential notation used to represent real numbers: 763.112e4 87.3789E-45 -34.2e6 69.e-5 Real numbers are stored as binary objects and have the class Real. - e E digit . digit - digit C H A P T E R 2 Objects, Expressions, and Operators 2-12 The NewtonScript Objects Symbol 2 { { alpha | _ } [ { alpha | digit | _ } ]* | '|' [ { symbolChar| \ { '|' | \ } ]* '|'} A symbol is an object used as an identifier. NewtonScript uses symbols to name variables, classes, messages, and frame slots. You can also use symbols as simple identifying values, as you would use enumerated types in other languages. Symbol names may be up to 254 characters long and may include any printable ASCII character; for instance, |Weird%Symbol!| is valid. A symbol can be written by itself, without being enclosed in vertical bars, if it begins with an alphabetic character or an underscore and contains only alphabetic characters, underscores, and digits. NewtonScript is case insensitive, though it preserves case. alpha Consists of: {A–Z and a–z}. digit Consists of: {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9}. symbolChar Consists of any ASCII character with code 32–127 except | or \. One place where the Newton system requires symbols is in exception handling. An example of an exception symbol is: |evt.ex.fr.intrp| Note that vertical bars are required because of the dots in the symbol. You can read more about them in “Defining Exceptions” beginning on page 3-15. _ alpha alpha _ digit | | \ | symbolChar \ C H A P T E R 2 Objects, Expressions, and Operators The NewtonScript Objects 2-13 Symbols appearing in expressions are normally evaluated as variable references. You can prevent this by preceding the symbol with a single quote ('). The quoted symbol evaluates to the symbol itself. See also “Quoted Constant” beginning on page 2-28. String 2 " [ { stringChar | escSeq } ]* [ truncEscape ] ] " A string constant is written as a sequence of characters enclosed in double-quotation marks. stringChar Consists of a tab character or any ASCII character with code 32–127 except the double quote (") or backslash (\). escSeq Consists of either a special character specification sequence or a unicode specification sequence.The special character specification sequence is: backslash (\) followed by a quote ("), backslash (\), the letter n or the letter t. The escape sequence for specifying Unicode begins with backslash-u (\u), is followed by any number of groups of four hexDigits, and ends with backslash-u (\u). truncEscape Consists of the shortened unicode specification sequence. It is: backslash-u (\u), is followed by any number of groups of four hexDigits. Here are some simple examples of strings: "pqr" "Now is the time" "" Within strings you can include Unicode characters that are not in the standard character set by inserting the escape code, \u, to toggle on the Unicode hex mode. Follow the \u with any number of groups of four- " truncEscape " escSeq stringChar C H A P T E R 2 Objects, Expressions, and Operators 2-14 The NewtonScript Objects number codes specifying the special character. You can add another \u to toggle the Unicode hex mode off and return to the regular character set, though, you are not required to toggle the hex mode off. (See Appendix B, “Special Character Codes,” for a list of these characters.) For example, you could specify the French phrase, “Garçon, l’addition, s’il vous plaît!”, by embedding Unicode in the string to specify the special characters as follows: "Gar\u00e7\uon, l’addition, s’il vous pla\u00ee\ut!" Other codes you use within strings to specify special characters are summarized in Table 2-2. You can also use array accessor syntax to refer to a character in a string. See “Array Accessor” beginning on page 2-16 for more information. For example, you can define a string aString := "ABCDE"; and then refer to the B by using an array accessor aLetter := aString[1]; Note that the index to aString is one, because array indices are numbered beginning with zero. Table 2-2 Codes for specifying special characters within strings Character code Meaning \n newline character \t tab character \u toggles Unicode on and off \\ backslash character \" double quote character C H A P T E R 2 Objects, Expressions, and Operators The NewtonScript Objects 2-15 Array 2 ‘[’ [ symbol : ] [ object [ , object]* [ , ] ] ‘]’ An array is a collection of zero or more objects enclosed in square brackets ([]) and separated by commas. The user-defined class for the array may optionally be specified by beginning the array with a symbol followed by a colon (:). symbol Consists of an identifier that is syntactically a symbol. If present, sets a user-specified class for the array. See the section “Symbol” beginning on page 2-12, for more information about their syntax. object May consist of any NewtonScript object. NewtonScript numbers the elements in an array by beginning with zero for the first element. Objects are separated by commas if there are more than one in the array. Note The syntax [symbol: object (…)] is ambiguous; the first symbol could be either a class for an array, or a variable to be used as the receiver for a message send. NewtonScript uses the first interpretation. (Message sends are described inChapter 4, “Functions and Methods.”) ◆ Semantically, the array is an ordered collection of objects which are indexed numerically, beginning with zero. As with frames, the array can hold any type of object, including methods, frames, and arrays. Like other nonimmediate objects, arrays can have a user-specified class, and can have their size changed dynamically. Here is a simple example of an array literal: [1,2,3] [ symbol : object , object , ] C H A P T E R 2 Objects, Expressions, and Operators 2-16 The NewtonScript Objects You can specify a class name for an array by preceding the first array element with any arbitrary identifier that specifies a class and a trailing colon, as shown here: [RandomData: [1,2,3], 0, "Last element"] Note that this array, which has the class RandomData, holds a mixture of objects. It contains another array as its first element, the integer zero as the second element, and a string as the third element. Note NewtonScript allows an optional trailing comma after the last array element. The trailing comma can be useful if you are going to add more elements to the array, or move elements around within an array, when editing source code. The presence or absence of this comma, does not affect the program. ◆ Array Accessor 2 arrayExpression ‘[’ indexEpression ‘]’ Array elements are accessed with an expression, that evaluates to an array, and an index expression, that evaluates to an integer and is enclosed in square brackets. arrayExpression An expression that evaluates to an array. indexEpression An expression that evaluates to an integer. The indexExpression corresponds to the element of the array you wish to access. Note that arrays are indexed starting with zero. For example, with the array myArray, which is defined as myArray := [123, [4,5,6], "Alice's Restaurant"]; arrayExpression [ indexExpression ] C H A P T E R 2 Objects, Expressions, and Operators The NewtonScript Objects 2-17 you access the second element in the array by using the expression: myArray[1]; This expression evaluates to [4,5,6]. You can also access array elements by using a path expression. Read about these in the section “Path Expression” beginning on page 2-20. Note that array accessors are actually operators and are included here for your convenience. The rest of the NewtonScript operators are documented in “Operators” beginning on page 2-29. Frame 2 ‘{’ [ symbol : value [ , symbol : value ]* [ , ] ] ‘}’ Aframe is a collection of zero or more slots enclosed in curly brackets and separated by commas. A slot consists of a symbol followed by a colon (:) and a slot expression. The symbol refers to the value of the slot expression. symbol A symbol giving the name of the slot. Note that slot symbols beginning with the underscore character (_) are reserved for system use; do not begin your slot symbol with the underscore character. value Can be any object, including another frame or a method. A frame is an unordered collection of slots which consist of a name and value pair. As with arrays, the value of a slot can be any type of object, including methods and even other frames and arrays. Frames can be used as repositories for data, like records in Pascal and structs in C, but can also be used as objects which respond to messages. As such, the frame is the basic programming unit in NewtonScript. { symbol : value , symbol : value , } C H A P T E R 2 Objects, Expressions, and Operators 2-18 The NewtonScript Objects A simple record-like frame containing names and phone numbers might appear as {name:"Joe Bob", phone:"4-5678", employee:12345} Here is an example frame that contains integers in the first three slots, and a method in the fourth slot: Jupiter := {size:491, distance:8110, speed: 34, position: func(foo) speed*foo/3.1416} You may specify an optional class name for a frame by using the slot name class. Inserting the class slot: class : 'planet into the Jupiter frame gives it an appropriate class name. Just as for array classes, the class of a frame gives it a type, not special properties. However, if you wanted to give all objects of class planet special characteristics and functionality you could use the NewtonScript inheritance structure to set up relationships that allow objects to inherit data from other objects. (See Chapter 5, “Inheritance and Lookup.”) You specify these relationships to other frames by referencing them from slots named _proto and _parent. The relationships these slots establish allow you to take advantage of the NewtonScript double inheritance scheme to construct object-oriented applications. Chapter 5, “Inheritance and Lookup,” describes these concepts. There are several slot names which are recognized by the system and used for special purposes. All these slots are optional. They are described in Table 2-3. C H A P T E R 2 Objects, Expressions, and Operators The NewtonScript Objects 2-19 Frame Accessor 2 frameExpr. {symbol | ( pathExpr )} Frame values are accessed with an expression–that evaluates to a frame–and either a symbol, or an expression enclosed in parentheses, that evaluates to a path expression. A frame accessor expression returns the contents of the specified slot, or if the slot does not exist the expression evaluates to nil. frameExpr Any expression that evaluates to a frame. symbol A symbol reference to a slot. See “Symbol” beginning on page 2-12 for the syntax of symbols. Table 2-3 Special slot names and their specifications Slot Name Specification class: identifier You use the special slot name class to specify a semantic type for your frame. The class of your object must be a symbol. _parent: frame You use the special slot name _parent to designate another frame as a parent frame to this frame. You can repeat this process, as necessary with other frames, to construct a parent inheritance chain. For information about inheritance see Chapter 5, “Inheritance and Lookup.” _proto: frame You use the special slot name _proto to designate another frame as a prototype frame to this frame. Repeat this process, as necessary with other frames, to construct a prototype inheritance chain. For information about inheritance see Chapter 5, “Inheritance and Lookup.” pathExpr symbol frameExpr . ( ) C H A P T E R 2 Objects, Expressions, and Operators 2-20 The NewtonScript Objects pathExpr Any expression that evaluates to a path expression object. The pathExpr corresponds to the slot of the frame you wish to access. Note that arrays are indexed starting with zero. See also “Path Expression” on page 2-20. Slots in a particular frame can be accessed by using a dot (.) followed by a symbol. For example, the expression: myFrame.name; evaluates to the contents of the name slot from the frame referenced by the variable myFrame. If the slot is not found in the specified frame using this syntax, the search for the slot continues through the inheritance chain. The next place NewtonScript looks is in the prototype frame and then in any of the prototype frame’s prototypes until the end of the prototype chain is reached. If the slot is not found, the search stops; it does not continue up through the parent frames. If the slot does not exist the expression evaluates to nil. The built-in functions GetVariable and GetSlot provide similar kinds of slot access but with different inheritance behavior. For more information see Chapter 6, “Built-In Functions.” For more information about the inheritance mechanism see Chapter 5, “Inheritance and Lookup.” Note that frame accessors are actually operators; they are included here for your convenience. The rest of the NewtonScript operators are documented in “Operators” beginning on page 2-29. You can also access frame slots by using a path expression. Read about these in the section “Path Expression.” Path Expression 2 Apath expression object encapsulates an access path through a set of objects. These objects are necessarily arrays or frames, since these are the only objects in NewtonScript that can contain other objects. C H A P T E R 2 Objects, Expressions, and Operators The NewtonScript Objects 2-21 A path expression can take one of three forms: ■ an integer ■ a symbol ■ an array of class pathExpr A path expression which is an integer necessarily refers to an array element, since frame slot names must be symbols. The following code sample shows how an integer path expression can be used to refer to an array element. anArray := ["zero", "one", "two"]; aPathExpression := 1; anArray.(aPathExpression); "one" Similarly, a symbol path expression necessarily refers to a frame slot, as in this code fragment: aFrame := {name: "Fred", height: 6.0, weight: 150}; aPathExpression := 'height; aFrame.(aPathExpression); 6.0 The third kind of path expression can refer to any object, whether it is nested in arrays, frames, or both. The following code sample shows how a path expression can encapsulate an access path to an object within both arrays and frames: myFrame:={name:"Matt",info:{grade:"B",tests:[87,96,73]}}; myPath:='[pathExpr: info,tests,1]; myFrame.(myPath); 96 C H A P T E R 2 Objects, Expressions, and Operators 2-22 Expressions If a path expression consists entirely of symbols, then the following syntax can be used: symbol[.symbol]+ symbol Any valid NewtonScript symbol. This syntax will actually create an array of class pathExpr, and a path expression written in this syntax will be printed out in the Inspector as an array of class pathExpr. The following code sample illustrates how this syntax is used. myFrame := {kind:"Cat",type:{hair:"Long",color:"Black"}}; myPath := 'type.color; myFrame.(myPath); "Black" Note that you can also use path expressions to set the value of a slot. For instance, to change the color of the cat, use an expression like: myFrame.(myPath):= "White"; Expressions 2 A simple expression consists of values and an operator, as shown in the code: 12 + 3; The values (12 and 3) and the infix operator plus (+), that appears in the line between them, are evaluated to return the value 15. symbol . symbol C H A P T E R 2 Objects, Expressions, and Operators Expressions 2-23 Variables are often used in expressions as named containers in which to store values. For example, you can use a variable on the left side of an assignment expression, as in currentScore := 12; to store a value. The variable currentScore then becomes the identifier for the value. For more information about the assignment operator (:=), see the section “Operators,” in this chapter. Variables 2 A variable is named by a symbol. You can use this symbol to refer to any kind of value; from numbers to frames. When a method is executing and a variable reference is encountered, the system evaluates the value of the variable. This is done following the variable lookup rules of NewtonScript’s double inheritance scheme. Variable lookup is discussed in Chapter 5, “Inheritance and Lookup.” The next section discusses the use of the local keyword to declare local variables. Local 2 local [typeIdentifier]varSymbol1 [:= expression ] [, varSymbol2 [:= expression] ]* The local declaration consists of the keyword local, and any number of initialization clauses – an optional type identifier, a symbol, and optionally an assignment operator (:=), followed by an expression. varSymbol1 := expression , varSymbol2 := expression local type-specifier C H A P T E R 2 Objects, Expressions, and Operators 2-24 Expressions varSymbol Consists of an identifier that is, syntactically, a symbol. The symbol names a variable that may be initialized with the optional expression. For more information on symbols see the section “Symbol” beginning on page 2-12. typeIdentifier Either of the keywords int or array. It is important to include a typeIdentifier when declaring local arrays or integers in a native function, since this will improve performance. For more information on native functions, see “Native Functions” on page 4-16. expression Consists of any valid NewtonScript expression. If a local variable is not explicitly initialized, NewtonScript will initialize it to nil. Use of the local keyword is optional. If it is omitted the variables are still declared and initialized—so long as no other variables have these names. This keyword should never be omitted, however, for the following reasons: ■ Performance is improved; the system has to search globals and the inheritance structure before declaring the local variable. ■ Possible hard-to-find bugs are avoided. If a global variable or an inherited slot has this name, that variable will have its value changed; a new variable will not be declared. When the value of the global variable or inherited slot is then accessed, unexpected results might occur. ■ Explicitly declaring local variables makes code easier to read and maintain. ■ The native compiler cannot handle undeclared locals. The scope of a local variable is restricted to the function definition in which it is declared. You can refer to it only within that function. C H A P T E R 2 Objects, Expressions, and Operators Expressions 2-25 You may use the local expression to identify a variable as local without initializing it as in the example: myFunc: func (x) begin local myVar, counter; ... end This example declares the variables myVar and counter as local variables and initializes them to nil. Then, each time the function definition for myFunc is executed, new local variables are created that are unique to that function. You may optionally use a local expression with one or multiple assignment clauses to assign a value to a variable or variables, as shown in the expression: local x:=3, y:=2+2, z; This expression creates three local variables, x, y, and z, and initializes them to the values of 3, 4, and nil, respectively. The declaration of the local variable is processed at compile time but the values are assigned at run time, when the expression is encountered. For example, the expressions x := 10; local x, y := 20; result in a value of 10 for x and a value of 20 for y. This works because local definitions work anywhere in the function. By contrast, a run-time error is produced by the following code fragment: x := y + 10; local x, y := 20; C H A P T E R 2 Objects, Expressions, and Operators 2-26 Expressions This is because at compile time x and y are declared and initialized to nil. When the assignments are made at run time, y evaluates to nil, and an error is produced in the computation of nil+10. Constants 2 There are several ways to get unchangeable objects in NewtonScript. You can ■ use the keyword constant ■ put a single quote character (') before an object literal ■ initialize a variable to a literal value Constant 2 constant constSymbol1 := expression [, constSymbol2 := expression ]* The constant declaration consists of the keyword constant and one or more initialization clauses consisting of a symbol, assignment operator (:=), and expression. constSymbol Consists of an identifier that is, syntactically, a symbol. For more information see the section “Symbol” beginning on page 2-12. expression Any expression consisting of operators and constants. The value of this expression becomes the value of constSymbol. When a constants is used as a value, NewtonScript effectively substitutes literal values for the constant. This means that if you declare a constant, as in the expression constant kConst := 32; constant constSymbol1 := expression , constSymbol2 := expression C H A P T E R 2 Objects, Expressions, and Operators Expressions 2-27 then when you use kConst as a value in your code, NewtonScript automatically substitutes the value 32. If you write sum := kConst + 10; it’s exactly as if you had written sum := 32 + 10; However, if you use the same identifier as anything other than a value, as in the expressions: x:kConst(42); kConst(42); x.kConst; the value you defined is not substituted. This can be a problem if you define a constant to have a function or method as its value. For these cases there are built-in functions you can use as work-arounds, as shown in Table 2-4. You should also note that the constant value you assign does not get substituted when used in a quoted expressions like: '{foo: kConst}; '[kConst]; See the next section to learn more about the single quote syntax. Table 2-4 Constant substitution work-arounds No Substitution Work-around x:kConst(42); Perform(x,kConst,[42]); kConst(42); call kConst with (42); x.kConst; x.(kConst); C H A P T E R 2 Objects, Expressions, and Operators 2-28 Expressions ▲ WA R N I N G You can create local constants by putting the declaration in a function. Since they are in the same name space of the compiler as local variables, a local variable with the same name can override constants and vice versa. ▲ Quoted Constant 2 'object The single quote character (') begins a kind of expression called a quoted constant. You use the quote to create a literal object. The object is constructed at compile time, and a reference to the same object results each time the object literal is evaluated. Here are several examples of literal objects formed with the quoted constant syntax: '{name: "Joe Bob", income: yearTotal}; 'myFrame.someSlot; '[foo, 1234, "a string"]; When a quote appears outside of the brackets or braces, it applies to every element in the array or frame, and symbols within the array or frame do not need individual quotes. For instance, if you try to create this seemingly correct frame: storyFrame := {Bear1: Mama, Bear2: Papa, Bear3: Baby}; you find that an error is caused when the value Mama gets interpreted as an undefined variable. One way to fix this is to put quotes before each name, or more simply to put one quote before the whole frame, as shown in the expression: storyFrame := '{Bear1: Mama, Bear2: Papa, Bear3:Baby}; ' object C H A P T E R 2 Objects, Expressions, and Operators Operators 2-29 You can pass a quoted frame literal as a parameter to apply the object as needed. Operators 2 The NewtonScript operators are: ■ assignment ■ arithmetic ■ Boolean ■ equality ■ relational ■ unary ■ message-send ■ array and frame accessors All NewtonScript operators, except the message-send operators and array and frame accessors are discussed in this section. The message-send operators are described in Chapter 4, “Functions and Methods.” The access operators are described in “Frame Accessor” beginning on page 2-19 and “Array Accessor” beginning on page 2-16. Assignment Operator 2 lvalue:= expression In an assignment expression, the symbol, frame accessor, or array accessor that is the left-hand value for the assignment operator (:=), is assigned the value of the expression appearing to the right of assignment operator. An lvalue : = expression C H A P T E R 2 Objects, Expressions, and Operators 2-30 Operators assignment expression evaluates to the expression on the right-hand side of the assignment operator (:=). lvalue Consists of a symbol, a reference to an array element, or a reference to a frame slot. expression Consists of any valid NewtonScript expression. You use assignment expressions to change the value of variables and slots. A simple assignment expression looks like this: a := 10; However, you can use any NewtonScript expression on the right-hand side of an assignment expression; when it is evaluated its value is assigned to the lvalue. For example, the variable x is set to refer to the value of the if expression in this assignment expression: x := if a > b then a else b; Here is an example of the assignment of a frame to a variable: myFrame := {name: "", phone: "123-4567"} Now you can assign a value to the name like this: myFrame.name := "Julia" Note that the NewtonScript inheritance rules affect the ultimate behavior of assignment expressions in frames. For more information about inheritance and setting slot values see “Inheritance Rules for Setting Slot Values,” in Chapter 5. You can assign values to array slots in a similar manner. The second line of this code fragment changes the value 789 to 987. myArray := [123, 456, 789, "a string"]; myArray [2] := 987; Note that assignments of reference objects to variables will only copy a pointer to the object into the variable, see “Immediate and Reference Values” beginning on page 2-5. The built in functions Clone, DeepClone, and C H A P T E R 2 Objects, Expressions, and Operators Operators 2-31 TotalClone allow you to work around this behavior. See Chapter 6, “Built-In Functions” for an explanation of how these functions work. An assignment expression, lvalue := expression, evaluates to the value of expression. Furthermore, the assignment operator associates right-to-left. Thus, you can write an expression such as: aVariable := anotherVariable := anExpression; This will parse as: aVariable := (anotherVariable := anExpression); The (anotherVariable := anExpression) part will evaluate to anExpression, and both aVariable and anotherVariable will be set to the value of anExpression. Note If you accidentally write an equality operator (=) in an assignment expression as rather than the assignment operator (:=), your expression becomes a simple relational expression. For example, the expression x = 5; evaluates to true or nil and leaves the value of x unchanged. ◆ Arithmetic Operators 2 { + | - | * | / | div | mod | << | >> } NewtonScript provides the standard set of binary arithmetic operators. They are: the addition (+) and subtraction (-) operators, the multiplication (*) and + - * / div mod << >> C H A P T E R 2 Objects, Expressions, and Operators 2-32 Operators division (/) operators, the truncating operators div and mod, and the bitwise shift operators, bitwise left shift (<<) and bitwise right shift (>>). + The plus operator adds the two numbers it appears between. - The minus operator subtracts the number to its right from the number to its left. Note that minus can also be used as a unary operator to negate an expression. See “Unary Operators” beginning on page 2-35. * The multiply operator multiplies the two numbers it appears between. / The division operator divides the number to its left by the number to its right. div The divide and truncate operator divides the number to its left by the number to its right and truncates the remainder so that a whole number is returned. mod The modulo operator divides the number to its left by the number to its right and returns only the remainder. << The bitwise shift left operator is an infix operator. In the expression: x << y ; x is shifted left by y bits. >> The bitwise shift right operator is an infix operator. In the expression: x >> y ; x is shifted right by y bits. The most significant bit is duplicated in the shift operation. See Table 2-5 on page 2-39 for a summary of operator precedence. C H A P T E R 2 Objects, Expressions, and Operators Operators 2-33 Equality and Relational Operators 2 { = | <> | < | > | <= | >=} NewtonScript provides the standard set of binary equality and relational operators. The equality operators are: equal (=) and not equal (<>). The relational operators are less than (<), greater than (>), less than or equal to (<=), and greater than or equal to (>=). = The equal operator tests the value of immediates and reals, and the identity of references; returning true if they are equal and nil if they are not equal. <> The not equal operator tests the value of immediates and reals, and the identity of references; returning true if they not equal and nil if they are equal. < The less than operator compares the values of numbers, characters, and strings; returning true if the operand on the left of the operator is less than the operand on its right and nil otherwise. An error is signalled if you try to compare arrays or frames. > The greater than operator compares the values of numbers, characters, and strings; returning true if the operand on the left of the operator is greater than the operand on its right and nil otherwise. An error is signalled if you try to compare arrays or frames. <= The less than or equal to operator compares the values of numbers, characters, and strings; returning true if the operand on the left of the operator is less than or equal to the operand on its right and nil otherwise. An error is signalled if you try to compare arrays or frames. = <> < > <= >= C H A P T E R 2 Objects, Expressions, and Operators 2-34 Operators >= The greater than or equal to operator compares the values of numbers, characters, and strings; returning true if the operand on the left of the operator is greater than or equal to the operand on its right and nil otherwise. An error is signalled if you try to compare arrays or frames. This expression tests the identity of two reference objects: "abc"<> [1, 2]; It evaluates to true because the two objects are not the same object. In the same way, the equality operator (=), when applied to two array objects, compares their identity, as shown when you execute the code: [1,2] = [1,2]; This expression evaluates to nil even though at first glance it looks as though it should be true. This is because each time the [1,2] expression is evaluated a new object is created. The relational operators work with numbers, characters, and strings. If you try to use these operators with arguments that are arrays or frames, an error is signalled. Boolean Operators 2 { and | or } The Boolean operators, and and or, are binary logical operators that compare two expressions. and The and operator tests the logical truth of its two operands; returning true if both expressions are true and nil otherwise. and or C H A P T E R 2 Objects, Expressions, and Operators Operators 2-35 or The or operator tests the logical truth of its two operands; returning true if either expression is true and nil if both expressions are false. Expressions involving the Boolean operators, and and or, like their counterparts, && and ||, in the C programming language, short circuit or stop evaluation as soon as the truth of an expression is determined. For instance, if x < length(someArray) evaluates to nil in a conditional expression like if x < length(someArray) and someArray[x] then doSomething else doSomethingElse; processing is stopped immediately and goes on to the else clause. If one part of an and operation is not true, the whole and expression is not true. Therefore, it is not necessary to evaluate the second half of the and expression when the first half is not true. When this occurs it is said that execution is short-circuited. Similarly, if the first part of an or operation is true, than the whole or expression is true, and the second part is not evaluated. The return value of an expression using any of the logical operators is either nil, which is false, or anything other than nil, which is true. Unary Operators 2 { - | not } The unary prefix operators, minus (-) and not, precede any single expression. - not C H A P T E R 2 Objects, Expressions, and Operators 2-36 Operators - The minus (-) operator returns the additive inverse of the expression it precedes. not The not operator is used before an expression to perform a logical negation of that expression. Here are some examples of these operators in use: -x; not x; -(1 + 5); not(a and -f(12) > 3); Exists is another NewtonScript unary (but postfix) operator. It is described in the section“Exists” beginning on page 2-37. String Operators 2 string1 { & | && } string2 The two string operators, && and &, create a new string from the contents of two strings you provide. The single & operator creates a new string that has no spaces between the two objects, while the double && operator adds a space between the two strings in the new string. If you use an object that is not a string in an && or & expression, NewtonScript converts the object to a string and uses it to construct a new string. This works for symbols, characters, and numbers. An & and && expression returns a new string. & An & expression concatenates the string yielded by the expression on its left to the string yielded by the expression on its right. && An && expression creates a new string by concatenating, with a space, the string yielded by the expression on its left to the string yielded by the expression on its right. & && C H A P T E R 2 Objects, Expressions, and Operators Operators 2-37 The single & operator concatenates the two strings by leaving no space, in the new string, between what was the second string and the first string. For instance, the expression: "foo" & 17 creates the new string: "foo17" In contrast, the && operator creates a new string by copying the first string, adding a space, and then copying the second string, as you can see, in the following expression and its result: "happy" && "days" "happy days" Exists 2 lValue exists The exists operator is a special postfix operator that follows a single variable that can be a symbol, a frame accessor, or a message send. The exists operator is used to check for the existence of variables, slots, or methods. When you apply the exists operator to an identifier, such as a variable, it returns true if the variable is defined in the current context and nil otherwise. (For more information about the scope of variables see “Scope” beginning on page 1-4.) lValue Consists of an expression that evaluates to a symbol, frame accessor, or a message-send. All of these are legal forms for an exists expression to take: x exists; x.y exists; lvalue exists C H A P T E R 2 Objects, Expressions, and Operators 2-38 Operator Precedence x.(y) exists; x:m exists; Here is an example of a simple if…then structure that uses exists: if myVar exists then myVar else 0; When you apply exists to a frame accessor, exists returns true if the slot exists in the frame or in any of its prototype frames, and nil otherwise. (For more information about prototype frames and inheritance, see Chapter 5, “Inheritance and Lookup.”) If…then expressions are described in Chapter 3, “Flow of Control.” This operator can be useful if you want to check for the existence of a slot that may or may not be in a proto frame. if myFrame.aSlot exists then if not hasSlot(myFrame, 'aSlot) then print("'aSlot slot is in a prototype of myFrame") The built-in function HasSlot provides similar functionality to the exists operator though they differ in the type of inheritance that is used to search for slots. See also “Inheritance Rules for Testing for the Existence of a Slot,” in Chapter 5, and Chapter 6, “Built-In Functions.” Note The exists operator is not guaranteed to work for local variables. ◆ Operator Precedence 2 In case it is not inherently apparent in an expression, a set of ratings tells the compiler which operator to evaluate first (or which operator takes precedence). Table 2-5 lists the order of precedence of all the NewtonScript operators in order from top to bottom. Note that operators grouped together in the table are of equal precedence. C H A P T E R 2 Objects, Expressions, and Operators Operator Precedence 2-39 Table 2-5 Operator precedence and associativity Operator Action Associativity . slot access left-to-right : :? message send conditional message send left-to-right [] array element left-to-right - unary minus left-to-right << >> left shift right shift left-to-right * / div mod multiply float division integer division remainder left-to-right + - add subtract left-to-right & && concatenate (string copy of expression value) concatenate with 1 space between left-to-right exists variable & slot existence none < <= > >= = <> less than less than or equal greater than greater than or equal equal not equal left-to-right not logical not left-to-right and or logical and logical or left-to-right := assignment right-to-left Compound Expressions 3-1 C H A P T E R 3 Flow of Control 3 This chapter discusses the syntax and semantics of the standard flow-ofcontrol mechanisms including compound expressions, conditional expressions and iterators. Also included is a discussion of the non-standard flow-of-control mechanism called exception handling that NewtonScript uses to control exceptional situations or errors. Compound Expressions 3 begin expression1; expression2; … expressionN[;] end Figure 3-0 Table 3-0 Listing 3-0 begin expression ; expression ; end C H A P T E R 3 Flow of Control 3-2 If…Then…Else In NewtonScript, the keywords begin and end are used to group expressions, not to create structured blocks that define the scope of variables, as they are in some languages. This construct is useful in conditional expressions, in any of the looping expressions, and in function definitions. In fact, anywhere the syntax specifies a single expression, you can use a compound expression instead. The compound expression returns the result of the last expression. expression Consists of any valid NewtonScript expression; it must be separated from the next expression by a semicolon, unless it is the last expression in the compound expression. In this case, the keyword end separates it from any following expressions. If you want to execute more than one expression in a conditional expression, use the keywords begin and end to group the expressions as shown in this example: if x=length(myArray) then begin result := self:read(x); print(result) end If…Then…Else 3 if testExpression then expression [;] [else alternateExpression] The if…then…else construct allows you to dictate programmatic flow of control using test conditions. if testExpression then expression ; else alternateExpression C H A P T E R 3 Flow of Control Iterators 3-3 As is standard in other programming languages, you use an if expression to carry out one set of operations, when the condition you set up in a test expression is true, and another set of operations when the text expression evaluates to nil. The if expression returns the value of its expression or alternateExpression. clause, unless the test condition is not true and there is no else clause. In that case, nil is returned. testExpression Consists of an expression that tests for the truth of a condition. If the test expression evaluates to anything other than nil, the expression following it is executed. expression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions.”) This expression is executed if the test is true; its value is returned as the value of the if expression. alternateExpression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions.”) The else clause, along with the alternateExpression that follows it, is executed if the test expression evaluates to nil. An else clause binds to the nearest unmatched if-then clause. Iterators 3 NewtonScript includes these iterators: ■ For ■ Foreach ■ Loop C H A P T E R 3 Flow of Control 3-4 Iterators ■ While ■ Repeat ■ Break For 3 for counter := initialValue to finalValue [by incrValue ] do expression The for loop performs a set of expressions repeatedly, until a loop counter variable equals or exceeds a specified final value or a Break expression is reached. A counter variable keeps track of the number of times the loop has executed. You specify the initial value and final value of the counter variable. If you choose not to specify the amount to increase (or decrease) the counter by using the optional keyword by followed with an incremental value, the counter gets incremented by the default value of 1. A for loop expression returns nil (or the argument of a break expression, if one is used to terminate the loop.) counter This symbol is set to the value of the initialValue expression when a for loop starts. After each repetition of the loop, the counter variable is incremented by the value of incrValue. or by the default value of 1 if an incremental value is not specified. The counter symbol is automatically declared as a local by the NewtonScript compiler. On loop exit the value of counter is undefined. It is an error to change its value from within the loop body. If you do so, loop behavior is undefined. counter initialValue to finalValue by incrValue for : = do expression C H A P T E R 3 Flow of Control Iterators 3-5 initialValue This expression must evaluate to an integer. It is evaluated once before the loop starts and is used as the initial value of the counter. finalValue This expression must evaluate to an integer. It is evaluated once before the loop starts and is used as the final value of the counter. incrValue This expression follows the keyword by. It is evaluated once before the loop starts and used throughout the loop execution to increment (or decrement) the counter variable. The incremental value expression must evaluate to an integer (either positive or negative); a value of zero generates a run-time error. If you do not specify an incremental expression, after the keyword by, a default value of 1 is used to increment the counter. expression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions.”) Here is an example of a for loop. for x:=1 to 10 by 2 do print(x); 1 3 5 7 9 C H A P T E R 3 Flow of Control 3-6 Iterators Foreach 3 foreach [slot,] value [deeply] in {frame | array} {collect | do} expression Using the foreach iterator is one way you can access data stored in frames or arrays. This iterator executes once for each element in an array or frame allowing you to either iterate an expression over each value stored in an array or frame, or to collect data during each iteration. In an array, iteration begins with the first element of the array, element 0. In a frame the starting point and subsequent order of iteration is unpredictable since frame slots are not stored in any particular order. This iterator also has a special option, deeply, for frame iteration over values in the target frame and in its proto chain of frames as well. For information on prototype inheritance see Chapter 5, “Inheritance and Lookup.” Aforeach expression returns nil (or the argument of a break expression, if one is used to terminate the loop.) slot This symbol is set to the name or index of the next slot on each loop iteration over the elements of an array or frame. The value of this variable is undefined on loop exit. Using the slot variable is optional. If you specify just one variable of the slot, value pair, it’s assumed to be as the value. The slot symbol is automatically declared as a local by the NewtonScript compiler. , value deeply in frame array expression foreach do collect slot C H A P T E R 3 Flow of Control Iterators 3-7 value Set to the value of the next array element or frame slot on each loop iteration over the elements of an array or frame. The value of this variable is undefined on loop exit. Using the value variable is mandatory. If you specify just one variable, of the slot, value pair, it’s value is assigned as the element value. The value symbol is automatically declared as a local by the NewtonScript compiler. array An expression that evaluates to an array. frame An expression that evaluates to a frame. expression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions” beginning on page 3-1) deeply Optional. If this keyword is included, iteration occurs over values in the immediate frame first and then in the _proto frame(s) as well. (For information on prototype inheritance see Chapter 5, “Inheritance and Lookup.”) If you specify the deeply option and the frame you are concerned with does not have a _proto frame, no error is produced. Instead, the slot values evaluate to those of the current frame. You use foreach to access data stored in a frame that functions like a Pascal record or a C struct. The data used in the following example is the nameFrame frame, defined as: nameFrame := { name:"Carol", office:"San Diego", phone:"123-4567"}; C H A P T E R 3 Flow of Control 3-8 Iterators You can use the foreach do loop to access and print the slot names and values stored in a nameFrame by writing a method like reportIt: report:= { reportIt: func(frameName) foreach slot, value in frameName do print(slot && “:” && value); } When you send the message reportIt with the argument nameFrame to the report object, as shown here: report:reportIt(nameFrame); this is the output produced: "name : Carol" "office : San Diego" "phone : 123-4567" Using collect with the foreach iterator makes it easy to collect the data and manipulate it. Consider a dataFrame which is defined as: dataFrame := {1,3,5,7,9} You can collect the squares of each value in dataFrame and print the results, with the code shown here: result := foreach value in dataFrame collect value*value; print(result); The values are collected in an array, as shown in the output: [1,9,25,49,81] Note The behavior of foreach is undefined when the array or frame is modified inside the loop body, except for the specific case of deleting the current element. In this specific case, the loop will continue on to the next element as expected. ◆ C H A P T E R 3 Flow of Control Iterators 3-9 If you want the foreach iterator to look up slot values in the prototype frame in addition to the current frame, use the deeply option. To make use of the deeply option with this iterator, your data set must include a frame that references a prototype frame. For purposes of example we can use the data defined here as: x := {one:1, two:2, three:3}; y := {four:4, five:5, combo:x}; z := {six:6, _proto:y}; You can consult the picture of this data, shown in Figure 3-1, while looking at the accompanying table, Table 3-1, which shows the different results produced by using foreach both alone and with the deeply option. Figure 3-1 Data objects and their relationships Table 3-1 allows you to compare the results produced by two functions, normalList and deeplyList, as applied to the data in Figure 3-1. Test Data x one two three 1 2 3 x:={one:1,two:2,three:3}; #440F2D9 {One:1, two:2, three:3} y:={four:4,five:5,combo:x}; #440F891 {four:4, five:5, combo:{One:1, two:2, three:3} z:={six:6,_proto:y}; #440FE61 {six:6, _proto:{four:4, five:5, combo:{#440F2D9}}} z four five combo 4 5 x y six _proto 6 y C H A P T E R 3 Flow of Control 3-10 Iterators Table 3-1 Result comparison for the iterators foreach and foreach deeply Loop 3 loop expression This mechanism simply repeats any expressions that occur within the loop expression until a break expression is encountered; if no break expression is reached the loop never ends. foreach foreach deeply normallist := func (param) begin foreach tempItem in param collect tempItem; end; deeplylist := func (param) begin foreach tempItem deeply in param collect tempItem; end; :normallist(x) #4413441 [1, 2, 3] :deeplylist(x) #44137D9 [1, 2, 3] :normallist(y) // same #4413A11 [4, 5, {One: 1, two: 2, three: 3}] :deeplylist(y) #4413C49 [4, 5, {One: 1, two: 2, three: 3}] :normallist(z) #4416E29 [6, {four: 4, five: 5, combo: {#4415D79}}] :deeplylist(z) #4416FE1 [6, 4, 5, {One: 1, two: 2, three: 3}] loop expression C H A P T E R 3 Flow of Control Iterators 3-11 The loop expression returns the argument of the break expression that is used to terminate the loop. expression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions” beginning on page 3-1) This expression is evaluated during each loop iteration. This example prints the value of the variable x until it reaches the value of 0 and the break expression is executed. local x:=4; loop if x = 0 then break else begin print(x); x:=x-1 end 4 3 2 1 While 3 while condition do expression The while loop evaluates the conditional expression first. If it evaluates to a non-nil value (true or any other value that is not nil) the expression after the keyword do executes. This sequence repeats until the conditional expression evaluates to nil and ends loop execution. while condition do expression C H A P T E R 3 Flow of Control 3-12 Iterators Awhile expression returns nil (or the argument of a break expression, if one is used to terminate the loop.) condition Consists of an expression that tests for the truth of a condition. If the test expression evaluates to nil, loop execution ends. expression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions” beginning on page 3-1) This expression is evaluated during each loop iteration. Repeat 3 repeat expression1; expression2; … expressionN[;] until condition The repeat loop executes the expression(s) inside the loop first and then evaluates the test expression. If the expression at the end of the loop evaluates to nil, the expressions repeat and the test expression is evaluated again. This continues until the expression evaluates to non-nil, at which point the loop ends. repeat expression ; expression ; until condition C H A P T E R 3 Flow of Control Exception Handling 3-13 Arepeat expression returns nil (or the argument of a break expression, if one is used to terminate the loop.) condition Consists of an expression that tests for the truth of a condition. If the conditional expression evaluates to anything other than nil, loop execution ends. expression Consists of any valid NewtonScript expression. Break 3 break [expression ]; While not an iterator itself, the Break expression interrupts the execution of any of the iterative structures. You must use the Break expression to stop the simple Loop structure, which has no built-in constructs to stop it. If a expression follows Break, it is evaluated and returned as the value of the loop. If you use the Break with no expression following it, the loop returns the value nil. expression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions” beginning on page 3-1) The value of this expression is returned as the value of the Break expression. Exception Handling 3 This section describes exception handling in NewtonScript. Exception handling is a non-standard flow-of-control mechanism that NewtonScript inherits from Newton system software. NewtonScript exception handling allows you to respond to exceptional conditions that arise during the execution of your program. An exceptional condition, or exception, is a condition that either the Newton system break expression C H A P T E R 3 Flow of Control 3-14 Exception Handling software or your own code raises when something unexpected or erroneous happens at run time. When an exception is raised at run time, the system can transfer control to an exception handler, which is a block of code that attempts to handle the condition gracefully, rather than allowing the application to crash. An exception handler can respond by displaying an error message, reverting the state of a computation, or taking some other action or actions. The act of raising an exception is known as throwing an exception. An exception handler catches the exception and responds in some manner. Each exception has a unique name and each exception handler responds to a specific exception or class of exceptions. Newton system software throws and catches a number of built-in exceptions. You can define, throw, and catch your own exceptions, and you can also catch and handle the built-in exceptions. Working with Exceptions 3 Working with exceptions in NewtonScript involves a number of entities. You can perform the following actions to work with exceptions: ■ define an exception symbol for a specific exception or class of exceptions ■ enclose a list of statements within a try statement to catch any exceptions that occur during execution of those statements ■ catch a specific exception or class of exceptions with an onexception statement ■ use the CurrentException function to examine the frame associated with the exception that you are handling ■ throw an exception when you detect a condition that request handling ■ rethrow an exception from within your exception-handling code to allow the next handler for the exception to respond to it You can provide exception handling for any list of statements in your NewtonScript programs. You can also nest an exception-handling block C H A P T E R 3 Flow of Control Exception Handling 3-15 of code inside of another exception-handling block of code to provide a hierarchical chain of exception handlers. Each exception handler can specify which exception or class of exceptions it processes by naming the symbol or symbol prefix that it handles. An exception handler can also reraise (rethrow) the exception that it is handling to allow other exception handlers in the chain an opportunity to process the exception. The basic process for implementing exception handling is as follows: 1. Decide on a name for the exceptions that you are going to define and how you are going to respond when each exception is raised. 2. Write your code and use the Throw function to raise exceptions where appropriate. 3. Write an onexception clause for each exception. Each clause names an exception and provides a statement to handle that exception. 4. Enclose the list of statements in which you are raising and handling exceptions with a Try statement. Defining Exceptions 3 Each exception is named with an exception symbol. You must adhere to the following format rules when defining an exception symbol. Each symbol ■ must be enclosed in vertical bars (|) ■ must contain at least one part that begins with the prefix evt.ex ■ can contain up to 127 characters ■ can contain multiple parts that are separated by semicolons (;) A few example of exception symbols are shown in Listing 3-1. C H A P T E R 3 Flow of Control 3-16 Exception Handling Listing 3-1 Exception symbols |evt.ex| |evt.ex.fr.intrp| |evt.ex.div0| |evt.ex.msg;type.ref.frame| IMPORTANT Do not leave a space between the parts of exception symbols, since the vertical bars make the space part of the exception symbol. ◆ The prefixes contained in the exception symbols are used to define the hierarchy of exception handlers, as described in the section “Catching Exceptions” beginning on page 3-21. These prefixes are also important for defining exception types, as described in the section “Exception Frames” on page 3-16. Exception Symbol Parts 3 Each exception symbol can contain multiple parts, enclosed in vertical bars and named as described earlier in this section. For example, the symbol |evt.ex;type.ref.something| contains two parts. The parts of an exception symbol must be separated by a semicolon. When an exception symbol contains multiple parts, the exception is still processed as a single exception. This means that the first exception handler to catch any part of the exception symbol handles the exception. That handler can rethrow the exception to allow other handlers to catch it. Exception Frames 3 A frame is associated with each exception. This exception frame contains two slots: a name slot and a data slot. The name slot is always named name and always contains the exception symbol. The name and contents of the C H A P T E R 3 Flow of Control Exception Handling 3-17 other slot, which contains the data, depend on the composition of the exception symbol, as shown in Table 3-2. Table 3-3 shows several examples of exceptions and the frames associated with them. You can access the frame that is associated with an exception from within your exception handler by calling the built-in function CurrentException, described in Chapter 6, “Built-In Functions.” Table 3-2 Exception frame data slot name and contents Exception symbol Slot name Slot contents contains part with prefix type.ref data a data object, which can be any NewtonScript object contains part with prefix evt.ex.msg message a message string any other error an integer error code Table 3-3 Exception frame examples Exception symbol Exception frame |evt.ex;type.ref| {name: '|evt.ex;type.ref|, data: {type: 'inka, size: 42, weight: 177}} |evt.ex.msg| {name: '|evt.ex.msg|, message: "there seems to be a problem"} |evt.ex| {name: '|evt.ex|, error: -48666} C H A P T E R 3 Flow of Control 3-18 Exception Handling The CurrentException function returns the frame that is associated with the current exception. You can examine the frame returned by CurrentException to determine what kind of exception you are handling. For example, you can call the HasSlot function to determine if the frame contains a slot named error and you can then take appropriate action. The Try Statement 3 You use the try statement to enclose a list of statements in which you want to handle exceptions. The syntax of a try statement is try expression1; expression2; … expressionN onexception exceptionSymbol do statement onexception exceptionSymbol do statement... The try statement encloses statement1 through statementN and transfers control to one of the onexception clauses when an exception is raised. If no exceptions are raised, the value of the try statement is the value of its final statement. If an exception is raised and an onexception clause handles that exception, the value of the try statement is the value of the executed onexception clause’s statement. exeptionSymbol do statement try onexception expression ; expression ; C H A P T E R 3 Flow of Control Exception Handling 3-19 expression Any valid NewtonScript expression. exceptionSymbol An exception symbol that can contain multiple parts separated by semicolons. The symbol is enclosed in vertical bars and can contain up 127 characters. Exception symbols are described in “Exception Symbol Parts” beginning on page 3-16. Examples of the try statement and onexception clauses are found in Listing 3-4 on page 3-22. Throwing Exceptions 3 To raise an exception in NewtonScript, you need to call the Throw function and to include the exception name and data as parameters. The form of the data that you send as a parameter must match the type of exception you are throwing. The Throw(name,data) function raises an exception and creates an exception frame with the specified name and data. The possible values for the data parameter depend on the composition of name, and are shown in Table 3-2 on page 3-17. The Throw function is described in Chapter 6, “Built-In Functions.” You call the Throw function from within a list of statements that are enclosed by a Try statement. NewtonScript transfers control to the onexception clause whose symbol matches name. Listing 3-2 shows several examples of calls to the Throw function. Listing 3-2 The Throw function Throw('|evt.ex.foo|, -12345); Throw('|evt.ex.msg|, "This is my message"); Throw('|evt.ex;type.ref.something|, ["a", "b", "c"]); C H A P T E R 3 Flow of Control 3-20 Exception Handling Note that the composition of the exception symbol that you pass as the first parameter to the Throw function defines the kind of data that you pass as the second parameter: ■ The first statement in Listing 3-2 requires an error number as its second parameter. ■ The second statement in Listing 3-2 contains the prefix evt.ex.msg and thus requires a message string as its second parameter. ■ The third statement in Listing 3-2 contains the prefix type.ref and thus requires a data object (in this case, an array) as its second parameter. Throwing an Exception to Another Handler 3 You can pass control from within an exception handler to the next enclosing Try statement by reraising the exception. To do this, you call the Rethrow function. This function is described in Chapter 6, “Built-In Functions.” The Rethrow function reraises the current exception to allow the next enclosing Try statement an opportunity to handle it. The Rethrow function also passes along the same parameters as were passed with the original call to the Throw function. The following example illustrates the use of Rethrow: onexception |evt.ex.msg| do if StrEqual (CurrentException().message, someString) then self:doSomething(); else Rethrow() IMPORTANT You can call the Rethrow function only from within an onexception clause. ▲ C H A P T E R 3 Flow of Control Exception Handling 3-21 Catching Exceptions 3 When an exception is thrown during the execution of a list of statements, execution of that list of statements is terminated and control is transferred to the first exception handler that matches the exception. Each exception handler is an onexception clause enclosed within a try statement, as shown in Listing 3-3 and Listing 3-4. Each onexception clause specifies the symbol of the exception or the class of exceptions that it handles. The first exception handler that matches the symbol of the exception that has been raised is the handler that is invoked. This happens as follows: 1. When an exception is raised, Newton system software examines the onexception clauses of the try statement that is currently active. The onexception clauses are examined in order, from first defined to last defined. 2. The first matching onexception clause is executed and the value of the clause becomes the value of the try statement. A matching onexception clause is one whose exception symbol is a prefix of any of the parts of the exception that was raised. 3. If the active try statement does not contain a matching onexception clause, the exception is passed onto the next enclosing try statement. 4. The exception is passed along to enclosing try statements until it is handled. If no onexception clause in your application handles it, the exception will be handled by the system, which responds by displaying an error alert. There are two logical points that should be considered in structuring code with exception handlers. First, since exceptions are handled by the first onexception clause that contains a prefix of a part of the exception symbol, you need to order your onexception clauses from most specific to least specific. For example, the code in Listing 3-3 contains three onexception clauses ordered improperly. C H A P T E R 3 Flow of Control 3-22 Exception Handling Listing 3-3 Several onexception clauses ordered improperly try c := x:myFunc(p, q); :anotherFunc(c) onexception |evt.ex.pgm.fnerr| do begin print(“function error”); c := nil; end onexception |evt.ex.pgm| do print(“program error”) onexception |evt.ex.pgm.dataerr| do print(“data error”); The final onexception clause in Listing 3-3 will never be executed because the second onexception clause catches any exceptions that contain the evt.ex.pgm prefix. Changing the order of the clauses to make the least specific (the |evt.ex.pgm| symbol) clause last fixes the problem. This improved version of the code is shown in Listing 3-4. Listing 3-4 The onexception clauses properly ordered try c := x:myFunc(p, q); :anotherFunc(c) onexception |evt.ex.pgm.fnerr| do begin print(“function error”); do c := nil; end onexception |evt.ex.pgm.dataerr| do print(“data error”) onexception |evt.ex.pgm| do print(“program error”); C H A P T E R 3 Flow of Control Exception Handling 3-23 Second, an onexception clause is matched with the nearest try statement, just as an else clause is matched to the nearest if-then clause. However, unlike the if-then case, a single try statement can bind to multiple onexception clauses. Listing 3-5 illustrates how this can cause problems when nesting try blocks. Listing 3-6 then shows how this problem can be avoided by explicitly declaring try blocks with the keywords begin and end. Listing 3-5 Improperly nested try blocks func f() begin try try self:doSomething() onexception |evt.ex| do print( CurrentException() ); self:doSomethingElse() onexception |evt.ex| do print( “There was a problem.” ); end Listing 3-6 Nested try block problem fixed using begin and end (shown in bold) func f() begin try try begin self:doSomething() onexception |evt.ex| do print( CurrentException() ); end C H A P T E R 3 Flow of Control 3-24 Exception Handling self:doSomethingElse() onexception |evt.ex| do print( “There was a problem.” ); end IMPORTANT The onexception syntax is not forgiving about extra semicolons. Never include a semicolon (;) before an onexception clause. ▲ Responding to Exceptions 3 This section shows and describes several examples of using exception handling in a NewtonScript application program. Listing 3-7 shows an exception handler that catches the exception raised by the Newton system software when there is not enough memory to store a new date in the Datebook soup. Listing 3-7 Handling a soup store exception onException |evt.ex.fr.store| do :Notify(kNotifyAlert, "Dates", "Not enough memory to save changes."); Listing 3-8 shows an exception handler that examines the exception frame to determine if the exception represents a certain error. If so, the handler takes an action; otherwise, the handler rethrows the exception so that it can be caught by another handler. C H A P T E R 3 Flow of Control Exception Handling 3-25 Listing 3-8 An exception handler checking the exception frame onException |evt.ex| do if HasSlot(CurrentException(), 'error) then begin if CurrentException().error = -48211 then Print(“The string you entered is too large”) else Rethrow(); end else Rethrow(); About Functions and Methods 4-1 C H A P T E R 4 Functions and Methods 4 This chapter describes the way you encapsulate and access code in functions and methods, as well as related topics, including: ■ method and function definition ■ messages ■ passing parameters ■ function objects ■ native functions About Functions and Methods 4 Most functions in NewtonScript are really methods; that is, they are defined within the context of a frame that can receive messages. In fact, a method in NewtonScript is nothing more than a function referenced by a frame slot and invoked with a message send. You send messages to objects to execute methods, as in other object-oriented languages. In NewtonScript, the frame is the only type of object that receives messages. (See the section “Frame” beginning on page 2-17.) Figure 4-0 Listing 4-0 Table 4-0 C H A P T E R 4 Functions and Methods 4-2 About Functions and Methods NewtonScript also has built-in global functions that are part of the system. These are discussed in Chapter 6, “Built-In Functions.” Function Constructor 4 func [native](paramList) expression The func expression is used to create a function or method. The syntax of a function constructor consists of the reserved word, func, and the optional keyword, native, followed by parentheses that surround zero or more parameters in a comma-separated list, and a body of code consisting of one expression. The keyword native denotes a native function; see the section “Native Functions” on page 4-16. A function constructor returns a function object, which, when executed, returns the value of its expression. This is the last expression executed, if expression is a compound expression. See the section “Function Objects” beginning on page 4-9. paramList An optional list of parameter identifiers that are separated by commas and enclosed in parentheses. If your function does not use parameters you must still include an empty set of parentheses following the keyword func, or native (if it appears). Any identifiers in paramList can be preceded by the keywords int or array, which automatically declares them as variables of the respective types. expression Consists of any valid NewtonScript expression. A compound expression may be substituted. (For more information see the section “Compound Expressions” on page 3-1.) func native ( paramList ) expression C H A P T E R 4 Functions and Methods Function Invocations 4-3 When a function is executed, it returns the value of the expression evaluated. The following example, myFunction, simply returns the value of the difference between its two parameters, that is, the value of the if expression. myFunction := func(n1, n2) if n1 > n2 then n1 - n2; else n2 - n1 Return 4 return [returnValue] The return expression is used to exit a function and return a value. When an expression appears following the keyword, return, it is evaluated and its value is returned as the value of the function. If you do not specify a return value, nil is returned on function exit. returnValue Optional. Consists of any valid NewtonScript expression or compound expression. If no expression follows the return keyword, the return expression evaluates to nil. Function Invocations 4 There are three ways function objects can be executed in NewtonScript: ■ as the result of a message-send ■ by using the call with syntax ■ with a global function invocation This section describes each of these in turn. return expression C H A P T E R 4 Functions and Methods 4-4 Function Invocations Message-Send Operators 4 [{inherited|frame}] {:|:?} message(paramList) Most code is executed in response to messages you send to a frame. Messages are sent by using either the colon (:), which is the message-send operator, or the colon-question mark (:?), which is the conditional message-send operator. The message-send operator (:) sends a message and its arguments, if any, to a frame object. The conditional message-send (:?) first checks to see if a method exists anywhere in the inheritance chain before sending the message. The optional frame expression, frame, appears before the operator and specifies the frame where the message is sent. If a frame expression is specified, the message is sent directly to the frame you specify, and it becomes the receiver of the message. When nothing appears before the message-send operator, the message is sent to the current receiver, which you can refer to using the pseudo-variable, self. Rather than leaving a blank before the message-send operator, you can make your code more readable by putting self there, to specify explicitly the current receiver. (See “Note” on page 5-10 for a discussion of the pros and cons of this usage of self.) If you want to call an inherited method instead of the method that overrides it, use the keyword, inherited, before the message-send operator. This forces NewtonScript to bypass the receiver and look up the value of the method in the prototype chain, starting after the frame where the currently executing method was found. Note that lookup stops at the end of the prototype chain and does not continue up the parent chain. For more information on lookup see Chapter 5, “Inheritance and Lookup.” The message that follows the message-send operator is a symbol. The message-send operator looks for a frame slot with that name. The frame slot ( : : ? ) inherited frame message paramList C H A P T E R 4 Functions and Methods Function Invocations 4-5 must reference a function with the same number of parameters used in the message-send parameter list. frame Any valid NewtonScript expression that evaluates to a frame. The frame specified becomes the receiver of the message. The message is sent to the current receiver when a frame does not appear before the colon, as in the following expression. :message(argList); inherited A keyword specifying that the message is being sent to an inherited version of the method code residing somewhere in the prototype chain. Using the inherited keyword forces method lookup to start in the prototype chain rather than in the receiver. message A symbol used to look up the method using the standard inheritance rules, beginning with the receiver, at run time. For more information on lookup see Chapter 5, “Inheritance and Lookup.” paramList Consists of a list of zero or more parameters, separated by commas and enclosed by parentheses. The number of parameters must match the number of parameters expected by the method. When the following message-send executes, the message, msg1, is sent to the object, frame4. frame4:msg1(); If you send the same message without specifying which frame is the receiver, the message is sent to the current receiver, as in the expression: :msg1(); The same operation could be written as: self:msg1(); C H A P T E R 4 Functions and Methods 4-6 Function Invocations If you are not sure if a method exists, send the message using the conditional message-send operator (:?). This operator insures that the message is sent only if NewtonScript can find the method. Note that the following two expressions are equivalent: if frameName:messageName exists then frameName:messageName() and, frameName:?messageName() The second is preferable, however, since the first message will be looked up twice; once to evaluate the exists expression, and once for the message-send. You can also use the built-in function Perform() to send a message with a run-time argument list. There is also a function, PerformIfDefined, which mimics the conditional message send operator (:?). Two functions also exist which will send a message, but only search the prototype (and not the parent) inheritance chains; these are ProtoPerform and ProtoPerformIfDefined. All these functions are described in Chapter 6, “Built-In Functions.” Call With 4 call function with (paramList) The call with expression executes the specified function object and its parameters, using the value of the environment that was captured when the function object was created. Thus, the function object executes as a closure would in a language like Lisp. See the section “Function Objects” beginning on page 4-9 for more information. call function with ( paramList ) C H A P T E R 4 Functions and Methods Function Invocations 4-7 You can call a function with a run-time argument list by using the built-in function Apply. For more information on this function see Chapter 6, “Built-in Functions.” function Consists of any valid NewtonScript expression that evaluates to a function. paramList Consists of a list of zero or more parameters, separated by commas and enclosed by parentheses. The number of parameters must match the number of parameters expected by the function. Acall with expression returns the result of the function it executes. Global Function Declaration 4 { global|func } functionName (paramList) expression You can use the global function definition syntax to define global functions in some NewtonScript implementations. Note that except for the keyword global, this syntax is the same as the regular function definition syntax discussed in the section “Function Constructor” beginning on page 4-2. Global functions can only be defined at the top level, not inside another function. The scope of a global function definition includes every NewtonScript function. Note When programming in the NTK environment, this use of the keyword global creates a function that is global within the NewtonScript environment in NTK. If you then attempt to call this function inside another function executing in the NewtonScript environment on a Newton device, an “unknown global function” error is generated. ◆ paramList expression func ( global functionName ) C H A P T E R 4 Functions and Methods 4-8 Passing Parameters Global Function Invocation 4 functionName (paramList) The global function call syntax has the same effect as a call with expression: it executes the specified function object functionName and its parameters using the message environment that was captured when the function object was created. However, the function is determined by name rather than by evaluating an expression. A global function call expression returns the result of the function object it executes. functionName A symbol naming a global function. paramList A list of zero or more parameters, separated by commas and enclosed by parentheses. The number of parameters must match the number of parameters expected by the function. Many global function definitions are built into NewtonScript (see Chapter 6, “Built-In Functions,” for a list of them). Passing Parameters 4 Parameters are passed by value in NewtonScript. In other languages this sometimes means that these parameters are unchangeable by the function. However, you should note that some NewtonScript values are references, and when a reference is the value of a parameter the function can modify that object. For more information about NewtonScript immediates and references, see the section “Immediate and Reference Values” beginning on page 2-5. functionName ( paraList ) C H A P T E R 4 Functions and Methods Function Objects 4-9 Function Objects 4 A function object is constructed when code of the following form executes: func(paramList) expression; Functions are first-class objects in NewtonScript. They can be assigned to local variables, array elements, or frame slots. They can also be stored in soups, or passed as arguments to a function. For information on soups, see The Newton Programmer's Guide. The term “function object,” rather than just “function,” is used to emphasize the fact that one func statement can give rise to many different function objects. When a function object is created it saves the environment that exists at that time. Therefore, multiple function objects that are created by one function constructor differ if the environments that existed when the func statement was executed differ. A function object consists of two main parts: its code, and the function context, which is where the environment that existed at the time of its creation is saved. The function context itself consists of two parts: the lexical environment, and the message environment. ■ The lexical environment is a list of locals and parameters in the function and in any enclosing functions. ■ The message environment consists of references to the frame in which the function is defined (the implementor) and to the frame to which it is sent (the receiver). By saving the environment in which it was created, the function object has access to local variables and to parameters that existed when it was constructed. In addition, the function object has access to variables in the inheritance chain of the frame that was the value of self when the function object was created. The NewtonScript inheritance mechanism is described in Chapter 5, “Inheritance and Lookup.” The parts of a function object are shown in Figure 4-1. C H A P T E R 4 Functions and Methods 4-10 Function Objects Figure 4-1 The parts of a function object Function Context 4 NewtonScript uses the context of a function--the lexical and message environments--to establish values for any variables used in a function without being defined there. The Lexical Environment 4 The lexical environment consists of a list of locals and parameters in the function, and any enclosing functions. For instance, the lexical environment of the function shown in the following example is the value of the parameter e when the function was called: frame1:={task1: func(e) begin //do something end } Code Function object Function context Parameters Locals Lexical environment Receiver (self) Implementor Message environment C H A P T E R 4 Functions and Methods Function Objects 4-11 The lexical environment of the function, task2, shown below in boldface type, consists of the values of the local variable total, and the parameters e, and a when the function was called. frame2:={task1: func(e) begin local total:= e; e := 20; task2:= func(a) … ; total end } Note Some implementations of NewtonScript optimize the memory allocated to the lexical environment by saving only those variables that are actually used within the function body. ◆ The Message Environment 4 The message environment of a function consists of the implementor of the message and the receiver of a message. The frame in which a method is defined is called its implementor. Note that a method could be defined in a number of places within a frame’s inheritance chain. The implementor is the frame in the inheritance chain where the method is found using the inheritance rules described in Chapter 5, “Inheritance and Lookup.” When a message is sent, the frame to which it is sent is the receiver. The implementor and the receiver will differ when the method is found in a frame that is in the inheritance chain of the receiver. C H A P T E R 4 Functions and Methods 4-12 Function Objects To illustrate this last point consider the following two frames, frame1 and frame2: frame1 := { greeting : "HI!", sayHi : func() print(greeting) }; frame2 := { greeting: "Hello!", _proto : frame1 }; In the following expression frame1 is both the receiver and the implementor: frame1:sayHi(); "HI" In this next expression, however, frame2 is the receiver and frame1 is the implementor: frame2:sayHi(); "Hello!" Note that the value of the variable, greeting, is based on the receiver, not the implementor. See the section “Inheritance Rules for Slot and Message Lookup” on page 5-7 for a discussion of this issue. Invoking a function by using the call with syntax sets the value of self (the receiver) to the value saved in the function’s message environment. This is in contrast to sending a message, where the receiver is changed to the frame specified in the message-send expression. Self 4 The value of the pseudo-variable self is always set to the value of the receiver. Therefore, you can use self to reference the receiver in your code. Note that you cannot set self as you could a real variable (in an assignment for instance), hence its designation as a pseudo-variable. For example, when sayHi executes in the following assignment, the value of self will be frame1: x := frame1:sayHi(); C H A P T E R 4 Functions and Methods Function Objects 4-13 An Example Function Object 4 The following example illustrates how the context of a function object is used to find values for the variables in the function. This example is complicated in that functions are nested, and the inheritance mechanism is utilized; this is to demonstrate how every part of a function object is used. You may want to skip this section, and come back to it after having read Chapter 5, “Inheritance and Lookup.” frame1 := {slot1 : 5}; frame2 := { _parent : frame1, slot2 : 40, outerMethod : func (arg1) begin local var1 := 2000; local nestedMethod := func (arg2) slot1 + slot2 + arg1 + var1 + arg2; nestedMethod; end; } When outerMethod executes through the following message-send functionObject1 := frame2:outerMethod(300); it returns the function object nestedMethod. This function object is stored in the variable functionObject1, shown in Figure 4-2. C H A P T E R 4 Functions and Methods 4-14 Function Objects Figure 4-2 functionObject1 dissected This message-send saves the environment in which it was created. This contextual information provides values for the parameters arg1 (300) and the local variable var1 (2000). It also provides a value for self, the receiver of the message-send. This allows NewtonScript to provide values for slot2 (40) and the inherited slot1 (5). When functionObject1 is executed, as in the following function call, NewtonScript can properly lookup the value of all the addends: call functionObject1 with (10000); This returns 12345. Code functionObject1 Function context Parameters Locals Lexical environment Receiver (self) Implementor Message environment slot1 + slot2 + arg1 + var1 + arg2 arg1, arg2 frame2 frame2 var1 C H A P T E R 4 Functions and Methods Function Objects 4-15 Note The following message-send does not work: aFrame := {aSlot : functionObject1} aFrame:aSlot(10000); This is because the message-send changes the receiver to aFrame, and NewtonScript is unable to produce values for slot1 and slot2. call aFrame.aSlot with (10000) still functions properly, however. ◆ Using Function Objects to Implement Abstract Data Types 4 One use of function objects is to implement abstract data types. These are types that can only be modified procedurally; their actual data is hidden. Though it might appear so, frames with methods don’t provide the same functionality. In a frame, the data values in the slots are visible and can be modified even when not using the appropriate methods. Consider the following account generator: MakeAccount := func()begin local balance := 0; local d := func(amount) begin balance := balance + amount; end; local c := func() begin balance := 0; end; {Deposit: d, Clear: c}; end; myAccount := call MakeAccount with (); C H A P T E R 4 Functions and Methods 4-16 Native Functions Calling MakeAccount returns a frame containing two function objects, d and c. The function objects in this frame reference the local variable balance from MakeAccount. Even though MakeAccount is no longer executing, the balance variable continues to exist, because the nested functions Deposit and Clear reference it. Thus, calling myAccount modifies the hidden variable balance, as you can see in the following Inspector output: call myAccount.Deposit with (50); #C8 50 call myAccount.Deposit with (75) #1F4 125 call myAccount.Clear with (); #0 0 Also since neither Deposit nor Clear utilizes the value of self, message-sends can be used as well as the call/with syntax: myAccount:Deposit (20); #50 20 Native Functions 4 When the keyword native appears in a function constructor, some compilers generate native code for that function. Native code is machine language code executed directly by the Newton processor. There are a number of considerations involved in deciding whether to declare a function native. For a detailed discussion of these issues, see the chapter “Tuning Performance,” in the Newton Toolkit User’s Guide. 5-1 C H A P T E R 5 Inheritance and Lookup 5 NewtonScript supports several object-oriented features and concepts through its double inheritance scheme. Frames are the basic data structure in NewtonScript. Inheritance between frames is set up through slots named _parent and _proto. This chapter describes parent and prototype (proto) inheritance. It also tells you ■ how to set up frames with these relationships ■ the rules associated with parent and prototype inheritance ■ how inheritance affects slot and method lookup ■ how inheritance affects setting slot values ■ the uses of parent and prototype inheritance Figure 5-0 Listing 5-0 Table 5-0 C H A P T E R 5 Inheritance and Lookup 5-2 Inheritance Inheritance 5 There are two kinds of inheritance in NewtonScript: prototype inheritance and parent inheritance. Prototype Inheritance 5 A frame can have a prototype, which is simply another frame it names as the value of a _proto slot. A frame inherits slots from its prototype if it does not contain them in itself. If a frame contains a slot with the same name as a slot in the prototype, it overrides the value of the prototype slot. You use inheritance from prototype frames (abbreviated as protos) for ■ object refinement—the Newton system has many user interface elements that are system protos you can use or modify in your own interface ■ persistent storage of data—these values are commonly stored in ROM or on a PCMCIA card Creating Prototype Frames 5 You create a prototype relationship between frames by using a special slot named _proto. The value of this slot must be a reference to the frame you intend to use as your prototype frame. For example, to use a frame called pageTemplate as a prototype for a frame called myPage, you include a _proto slot that evaluates to a reference to the pageTemplate frame. This is illustrated in Figure 5-1. C H A P T E R 5 Inheritance and Lookup Inheritance 5-3 Figure 5-1 A prototype frame Prototype Inheritance Rules 5 If a function in the frame myPage references the slot named topMargin during run time, as shown in Figure 5-1, the interpreter looks for the value of topMargin in the frame myPage first. It doesn’t find the slot there it follows the _proto reference to the frame, pageTemplate. There it finds a topMargin slot and its value, 1. In this case, the frame myPage inherits that slot. If a function in myPage references the slot named leftMargin, that slot is found in the current frame and evaluates to the value 0.75. In this case, the value in the current frame overrides the value found in the prototype. Note that methods in frames can also be inherited and overridden. The system obtains values during run time by following the prototype inheritance rules for looking up slot references. NewtonScript looks first in the current frame for a slot name. If the slot is not found, it looks at the prototype frame, and if the slot is still not found, it looks at the prototype frame of that frame, and so on, through all the prototypes in the chain. pageTemplate {topMargin:1 bottomMargin:2 leftMargin: 1.5 rightMargin:1.5 } myPage {_Proto: pageTemplate leftMargin: 0.75 } Prototype Frame C H A P T E R 5 Inheritance and Lookup 5-4 Inheritance An example of a prototype chain is shown in Figure 5-2. In this figure, the inheritance chain starts with the current frame, myPage, and follows the arrows to its prototype frames on the right. Figure 5-2 A prototype chain Parent Inheritance 5 Besides prototypical relationships between frames, you can set up hierarchical parent-child relationships. Inheritance from parent frames is used for ■ sharing information between objects, both behavior and data objects ■ creating hierarchies, like the view hierarchy of Newton applications Creating Parent Frames 5 The parent-child link between frames exists by way of a special slot named _parent, which resides in the child frame. You can set this slot directly in your code or you can use the drawing tools in the Newton Toolkit to create view hierarchies automatically. See the Newton Toolkit User’s Guide for more information about how to do this. Figure 5-3 shows an example of a parentchild relationship between two frames. Frames that serve as parents can themselves be children of other frames, thereby forming an inheritance chain extending upwards. myPage {_Proto: pageTemplate, ..} pageTemplate {_Proto: someFrame, ..} someOtherFrame {..} someFrame {_Proto: SomeOtherFrame, ..} C H A P T E R 5 Inheritance and Lookup Inheritance 5-5 Figure 5-3 Parent-child relationship Parent Inheritance Rules 5 When you create parent-child hierarchies between frames, NewtonScript uses an inheritance mechanism that works similarly to prototype inheritance. As in prototype inheritance, a child frame inherits slots from its parent that it does not itself contain. However, if a child frame contains a slot name that is the same as one in a parent frame, the child slot overrides the parent. In this sense parent inheritance rules are like prototype inheritance rules; the same mechanism is involved. They differ, however, in that the prototype inheritance chain is searched in some instances where the parent inheritance chain is not, and assignment of inherited slots is handled differently in the two types of inheritance. myDoc {_Proto: ..} myPage {_parent:myDoc ..} Parent Child C H A P T E R 5 Inheritance and Lookup 5-6 Inheritance Combining Prototype and Parent Inheritance 5 In practice, most frames have prototypes and parents. When a slot is referenced during run time, the parent inheritance mechanism interacts with the prototype inheritance mechanism. The basic rules for inheritance order are 1. NewtonScript looks first in the initial frame for a referenced slot. In variable lookup the initial frame is the current receiver; in message lookup it is the given receiver. 2. If the slot is not found, the prototype chain of the initial frame is searched. 3. If the slot is still not found, the search moves up one level to the parent frame. The parent and its prototype chain are searched in order. The search then moves up another level (to the parent’s parent) and continues in the same way until the slot is found. The numbered arrows in Figure 5-4 indicate the order in which frames are searched for a slot reference that is made from a function in the current frame, when that frame has both parent and proto frames. Basically, prototype inheritance takes precedence over parent inheritance; all prototype frames on one level are searched before moving up to search a parent frame and its prototypes on another level. Remember that these rule take effect within the context of the rules for variable lookup. When looking up the value of a variable, NewtonScript searches for the variable first as a local, then as a global, and finally through the inheritance structure. C H A P T E R 5 Inheritance and Lookup Inheritance 5-7 Figure 5-4 Prototype and parent inheritance interaction order Inheritance Rules for Slot and Message Lookup 5 There are a number of ways in which a slot can be accessed in NewtonScript. Some of these ways search both inheritance chains, some search only the prototype chain, and some search neither. If the slot name appears by itself, then both inheritance chains are searched. In the following expressions, for example, the values of chapterNum, and 1 4 6 7 2 myDoc chapTemplate {chapterNum: nil, header:true } sectionTemp {sides: nil, ..} pageTemplate {_proto: sectionTemp, topMargin: 1, bottomMargin: 2, leftMargin: 1.5, rightMargin: 1.5, sides: single } docTemplate {paperSize: standard ..} baseDoc {_proto: docTemplate, footer: 1 } {_proto: baseDoc, header: nil, footer: 2 } 5 myChap {_parent: myDoc, _Proto: ChapTemplate, sides: double, chapNum: 2 } 3 myPage {_parent: myChap, _Proto: pageTemplate, leftMargin: 0.75 } C H A P T E R 5 Inheritance and Lookup 5-8 Inheritance rightMargin are searched in the order shown by the arrows in Figure 5-4 (after being searched for as locals and globals, of course). presentChapter := chapterNum; if rightMargin > 1.0 then ... However, if the frame.slot or frame.(pathExpression) syntax is used, as in the following examples, then only the prototype chain will be searched. if myChap.header then ... x:= self.topMargin; A message-send searches both inheritance chains, whether the receiver is explicitly mentioned, as in frame:Message(), or is omitted, as in :Message(). An exception to this rule is that if the keyword inherited is used, as in inherited:Message(), the search will begins with the current frame’s prototype frame, and only follows the prototype chain. Note Arguments can be made both for and against using self:Message() as opposed to :Message(). On the one hand, self:Message() looks like self.slot, which does not follow the parent inheritance chain and thus might cause confusion. On the other hand, self:Message() is arguably more readable, and a common bug can be avoided by always using this format. Consider these two seemingly correct lines of code: :Message1() :Message2() This sends Message2 to whatever :Message1() evaluates to, which is not what was intended. Including self would have prevented this bug. Another way to avoid this type of bug is to always include a semicolon (;) after an expression. ◆ C H A P T E R 5 Inheritance and Lookup Inheritance 5-9 NewtonScript also has two built-in functions that can be used for accessing frame slots: GetVariable and GetSlot. GetVariable searches both inheritance chains, and GetSlot searches neither. See Chapter 6, “Built-In Functions,” for a description of these functions. Appendix E, “Quick Reference Card,” summarizes the information in this section. Inheritance Rules for Testing for the Existence of a Slot 5 Inheritance rules for testing for the existence of a slot are basically the same as those for slot lookup. When the slot name appears by itself, as in slot exists, the full inheritance chain is searched. If a frame is explicitly mentioned however, as in frame.slot exists or self.slot exists, only the prototype chain is searched. A method is searched in both inheritance chains, whether a frame appears before the colon, as in frame:Message exists, or not, as in :Message exists. NewtonScript also provides two built-in functions for testing whether a slot exists: HasVariable, and HasSlot. HasVariable searches both parent and prototype chains, and HasSlot searches neither. See Chapter 6, “Built-In Functions,” for a description of these functions Appendix E, “Quick Reference Card,” summarizes the information in this section. Inheritance Rules for Setting Slot Values 5 Inheritance rules apply not only when a slot is referenced, but also when its value is set. However, the rules are slightly different for setting the value of a slot. The basic difference is that slot values are changed in parent frames only during run time. One reason for this is that prototype frames often exist in ROM and, therefore, cannot be changed. (Of course, when you first create the prototype frames their slots can be set, but not when the application is running.) C H A P T E R 5 Inheritance and Lookup 5-10 Inheritance When setting a slot, the inheritance search is the same as for slot lookup, except that the slot is not always set where it is found. These are the rules for where a slot is set: 1. If a slot exists in the currently executing frame, its value is set there. 2. If the slot exists in the prototype chain of the current frame, a new slot is made in the currently executing frame and its value is set there. 3. If the slot exists in the parent of the currently executing frame, its value is set in that parent frame. 4. If the slot exists in the prototype chain of the parent, a new slot is made in the parent frame at the same level at which it was found, and its value is set in that parent frame. Note that if you create a variable from within a function, it is created as a local variable that is restricted to the scope of the function. If you want to make sure the slot is made in the receiver, you must specify that by using self, in an expression like self.slotName := aValue; If you want to set the value of a slot explicitly in the parent of the current frame, you can use the expression self._parent.theSlot to force the slot to be created there. Note It is unsafe to reference the _parent slot directly as a simple expression. A few work arounds are available, however. You can use the view system message :Parent(), which returns the current receiver’s parent frame. Also, using frame._parent or self._parent avoids this problem. In summary: _parent is risky frame:Parent() is OK self._parent is OK (and should be the same as :Parent()) frame._parent is OK (and should be the same as frame:Parent()) See the Newton Programmer’s Guide for more information on :Parent() method. ◆ C H A P T E R 5 Inheritance and Lookup Inheritance 5-11 An Object-Oriented Example 5 You may understand inheritance better if you construct an inheritance structure on which to experiment. You can use the following code: frame1 := { slot1: "slot1 from frame1", slot6: 99}; frame2 := { _parent: frame1, slot1: "slot1 from frame2", slot2: "slot2 from frame2"}; frame3 := { slot3: "slot3 from frame3", slot5: 42}; frame4 := { _parent: frame2, _proto: frame3, msg1: func() begin //show slot from parent inheritance Print(slot1); //show slot from proto inheritance Print(slot3); //show slot from parent inheritance - again - //but doesn't work because // self.slot1 only searches proto chain Print(self.slot1); //show slot from proto inheritance - again Print(self.slot3); end } C H A P T E R 5 Inheritance and Lookup 5-12 Inheritance This produces the inheritance structure shown in Figure 5-5. When the message frame4:msg1() is sent, the following output is produced: "slot1 from frame2" "slot3 from frame3" NIL "slot3 from frame3" Figure 5-5 An inheritance structure frame1 { slot1:"slot1 from frame1" slot6:99 } frame3 { slot3."slot3 from frame3" slot5:42 } frame2 { _parent:frame1 slot1:"slot1 from frame2" slot2:"slot2 from frame2" } frame4 { _parent:frame2 _proto:frame3 msg1:func()... } Prototype frame Parent frame Parent frame 6-1 C H A P T E R 6 Built-In Functions 6 NewtonScript supports a number of built-in functions. The following groups of functions are included here: ■ Object system ■ String ■ Bitwise ■ Array and sorted array ■ Math ■ Floating point math ■ Control of floating point math ■ Financial ■ Exception Handling ■ Message sending ■ Data extraction ■ Data stuffing ■ Getting and Setting Global Variables and Functions ■ Miscellaneous Figure 6-0 Listing 6-0 Table 6-0 C H A P T E R 6 Built-In Functions 6-2 Compatibility Note The inspector examples used throughout this document often include a number after a pound sign; for example, #4945. This information can be ignored as it is an internal pointer to data in the system. ◆ Compatibility 6 This section describes the changes made to the built-in functions for Newton System Software 2.0. New Functions 6 The following new functions have been added for this release. New Object System Functions 6 The following new object system functions have been added. GetFunctionArgCount IsCharacter IsFunction IsInteger IsNumber IsReadOnly (existed in 1.0 but now documented) IsReal IsString IsSubclass (existed in 1.0 but now documented) IsSymbol MakeBinary SetVariable SymbolCompareLex C H A P T E R 6 Built-In Functions Compatibility 6-3 New String Functions 6 The following new string functions have been added. CharPos StrExactCompare StrTokenize StyledStrTruncate New Array Functions 6 The following new array functions have been added. ArrayInsert InsertionSort LFetch LSearch NewWeakArray StableSort New Sorted Array Functions 6 The following new functions have been added that operate on sorted arrays. These functions are based on binary search algorithms, hence the “B” prefix to the function names. BDelete BDifference BFetch BFetchRight BFind BFindRight BInsert BInsertRight BIntersect BMerge BSearchLeft BSearchRight C H A P T E R 6 Built-In Functions 6-4 Compatibility New Message Sending Functions 6 The following new utility functions for sending immediate messages have been added. PerformIfDefined ProtoPerform ProtoPerformIfDefined New Data Stuffing Functions 6 The following functions have been added to stuff data. StuffCString StuffPString New Functions to Get and Set Globals 6 The following new functions that get, set, and check for the existence of global variables and functions have been added. GetGlobalFn GetGlobalVar GlobalFnExists GlobalVarExists DefGlobalFn DefGlobalVar UnDefGlobalFn UnDefGlobalVar New Miscellaneous Functions 6 The following function has been added. BinEqual C H A P T E R 6 Built-In Functions Object System Functions 6-5 Obsolete Functions 6 Some built-in functions previously documented in the NewtonScript Programming Language are obsolete, but are still supported for compatibility with older applications. Do not use the following utility functions, as they may not be supported in future system software versions: ArrayPos (use LSearch instead) StrTruncate (use StyledStrTruncate instead) Object System Functions 6 The functions described in this section operate on NewtonScript objects. They perform operations such as removing slots, cloning frames, and so forth. ClassOf 6 ClassOf(object) Returns the class of an object. object The object whose class to return. The return value is a symbol. Some of the common object classes are: 'int, 'char, 'boolean, 'string, 'array, 'frame, 'function, and 'symbol. Note that this is not necessarily the same as the primitive class of an object. For binary, array, and frame objects, the class can be set differently from the primitive class. Frames or arrays without an explicitly assigned class are of the primitive class 'frame or 'array, respectively. If a frame has a class slot, the value of the class slot will be returned. Here are some examples: f:={multiply:func(x,y) x*y}; classof(f); #1294 Frame C H A P T E R 6 Built-In Functions 6-6 Object System Functions f:={multiply:func(x,y) x*y, class:'Arithmetic}; classof(f); #1294 Arithmetic s:="India Joze"; classof(s); #1237 String See also “PrimClassOf” on page 6-13. Clone 6 Clone(object) Makes and returns a “shallow” copy of an object; that is, references within the object are copied, but the data pointed to by the references is not. object The object to copy. Here is an example: SeaFrame := {Ocean: "Pacific", Size: "large" , Color: "blue"}; seaFrameCopy := clone(seaFrame); seaFrameCopy.Deep := true; seaFrame #441896D {Ocean: "Pacific", size: "large", Color: "blue"} seaFrameCopy #4418B0D {Ocean: "Pacific", size: "large", Color: "blue", Deep: TRUE} DeepClone 6 DeepClone(object) Makes and returns a “deep” copy of an object; that is, all of the data referenced within the object is copied, including that referenced by magic pointers (pointers to ROM objects). object The object to copy. C H A P T E R 6 Built-In Functions Object System Functions 6-7 It is not guaranteed that every part of the data structure is in RAM. (Certain information, such as the symbols naming frame slots, may be shared with the original object.) Contrast this function with Clone that only makes a “shallow” copy, and the EnsureInternal function that ensures that the object exists entirely in internal RAM. GetFunctionArgCount 6 GetFunctionArgCount(function) Returns the number of arguments expected by a function. function The function whose number of arguments you want to get. GetSlot 6 GetSlot(frame, slotSymbol) Returns the value of a slot in a frame. Only the frame specified is searched. frame A reference to the frame in which to look for the slot. slotSymbol A symbol naming the slot whose value you want to get. If the slot doesn’t exist, this function returns nil. Unlike GetVariable, GetSlot searches for a slot only in the indicated frame. Inheritance is not used to find the slot. The use of the NewtonScript dot operator is similar to the GetSlot function in that it also returns the value of a frame slot. For example, the expression frame.slot returns the value of the specified slot. However, when using the dot operator, if the slot is not found in the specified frame, proto frames are also searched for the slot (but not parent frames). C H A P T E R 6 Built-In Functions 6-8 Object System Functions GetVariable 6 GetVariable(frame, slotSymbol) Returns the value of a slot in a frame. If the slot is not found, nil is returned. frame A reference to the frame in which to begin the search for the slot. slotSymbol A symbol naming the slot whose value you want to get. This function begins its search for the slot in the specified frame and makes use of the full proto and parent inheritance. HasSlot 6 HasSlot(frame, slotSymbol) Returns non-nil if the slot exists in the frame, otherwise, returns nil. Inheritance is not used to find the slot. frame The name of the frame in which to look for the slot. slotSymbol A symbol naming the slot whose value you want to get. This function begins its search for the slot in the specified frame and makes use of the full proto and parent inheritance. HasVariable 6 HasVariable(frame, slotSymbol) Returns non-nil if the slot exists in the frame, otherwise, returns nil. This function searches proto and parent frames of the specified frame if the slot is not found there. frame The name of the frame in which to begin the search for the slot. slotSymbol A symbol naming the slot whose existence you want to check. You must use a single quote before the slot name because it is a symbol. C H A P T E R 6 Built-In Functions Object System Functions 6-9 Intern 6 Intern( string ) Creates and returns a symbol whose name is given as the string parameter string. If a symbol with that name already exists, the preexisting symbol is returned. string The name of the symbol. IsArray 6 IsArray(obj) Returns non-nil if obj is an array. obj The object to test. IsBinary 6 IsBinary(obj) Returns non-nil if obj is a binary object. obj The object to test. IsCharacter 6 IsCharacter(obj) Returns non-nil if obj is a character, and returns nil otherwise. obj The object to test. IsFrame 6 IsFrame(obj) Returns non-nil if obj is a frame. obj The object to test. C H A P T E R 6 Built-In Functions 6-10 Object System Functions IsFunction 6 IsFunction(obj) Returns non-nil if obj is a function, and returns nil otherwise. obj The object to test. IsImmediate 6 IsImmediate(obj) Returns non-nil if obj is an immediate. obj The object to test. IsInstance 6 IsInstance(obj, class) Returns non-nil if obj’s class symbol the same as class or a subclass of class. obj The object to test. class A class symbol. Note that this is equivalent to: IsSubclass(ClassOf(obj), class) IsInteger 6 IsInteger(obj) Returns non-nil if obj is an integer, and returns nil otherwise. obj The object to test. IsNumber 6 IsNumber(obj) Returns non-nil if obj is a number (integer or real), and returns nil otherwise. obj The object to test. C H A P T E R 6 Built-In Functions Object System Functions 6-11 IsReadOnly 6 IsReadOnly(obj) Returns non-nil if obj is read-only, and returns nil otherwise. You can use IsReadOnly to determine if an array, frame, or binary object is writable. obj An array, frame, or binary object to test. (Immediate objects such as integers are never read-only.) Here is an example: if IsReadOnly(viewBounds) then viewBounds := Clone(viewBounds); This function should not be used to determine the location of an object, that is, whether it is in the heap, in ROM, or in protected memory. The NewtonScript language could permit read-only objects in the NS heap, or writable objects that exist in other locations. IsReal 6 IsReal(obj) Returns non-nil if obj is a real number, and returns nil otherwise. obj The object to test. IsString 6 IsString(obj) Returns non-nil if obj is a string, and returns nil otherwise. obj The object to test. IsSubclass 6 IsSubclass(sub, super) Checks if a class is a subclass of another class. sub A class symbol you want to test. super A class symbol. C H A P T E R 6 Built-In Functions 6-12 Object System Functions This function returns non-nil if sub is a subclass of super, or is the same as super. Returns nil if sub is not a subclass of super. See also the related function IsInstance on page 6-10. IsSymbol 6 IsSymbol(obj) Returns non-nil if obj is a symbol, and returns nil otherwise. obj The object to test. MakeBinary 6 MakeBinary(length, class) Allocates a new binary object of the specified length and class. length The size of the binary object in bytes. class A symbol specifying the class Map 6 Map(obj, function) Applies a function to the slot name and value of each element of an array or frame. obj An array or frame. function Returns nil. A function to apply to the elements or slots in obj. The function is passed two parameters: slot and value. The slot parameter contains an integer array index if obj is an array, or it contains a symbol naming a slot, if obj is a frame. The value parameter contains the value of the array or frame slot referenced by the slot parameter. This is equivalent to: foreach slot,value in obj do call function with (slot,value) C H A P T E R 6 Built-In Functions Object System Functions 6-13 PrimClassOf 6 PrimClassOf(obj) Returns the primitive class of an object. obj The object whose primitive class to return. Returns a symbol identifying the primitive data structure type of the object, one of: 'immediate, 'binary, 'array, or 'frame. See also “ClassOf” on page 6-5. RemoveSlot 6 RemoveSlot(obj, slot) Removes a slot from a frame or array. obj The name of the frame or array from which to remove the slot. slot A symbol naming the frame slot you want to remove, or the index of the array slot to remove. Note that no inheritance look-up is used to find this slot in obj. This function returns the modified frame or array. If slot is not found, nothing is done and the unmodified frame or array is returned. Note that the system throws an exception if obj is read-only. ReplaceObject 6 ReplaceObject(originalObject, targetObject) Causes all references to an object to be redirected to another object. originalObject The original object. targetObject The object to which you want to redirect references to originalObject. This function always returns nil. Note that you cannot specify immediate objects as parameters to this function. C H A P T E R 6 Built-In Functions 6-14 Object System Functions Here is an example: x:={name:"Star"}; y:={name:"Moon"}; replaceobject(x,y); x; #469E69 {name: "Moon"} y; #46A1E9 {name: "Moon"} SetClass 6 SetClass(obj, classSymbol) Sets the class of an object. obj The object whose class to set. classSymbol A symbol naming the class to give to the object. This function returns the object whose class was set. You can set the class of the following kinds of objects: frames, arrays, and binary objects. Note that you cannot set the class of an immediate object. When setting the class of a frame, if a class slot doesn't exist, one is created in the frame. For example: x:={name: "Star"}; setclass(x, 'someClass); #46ACC9 {name: "Star", class: someClass} C H A P T E R 6 Built-In Functions Object System Functions 6-15 SetVariable 6 SetVariable(frame, slotSymbol, value) Sets the value of a slot in a frame. The value is returned. frame A reference to the frame in which to begin the search for the slot. slotSymbol A symbol naming the slot whose value you want to set. If the slot is not found, it is created in frame. value The new value of the slot. This function begins its search for the slot in the specified frame and makes use of the full proto and parent inheritance. Note that if the slot is found in the proto chain, it is not set there, but is created and set in frame, or in its parent chain, following the usual inheritance rules as they apply to setting a value. SymbolCompareLex 6 SymbolCompareLex(symbol1, symbol2) Compares symbols lexically. This function returns a negative number if symbol symbol1 is less than symbol symbol2. Returns zero if the two symbols are equal. Returns a positive number if symbol1 is greater than symbol2. Case is not significant (that is, 'Hello and 'hello are equal). symbol1 A symbol. symbol2 A symbol. TotalClone 6 TotalClone(obj) Makes and returns a “deep” copy of an object; that is, all of the data referenced within the object is copied. obj The object to copy. This function is similar to DeepClone, except that this function guarantees that the object returned exists entirely in internal RAM. Also, unlike C H A P T E R 6 Built-In Functions 6-16 String Functions DeepClone, TotalClone does not follow magic pointers, so that objects referenced through magic pointers are not copied. String Functions 6 These functions operate on and manipulate strings. BeginsWith 6 BeginsWith( string, substr ) Returns non-nil if string begins with substr, or returns nil otherwise. This function is case and diacritical-mark insensitive. An empty substr matches any string. string The string to test. substr A string. Capitalize 6 Capitalize( string ) Capitalizes the first character in string and returns the result. string is modified. string The string to modify. CapitalizeWords 6 CapitalizeWords( string ) Capitalizes the first character of each word in string and returns the result. string is modified. string The string to modify. C H A P T E R 6 Built-In Functions String Functions 6-17 CharPos 6 CharPos(str, char, startpos) Returns the position of the next occurrence of character in the specified string, starting from the startPos (or nil if it’s not found). str The specified string. char The specified character in the string. startpos The starting position of the character to return. Downcase 6 Downcase( string ) Changes each character in string to lowercase and returns the result. string is modified. string The string to modify. EndsWith 6 EndsWith( string, substr ) Returns non-nil if string ends with substr, or returns nil otherwise. This function is case and diacritical-mark insensitive. An empty substr matches any string. string The string to test. substr A string. IsAlphaNumeric 6 IsAlphaNumeric(char) Returns non-nil if char is a number or a letter; otherwise, this function returns nil. char A character to test. C H A P T E R 6 Built-In Functions 6-18 String Functions IsWhiteSpace 6 IsWhiteSpace(char) Returns non-nil if char is a space ($\20), tab ($\09), linefeed ($\0A), or carriage return ($\0D) character; otherwise, this function returns nil. char A character. SPrintObject 6 SPrintObject( obj ) Returns a string of the object passed in. Numbers, strings, characters, and symbols are converted to their natural string representation. For frames, arrays, and Booleans, this function returns an empty string. To convert a Boolean into a string, you must check for non-nil or nil and return the appropriate string. Note This function changes the number format depending on the current locale setting. Real numbers may be formatted unexpectedly. ◆ StrCompare 6 StrCompare( a, b ) Returns a negative number if string a is less than string b. Returns zero if string a and b are equal. Returns a positive number if string a is greater than string b. Case is not significant (that is, “Hello” and “hello” are equal). a A string. b A string. Note that this is a content comparison of the two strings, not a pointer comparison. Use StrExactCompare to do a case-sensitive comparison of strings. C H A P T E R 6 Built-In Functions String Functions 6-19 StrConcat 6 StrConcat( a, b ) Concatenates string b onto string a and returns the result as a new string. a A string. b A string. StrEqual 6 StrEqual( a, b ) Returns non-nil if the two strings, a and b, are equal. a A string. b A string. Case is not significant. Note that this is a content comparison of the two strings, not a pointer comparison. Use StrExactCompare to do a case-sensitive comparison of strings. StrExactCompare 6 StrExactCompare( a, b ) Returns a negative number if string a is less than string b. Returns zero if string a and b are equal. Returns a positive number if string a is greater than string b. Case and diacritical marks are significant (that is, “Hello” and “hello” are not equal). a A string. b A string. Note that this is a content comparison of the two strings, not a pointer comparison. Use StrCompare or StrEqual to do a case-insensitive comparison of strings. C H A P T E R 6 Built-In Functions 6-20 String Functions StrLen 6 StrLen( string ) Returns the number of characters in a string, excluding the null terminator (if one exists). string A string. StrMunger 6 StrMunger( dstString, dstStart, dstCount, srcString, srcStart, srcCount ) Replaces characters in dstString using characters from srcString and returns the destination string after munging is complete. This function is destructive to dstString. dstString The destination string. The string must be writable, you can’t specify a string literal, or an exception will be thrown. You’ll have to use Clone (page 6-6) or a similar function to make a writable copy from a string literal. dstStart The starting position within dstString. dstCount The number of characters to be replaced in dstString. You can specify nil for dstCount to go to the end of the string. srcString A string. This can be nil to simply delete the characters. srcStart The starting position in srcString from which to begin taking characters to place into dstString. srcCount The number of characters to use from srcString. You can specify nil to go to the end of srcString. Here is an example: StrMunger("abcdef", 2, 3, "ZYXWV", 0, nil) "abZYXWVf" StrMunger can also be used to concatenate large strings; for example: StrMunger(str1, StrLen(str1)+1, nil, str2, 0, nil); C H A P T E R 6 Built-In Functions String Functions 6-21 StrPos 6 StrPos( string, substr, start ) Returns the position of substr in string, or nil if substr is not found. The search begins at character position start. (The first character position in a string is zero.) This function is not case sensitive. string A string. substr A string. start An integer. Here is an example: StrPos("abcdef", "Bcd", 0) 1 StrTokenize 6 StrTokenize(str, delimiters) Breaks up a string into chunks for you as defined by the delimiters argument. Each time you call the closure (passing it no arguments) you will get back the next token, until there are no more tokens and it returns nil. str A string to be broken up into tokens delimiters Either a character or string (list of characters) that are the delimiters separating the pieces of the string. For example, to break up a sentence into space separated words you do something like the following: fn := StrTokenize("the quick green fox", $ ); #441BE8D while x := call fn with () do Print(x); "the" "quick" "green" "fox" #2 NIL C H A P T E R 6 Built-In Functions 6-22 String Functions StyledStrTruncate 6 StyledStrTruncate(string, length, font) Truncates a string to the indicated length, in pixels. (Of course, the length does not include the null terminator.) Returns the truncated string. string A string. length An integer specifying the length, in pixels, at which to truncate the string. font A font specification, which is used to determine how many characters of the string will fit in the specified length. For details on specifying a font, refer to the section “Specifying a Font” in the chapter “Text Input and Display,”of the Newton Programmer’s Guide. This function adds an ellipsis (...) to the end of the truncated string. SubStr 6 SubStr( string, start, count ) Returns a new string containing count characters from string, starting at position start. Character positions begin with zero for the first character. string A string. start An integer. count An integer. TrimString 6 TrimString( string ) Removes any white space (spaces, tabs, and new line characters) from the beginning and end of string and returns the result. string is modified. string A string. C H A P T E R 6 Built-In Functions Bitwise Functions 6-23 Upcase 6 Upcase( string ) Capitalizes each character in string and returns the result. string is modified. string A string. Bitwise Functions 6 These functions perform logical operations on bits. Band, Bor, Bxor, and Bnot 6 Band(a, b) Bor(a, b) Bxor(a, b) Bnot(a) These bitwise functions each return an integer result of their operation on one or two integer parameters. They perform bitwise AND, OR, XOR, and NOT, respectively. a An integer. b An integer. Array Functions 6 These functions operate on and manipulate arrays. C H A P T E R 6 Built-In Functions 6-24 Array Functions AddArraySlot 6 AddArraySlot (array, value) Appends a new element onto an array. array An array. value A value to be added as new element in the array. For example: myArray := [123, 456] #1634 myArray addArraySlot (myArray, "I want chopstix") #12 "I want chopstix" myArray #1634 [123, 456, "I want chopstix"] Array 6 Array( size, initialValue ) Returns a new array with size number of elements that each contain initialValue. size An integer. initialValue A value. ArrayInsert 6 ArrayInsert(array, element, position) Inserts an element into an array and returns the modified array. array The array to be modified. element The element to be inserted into the array. position The index where the new element is to be inserted. Specify zero to insert the element at the beginning of the array. Specify the result of Length(array) to insert the element at the end of the array. C H A P T E R 6 Built-In Functions Array Functions 6-25 The length of the array is increased by one. ArrayMunger 6 ArrayMunger( dstArray, dstStart, dstCount, srcArray, srcStart, srcCount ) Replaces elements in dstArray using elements from srcArray and returns the destination array after munging is complete. This function is destructive to dstArray. dstArray The destination array. dstStart The starting element in the destination array. dstCount The number of elements to be replaced in dstArray. You can specify nil for dstCount to go to the end of the array. srcArray An array. You can specify nil for srcArray to delete the elements. srcStart The starting position in the source array from which to begin taking elements to place into the destination array. srcCount The number of elements to use from the source array. You can specify nil to go to the end of the source array. Here is an example: ArrayMunger([10,20,30,40,50], 2, 3, [55,66,77,88,99], 0, nil) [10, 20, 55, 66, 77, 88, 99] Using ArrayMunger is the most efficient way to join two arrays. To put B at the front of A: ArrayMunger(A, 0, 0, B, 0, nil) To put B at the end of A: ArrayMunger(A, Length(A), 0, B, 0, nil) C H A P T E R 6 Built-In Functions 6-26 Array Functions You can also do this with SetUnion (page 6-34), which has the additional property that it eliminates duplicates, but ArrayMunger is much faster if you don’t need that property. ArrayRemoveCount 6 ArrayRemoveCount( array, startIndex, count ) Removes one or more elements from an array. array The array from which to remove elements.This parameter is modified by this function. startIndex An integer that is the index of the first element to remove. count An integer specifying the number of elements to remove. Any elements following those removed are shifted left so that no empty elements remain. InsertionSort 6 InsertionSort(array, test, key) Sorts an array, preserving the original relative ordering of equivalent elements. array The array to modify by sorting. test Indicates how the array is to be sorted. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. This sort performs very well on arrays that are nearly sorted already and on very small arrays. This sort is an O(n2 ) sort. To sort larger arrays, use Sort or StableSort. C H A P T E R 6 Built-In Functions Array Functions 6-27 Length 6 Length (array) Returns the number of elements in an array, the number of slots in a frame, or the size, in bytes, of a binary object. array An array or frame or binary object. For example: myArray := [123, 456, "I want chopstix"] length (myArray) #12 3 Note that arrays are indexed from 0, but length returns a count of the number of characters. Therefore, the last element of this example is element 2. Note If you pass a string to this function, you will get the number of bytes that a string occupies. To get the length of strings, use StrLen instead. ◆ LFetch 6 LFetch(array, item, start, test, key) Linearly searches an array for the specified element and returns the element, or nil if it is not found or if start is equal to or greater than the length of the array. array The array in which to search. item The key value for which to search. start The array index at which to begin searching. C H A P T E R 6 Built-In Functions 6-28 Array Functions test Indicates how to compare key values to test for a match. Specify one of the following symbols for test: '|=| If the objects being compared are immediates and reals, their values are compared for equivalency. For reference objects, their identity is compared. '|str=| For string objects, the contents of the strings are compared for equivalency. Alternatively, for nonstandard sorting situations, you can specify a function object that compares two key values and returns a Boolean or integer value indicating whether or not they are equivalent. This function will be called to test for matches. The function is passed two parameters, A and B, where A is the item parameter passed to LFetch and B is the array element being tested. The function must return a non-nil value (or zero) if the items are equivalent, or nil (or a non-zero integer) if the items are not equivalent. Note that specifying a function object for test results in much slower performance than using one of the predefined symbols. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. This function works just like LSearch, except that LSearch returns the index of the found item. If you know that the array you are working with is sorted, you can use the function BFetch to search for an element. This function, based on binary search algorithms, is much faster on large arrays than LFetch or LSearch, though it can be used only on sorted arrays. C H A P T E R 6 Built-In Functions Array Functions 6-29 LSearch 6 LSearch(array, item, start, test, key) Linearly searches an array for the specified element and returns the index of the element, or nil if it is not found or if start is equal to or greater than the length of the array. array The array in which to search. item The key value for which to search. start The array index at which to begin searching. test Indicates how to compare key values to test for a match. Specify one of the following symbols for test: '|=| If the objects being compared are immediates and reals, their values are compared for equivalency. For reference objects, their identity is compared. '|str=| For string objects, the contents of the strings are compared for equivalency. Alternatively, for non-standard sorting situations, you can specify a function object that compares two key values and returns a Boolean or integer value indicating whether or not they are equivalent. This function will be called to test for matches. The function is passed two parameters, A and B, where A is the item parameter passed to LSearch and B is the array element being tested. The function must return a non-nil value (or zero) if the items are equivalent, or nil (or a non-zero integer) if the items are not equivalent. Note that specifying a function object for test results in much slower performance than using one of the predefined symbols. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. C H A P T E R 6 Built-In Functions 6-30 Array Functions This function works just like LFetch, except that LFetch returns the found item instead of its index. If you know that the array you are working with is sorted, you can use the function BFind to search for an element. This function, based on binary search algorithms, is much faster than LSearch, though it can be used only on sorted arrays. NewWeakArray 6 NewWeakArray(length) Returns a new weak array with length number of elements, which are initialized to nil. length An integer specifying the size of the array to create. A weak array is an array that does not prevent the objects it refers to from being garbage-collected. That is, if the only references to an object are from weak arrays, the object is destroyed during the next garbage collection cycle. When that happens, the references in the weak arrays are replaced with nil. The purpose of weak arrays is to cache objects without preventing them from being garbage collected. For example, if you wanted to keep an array of all objects in existence of a certain type, you could add each object to an array as it’s created. If you use a regular array, those objects will never be garbage-collected, because there will always be references to them in your array, and the system will eventually run out of memory. However, if you use a weak array, its references don’t affect garbage collection, so the objects will be garbage-collected normally, freeing memory when it is needed. C H A P T E R 6 Built-In Functions Array Functions 6-31 SetAdd 6 SetAdd (array,value,uniqueOnly) Appends an element to the specified array and returns the modified array, or nil if the element was not added. array The array to which SetAdd appends the element in value. value The element to append to the array specified by array. uniqueOnly Whether only unique elements are to be added to the array; if the value of this parameter is non-nil, SetAdd appends value to the array only if it is not already present in the array. If the element specified by the value parameter is already present in the array, SetAdd returns nil and does not append the element. If uniqueOnly is nil, the item is appended to the array without checking whether it is unique. Note The type of comparison used in this function is pointer comparison, not content comparison. ◆ SetContains 6 SetContains( array, item ) array An array. item An item that may be in the array. Searches each element of an array to determine if item is equal to one of the array elements. If a match is found, this function returns the array index of the matching array element. If item is not found in the array, nil is returned. Note The type of comparison used in this function is pointer comparison, not content comparison. ◆ C H A P T E R 6 Built-In Functions 6-32 Array Functions SetDifference 6 SetDifference( array1, array2 ) Returns an array that contains all of the elements in array1 that do not exist in array2. array1 An array. array2 An array. If array1 is nil, nil is returned. Note The type of comparison used in this function is pointer comparison, not content comparison. ◆ SetLength 6 SetLength (array, length) Sets the length of an array. array An array. length An integer. This function is useful for increasing or decreasing the size of an array. If you increase the size of the array, new elements are filled with a nil value. For example: myArray := [123, 456, "I want chopstix"] #1634 myArray setLength (myArray, 4) #1634 [123, 456, "I want chopstix", NIL] myArray [3] := 789 #3156 789 myArray #1634 [123, 456, "I want chopstix", 789] C H A P T E R 6 Built-In Functions Array Functions 6-33 SetOverlaps 6 SetOverlaps( array1, array2 ) Compares each element in array1 to each element in array2, and returns the index of the first element in array1 that is equal to an element in array2. If no equivalent elements are found, nil is returned. array1 An array. array2 An array. Note The type of comparison used in this function is pointer comparison, not content comparison. ◆ SetRemove 6 SetRemove (array, value) SetRemove removes the specified element from the specified array and returns the modified array. The length of the array is shifted left by one and all of the elements after the deleted element are shifted by one to the next lowest numbered array position. If the item is not found in the array, this function returns nil. array The array from which SetRemove removes the specified element. value The element to remove from the array specified by array. Note The type of comparison used in this function is identity comparison, not pointer comparison. ◆ C H A P T E R 6 Built-In Functions 6-34 Array Functions SetUnion 6 SetUnion( array1, array2, uniqueFlag ) Returns an array that contains all of the elements in array1 and all of the elements in array2. array1 An array. array2 An array. uniqueFlag If any non-nil value, SetUnion will not include any duplicate items in the array it returns. If uniqueFlag is nil, all elements from both arrays are included, even if there are duplicates. If both of the arrays are nil, an empty array is returned. SetUnion can eliminate duplicates. If you do not need that property, you can combine two arrays more efficiently using ArrayMunger (page 6-25). Note The type of comparison used in this function is identity comparison, not pointer comparison. ◆ Sort 6 Sort( array, test, key ) Sorts an array and returns it after it is sorted. The sort is destructive; that is, the array you give it is modified. The sort also is not stable; that is, elements with equal keys won’t necessarily have the same relative order after the sort. array An array. test Defines the sort order. It can be a function object that takes two parameters A and B and returns a positive integer if A sorts after B, returns zero if A sorts equivalently to B, and returns a negative integer if A sorts before B. C H A P T E R 6 Built-In Functions Array Functions 6-35 For much greater speed, specify one of the following symbols for test: '|<| Sort in ascending numerical order '|>| Sort in descending numerical order '|str<| Sort in ascending string order '|str>| Sort in descending string order key Defines the sort key within each array element. Specify nil to use the array elements directly as they are. You can specify a path expression, in which case the array elements are assumed to be frames or arrays and the path is applied to each element to find the sort key. Or, you can specify a function that takes one parameter and returns the key. This example sorts myArray in ascending numerical order according to the timestamp slot of the entries: Sort(myArray, '|<|, 'timestamp) This example sorts myArray in descending string order according to the first and last names concatenated together: Sort(myArray, '|str>|, func (e) e.first && e.last) StableSort 6 StableSort(array, test, key) Sorts an array, preserving the original relative ordering of equivalent elements. array The array to modify by sorting. test Indicates how the array is to be sorted. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. C H A P T E R 6 Built-In Functions 6-36 Sorted Array Functions This sort requires working memory, so may not be suitable for extremely large arrays or in low memory conditions. Sorted Array Functions 6 This section describes new functions that operate on sorted arrays. These functions are based on binary search algorithms, hence the “B” prefix to the function names. IMPORTANT The arrays you pass to these functions must be ordered, otherwise the results are undefined. To sort an array, you can use the functions Sort, InsertionSort, or StableSort. ▲ These sorted array functions each use test and key parameters to allow them to be adapted to different data structures. Typically, these functions search, or iterate over several items in an array. As each element in an array is examined, the key argument is used to extract a value, called the key, from the element. Then that key is treated as specified by the test argument. Here’s an explanation of these parameters: test Indicates the sort order of the array. Specify one of the following symbols for test, to indicate how the array is sorted: '|<| Sorted in ascending numerical order '|>| Sorted in descending numerical order '|str<| Sorted in ascending string order '|str>| Sorted in descending string order '|sym<| Sorted in ascending symbol order, based on lexical comparison of symbol name '|sym>| Sorted in descending symbol order, based on lexical comparison of symbol name C H A P T E R 6 Built-In Functions Sorted Array Functions 6-37 Alternatively, for non-standard sorting situations, you can specify a function object that compares two key values and returns an integer that indicates how they are sorted relative to each other. This function will be called by any of the sorted array functions to determine sorting relationships between elements. The function is passed two parameters, A and B, and must return a positive integer if A sorts after B, must return zero if A sorts equivalently to B, and a must return a negative integer if A sorts before B. Note that specifying a function object for test results in much slower performance than using one of the predefined symbols. key Defines the key within each array element. Specify nil to use the array elements directly as they are. You can specify a path expression, in which case the array elements are assumed to be frames or arrays and the path is applied to each element to find the key. You can also specify a function that takes one parameter (the element) and returns the key. BDelete 6 BDelete(array, item, test, key, count) Deletes elements from an ordered array. This function returns the number of elements deleted. array The array to be modified. item The key value for which to search. Elements with this key are deleted. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. C H A P T E R 6 Built-In Functions 6-38 Sorted Array Functions count The maximum number of elements to delete. Specify nil to indicate that all matching elements are to be deleted. BDifference 6 BDifference(array1, array2, test, key) Returns a new sorted array containing those elements from array1 that do not have equivalent elements in array2. array1 The first array. This array is not modified. array2 The second array. This array is not modified. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. BFetch 6 BFetch(array, item, test, key) Uses a binary search to find an element in a sorted array. The leftmost found element is returned, or nil is returned if none are found. array The array to be searched. item The key value for which to search. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. This function works just like BFind, except that BFind returns the index of the found item. C H A P T E R 6 Built-In Functions Sorted Array Functions 6-39 BFetchRight 6 BFetchRight(array, item, test, key) Uses a binary search to find an element in a sorted array. The rightmost found element is returned, or nil is returned if none are found. array The array to be searched. item The key value for which to search. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. This function works just like BFindRight, except that BFindRight returns the index of the found item. BFind 6 BFind(array, item, test, key) Uses a binary search to find an element in a sorted array. The index of the leftmost found element is returned, or nil is returned if none are found. array The array to be searched. item The key value for which to search. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. This function works just like BFetch, except that BFetch returns the found item instead of its index. C H A P T E R 6 Built-In Functions 6-40 Sorted Array Functions BFindRight 6 BFindRight(array, item, test, key) Uses a binary search to find an element in a sorted array. The index of the rightmost found element is returned, or nil is returned if none are found. array The array to be searched. item The key value for which to search. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. This function works just like BFetchRight, except that BFetchRight returns the found item instead of its index. BInsert 6 BInsert(array, element, test, key, uniqueOnly) Inserts an element into the proper position in a sorted array. In the case of equivalent elements, the element is inserted to the left of its equivalent. array The array to be modified. element The new element to be inserted. Note that the key parameter is used to extract its key value. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. C H A P T E R 6 Built-In Functions Sorted Array Functions 6-41 uniqueOnly Specify non-nil to indicate that the element is not to be inserted if the array already contains an element with an equivalent key value. Specify 'returnElt to indicate the same thing, and also that this function should return an array element. It returns either the element that was inserted, or if a matching element is found in the array, that element is returned. This is useful when you want to reuse existing objects in order to conserve space or ensure pointer equality. Specify nil to indicate that the element is to be inserted even if the array already contains an element with an equivalent key. In this case, the new element is inserted to the left of the existing equivalent elements. This function has three possible return values, as follows: ■ It can return nil, signaling that the element was not inserted. ■ It can return an integer, which is the index at which the element was inserted. ■ It can return an array element—either the element that was inserted (if it was unique), or an element that already exists in the array, whose key value matches the key value of the element you wanted to insert. This type of return value can occur only if you specify 'returnElt for uniqueOnly. Here is an example of how you might use this function with uniqueOnly set to 'returnElt to ensure pointer equality: // :GetStr() returns a string input by the user bodyColor := BInsert(colorList,:GetStr(),'|str<|,nil,'returnElt); interiorColor:= BInsert(colorList,:GetStr(),'|str<|,nil,'returnElt); if bodyColor = interiorColor then Print("bad idea"); If GetString returns a string already in colorList, this code makes sure that the original string is reused. This is why using the = operator to test for equality works. It also allows the duplicate string to be garbage collected, provided there are no remaining references to it. C H A P T E R 6 Built-In Functions 6-42 Sorted Array Functions BInsertRight 6 BInsertRight(array, element, test, key, uniqueOnly) Inserts an element into the proper position in a sorted array. In the case of equivalent elements, the element is inserted to the right of its equivalent. The index at which it was inserted is returned, or nil is returned if it was not inserted. array The array to be modified. element The new element to be inserted. Note that the key parameter is used to extract its key value. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. uniqueOnly A Boolean value. Specify a non-nil value to indicate that the element is not to be inserted if the array already contains an element with an equivalent key value. Specify nil to indicate that the element is to be inserted even if the array already contains an element with an equivalent key. In the later case, the new element is inserted to the right of the existing equivalent elements. BIntersect 6 BIntersect(array1, array2, test, key, uniqueOnly) Returns a new sorted array consisting of the equivalent elements from the two specified arrays. array1 The first array. This array is not modified. array2 The second array. This array is not modified. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. C H A P T E R 6 Built-In Functions Sorted Array Functions 6-43 key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. uniqueOnly A Boolean value. Specify a non-nil value to indicate that elements with duplicate key values are not allowed in the resulting array. Note that this works only if array1 and array2 are both free of equivalent elements. Specify nil to indicate that elements with duplicate key values are allowed in the resulting array. Note that this guarantees that the resulting array has at least two equivalent elements for every intersecting value, since intersection finds equivalent elements. If equivalent elements are found in the resulting array, they are ordered as follows: equivalent elements from the same source array retain their original ordering, and equivalent elements from array1 come before those in array2. BMerge 6 BMerge(array1, array2, test, key, uniqueOnly) Merges two ordered arrays into one new ordered array, which is returned. array1 The first array. This array is not modified. array2 The second array. This array is not modified. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. C H A P T E R 6 Built-In Functions 6-44 Sorted Array Functions uniqueOnly A Boolean value. Specify a non-nil value to indicate that elements with duplicate key values are not allowed in the resulting array. Note that this works only if array1 and array2 are both free of equivalent elements. Specify nil to indicate that elements with duplicate key values are allowed in the resulting array. If equivalent elements are found in the resulting array, they are ordered as follows: equivalent elements from the same source array retain their original ordering, and equivalent elements from array1 come before those in array2. BSearchLeft 6 BSearchLeft(array, item, test, key) Uses binary search to find an element in a sorted array. The index of the smallest and leftmost element that is greater than or equal to item is returned. The value Length(array) is returned if item is larger than all elements. array The array to be searched. item The key value for which to search. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. Here is an example of how this function might be used: // Extract all elements between "F" and "Na" array := ["Ag","C","F","Fe","Hg","K","N","Na","Ni","Pu","Zn"]; pos1 := Min(Length(array)-1,BSearchLeft(array,"F",'|str<|,nil)); pos2 := Max(0,BSearchRight(array,"Na",'|str<|,nil)); ArrayMunger([],0,nil,array, pos1, pos2-pos1+1); C H A P T E R 6 Built-In Functions Integer Math Functions 6-45 BSearchRight 6 BSearchRight(array, item, test, key) Uses binary search to find an element in a sorted array. The index of the largest and rightmost element that is less than or equal to item is returned. The value –1 is returned if all elements are larger than item. array The array to be searched. item The key value for which to search. test Indicates the sort order of the array. See the description of the test parameter on page 6-36. key Defines the key within each array element. Specify nil, a path expression, or a function that takes one parameter. See the description of the key parameter on page 6-37. For an example of how this function might be used, see BSearchLeft. Integer Math Functions 6 These math functions operate on or return integers. (Some of the floating point functions can also operate on integers.) Abs 6 Abs(x) Returns the absolute value of an integer or real number. x An integer or real number. C H A P T E R 6 Built-In Functions 6-46 Integer Math Functions Ceiling 6 Ceiling(x) Returns the smallest integer not less than the specified real number. (Rounds up the real number to an integer.) x A real number. Floor 6 Floor(x) Returns the largest integer not greater than the specified real number. (Rounds down the real number to an integer.) x A real number. Max 6 Max( a, b ) Returns the maximum value of the two integers a and b. a An integer. b An integer. Min 6 Min( a, b ) Returns the minimum value of the two integers a and b. a An integer. b An integer. C H A P T E R 6 Built-In Functions Integer Math Functions 6-47 Random 6 Random (low, high) Returns a random integer in the range between the two integers low and high. The range is inclusive of the numbers low and high. low An integer. high An integer. For example: random (0, 100) #120 72 Real 6 Real(x) Converts the specified integer to a real number. x An integer. SetRandomSeed 6 SetRandomSeed (seedNumber) Seeds the random number generator with the number you specify. seedNumber An integer. When seeded with the same number, the random number generator (Random function) will return the same sequence of random numbers each time you reseed it. Do not use 0 to seed the generator as it will return 0 instead of a random number. Note There is only one random number generator on the Newton, so calls by other functions may interfere with your function getting a consistent sequence of values. ◆ C H A P T E R 6 Built-In Functions 6-48 Floating Point Math Functions Floating Point Math Functions 6 NewtonScript provides the floating point math functions documented in this section. The NewtonScript floating point number system is based on standards 754 and 854 adopted by the Institute of Electrical and Electronics Engineers (IEEE). For more details on IEEE-standard arithmetic than are given here, refer to the PowerPC Numerics volume of Inside Macintosh or to the Apple Numerics Manual, Second Edition. These books describe SANE, the standard Apple numeric environment. The NewtonScript environment supports many features of SANE. NewtonScript floating point numbers (also called real numbers) correspond to the double format of the IEEE standards. The number system supports representations for the following values: ■ Normal numbers—numbers with approximately 16 decimal digits of precision, ranging from down to . ■ Subnormal numbers—numbers ranging from down to , whose precision diminishes from approximately 16 decimal digits down to less than one digit. ■ Signed zeros—the values +0 and –0, which compare equal, but whose behavior differs when, for example, divided into nonzero values. ■ Signed infinities—the values +INF and -INF, which represent results too large to represent or the result of dividing a nonzero numerator by a zero denominator. ■ Not-a-Number symbols, or NaNs—values used to represent missing or uninitialized data, or the results of operations, such as , which have no meaning in the real number system. In some application areas, you may find it useful to think of signed zeros and infinities in terms of mathematical limits. For example, although +0 and –0 compare equal, it may be the case for a function f that , 1.8 308 ×10 2.2 –308 ×10 2.2 –308 ×10 4.9 –324 ×10 –3 f (x) x → 0- lim f (x) x → 0+ ≠ lim C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-49 and you may find it useful to exploit that fact. Similarly, you may find it useful to interpret g(+INF) as . The functions in this section follow the model of the arithmetic operations set forth in the IEEE standards, namely, they produce results that are exact when the results are exactly representable in the number system, and otherwise they deliver the nearest (or nearly so) representable number to the mathematically correct result. The IEEE standards specify that one or more exceptions be raised when the result of an operation is different from the mathematical result, or when the result is not defined in the real number system. The possible exceptions are ■ Inexact—the result is rounded or otherwise altered from the mathematical result. ■ Underflow—the nonzero result is too tiny to represent except as zero or a subnormal number, and is rounded to less precision than a normal number. ■ Overflow—the result is too huge to represent as a normal number. ■ Divide by Zero—the quotient of a nonzero value divided by zero produces +INF or -INF, according to the arguments’ signs. ■ Invalid—the result is not mathematically defined, as is the case with 0/0. See “Managing the Floating Point Environment” on page 6-65 for further discussion of the handling of floating point exceptions. One feature of the IEEE standards and SANE is the choice of rounding direction for results not exactly representable. In NewtonScript systems, rounding is always to the nearest representable number (with ties going to the value whose least significant bit is zero). The IEEE standards also specify rounding to the nearest value toward 0, toward +INF, or toward -INF. But the standards are written as though rounding direction is determined by a state variable in the floating point environment (see “Managing the Floating Point Environment”), while on the ARM family of processors used by NewtonScript systems, rounding direction is determined on an instructionby- instruction basis. g(y) y → ∞ lim C H A P T E R 6 Built-In Functions 6-50 Floating Point Math Functions Acos 6 Acos(x) Returns the inverse cosine in radians of x. Acos raises invalid for x < –1 or x > 1. It raises inexact for all values except 1. Acos returns values between zero and π. x An integer or real number. Acosh 6 Acosh(x) Returns the inverse hyperbolic cosine of x. Acosh raises invalid for x < 1. It raises inexact for all values except 1. Acosh(+INF) returns +INF, but Acosh never overflows. Its value at the largest finite real number is approximately 710. x An integer or real number. Asin 6 Asin(x) Returns the inverse sine in radians of x. Asin raises invalid for x < –1 or x > 1. It raises inexact for all values except zero and raises underflow for all finite x near zero. Asin returns values between –π/2 and π/2. x An integer or real number. Asinh 6 Asinh(x) Returns the inverse hyperbolic sine of x. Asinh raises inexact for all values except zero. Asinh(-INF) returns -INF and Asinh(+INF) returns +INF. Asinh raises underflow for x near zero. x An integer or real number. C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-51 Atan 6 Atan(x) Returns the inverse tangent in radians of x. It raises inexact for all values except zero. Atan(-INF) returns –π/2 and Atan(+INF) returns π/2. Atan returns values between –π/2 and π/2. It raises inexact for all nonzero x. x An integer or real number. Atan2 6 Atan2(x,y) Returns the inverse tangent in radians of x/y. Atan2 uses the algebraic signs of x and y to determine the quadrant of the result. It returns values between –π and π. Its special cases are those of Atan. x An integer or real number. y An integer or real number. Atanh 6 Atanh(x) Returns the inverse hyperbolic of x. Atanh raises invalid for x < –1 or x > 1. It raises inexact for all valid arguments except zero and raises underflow near zero.and raises underflow for all finite x near zero. Atanh(-1.0) returns -INF and Atan(+1.0)returns +INF. x An integer or real number. CopySign 6 CopySign(x,y) Returns the value with the magnitude of x and sign of y. x An integer or real number. y An integer or real number. C H A P T E R 6 Built-In Functions 6-52 Floating Point Math Functions Note The order of the parameters for CopySign matches the recommendation of the IEEE 754 floating point standard, which is opposite from the SANE copysign function. ◆ Cos 6 Cos(x) Returns the cosine of the radian value x. Cos raises inexact for all finite arguments except zero. It is periodic with period 2π. Cos raises invalid when x is infinite. x An integer or real number. Cosh 6 Cosh(x) Returns the hyperbolic cosine of x. Cosh raises inexact for all finite arguments except zero. Cosh(-INF) and Cosh(+INF) return +INF. Cosh raises overflow for finite values of large magnitude. x An integer or real number. Erf 6 Erf(x) Returns , the error function of x. Erf raises inexact for all arguments except zero. It raises underflow for arguments near zero. Erf(-INF) returns –1 and Erf(+INF) returns 1. x An integer or real number. Mathematically, the sum of Erf(x) and Erfc(x) should be 1, though the relationship may not hold when roundoff or underflow affect the results significantly. erf(x) 2 π ------- e t2 – dt 0 x = ∫ C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-53 Erfc 6 Erfc(x) Returns , the complementary error function of x. Erfc raises inexact for all arguments except zero. Erfc(-INF) returns 2 and Erfc(+INF) returns +0. x An integer or real number. Exp 6 Exp(x) Returns ex, the exponential of the x. Exp is inexact for all nonzero finite arguments. Exp(-INF) returns +0 and Exp(+INF) returns +INF. Exp raises overflow for large, positive, finite x, and raises underflow for negative, finite x of large magnitude. x An integer or real number. Expm1 6 Expm1(x) Returns ex – 1, one less than the exponential of x. Expm1 avoids loss of accuracy when x is nearly zero, and the difference is nearly zero. Expm1 is inexact for all nonzero finite arguments. Expm1(-INF) returns –1 and Expm1(+INF) returns +INF. Expm1 raises overflow for large, positive, finite x, and raises underflow for x near zero. x An integer or real number. Fabs 6 Fabs(x) Returns the absolute value of x. It never raises an exception. x An integer or real number. erfc(x) 2 π ------- e t2 – dt x ∞ = ∫ C H A P T E R 6 Built-In Functions 6-54 Floating Point Math Functions FDim 6 FDim(x,y) Returns the positive difference between its parameters: If x > y, FDim returns x – y ■ Otherwise, if x <= y, FDim returns +0 ■ Otherwise, if x is a NaN, FDim returns x. ■ Otherwise (y is a NaN), FDim returns y. x An integer or real number. y An integer or real number. FMax 6 FMax(x,y) Returns the maximum of its two parameters. NaN parameters are treated as missing data: ■ If one parameter is a NaN and the other is a number, then the number is returned. ■ Otherwise, if both are NaNs, then the first parameter is returned. (This corresponds to the max function in FORTRAN.) x An integer or real number. y An integer or real number. FMin 6 FMin(x,y) Returns the minimum of its two parameters. NaN parameters are treated as missing data: ■ If one parameter is a NaN and the other is a number, then the number is returned. ■ Otherwise, if both are NaNs, then the first parameter is returned. (This corresponds to the min function in FORTRAN.) C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-55 x An integer or real number. y An integer or real number. Fmod 6 Fmod(x,y) Returns the remainder when x is divided by y to produce a truncated integral quotient. That is, Fmod returns the value x - y*Trunc(x/y). x An integer or real number. y An integer or real number. Gamma 6 Gamma(x) Returns Γ(x), the gamma function applied to x. Gamma raises inexact for all non-integral x. It raises invalid for non-positive integral arguments z. Gamma(p) returns (p-1)! for positive, integral p, with 0! defined to be 1. Gamma(+INF) returns +INF. Gamma can raise overflow. x An integer or real number. Hypot 6 Hypot(x,y) Returns the square root of the sum of the squares of x and y, avoiding the hazards of overflow and underflow when the arguments are large or tiny in magnitude but the result is within range. x An integer or real number. y An integer or real number. IsFinite 6 IsFinite(x) Returns true if x is finite; returns nil if x is infinite. x An integer or real number. C H A P T E R 6 Built-In Functions 6-56 Floating Point Math Functions IsNaN 6 IsNaN(x) Returns true if x is a NaN; returns nil if x is a number. x An integer or real number. Note Saying that x “is a NaN” and “is not a number” are not the same thing. A NaN is a non-numerical value in a numerical format; on the other hand, a string such as "foo" is not a number because it is not a numerical object. ◆ IsNormal 6 IsNormal(x) Returns true if x is a normal number; returns nil if x is zero, subnormal, infinite, or a NaN. x An integer or real number. LessEqualOrGreater 6 LessEqualOrGreater(x, y) Returns true if neither x nor y is a NaN, and therefore the two arguments are ordered; otherwise, returns nil. x An integer or real number. y An integer or real number. LessOrGreater 6 LessOrGreater(x, y) Returns true if either x < y or x > y; otherwise, returns nil. x An integer or real number. y An integer or real number. C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-57 LGamma 6 LGamma(x) Returns the natural logarithm of Γ(x), the gamma function applied to x. LGamma raises inexact for all positive x. It raises invalid for negative or zero x. LGamma(+INF) returns +INF. x An integer or real number. Log 6 Log(x) Returns the natural logarithm of x. Log raises inexact for positive, finite arguments except 1. Log(0.0) returns -INF and raises divide by zero. Log(+INF) returns +INF. Log raises invalid for x < 0. x An integer or real number. Logb 6 Logb(x) Returns the integral value k such that 1 ≤ |x|*2–k < 2, when x is finite and nonzero. Logb(0.0) returns -INF and raises divide by zero. Logb(-INF) and Logb(+INF) return +INF. Log1p 6 Log1p(x) Returns the natural logarithm of 1+x. While accurate for all arguments no less than –1, Log1p preserves accuracy when x is nearly zero—when computing Log(1.0 + x)would suffer from the mere addition of x to 1. Log1p raises inexact for all finite arguments greater than –1 except 0. It raises invalid for all x less than –1 and raises underflow for x near zero. Log1p(-1.0) returns -INF and raises divide by zero. Log1p(+INF) returns +INF. x An integer or real number. C H A P T E R 6 Built-In Functions 6-58 Floating Point Math Functions Log10 6 Log10(x) Returns the logarithm base 10 of x. Because of the mathematical relationship , Log10 shares the computational properties of Log. x An integer or real number. NearbyInt 6 NearbyInt(x) Returns x rounded to the nearest integral value. NearbyInt differs from Rint only in that it does not raise the inexact exception. x An integer or real number. Note NearbyInt always rounds to nearest. ◆ NextAfterD 6 NextAfterD(x,y) Returns the next representable number after x in the direction of y. If x and y are equal, then the result is x. If either argument is a NaN, NextAfterD returns one of the NaN arguments. When x is finite but the result is infinite, NextAfterD raises overflow. When the result is zero or subnormal, NextAfterD raises underflow. x An integer or real number. y An integer or real number. log10(x) = log(x) Ú log(10) C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-59 Pow 6 Pow(x,y) Returns xy. When x < 0, Pow raises invalid unless y is an integral value. It can raise inexact, overflow, underflow, and invalid. x An integer or real number. y An integer or real number. RandomX 6 RandomX(x) Returns a two-element array, based on the random seed x. The first element of the result is a pseudo-random number that is the result of the SANE randomx function. The second element is the new seed returned by the randomx function. The result is an integral value between 0 and 231 – 1. x An integer or real number. Remainder 6 Remainder(x,y) Returns the exact difference x – n*y, where n is a mathematical integer (as opposed to a NewtonScript integer—n may be thousands of bits wide) to x/y in the sense of rounding to nearest. The magnitude of the result is no greater than half the magnitude of y. When the result is zero, it has the sign of x. Remainder raises invalid when y is zero or x is infinite. It never raises overflow, underflow, or inexact. x An integer or real number. y An integer or real number. C H A P T E R 6 Built-In Functions 6-60 Floating Point Math Functions RemQuo 6 RemQuo(x,y) Returns a two-element array. The first element is Remainder(x, y). The second element is the seven low-order bits of the quotient x / y rounded to the nearest integer and given the sign of the quotient. x An integer or real number. y An integer or real number. Rint 6 Rint(x) Is identical to Nearbyint except that it raises inexact when its result differs from x. x An integer or real number. RintToL 6 RintToL(x) Returns an integer obtained by rounding x to an integral (real) value and then converting that value to an integer. RintToL raises inexact when its result differs in value from x. It raises invalid and returns an unspecified value when the rounded value of x cannot be represented exactly as an integer object. x An integer or real number. Note RintToL always rounds to nearest. ◆ C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-61 Round 6 Round(x) Returns the integral real number obtained from x by adding 1/2 to x and truncating the result to the nearest integer toward 0. It raises inexact when the result differs from x. x An integer or real number. Scalb 6 Scalb(x, k) Returns x * 2k. Scalb avoids explicit computation of 2k and so avoids the complications of overflow or underflow when 2k is out of range but the result isn’t. Scalb can raise overflow, underflow, and inexact. Scalb and Logb are related by the formula 1 ≤ Scalb(x, RintToL(-Logb(x))) < 2 for finite, nonzero x. x An integer or real number. y An integer. SignBit 6 SignBit(x) Returns a nonzero integer if the sign of x is negative; otherwise (the sign of x is positive), returns the integer 0. x An integer or real number. Signum 6 Signum(x) Returns the integer value –1 if x < 0, 0 if x = 0, or 1 if x > 0. If x is an integer, Signum returns an integer; otherwise, if x is a real, Signum returns a real. If x is neither an integer nor a real, Signum throws the exception kFramesErrNotANumber. x An integer or real number. C H A P T E R 6 Built-In Functions 6-62 Floating Point Math Functions Sin 6 Sin(x) Returns the sine of the radian value x. Sin raises inexact for all finite values except zero. It is periodic with period 2π. Sin raises invalid for infinite x and raises underflow for x near zero. x An integer or real number. Sinh 6 Sinh(x) Returns the hyperbolic sine of x. Sinh raises inexact for all finite arguments except zero. Sinh(-INF) returns -INF and Sinh(+INF) returns +INF. Sinh raises overflow for large finite values and raises underflow near zero. x An integer or real number. Sqrt 6 Sqrt(x) Returns the square root of x. It raises invalid for x < 0, and can raise inexact for positive x. x An integer or real number. Tan 6 Tan(x) Returns the tangent of the radian value x. Tan raises inexact for all finite values except zero. It is periodic with period π. Tan raises invalid for infinite x and raises underflow for x near zero. x An integer or real number. C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-63 Tanh 6 Tanh(x) Returns the hyperbolic tangent of x. Tanh raises inexact for all finite arguments except zero. Tanh(-INF) returns –1 and Tanh(+INF) returns +1. Tanh raises overflow for large finite values and raises underflow near zero. x An integer or real number. Trunc 6 Trunc(x) Returns the integral real number nearest to but no larger in magnitude than x. x An integer or real number. Unordered 6 Unordered(x, y) Returns true if x and y satisfy none of x < y, x = y, or x > y (because one or both of x and y are NaNs); if neither x nor y is a NaN, they satisfy one of the three order relations and Unordered returns nil. x An integer or real number. y An integer or real number. UnorderedGreaterOrEqual 6 UnorderedGreaterOrEqual(x, y) Returns true if x and y satisfy x ≥ y or are unordered (because one or both of x and y are NaNs); otherwise, returns nil. x An integer or real number. y An integer or real number. C H A P T E R 6 Built-In Functions 6-64 Floating Point Math Functions UnorderedLessOrEqual 6 UnorderedLessOrEqual(x, y) Returns true if x and y satisfy x ≤ y or are unordered (because one or both of x and y are NaNs); otherwise, returns nil. x An integer or real number. y An integer or real number. UnorderedOrEqual 6 UnorderedOrEqual(x, y) Returns true if x and y satisfy x = y or are unordered (because one or both of x and y are NaNs); otherwise, returns nil. x An integer or real number. y An integer or real number. UnorderedOrGreater 6 UnorderedOrGreater(x, y) Returns true if x and y satisfy x > y or are unordered (because one or both of x and y are NaNs); otherwise, returns nil. x An integer or real number. y An integer or real number. UnorderedOrLess 6 UnorderedOrLess(x, y) Returns true if x and y satisfy x < y or are unordered (because one or both of x and y are NaNs); otherwise, returns nil. x An integer or real number. y An integer or real number. C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-65 Managing the Floating Point Environment 6 The floating point environment is a set of state variables maintained by the Newton system and the underlying processor. The environment contains information about which floating point exceptions have occurred. Floating point exceptions are distinct from NewtonScript exceptions. When floating point exceptions arise (for example, overflow arises when the sum of two huge numbers is too large to represent in the number system), the system raises an exception flag in the environment. Exception flags can be tested, cleared, or raised by functions in this section. Once raised, an exception flag remains raised until you clear it using calls from this section. The predefined constants used to select the floating point exception flags are shown in Table 6-1. You can refer to multiple exceptions in a single function invocation by forming the bitwise-OR of the predefined constants, using expressions like Bor(Bor(fe_Invalid, fe_DivByZero), fe_Overflow). Table 6-1 Floating point exceptions Constant Value Meaning fe_Inexact 0x010 inexact fe_DivByZero 0x002 divide-by-zero fe_Underflow 0x008 underflow fe_Overflow 0x004 overflow fe_Invalid 0x001 invalid fe_All_Except 0x01F all exceptions C H A P T E R 6 Built-In Functions 6-66 Floating Point Math Functions Note The representation of the floating point environment is implementation-dependent. Functions that manipulate the environment and its components do so without exposing their implementation. In particular, the floating point exception flags may or may not be implemented as single bits. ◆ The functions that manage the floating point environment are based on recommended numerical extensions to the ANSI C language. The recommendations for C include functions to test and alter the direction of rounding. Although the direction of rounding is determined by the environment on most systems, Newton systems based on the ARM family of processors determine the rounding direction on an instruction-byinstruction basis, so rounding is not determined by the environment. You can pass the predefined constant fe_Dfl_Env to the functions FeSetEnv and FeUpdateEnv, which take an environment object as a parameter. Fe_Dfl_Env indicates the default environment, in which all exception flags are clear. FeClearExcept 6 FeClearExcept(excepts) Clears the floating point exception flags indicated by excepts. excepts The integer bitwise-OR of one or more floating point exceptions. FeGetEnv 6 FeGetEnv() Returns a data object representing the current floating point environment. C H A P T E R 6 Built-In Functions Floating Point Math Functions 6-67 FeGetExcept 6 FeGetExcept(excepts) Returns a data object representing the current state of the exception flags indicated by excepts. excepts The integer bitwise-OR of one or more floating point exceptions. Note The representation of the exception flags is unspecified. ◆ FeHoldExcept 6 FeHoldExcept() Returns a data object representing the current floating point environment, and clears the exception flags. FeRaiseExcept 6 FeRaiseExcept(excepts) Raises the floating point exception flags indicated by excepts. excepts The integer bitwise-OR of one or more floating point exceptions. Note Because floating point exceptions are not tied to the general NewtonScript exception-handling mechanism, raising a flag merely sets an internal variable; raising a flag will not alter the flow of control. ◆ C H A P T E R 6 Built-In Functions 6-68 Floating Point Math Functions FeSetEnv 6 FeSetEnv(envObj) Installs the floating point environment represented by the object envObj. envObj Either the predefined constant fe_Dfl_Env or an object returned by a call to FeGetEnv or FeHoldExcept. FeSetExcept 6 FeSetExcept(flagObj, excepts) The parameter flagObj is an object containing an implementation-dependent representation of one or more floating point exception flags; flagObj must have been set by a previous call to FeGetExcept. FeSetExcept alters the current environment so that those floating point exception flags indicated by excepts match the corresponding values in flagObj. flagObj An object (returned by a previous call to FeGetExcept) containing a representation of one or more floating point exception flags. excepts The integer bitwise-OR of one or more floating point exceptions. This function does not raise exceptions; it just alters the state of the flags. FeTestExcept 6 FeTestExcept(excepts) Returns the bitwise-OR of the floating point exceptions indicated by excepts whose flags are rasied in the current environment. excepts The integer bitwise-OR of one or more floating point exceptions. C H A P T E R 6 Built-In Functions Financial Function 6-69 FeUpdateEnv 6 FeUpdateEnv(envObj) Saves the state of the current exception flags, installs the environment represented by envObj, and then re-raises the saved exceptions. envObj Either the predefined constant fe_Dfl_Env or an object returned by a call to FeGetEnv or FeHoldExcept. You can use FeUpdateEnv in conjunction with FeHoldExcept to write functions which hide spurious exceptions from their callers: func() begin savedEnv := FeHoldExcept(); // clears flags result := ...; // ecomputation in which underflow and // divide by zero are benign FeClearExcept(BOR(fe_Underflow, fe_DivByZero)); FeUpdateEnv(savedEnv); // merge old flags with new return result end Financial Function 6 These functions perform financial calculations. Annuity 6 Annuity(r, n) Returns the value of the financial formula . When r is the periodic interest rate and n the number of periods, p*Annuity(r, n) is the present value of a series of n periodic payments of size p. Annuity is robust over the entire range of r and n, whether financially meaningful or not. 1 (1 + r) –n – r ------------------------------ C H A P T E R 6 Built-In Functions 6-70 Financial Function Annuity raises invalid for r < –1. When r = –1: ■ Annuity(-1, n) returns –1 for n < 0. ■ Annuity(-1, 0) returns 0. ■ Annuity(-1, n) returns +INF and raises divide by zero for n > 0. Otherwise, r > –1. When r is nonzero, Annuity(r, 0) returns r; otherwise, Annuity(0, n) returns n. Annuity raises inexact in all other cases, and can raise overflow or underflow. r An integer or real number. n An integer or real number. Compound 6 Compound(r, n) Returns the value of the financial formula . When r is the periodic interest rate and n the number of periods, P*Compound(r, n) is the future value of a principal amount P. Compound is robust over the entire range of r and n, whether financially meaningful or not. Compound raises invalid for r < –1. When r = –1: ■ Compound(-1, n) returns +INF and raises divide by zero for n < 0. ■ Compound(-1, 0) returns 1. ■ Compound(-1, n) returns +0 for n > 0. Otherwise, r > 0. Compound(r, 0) returns 1; Compound(0, n) raises invalid when n is infinite. Compound can raise inexact, overflow or underflow. r An integer or real number. n An integer or real number. (1 + r) n C H A P T E R 6 Built-In Functions Exception Functions 6-71 Exception Functions 6 These functions are used to raise and handle NewtonScript exceptions in an application. For more information about exception handling and how to use these functions, refer to the second half of Chapter 3, “Flow of Control,” “Exception Handling” on page 3-13. For a list of system exceptions, see the appendix “Errors” in the Newton Programmer’s Guide. The section “Managing the Floating Point Environment” beginning on page 6-65 describes some functions that deal with floating-point exceptions, which are not related to NewtonScript exceptions. Throw 6 Throw(name, data) Raises an exception and creates an exception frame with the specified name and data. name An exception symbol that names the exception being raised. data The data for the exception. The possible values for this parameter depend on the composition of name and are shown inTable 6-2. See “Exception Handling” beginning on page 3-13 for more information on Throw. C H A P T E R 6 Built-In Functions 6-72 Exception Functions Rethrow 6 Rethrow() Reraises the current exception to allow the next enclosing Try statement an opportunity to handle it. Rethrow throws the current exception again, passing along the same parameters are were passed with the original call to the Throw function. This allows you to pass control from within an exception handler to the next enclosing Try statement. IMPORTANT You can call the Rethrow function only from within the dynamic extent of an onexception clause. ▲ CurrentException 6 CurrentException() During exception processing (that is, inside the dynamic extent of an onexception block), returns the frame that is associated with the current exception. You can examine the frame returned by CurrentException to determine what kind of exception you are handling. For example, you can call the HasSlot function to determine if the frame contains a slot named error, and take appropriate action thereafter. (The format of the frame depends on the exception, but it always contains a name slot with the exception symbol.) Table 6-2 Exception frame data slot name and contents Exception symbol Slot name Slot contents contains part with prefix type.ref data a data object, which can be any NewtonScript object contains part with prefix evt.ex.msg message a message string any other error an integer error code C H A P T E R 6 Built-In Functions Message Sending Functions 6-73 CurrentException gives a meaningful response only from within the dynamic extent of an onexception clause. Outside the extent of onexception, it returns nil. Message Sending Functions 6 These functions send messages or execute functions. Apply 6 Apply(function, parameterArray) Calls a function, passing the supplied parameters. The Apply function returns the return value of the function it called. function The function to call. parameterArray An array of parameters to be passed to the function. You can specify nil if there are no parameters to be passed (this saves allocating an empty array). Apply respects the environment of the function object it is passed. Using Apply is similar to using the NewtonScript call statement. Apply is useful when you want to call a function, but don’t know until run time the number of parameters it takes. If you do know ahead of time the number of parameters the function takes, then you can use the NewtonScript call statement to call the function. Here’s an example of using this function in the Inspector: f:=func(x,y) x*y; Apply(f,[10,2]); #50 20 The Apply call is equivalent to: f(10,2); C H A P T E R 6 Built-In Functions 6-74 Message Sending Functions Perform 6 Perform(frame, message, parameterArray) Sends a message to a frame; that is, a method with the name of the message is executed in the frame. Both parent and proto inheritance are used to search for the method if it does not exist in the frame. If the method is not found, an exception is thrown. frame The frame to which to send the message. message A symbol naming the message to send. parameterArray An array of parameters to be passed along with the message. You can specify nil if there are no parameters to be passed (this saves allocating an empty array). The Perform function returns the return value of the message it sent. Note that the method named by message is executed in the context of frame, not in the context of the frame from within which Perform is called. The Perform function is useful when you want to send a message, but you don’t know until run time the name of the message or the number of parameters it takes. If you do know these things ahead of time, then you can just use the standard NewtonScript message sending syntax. For variations of the Perform function, see PerformIfDefined, ProtoPerform, and ProtoPerformIfDefined. Here’s an example of using this function in the Inspector: f:={multiply: func(x,y) x*y}; perform(f, 'multiply, [10,2]); #50 20 Note that f:multiply(10,2) is equivalent to Perform(f, 'multiply,[10,2]) C H A P T E R 6 Built-In Functions Message Sending Functions 6-75 PerformIfDefined 6 PerformIfDefined(receiver,message,paramArray) Sends a message to a frame; that is, a method with the name of the message is executed in the frame. Both parent and proto inheritance are used to search for the method if it does not exist in the frame. If the method is not found, an exception is not thrown. receiver The frame to which you want the message sent. message A symbol that is the name of the message to send to receiver. paramArray An array of parameters to be passed with the message. You can specify nil if there are no parameters to be passed (this saves allocating an empty array). This function returns the return value of the message it sent. If the method is not found, this function returns nil. Contrast this function with Perform (page 6-74), which is exactly the same, except that Perform throws an exception if the method is not found. Also, contrast this function with ProtoPerform and ProtoPerformIfDefined (page 6-75), which search only the proto chain for the method. ProtoPerform 6 ProtoPerform(receiver,message,paramArray) Sends a message to a frame; that is, a method with the name of the message is executed in the frame. Only proto inheritance is used to search for the method if it does not exist in the frame. If the method is not found, an exception is thrown. receiver The frame to which you want the message sent. message A symbol that is the name of the message to send to receiver. C H A P T E R 6 Built-In Functions 6-76 Message Sending Functions paramArray An array of parameters to be passed with the message. You can specify nil if there are no parameters to be passed (this saves allocating an empty array). This function returns the return value of the message it sent. Contrast this function with Perform (page 6-74), which is exactly the same, except that Perform searches both the parent and proto chains for the method. Also, contrast this function with PerformIfDefined (page 6-75) and ProtoPerformIfDefined , which do not throw exceptions if the method is not found. ProtoPerformIfDefined 6 ProtoPerformIfDefined(receiver,message,paramArray) Sends a message to a frame; that is, a method with the name of the message is executed in the frame. Only proto inheritance is used to search for the method if it does not exist in the frame. If the method is not found, an exception is not thrown. receiver The frame to which you want the message sent. message A symbol that is the name of the message to send to receiver. paramArray An array of parameters to be passed with the message. You can specify nil if there are no parameters to be passed (this saves allocating an empty array). This function returns the return value of the message it sent. If the method is not found, this function returns nil. Contrast this function with PerformIfDefined (page 6-75), which is exactly the same, except that PerformIfDefined searches both the parent and proto chains for the method. Also, contrast this function with Perform (page 6-74) and ProtoPerform (page 6-75), which search both the parent and proto chains for the method. C H A P T E R 6 Built-In Functions Data Extraction Functions 6-77 Data Extraction Functions 6 These functions are used to extract chunks of data out of other objects of various types. All integers are stuffed and extracted in two’s-complement big-endian form. In this form, byte 0 is the most significant byte, as found on the Newton and Macintosh. The opposite of this is little-endian, where byte 0 is least significant byte, as found on Intel-based computers. For example, the number 0x12345678 is stored as: big-endian 12 34 56 78 little-endian 78 56 34 12 All Unicode conversions use the Macintosh extended character set for codes greater than or equal to 128. ExtractByte 6 ExtractByte(data, offset) Returns one signed byte from the given offset. data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. For example: ExtractByte("\u12345678",0); #3FC 255 C H A P T E R 6 Built-In Functions 6-78 Data Extraction Functions ExtractBytes 6 ExtractBytes(data, offset, length, class) Returns a binary object of class class containing length bytes of data starting at offset within data. data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. length An integer giving the number of bytes to extract. class A symbol specifying the class of the return value. ExtractChar 6 ExtractChar(data, offset) Returns a character object of the character at the given offset in the data. data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. Gets one byte at the specified offset, converts it to Unicode and returns the character it makes from it. For example: ExtractChar("\uFFFFFFFF",0); //$\u02C results from a ASCII to UNICODE conversion. #2C76 $\u02C7 //Note $a is at offset 1 in a Unicode string ExtractChar("abc",0); #6 $\00 ExtractChar("abc",1); #616 $a C H A P T E R 6 Built-In Functions Data Extraction Functions 6-79 ExtractLong 6 ExtractLong(data, offset) Returns an integer object of the low 29 bits of an unsigned long at the given offset, right-justified (that is, the low 29 bits of a four-byte value). data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. Reads four bytes at the specified offset, but ignores the high-order bits (first two). Returns a 30 bit signed value ExtractLong("\uFFFFFFFF",0); #FFFFFFFC -1 ExtractLong("\uC0000007",0); #1C 7 ExtractXLong 6 ExtractXLong(data, offset) Returns an integer object of the high 29 bits of an unsigned long at the given offset, right-justified (that is, the high 29 bits of a four-byte value). data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. For example: ExtractXLong("\u0000000F",0); #4 1 C H A P T E R 6 Built-In Functions 6-80 Data Extraction Functions ExtractWord 6 ExtractWord(data, offset) Returns an two-byte signed integer object from the given offset. data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. For example: ExtractWord("\uFFFFFFFF",0); #FFFFFFFC -1 //if you want unsigned use: band(ExtractWord(-),0xFFFF); #40004 65535 ExtractCString 6 ExtractCString(data, offset) Returns a Unicode string object derived from the null-terminated C-style string at the given offset. data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. ExtractPString 6 ExtractPString(data, offset) Returns a Unicode string object derived from the Pascal-style string (a length byte followed by text) at the given offset. data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. C H A P T E R 6 Built-In Functions Data Stuffing Functions 6-81 ExtractUniChar 6 ExtractUniChar(data, offset) Gets two bytes at the specified offset and returns the Unicode character represented by those bytes. data The data from which the return value is to be extracted. offset An integer giving the position in data from which the return value is to be extracted. For example: ExtractUniChar("abc",0); #616 $a Data Stuffing Functions 6 These functions are used to stuff chunks of data into objects of various types. All integers are stuffed in two’s-complement big-endian form. For a discussion of this, see “Data Extraction Functions” on page 6-77. ▲ WA R N I N G It is important that the destination for the data stuffing functions is large enough to hold the data being stuffed. If the destination is not large enough, the NewtonScript heap may become corrupted. Be sure to take into account the offset. Here is a formula you can use: Length(destObj) – offset >= size of stuffed data In this formula, destObj is the destination object and offset is the position within the destination object where the data is to be stuffed. ▲ C H A P T E R 6 Built-In Functions 6-82 Data Stuffing Functions StuffByte 6 StuffByte(obj, offset, toInsert) Writes the low order byte of toInsert, at the specified offset in obj. obj A binary object into which data is to be stuffed. offset The position in obj at which stuffing is to begin. toInsert The data to be stuffed in obj. For example: x := "\u00000000"; StuffByte(x,0,-1); x[0] #FF006 $\uFF00 x := "\u00000000"; StuffByte(x,0,0xFF); x[0] #FF006 $\uFF00 StuffChar 6 StuffChar(obj, offset, toInsert) Stuffs one byte into obj at the specified offset. obj A binary object into which data is to be stuffed. offset The position in obj at which stuffing is to begin. toInsert A character or integer to be stuffed in obj. You pass it a two byte Unicode value as toInsert. The function makes a one-byte character from that value and stuffs the one-byte character. This accepts a character or integer as its third parameter, toInsert: ■ If toInsert: is an integer: writes the low byte of toInsert. ■ If toInsert: is a character: converts from Unicode and writes a byte. C H A P T E R 6 Built-In Functions Data Stuffing Functions 6-83 For example: x := "\u00000000"; StuffChar(x,1,Ord($Z)); x[0] #5A6 $Z x := "\u00000000"; StuffChar(x,1,-1); x[0] #1A6 $\1A ExtractByte(x,1) #68 26 ExtractByte(x,0) #0 0 StuffCString 6 StuffCString(obj, offset, aString) Converts a Newton Unicode string into a null-terminated C-style string and stuffs it at the given offset into a binary object. obj A binary object into which data is to be stuffed. offset The position in obj at which stuffing is to begin. aString A Unicode string to be stuffed into obj. The string aString is converted into ASCII format using Macintosh roman string encoding. It is then stuffed into obj, beginning at the byte offset offset. It is followed by a null byte terminator. This function throws an exception if aString will not fit into obj beginning at the given offest, or if the offset is negative. The length of obj will not be altered. C H A P T E R 6 Built-In Functions 6-84 Data Stuffing Functions StuffLong 6 StuffLong(obj, offset, toInsert) Writes four bytes at the specified offset using the 30 bit signed value you pass it as the third parameter, and sign extends it to 32 bytes. obj A binary object into which data is to be stuffed. offset The position in obj at which stuffing is to begin. toInsert The data to be stuffed in obj. For example: x := "\u00000000"; StuffLong(x,0,-1); x[0] #FFFF6 $\uFFFF x[1] #FFFF6 $\uFFFF x := "\u00000000"; StuffLong(x,0,0x3FFFFFFA); x[0] #FFFF6 $\uFFFF x[1] #FFFA6 $\uFFFA StuffPString 6 StuffPString(obj, offset, aString) Converts a Newton Unicode string into a Pascal-style string (a length byte followed by text) and stuffs it at the given offset into a binary object. object A binary object into which data is to be stuffed. offset The position in obj at which stuffing is to begin. aString A Unicode string to be stuffed into obj. This string must be no longer than 255 characters. C H A P T E R 6 Built-In Functions Data Stuffing Functions 6-85 The string aString is converted into ASCII format using Macintosh roman string encoding. Then a length byte followed by the string is stuffed into obj, beginning at the byte offset offset. The length byte indicates the number of characters in the string. This function throws an exception if aString will not fit into obj beginning at the given offest, or if the offset is negative. The length of obj will not be altered. StuffUniChar 6 StuffUniChar(obj, offset, toInsert) Stuffs the two-byte Unicode encoding for the character indicated by toInsert into obj at the specified offset. obj A binary object into which data is to be stuffed. offset The position in obj at which stuffing is to begin. toInsert A character or integer to be stuffed in obj. For example: x := "\u00000000"; StuffUniChar(x,0,"\uF00F"[0]); x[0] #F00F6 $\uF00F x := "\u00000000"; StuffUniChar(x,0,0x0AA0); x[0] #AA06 $\u0AA0 C H A P T E R 6 Built-In Functions 6-86 Getting and Setting Global Variables and Functions StuffWord 6 StuffWord(obj, offset, toInsert) Writes the low order two bytes of toInsert at the specified offset. obj A binary object into which data is to be stuffed. offset The position in obj at which stuffing is to begin. toInsert The data to be stuffed in obj. For example: x := "\u00000000"; StuffWord(x,0,0x3FFF1234); x[0] #12346 $\u1234 x := "\u00000000"; StuffWord(x,0,-1); x[0] #FFFF6 $\uFFFF Getting and Setting Global Variables and Functions 6 These functions get, set and test for the existence of global variables and functions. GetGlobalFn 6 GetGlobalFn(symbol) Returns a global function. If the function is not found, nil is returned. symbol A symbol naming the global function you want to get. C H A P T E R 6 Built-In Functions Getting and Setting Global Variables and Functions 6-87 GetGlobalVar 6 GetGlobalVar(symbol) Returns the value of a slot in the system globals frame. If the slot is not found, nil is returned. symbol A symbol naming the global variable whose value you want to get. GlobalFnExists 6 GlobalFnExists(symbol) Returns non-nil if the global function identified by symbol exists, otherwise returns nil. symbol A symbol naming the global function whose existence you want to check. GlobalVarExists 6 GlobalVarExists(symbol) Returns non-nil if the global variable identified by symbol exists, otherwise returns nil. symbol A symbol naming the global variable whose existence you want to check. DefGlobalFn 6 DefGlobalFn(symbol, function) Defines a global function. The symbol identifying the function is returned. symbol A symbol naming the global function you want to define. To avoid naming conflicts with other global functions, you should choose a name that includes your appSymbol, which includes the developer signature you have registered with Newton DTS. function A function object. C H A P T E R 6 Built-In Functions 6-88 Getting and Setting Global Variables and Functions Note that the global function is destroyed if the system is reset. It is very important to remove any global functions created by your application when your application is removed. You can do this with UnDefGlobalFn in the application RemoveScript function. IMPORTANT Do not create global functions unless it is absolutely necessary. Global functions occupy NewtonScript heap space. They can conflict with system global functions and other applications’ global functions. In most cases, you can use methods in your application base view instead of global functions. ▲ DefGlobalVar 6 DefGlobalVar(symbol, value) Defines a global variable—that is, a slot in the system globals frame. The value of the variable is returned. symbol A symbol naming the global variable you want to define. To avoid naming conflicts with other globals, you should choose a name that includes your appSymbol, which includes the developer signature you have registered with Newton DTS. value The value you want to assign to the global variable. The system ensures that the object created exists entirely in internal RAM (it calls EnsureInternal on the object identified by symbol. Note that the global variable is destroyed if the system is reset. It is very important to remove any globals created by your application when your application is removed. You can do this with UnDefGlobalVar in the application RemoveScript function. C H A P T E R 6 Built-In Functions Miscellaneous Functions 6-89 IMPORTANT Do not create global variables unless it is absolutely necessary. Global variables occupy NewtonScript heap space. They can conflict with system globals and other applications’ globals. In most cases, you can put any global data that you need in your application base view or in a soup. ▲ UnDefGlobalFn 6 UnDefGlobalFn(symbol) Removes a global function you previously defined. This function returns nil. symbol A symbol naming the global function you want to remove. UnDefGlobalVar 6 UnDefGlobalVar(symbol) Removes a global variable you previously defined. This function returns nil. symbol A symbol naming the global variable you want to remove. Miscellaneous Functions 6 These are other miscellaneous functions. BinEqual 6 BinEqual(a, b) a A binary object b A binary object Compares two binary objects’ data as raw bytes. Returns non-nil if they are identical. C H A P T E R 6 Built-In Functions 6-90 Miscellaneous Functions BinaryMunger 6 BinaryMunger( dst, dstStart, dstCount, src, srcStart, srcCount ) Replaces bytes in dst using bytes from src and returns dst after munging is complete. This function is destructive to dst. dst A value to be changed. dstStart The starting position in dst. dstCount The number of bytes to be replaced in dst. You can specify nil for dstCount to go to the end of dst. src A value. Can be nil to simply delete the contents of dst. srcStart The starting position in the source binary from which to begin taking elements to place into the destination binary. srcCount The number of bytes to use from the source binary. You can specify nil to go to the end of the source binary. Bytes are numbered counting from zero. Chr 6 Chr(integer) Converts a decimal integer to its Unicode character equivalent. integer An integer. Here is an example: chr(65) $A Compile 6 Compile(string) Compiles an expression sequence and returns a function that evaluates it. string The expression to compile. C H A P T E R 6 Built-In Functions Miscellaneous Functions 6-91 Here are two examples. Note that, in the first example, x is a local variable. compile("x:= {a:self.b, b:1234}") #440F711 f:=compile("2+2") f(); #440F712 4 Note All characters used in NewtonScript code must be 7-bit ASCII. This usually is no problem, but can create problems with Compile in certain situations. Suppose you tried this call: Compile ("blah, blah, blah, \u0F0F\u") The Unicode character is not a 7-bit character, it is 16 bits. Therefore, you get an error. (The \u switch turns on Unicode character mode.) You should do this instead: Compile ("blah, blah, blah, \\u0F0F\\u") The backslash escape character preceding the \u prevents Unicode mode from being turned on for the compile. (The \u is read simply as the string "\u" instead of the Unicode switch.) Note, also, that: compile("func()...") returns a function that constructs the function. The environment is captured when the function constructor is executed: f := compile("func()b"); x := {a:f, b:0}; g:=x:a(); #440F713 C H A P T E R 6 Built-In Functions 6-92 Summary of Functions and Methods Executing the function construction captures the message environment with x as receiver. g(); #440F714 0 So now it can find b. ◆ Ord 6 Ord (char) Converts a character to its Unicode decimal integer equivalent. char A character. Here is an example: ord($A) 65 Summary of Functions and Methods 6 This section contains a summary of the functions and methods described in this chapter. Object System Functions 6 ClassOf(object) Clone(object) DeepClone(object) GetFunctionArgCount(function) GetSlot(frame, slotSymbol) GetVariable(frame, slotSymbol) HasSlot(frame, slotSymbol) HasVariable(frame, slotSymbol) Intern( string ) C H A P T E R 6 Built-In Functions Summary of Functions and Methods 6-93 IsArray(obj) IsBinary(obj) IsCharacter(obj) IsFrame(obj) IsFunction(obj) IsImmediate(obj) IsInstance(obj, class) IsInteger(obj) IsNumber(obj) IsReadOnly(obj) IsReal(obj) IsString(obj) IsSubclass(class1, class2) IsSymbol(obj) MakeBinary(length, class) Map(obj, function) PrimClassOf(object) RemoveSlot(object, slot) ReplaceObject(originalObject, targetObject) SetClass(object, classSymbol) SetVariable(frame, slotSymbol, value) SymbolCompareLex(symbol1, symbol2) TotalClone(object) String Functions 6 BeginsWith(string, substr ) Capitalize(string) CapitalizeWords(string) CharPos(str, char, startpos) Downcase(string) EndsWith(string, substr) IsAlphaNumeric(char) IsWhiteSpace(char) SPrintObject( obj ) StrCompare(a, b) C H A P T E R 6 Built-In Functions 6-94 Summary of Functions and Methods StrConcat(a, b) StrEqual(a, b) StrExactCompare( a, b ) StrLen(string) StrMunger(dstString, dstStart, dstCount, srcString, srcStart, srcCount ) StrPos(string, substr, start) StrReplace(string, substr, replacement, count) StrTokenize(str, delimiters) StyledStrTruncate(string, length, font) SubStr(string, substr, start) TrimString( string ) Upcase(string) Bitwise Functions 6 Band(a, b) Bor(a, b) Bxor(a, b) Bnot(a) Array Functions 6 AddArraySlot(array, value) Array(size, initialValue) ArrayInsert(array, element, position) ArrayMunger(dstArray, dstStart, dstCount, srcArray, srcStart, srcCount) ArrayRemoveCount( array, startIndex, count ) InsertionSort(array, test, key) Length(array) LFetch(array, item, start, test, key) LSearch(array, item, start, test, key) NewWeakArray(length) SetAdd(array, value, uniqueOnly) SetContains(array, item) SetDifference(array1, array2) C H A P T E R 6 Built-In Functions Summary of Functions and Methods 6-95 SetLength(array, length) SetOverlaps( array1, array2 ) SetRemove(array, value) SetUnion(array1, array2, uniqueFlag) Sort(array, test, key) StableSort(array, test, key) Sorted Array Functions 6 BDelete(array, item, test, key, count) BDifference(array1, array2, test, key) BFetch(array, item, test, key) BFetchRight(array, item, test, key) BFind(array, item, test, key) BFindRight(array, item, test, key) BInsert(array, element, test, key, uniqueOnly) BInsertRight(array, element, test, key, uniqueOnly) BIntersect(array1, array2, test, key, uniqueOnly) BMerge(array1, array2, test, key, uniqueOnly) BSearchLeft(array, item, test, key) BSearchRight(array, item, test, key) Integer Math Functions 6 Abs(x) Ceiling(x) Floor(x) Max( a, b ) Min( a, b ) Real(x) Random(low, high) SetRandomSeed (seedNumber) C H A P T E R 6 Built-In Functions 6-96 Summary of Functions and Methods Floating Point Math Functions 6 Acos(x) Logb(x) Acosh(x) Log1p(x) Asin(x) Log10(x) Asinh(x) NearbyInt(x) Atan(x) NextAfterD(x,y) Atan2(x,y) Pow(x,y) Atanh(x) RandomX(x) CopySign(x,y) Remainder(x,y) Cos(x) RemQuo(x,y) Cosh(x) Rint(x) Erf(x) RintToL(x) Erfc(x) Round(x) Exp(x) Scalb(x,y) Expm1(x) SignBit(x) Fabs(x) Signum(x) FDim(x,y) Sin(x) FMax(x,y) Sinh(x) FMin(x,y) Sqrt(x) Fmod(x,y) Tan(x) Gamma(x) Tanh(x) Hypot(x,y) Trunc(x) IsFinite(x) Unordered(a, b) IsNaN(x) UnorderedGreaterOrEqual(a, b) IsNormal(x) UnorderedLessOrEqual(a, b) LessEqualOrGreater(a, b) UnorderedOrEqual(a, b) LessOrGreater(a, b) UnorderedOrGreater(a, b) LGamma(x) UnorderedOrLess(a, b) Log(x) C H A P T E R 6 Built-In Functions Summary of Functions and Methods 6-97 Managing the Floating Point Environment 6 FeClearExcept(excepts) FeGetEnv() FeGetExcept(excepts) FeHoldExcept() FeRaiseExcept(excepts) FeSetEnv(envObj) FeSetExcept(flagObj, excepts) FeTestExcept(excepts) FeUpdateEnv(flagObj) Financial Functions 6 Annuity(rate, periods) Compound(rate, periods) Exception Functions 6 Throw(name, data) Rethrow() CurrentException() Message Sending Functions 6 Apply(function, parameterArray) Perform(frame, message, parameterArray) PerformIfDefined(receiver,message,paramArray) ProtoPerform(receiver,message,paramArray) ProtoPerformIfDefined(receiver,message,paramArray) Data Extraction Functions 6 ExtractByte(data, offset) ExtractBytes(data, offset, length, class) ExtractChar(data, offset) ExtractLong(data, offset) ExtractXLong(data, offset) C H A P T E R 6 Built-In Functions 6-98 Summary of Functions and Methods ExtractWord(data, offset) ExtractCString(data, offset) ExtractPString(data, offset) ExtractUniChar(data, offset) Data Stuffing Functions 6 StuffByte(aString, offset, toInsert) StuffChar(aString, offset, toInsert) StuffCString(obj, offset, aString) StuffLong(aString, offset, toInsert) StuffPString(obj, offset, aString) StuffUniChar(aString, offset, toInsert) StuffWord(aString, offset, toInsert) Getting and Setting Global Variables and Functions 6 GetGlobalFn(symbol) GetGlobalVar(symbol) GlobalFnExists(symbol) GlobalVarExists(symbol) DefGlobalFn(symbol, function) DefGlobalVar(symbol, value) UnDefGlobalFn(symbol) UnDefGlobalVar(symbol) Miscellaneous Functions 6 BinEqual(a, b) BinaryMunger(dst, dstStart, dstCount, src, srcStart, srcCount) Chr(integer) Compile(string) Ord(char) A-1 A P P E N D I X A Reserved Words A The following words are reserved in NewtonScript. You may not use any of these words as symbols unless you enclose the word in vertical bars, like this: |self|. and end local self begin exists loop then break for mod to by foreach native try call func not until constant global onexception while div if or with do in repeat else inherited return Figure A-0 Listing 7-0 Table A-0 B-1 A P P E N D I X B Special Character Codes B This appendix contains a character code table that has both Macintosh and Unicode (16-bit) character codes for the high 128 characters in the Newton character set (characters 128 through 254). When specifying character constants or strings that contain characters from the high 128 characters, you must use unicode character codes. The Macintosh character codes are provided for convenience if you are used to using them. Table B-1 Character codes sorted by Macintosh character code Mac Unicode Char 80 00C4 Ä 81 00C5 Å 82 00C7 Ç 83 00C9 É 84 00D1 Ñ 85 00D6 Ö 86 00DC Ü 87 00E1 á 88 00E0 à 89 00E2 â 8A 00E4 ä 8B 00E3 ã 8C 00E5 å continued Figure B-0 Listing 8-0 Table B-0 A P P E N D I X B Special Character Codes B-2 8D 00E7 ç 8E 00E9 é 8F 00E8 è 90 00EA ê 91 00EB ë 92 00ED í 93 00EC ì 94 00EE î 95 00EF ï 96 00F1 ñ 97 00F3 ó 98 00F2 ò 99 00F4 ô 9A 00F6 ö 9B 00F5 õ 9C 00FA ú 9D 00F9 ù 9E 00FB û 9F 00FC ü A0 2020 † A1 00B0 ° A2 00A2 ¢ A3 00A3 £ continued Table B-1 Character codes sorted by Macintosh character code (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-3 A4 00A7 § A5 2022 A6 00B6 ¶ A7 00DF ß A8 00AE ® A9 00A9 © AA 2122 ™ AB 00B4 ´ AC 00A8 ¨ AD 2260 ≠ AE 00C6 Æ AF 00D8 Ø B0 221E ∞ B1 00B1 ± B2 2264 ≤ B3 2265 ≥ B4 00A5 ¥ B5 00B5 µ B6 2202 ∂ B7 2211 Σ B8 220F Π B9 03C0 π BA 222B ∫ continued Table B-1 Character codes sorted by Macintosh character code (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-4 BB 00AA ª BC 00BA º BD 2126 Ω BE 00E6 æ BF 00F8 ø C0 00BF ¿ C1 00A1 ¡ C2 00AC ¬ C3 221A √ C4 0192 ƒ C5 2248 ≈ C6 2206 Δ C7 00AB « C8 00BB » C9 2026 … CA 00A0 CB 00C0 À CC 00C3 à CD 00D5 Õ CE 0152 OE CF 0153 oe D0 2013 D1 2014 continued Table B-1 Character codes sorted by Macintosh character code (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-5 D2 201C D3 201D D4 2018 D5 2019 D6 00F7 ÷ D7 25CA ◊ D8 00FF ÿ D9 0178 Ÿ DA 2044 ⁄ DB 00A4 ¤ DC 2039 ‹ DD 203A › DE FB01 fi DF FB02 fl E0 2021 ‡ E1 00B7 · E2 201A ‚ E3 201E „ E4 2030 ‰ E5 00C2  E6 00CA Ê E7 00C1 Á E8 00CB Ë continued Table B-1 Character codes sorted by Macintosh character code (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-6 E9 00C8 È EA 00CD Í EB 00CE Î EC 00CF Ï ED 00CC Ì EE 00D3 Ó EF 00D4 Ô F0 F7FF F1 00D2 Ò F2 00DA Ú F3 00DB Û F4 00D9 Ù F5 0131 ı F6 02C6 ˆ F7 02DC ˜ F8 00AF ¯ F9 02D8 ˘ FA 02D9 ˙ FB 02DA ˚ FC 00B8 ¸ FD 02DD ˝ FE 02DB ˛ FF 02C7 ˇ Table B-1 Character codes sorted by Macintosh character code (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-7 Table B-2 Character codes sorted by Unicode Mac Unicode Char CA 00A0 C1 00A1 ¡ A2 00A2 ¢ A3 00A3 £ DB 00A4 ¤ B4 00A5 ¥ A4 00A7 § AC 00A8 ¨ A9 00A9 © BB 00AA ª C7 00AB « C2 00AC ¬ A8 00AE ® F8 00AF ¯ A1 00B0 ° B1 00B1 ± AB 00B4 ´ B5 00B5 µ A6 00B6 ¶ E1 00B7 · FC 00B8 ¸ BC 00BA º continued A P P E N D I X B Special Character Codes B-8 C8 00BB » C0 00BF ¿ CB 00C0 À E7 00C1 Á E5 00C2  CC 00C3 à 80 00C4 Ä 81 00C5 Å AE 00C6 Æ 82 00C7 Ç E9 00C8 È 83 00C9 É E6 00CA Ê E8 00CB Ë ED 00CC Ì EA 00CD Í EB 00CE Î EC 00CF Ï 84 00D1 Ñ F1 00D2 Ò EE 00D3 Ó EF 00D4 Ô CD 00D5 Õ continued Table B-2 Character codes sorted by Unicode (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-9 85 00D6 Ö AF 00D8 Ø F4 00D9 Ù F2 00DA Ú F3 00DB Û 86 00DC Ü A7 00DF ß 88 00E0 à 87 00E1 á 89 00E2 â 8B 00E3 ã 8A 00E4 ä 8C 00E5 å BE 00E6 æ 8D 00E7 ç 8F 00E8 è 8E 00E9 é 90 00EA ê 91 00EB ë 93 00EC ì 92 00ED í 94 00EE î 95 00EF ï continued Table B-2 Character codes sorted by Unicode (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-10 96 00F1 ñ 98 00F2 ò 97 00F3 ó 99 00F4 ô 9B 00F5 õ 9A 00F6 ö D6 00F7 ÷ BF 00F8 ø 9D 00F9 ù 9C 00FA ú 9E 00FB û 9F 00FC ü D8 00FF ÿ F5 0131 ı CE 0152 OE CF 0153 oe D9 0178 Ÿ C4 0192 ƒ F6 02C6 ˆ FF 02C7 ˇ F9 02D8 ˘ FA 02D9 ˙ FB 02DA ˚ continued Table B-2 Character codes sorted by Unicode (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-11 FE 02DB ˛ F7 02DC ˜ FD 02DD ˝ B9 03C0 π D0 2013 D1 2014 D4 2018 D5 2019 E2 201A ‚ D2 201C D3 201D E3 201E „ A0 2020 † E0 2021 ‡ A5 2022 C9 2026 … E4 2030 ‰ DC 2039 ‹ DD 203A › DA 2044 ⁄ AA 2122 ™ BD 2126 Ω B6 2202 ∂ continued Table B-2 Character codes sorted by Unicode (continued) Mac Unicode Char A P P E N D I X B Special Character Codes B-12 C6 2206 Δ B8 220F Π B7 2211 Σ C3 221A √ B0 221E ∞ BA 222B ∫ C5 2248 ≈ AD 2260 ≠ B2 2264 ≤ B3 2265 ≥ D7 25CA ◊ F0 F7FF DE FB01 fi DF FB02 fl Table B-2 Character codes sorted by Unicode (continued) Mac Unicode Char What Are Classes Good For? C-1 A P P E N D I X C Class-Based Programming C *NewtonScript is often described as an “object-oriented” language. However, even if (or especially if) you have some experience with other object-oriented languages, such as Smalltalk or C++, you may be a bit confused by it. NewtonScript does have many features that will be familiar to you, but it has one important difference: NewtonScript is prototype-based, rather than class-based. That is, rather than dividing the world into classes and instances for the purposes of inheritance, NewtonScript objects inherit directly from other objects. Don’t forget everything you know about class-based programming, though. It is possible, and even desirable, to simulate classes in NewtonScript. Even though the language contains no explicit features to support classes, you can use a simple set of stylistic conventions to gain the familiar advantages of classes when you need them, without losing the flexibility of prototypes. What Are Classes Good For? C Newton programming puts great emphasis on the view system. The structure of your application is based around the views that make up the user interface. Newton Toolkit reflects this strong view orientation, making it very easy to create views with attached data and methods. However, it’s not necessarily appropriate to use the view system alone to organize your program. Most applications of any complexity use various independent, fairly complicated data structures. A standard programming technique is to implement these structures as abstract data types that encapsulate the functionality. In an object-oriented program, these take the form of classes. * Copyright © 1993, 1994 Walter R. Smith. All Rights Reserved. This article is reprinted by permission of the author. Figure C-0 Listing 9-0 Table C-0 A P P E N D I X C Class-Based Programming C-2 Classes: A Brief Reminder Classes let you divide your program’s functionality into manageable pieces. By combining a data structure with the functions that operate on it, classes make the program more understandable and maintainable. A well-written class can be reused in other applications, which saves you effort. There are plenty of reasons why classes are a good idea; you can look in any book on object-oriented programming for more. You should use the view structure of your application to divide it into parts according to the user interface. It’s a good idea to implement some or all of the internal data structures as classes. Classes: A Brief Reminder C Let’s start by reviewing the traditional class-based model of object programming. I use Smalltalk concepts and terminology in this article; C++ folks will need to translate the discussion slightly to fit their frame of reference. The principal concept in the class-based model is, not surprisingly, the class. A class defines the structure and behavior of a set of objects called the instances of the class. Each instance contains a set of instance variables, which are specified in the class. Instances can respond to messages by executing the methods defined in the class. Every instance has the same instance variables and methods. In addition, the class can define class variables and class methods, which are available to all the instances of the class. Inheritance is also determined by classes. Each class can have a superclass, from which it inherits variable and method definitions. In some languages, a class can have multiple superclasses, but there’s no easy way to simulate that in NewtonScript, so I won’t consider that here. An object is created by sending a message, usually called New or something similar, to its class. It may also be created by sending a Clone message to an instance of the class. When a message is sent to an instance, the corresponding method is located in the class (or superclasses) and executed. The method can refer directly to instance variables from that particular instance, and to class variables. A P P E N D I X C Class-Based Programming Inheritance in NewtonScript C-3 Inheritance in NewtonScript C The NewtonScript object model is prototype-based. Frames inherit directly from other frames; there are no classes. A frame may be linked to other frames through its _proto and _parent slots. These slots define the inheritance path for the frame. When you send a message to a frame, the method that executes can use the slots of that frame (the receiver) as variables. If a variable or method reference cannot be resolved in the receiver, the proto chain is searched. If the desired slot still isn’t found, the search moves one step up the parent chain, searching the parent and its proto chain, and so forth. These rules came about because they are a good fit for the Newton programming environment, which is oriented around the view system. Parent inheritance provides inheritance of variables and messages through the view hierarchy: you can define a variable in a view for all its subviews to access. Proto inheritance allows views to share common templates, and also lets most of the data stay out of RAM. Even though the inheritance system (and all of NewtonScript) is closely integrated with the view system, it is really just a set of rules that can be applied in whatever way you find useful. You can send messages to any frame, not just a view frame, and non-view frames can take advantage of the inheritance rules as well. As this article will demonstrate, the same rules are suitable for a form of class-based programming. The Basic Idea C I will now describe the basic class-based NewtonScript technique. Remember that there is no built-in idea of a class or an instance in NewtonScript; this is just a set of conventions for using NewtonScript that will let you create structures similar to those you would create in a class-based language. Thus, A P P E N D I X C Class-Based Programming C-4 The Basic Idea although I will use the terms class, instance, and so forth, they are all just frames being used in specific ways. The main idea is to use parent inheritance to connect instances with classes. An instance is a frame whose slots make up the instance variables, and whose _parent slot points to the class (another frame). The class’s slots make up the methods. As a simple example, consider a class Stack that implements a push-down stack. It has the standard operations Push and Pop that add and remove items, and a predicate IsEmpty that determines if there are any items on the stack. The representation is very simple: just an array of items and an integer giving the index of the topmost item. The class frame looks like this: Stack := { New: func (maxItems) {_parent: self, topIndex: -1, items: Array(maxItems, NIL)}, Clone: func () begin local newObj := Clone(self); newObj.items := Clone(items); newObj end, Push: func (item) begin topIndex := topIndex + 1; items[topIndex] := item; self end, A P P E N D I X C Class-Based Programming The Basic Idea C-5 Pop: func () begin if :IsEmpty() then NIL else begin local item := items[topIndex]; items[topIndex] := NIL; topIndex := topIndex - 1; item end end, IsEmpty: func () topIndex = -1 }; The class frame begins with the New method. This is a class method that is intended to be used as message of the Stack class itself, as in Stack:New(16). It consists simply of a frame constructor that builds an instance frame. An instance always has a _parent slot that refers to the class frame; note that because New is a message intended to be sent to the class, it can just use self to get the class pointer. The rest of the slots contain the instance variables: a topIndex slot for the index of the topmost item (-1 if the stack is empty) and an items slot for the array of items. New takes an argument that determines the maximum number of items on the stack, but it would be easy to make this dynamic (if it didn’t have to fit in an article like this). It’s usually a good idea to provide a Clone method for a class. This lets you make a copy of an object without having to know how deep the copy has to go (such knowledge would violate the encapsulation that is one of the reasons to have a class in the first place). In the case of Stack, a simple Clone would leave the items array shared between two instances, which would result in confusing and incorrect behavior. A DeepClone, on the other hand, would copy the entire class frame along with the instance, because of the pointer in the _parent slot. That would actually work in this A P P E N D I X C Class-Based Programming C-6 Practical Issues case, although it would waste huge amounts of space—watch out for this sort of mistake. The correct way to clone a Stack is to clone the instance, then give the clone a clone of the items array, which is what the Clone method above does. After the New and Clone methods, which are usually present in any class, come the methods particular to this class. The Push method increments topIndex and adds the item to the end of the items array. Note that instance variables such as topIndex and items are accessed simply by their names, because they are slots of the receiver. The Pop method calls the IsEmpty method to see if the stack is empty. If so, it returns nil; if not, it returns the topmost item and decrements topIndex. It assigns nil to the former topmost slot so it won’t prevent the item from being garbage collected. The NewtonScript code you write to use a class is similar to code you would write in a language like Smalltalk. You create an object by sending the New message to its class. You use the resulting instance by sending messages to it. Of course, you do all this in NewtonScript syntax, which uses the colon for sending a message. s := Stack:New(16); s:Push(10); s:Push(20); x := s:Pop() + s:Pop(); At the end of this code, the value of x will be 30. Practical Issues C Before getting into more advanced topics, here’s some practical information about doing class-based programming with current tools. (See the Newton Toolkit User’s Guide. for information about the Newton Toolkit implementation issues discussed in this section.) The Newton Toolkit as it exists today doesn’t include any features that specifically support class-based programming; for example, the browser only A P P E N D I X C Class-Based Programming Class Variables C-7 shows the view hierarchy. Nevertheless, it’s not too hard to get classes into your application. You need to build the class frame itself into your package, and you need to make it accessible from NewtonScript code. You can do both at once by putting the class directly into an evaluate slot of your application’s main view. For the above example, you could add a slot called Stack to the main view and type the class frame just as it appears (but not including the Stack assignment (:=) line) into the browser. If you prefer, you could make the class frame a global compile-time variable by putting it (including the assignment this time) into Project Data. That won’t make it available to your run-time code, however; you still have to create the Stack slot in the main view, but you can just type and enter– Stack–as its value. You have to put the class in Project Data if you want to use superclasses (more on this later). Class Variables C You can create “class variables”, that is, variables that are shared by all instances of a class, by adding slots to the class frame. This is the same way you add variables to a view to be shared by the subviews, but it’s a bit more tricky because the view system does something automatically for views that you have to do manually for classes. Remember that your class frame, like all other data built at compile time, is in read-only space when your application is running. It’s not possible to change the values of the slots; thus, it’s impossible to assign a new value to a class variable. The view system gets around this problem by creating a heap-based frame whose _proto slot points to the view and using that frame as the view. The original slots are accessible through proto inheritance, and assignments create and modify slots in the heap-based frame, overriding the initial values in the original. You can use the same trick for your class frame. A P P E N D I X C Class-Based Programming C-8 Class Variables For example, let’s say you want to have a class variable x whose initial value is zero. The class frame, defined in the Project Data file, contains a slot named x: TheClass := { ... x: 0 ... } The base view has a slot called TheClass whose value is defined simply as TheClass. At some point early in your application’s execution, perhaps in the viewSetupFormScript of the view where your class frame is defined, create a heap-based version of the class and assign it to the variable TheClass: viewSetupFormScript: func () begin ... if not TheClass._proto exists then TheClass := {_proto: TheClass}; ... end Now you can use and assign the variable x in methods of TheClass. The instances will inherit it via their _parent slot, and the first time x is assigned, an x slot will be created in the heap-based part of the class, shadowing the initial value of zero. Note that you only want to do this setup once— otherwise you’ll end up with a chain of frames, one for each time your application has been opened. Checking for the _proto slot, as above, is one way to ensure this; you could also set TheClass := TheClass._proto in your main view’s viewQuitScript. A P P E N D I X C Class-Based Programming Superclasses C-9 Superclasses C It’s easy to get the close equivalent of a superclass: just give the class a _proto slot pointing to its superclass. This requires the class definitions to be in Project Data so their names are available at compile time. For example, if you have a SortedList class that should have Collection as its superclass: Collection := { ... }; SortedList := {_proto: Collection, ...}; Of course, you have to define Collection before SortedList to do it this way. If you prefer to reverse their definitions for some reason, you can add the _proto slot later: SortedList := { ... }; Collection := { ... }; SortedList._proto := Collection; If you override a method in a subclass, you can call the superclass version using the inherited keyword. If you have class variables, note that because assignments take place in the outermost frame in the _proto chain (that is, the wrapper you create at initialization time for each class), each class gets its own version of the class variable. A P P E N D I X C Class-Based Programming C-10 Using Classes to Encapsulate Soup Entries Using Classes to Encapsulate Soup Entries C One use to consider for classes is encapsulating the constraints on soup entries. (Read more about soups and soup entries in the Newton Programmer’s Guide.) Normally, entries in a soup are simple data records with no _parent or _proto slots to inherit behavior. The reason is obvious: if they did, each entry would contain a copy of the inherited frame. (Actually, _proto slots are not followed in soup entries anyway, for various reasons.) Thus, soup entries are not normally used in an object-oriented fashion. Unfortunately, soup entries generally have somewhat complicated requirements, such as a set of required slots, so it would be nice to give them an object interface. You can do this by defining a class as a “wrapper” for a particular kind of soup entry. In addition to a New method, it can have class methods to retrieve entries from the soup and create objects from existing entries, and instance methods to delete, undo changes, and save changes to the entry. Each instance has a slot that refers to its soup entry. Given such a wrapper class, you can treat the soup and its contents as objects, sending messages to entries to make changes and retrieve data. The class is then a central location for the code that implements the requirements for entries in the soup. ROM Instance Prototypes C If your instances are fairly complicated and have a lot of slots whose values aren’t all likely to change, you can save some space by using the same _proto trick as classes and views. That is, in your New method, create the A P P E N D I X C Class-Based Programming Leaving Instances Behind C-11 instance as a little frame that just refers to the class and an initial instance variable prototype that stays in application space: New: func () {_parent: self, _proto: '{ ...initial instance vars... }} Leaving Instances Behind C Because so much is contained in the application, it’s very difficult to make instances that can survive card or application removal. The only way to do this is to copy the entire class (and its superclasses, if any) into the heap, which would probably take up too much space to be practical. Conclusion C This technique doesn’t exactly simulate any existing class-based object system, but it gives you what you need to encapsulate your data types into class-like structures. I find it to be very useful (stores, soups, and cursors all essentially follow this model), and I hope it will help you create better Newton applications. Have fun! Biography Walter Smith joined the Newton group in 1988. He is the principal designer and implementor of NewtonScript and the Newton object store. ◆ D-1 A P P E N D I X D NewtonScript Syntax DefinitionD The definitions in this document are presented in two forms, as an extended BNF, and as bubble diagrams, defined as follows: Bubble Diagram Extended BNF Description terminal Oval boxes / courier text indicates a word or character that must appear exactly as shown. Ambiguous terminal characters are enclosed in single quotes (‘’). nonterminal Rectangular boxes / italics indicate a word that is defined further. [] Dashed lines / brackets indicate that the enclosed item is optional. {choose|one} Forked arrows / a group of words, separated by vertical bars (|) and grouped with curly brackets, indicates an either/or choice. []* A dashed box with a repeating arrow / an asterik (*) indicates that the preceding item(s), which is enclosed in square brackets, can be repeated zero or more times. []+ A solid box with a repeating arrow / a plus sign (+) indicates that the preceding item(s), which is enclosed in square brackets, can be repeated one or more times. Figure 7-0 Listing 10-0 Table 7-0 terminal non-terminal optional optional option 1 choice option 2 repeat/optional repeat A P P E N D I X D NewtonScript Syntax Definition D-2 About the Grammar About the Grammar 6 The grammar is divided into two parts: the phrasal and lexical grammars. In the phrasal grammar, whitespace is insignificant. Space, tab, return, and linefeed characters are considered whitespace. Comments are effectively considered whitespace. Comments consist of the characters between /* and */ (not nested), and between // and a return or linefeed character. In the lexical grammar, the nonterminals are characters rather than tokens and whitespace is significant. Because almost every construct of the language is an expression, many productions ending in expression are ambiguous; the ambiguity is resolved in favor of extending the expression as long as possible. For example, while true do 2+2 is parsed as while true do (2+2) rather than (while true do 2)+2. The specific productions affected by this rule are functionconstructor, assignment, iteration, if-expression, break-expression, tryexpression, initialization-clause, return-expression, and global-function-decl. Phrasal Grammar 6 input: [constituent [ ; constituent ]* [;] ] constituent ; constituent ; A P P E N D I X D NewtonScript Syntax Definition Phrasal Grammar D-3 constituent: { expression | global-declaration } expression: { simple-expression | compound-expression | literal | constructor | lvalue | assignment | exists-expression | function-call | message-send | if-expression | iteration | break-expression | try-expression | local-declaration | constant-declaration | return-expression } simple-expression: { expression binary-operator expression | unary-operator expression | ( expression ) | self } expression global-declaration compound-expression literal constructor lvalue assignment exists-expression functional-call message-send if-expression iteration break-expression try-expression local-declaration constant-declaration return-expression simple-expression expression expression expression expression ( ) self binary-operator unary-operator A P P E N D I X D NewtonScript Syntax Definition D-4 Phrasal Grammar binary-operator: { arithmetic-operator | relational-operator | boolean-operator | string-operator } arithmetic-operator: { + | - | * | / | div | mod | << | >> } relational-operator: { = | <> | < | > | <= | >= } boolean-operator: { and | or } string-operator: { & | && } unary-operator: { - | not } arithmetic-operator relational-operator boolean-operator string-operator + - * / div mod << >> = <> < > <= >= and or & && - not A P P E N D I X D NewtonScript Syntax Definition Phrasal Grammar D-5 compound-expression: begin expression-sequence end expression-sequence: [ expression [ ; expression ]* [ ; ] ] literal: { simple-literal | ' object } simple-literal: { string | integer | real | character | true | nil } object: { simple-literal | path-expression | array | frame } path-expression: symbol [ . symbol ]+ begin expression-sequence end expression ; expression ; object simple-literal ' string integer real character true nil simple-literal path-expression frame array symbol . symbol A P P E N D I X D NewtonScript Syntax Definition D-6 Phrasal Grammar Note Each dot in ' symbol . symbol ... is ambiguous: it could be a continuation of the path expression or a slot accessor. NewtonScript uses the first interpretation: 'x.y.z is one long path expression and not the expression: ('x).y.z. ◆ array: ‘[’ [ symbol : ] [ object [ , object ]* [ , ] ] ‘]’ frame: ‘{’ [ frame-slot [ , frame-slot ]* [ , ] ] ‘}’ frame-slot: symbol : object constructor: { array-constructor | frame-constructor |function-constructor } array-constructor: ‘[’ [ symbol : ] [ expression [ , expression ]* [ , ] ] ‘]’ [ symbol : object , object , ] { frame-slot , frame-slot , } symbol : object array-constructor frame-constructor function-constructor [ symbol : expression , expression , ] A P P E N D I X D NewtonScript Syntax Definition Phrasal Grammar D-7 Note '[' symbol : symbol ( … is ambiguous: the first symbol could be a class for the array, or a variable to be used as the receiver for a message send. NewtonScript uses the first interpretation. ◆ frame-constructor: ‘{’ [ frame-constructor-slot [ , frame-constructor-slot ]* [ , ] ] ‘}’ frame-constructor-slot: symbol : expression function-constructor: func [ native ] ( [formal-argument-list ] ) expression formal-argument-list: {formal-argument [ , formal-argument ]* formal-argument: [ [type ] symbol { frame-constructor-slot , frame-constructor-slot , } symbol : expression func native ( formal-argument-list ) expression formal-argument , formal-argument type symbol A P P E N D I X D NewtonScript Syntax Definition D-8 Phrasal Grammar type: { int | array } lvalue: { symbol | frame-accessor | array-accessor } frame-accessor: expression . { symbol | ( expression ) } array-accessor: expression ‘[’ expression ‘]’ assignment: lvalue := expression exists-expression: { symbol | frame-accessor | [ expression ] : symbol } exists int array symbol frame-accesor array-accessor expression symbol expression . ( ) expression [ expression ] lvalue : = expression : symbol exists symbol frame-accessor expression A P P E N D I X D NewtonScript Syntax Definition Phrasal Grammar D-9 function-call: { symbol ( [ actual-argument-list ] ) |call expression with ( [ actual-argument-list ] ) } actual-argument-list: expression [ , expression ]* message-send: [ { expression | inherited } ] { : | :? } symbol ( [ actual-argument-list ] ) if-expression: if expression then expression [ ; ] [ else expression ] Note An else clause is associated with the most recent unmatched then clause. ◆ iteration: { infinite-loop | for-loop | foreach-loop | while-loop | repeat-loop } ) ( actual-argument-list ) ( actual-argument-list call with symbol expression expression , expression ( : : ? ) inherited expression symbol actual-argument-list if expression then expression ; else expression infinite-loop for-loop foreach-loop while-loop repeat-loop A P P E N D I X D NewtonScript Syntax Definition D-10 Phrasal Grammar infinite-loop: loop expression for-loop: for symbol := expression to expression [ by expression ] do expression foreach-loop: foreach symbol [ , symbol ] [ deeply ] in expression { do | collect } expression while-loop: while expression do expression repeat-loop: repeat expression-sequence until expression loop expression symbol expression to expression by expression for : = do expression symbol , symbol deeply in expression expression foreach do collect while expression do expression repeat expression-sequence until expression A P P E N D I X D NewtonScript Syntax Definition Phrasal Grammar D-11 break-expression: break [ expression ] try-expression: try expression-sequence [ onexception symbol do expression [ ; ] ]+ local-declaration: local [ type-specifier ] initalization-clause [ , initalization-clause ]* type-specifier: { array | int } initialization-clause: symbol [ := expression ] constant-declaration: constant constant-init-clause [ , constant-init-clause ]* break expression try expression sequence onexception symbol do expression ; local type-specifier initialization-clause , initialization-clause array int symbol : = expression constant constant-init-clause , constant-init-clause A P P E N D I X D NewtonScript Syntax Definition D-12 Lexical Grammar constant-init-clause: symbol := expression return-expression: return [ expression ] global-declaration: { global initialization-clause | global-function-decl } global-function-decl: { global | func } symbol ( [ formal-argument-list ] ) expression Lexical Grammar 6 string: " character-sequence " symbol : = expression return expression global-function-decl global initialization-clause formal-argument-list expression func ( global symbol ) " character-sequence " A P P E N D I X D NewtonScript Syntax Definition Lexical Grammar D-13 character-sequence: [ { string-character | escape-sequence } ]* [ truncated-escape ] string-character: escape-sequence: { \ { " | \ | n | t } | \ u [ hex-digit hex-digit hex-digit hex-digit ]* \ u } truncated-escape: \ u [ hex-digit hex-digit hex-digit hex-digit ]* truncated-escape escape-sequence string-character hex-digit hex-digit hex-digit hex-digit \ \ u \ u " \ n t \ u hex-digit hex-digit hex-digit hex-digit A P P E N D I X D NewtonScript Syntax Definition D-14 Lexical Grammar symbol: { { alpha | _ } [ { alpha | digit | _ } ]* | ‘|’ [ { symbol-character | \ { ‘|’ | \ } ]* ‘|’ } Note Reserved words are excluded from the nonterminal symbol. ◆ symbol-character: integer: [ - ] { [ digit ]+ | 0x [ hex-digit ]+ } real: [ - ] [ digit ]+ . [ digit ]* [ { e | E } [ - ] [ digit ]+ ] _ alpha alpha _ digit | | \ | symbol-character \ - x hex-digit digit 0 - e E digit . digit - digit A P P E N D I X D NewtonScript Syntax Definition Lexical Grammar D-15 character: $ { non-escape-character | \ { \ | n | t | hex-digit hex-digit |u hex-digit hex-digit hex-digit hex-digit } } non-escape-character: alpha: digit: { 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 } hex-digit: { digit | a | b | c | d | e | f | A | B | C | D | E | F } $ non-escape-character hex-digit hex-digit \ t u n \ hex-digit hex-digit hex-digit hex-digit 0 1 2 3 4 5 6 7 8 9 digit a b c d e f A B C D E F A P P E N D I X D NewtonScript Syntax Definition D-16 Operator Precedence reserved-word: { and | begin | break | by | call | constant | deeply | div | do | else | end | exists | for | foreach | func | global | if | in | inherited | local | loop | mod | native | not | onexception | or | repeat | return | self | then | to | try | until | while | with } Operator Precedence 6 The precedence of operators, from highest to lowest, is shown in Table 2-5 on page 2-39. and begin break by call constant deeply div else end exists for foreach func global if in inherited local loop mod native not onexception or repeat return self then to try until while with do E-1 A P P E N D I X E Quick Reference Card E The following pages of this appendix contain a quick reference card for the NewtonScript programming language. Figure D-0 Listing 11-0 Table D-0 . slot access left-to-right : message send left-to-right :? conditional message send [] array element left-to-right - unary minus left-to-right << left shift left-to-right >> right shift * multiply left-to-right / float division div integer division mod remainder + add - subtract left-to-right & concatenate (string rep of exprs) left-to-right && concatenate with 1 space between exists variable & slot existence none < less than left-to-right <= less than or equal > greater than >= greater than or equal = equal (pointer equality) <> not equal (pointer inequality) not logical not left-to-right and logical and short left-to-right or logical or circuit := assignment right-to-left Constructs Using Inheritance Lookup proto parent slot X X frame.slot X frame.(pathExpr) X GetVariable(frame,slot) X X GetSlot(frame,slot) frame:message() frame:?message() :message() X X inherited:message() inherited:?message() X symbol exists X X frame.slot exists X frame.(pathExpr) exists X frame:message exists :message exists X X HasVariable(frame,slot) X X HasSlot(frame,slot) NewtonScript Reference Card NewtonScript Description Evaluation Operator pression Value in exprList end value of last statment in exprList urn [ expr ] nil or expr xpr then expr value of expr or nil xpr then expr1 else expr2 value of expr1 or expr2 p expr value of break var := expr1 to expr2 do expr nil or value of break var := expr1 to expr2 by step do expr each [ slot, ] val in frameOrArray do expr nil or value of break each [ slot, ] val deeply in frame do expr (deeply in follows _proto slots) each [ slot, ] val in frameOrArray collect expr array of collected expr values or value of break each [ slot, ] val deeply in frame collect expr (deeply in follows _proto slots) le expr do expr nil or value of break expression eat exprList until expr nil or value of break expression ak [ expr ] nil or expr l functionObject with (argList) value functionObject returns exprList onexception exceptionSymbol do expr… value of last expr in exprList or of the executed onexception Throw(exSym, datum), CurrentException(), Rethrow() t.ex| {name: exceptionSymbol, error: integer} t.ex.msg| {name: exceptionSymbol, message: string} t.ex;type.ref| {name: exceptionSymbol, data: datum} Examples Comments SPrintObject ClassOf PrimClassOf 42, 0x5BA6, -99 -229 … 229-1 (-536870911…+536870912) base 10 Int Immediate 1000.02,-3.14,1.0e5, 1.e-12 SANE double, 15-16 digits, exponent: -308…308 1,000.02 real Binary n nil don’t quote null string Weird_Immediate Immediate true Boolean ter $a, $7, $\\, $\F0, $\uF7FF $\xx for hex, $\uxxxx for unicode hex one char string Char Immediate “abc”, “\n”,”\t”,”\””,”\\” abc, newline, tab, double quote, backslash the string String Binary l hiho, baz_1, |evt.ex.msg| 254 chars, [a-z, A-Z, 0-9, _ ], vbars allow any char symbol name Symbol Binary [arrayClass: e1,e2,e3] class optional, trailing comma allowed null string array class or Array Array {slot1: val1, slot2: val2} trailing comma allowed null string class slot or Frame Frame GL-1 Glossary 7 Array A sequence of numerically indexed slots (also known as the array elements) that contain objects. The first element is indexed by zero. Like other non-immediate objects, an array can have a user-specified class, and can have its length changed dynamically. Binary object A sequence of bytes that can represent any kind of data, can be adjusted in size dynamically, and can have a user-specified class. Examples of binary objects include strings, real numbers, sounds, and bitmaps. Boolean A special kind of immediate called true. Functions and control structures use nil as false and anything else as true. If you don't have anything else use true. Child A frame that references another frame (its parent) from a _parent slot. Class A symbol that describes the data referenced by an object. Arrays, frames, and binary objects can have user-defined classes. Constant A value that does not change. In NewtonScript the value of the constant is substituted wherever the name of the constant is used as an expression. G L O S S A R Y GL-2 Frame An unordered collection of slots, each of which consists of a name and value pair. The value of a slot can be any type of object, and slots can be added or removed from frames dynamically. A frame can have a user-specified class. Frames can be used like records in Pascal and structs in C, but can also be used as objects which respond to messages. Function object Function objects are created by the function constructor: func(args) funcBody An executable function object includes values for its lexical and message environment, as well as code. This information is captured when the function constructor is evaluated at run time. Global A variable or function that is accessible from any NewtonScript code. Immediate A value that is stored directly rather than through an indirect reference to a heap object. Immediates are characters, integers, or Booleans. See also reference. Implementor The frame in which a method is defined. See also receiver. Inheritance The mechanism by which attributes (slots or data) and behaviors (methods) are made available to objects. Parent inheritance allows views of dissimilar types to share slots containing data or methods. Prototype inheritance allows a template to base its definition on that of another template or prototype. Local A variable whose scope is the function within which it is defined. You must use the local keyword to explicitly create a local variable within a function. Message A symbol with a set of arguments. A message is sent using the message send syntax, frame:messageName(), where the message, messageName, is sent to the receiver, frame. Method A function in a frame slot that is invoked in response to a message. G L O S S A R Y GL-3 Object A typed piece of data that can be an immediate, array, frame, or binary object. In NewtonScript, only frame objects can hold methods and receive messages. Parent A frame that is referenced through the _parent slot of another frame. Path expression An object that encapsulates an access path through a set of arrays or frames. Proto A frame that is referenced through another frame's _proto slot. Receiver The frame that was sent a message. The receiver for the invocation of a function object is accessible through the pseudo-variable self. Reference A value that indirectly refers to an array, frame, or binary object. See also immediate. Self A pseudo-variable that is set to the current receiver. Slot An element of a frame or array that can hold an immediate or reference. IN-1 Index A Abs function 6-45 abstract data types 4-15 accessor array 2-16 frame 2-19 Acos function 6-50 Acosh function 6-50 AddArraySlot function 6-24 Annuity function 6-69 Apply function 6-73 arithmetic operators 2-31 array GL-1 accessor 2-16 object 2-15 Array function 6-24 array functions 6-23 ArrayInsert function 6-24 ArrayMunger function 6-25 ArrayRemoveCount function 6-26 Asin function 6-50 Asinh function 6-50 assignment description of 2-30 operator 2-29 Atan2 function 6-51 Atan function 6-51 Atanh function 6-51 B Band function 6-23 BDelete function 6-37 BDifference function 6-38 begin…end 3-1 BeginsWith function 6-16 BFetch function 6-38 BFetchRight function 6-39 BFind function 6-39 BFindRight function 6-40 binary objects 2-2 BinaryMunger function 6-90 binary object GL-1 BinEqual function 6-89 BInsert function 6-40 BInsertRight function 6-42 BIntersect function 6-42 bitwise functions 6-23 bitwise shift left 2-32 bitwise shift right 2-32 BMerge function 6-43 Bnot function 6-23 Boolean GL-1 interpretation 2-35 object 2-9 operators 2-34 Boolean class 2-2 Bor function 6-23 break 3-13 BSearchLeft function 6-44 BSearchRight function 6-45 built-in functions 6-1 Bxor function 6-23 I N D E X IN-2 C Capitalize function 6-16 CapitalizeWords function 6-16 catching exceptions 3-21 Ceiling function 6-46 character object 2-8 characters special, in strings 2-14 with special meanings 2-9 character set 1-9, 2-8 Char class 2-2 CharPos function 6-17 child GL-1 Chr function 6-90 class 2-1, GL-1 array 2-1 for an array 2-15 binary 2-1 Boolean 2-2 Char 2-2 frame 2-1 immediate 2-1 Int 2-2 primitive 2-1 Real 2-2 semantic types 1-3 String 2-2, 2-4 subclass 2-3 Symbol 2-2 user-defined for frame 2-18 class-based programming C-1 ClassOf function 2-2, 6-5 class slot 2-19 Clone function 6-6 code indentation 1-8 combining prototype and parent inheritance 5-6 comments syntax 1-10 compatibility 1-11 built-in functions 6-2 Compile function 6-90 compound expressions 3-1 Compound function 6-70 conditional message send operator 4-4 constant GL-1 declaration 2-26 quoted 2-28 constants 2-26 constructor object 1-9 CopySign function 6-51 Cos function 6-52 Cosh function 6-52 CurrentException function 6-72 D data extraction functions 6-77 data stuffing functions 6-81 data type 1-3 DeepClone function 6-6 DefGlobalVar function 6-88 double inheritance 5-1 Downcase function 6-17 dynamic model 1-7 E EndsWith function 6-17 equality operators 2-33 Erfc function 6-53 Erf function 6-52 exception frames 3-16 exception functions 6-71 exception handling 3-13 exceptions catching 3-21 throwing 3-19 to 3-20 working with 3-14 to 3-25 I N D E X IN-3 exception symbols defined 3-15 multiple parts 3-16 prefixes 3-16 types of 3-16 exists operator 2-37 Exp function 6-53 Expm1 function 6-53 expression 2-22 expressions 1-2 compound 3-1 extent 1-6 ExtractByte function 6-77 ExtractBytes function 6-78 ExtractChar function 6-78 ExtractCString function 6-80 ExtractLong function 6-79 ExtractPString function 6-80 ExtractUniChar function 6-81 ExtractWord function 6-80 ExtractXLong function 6-79 F Fabs function 6-53 FDim function 6-54 FeClearExcept function 6-66 FeGetEnv function 6-66 FeGetExcept function 6-67 FeHoldExcept function 6-67 FeRaiseExcept function 6-67 FeSetEnv function 6-68 FeSetExcept function 6-68 FeTestExcept function 6-68 FeUpdateEnv function 6-69 financial functions 6-69 floating point exception functions 6-65 floating point math functions 6-48 Floor function 6-46 Fmax function 6-54 Fmin function 6-54 Fmod function 6-55 for 3-4 to 3-5 foreach 3-6 to 3-10 frame GL-2 accessor 2-19 object 2-17 parent 5-4 prototype 5-2 slot GL-3 slot syntax 2-17 function context 4-10 global definition 4-7 global invocation 4-8 invocation 4-12 object 4-9 object, example of 4-13 passing parameters 4-8 return expression 4-3 simple example 4-3 function context lexical environment 4-10 message environment 4-10 function object GL-2 and implementing abstract data types 4-15 definition 4-9 example of 4-13 parts of 4-10 functions Abs 6-45 Acos 6-50 Acosh 6-50 AddArraySlot 6-24 Annuity 6-69 Apply 6-73 Array 6-24 array 6-23 sorted 6-36 ArrayInsert 6-24 ArrayMunger 6-25 ArrayRemoveCount 6-26 I N D E X IN-4 functions (continued) Asin 6-50 Asinh 6-50 Atan 6-51 Atan2 6-51 Atanh 6-51 Band 6-23 BDelete 6-37 BDifference 6-38 BeginsWith 6-16 BFetch 6-38 BFetchRight 6-39 BFind 6-39 BFindRight 6-40 BinaryMunger 6-90 BinEqual 6-89 BInsert 6-40 BInsertRight 6-42 BIntersect 6-42 bitwise 6-23 BMerge 6-43 Bnot 6-23 Bor 6-23 BSearchLeft 6-44 BSearchRight 6-45 built-in 6-1 Bxor 6-23 Capitalize 6-16 CapitalizeWords 6-16 Ceiling 6-46 CharPos 6-17 Chr 6-90 ClassOf 2-2, 6-5 Clone 6-6 Compile 6-90 Compound 6-70 CopySign 6-51 Cos 6-52 Cosh 6-52 CurrentException 6-72 data extraction 6-77 stuffing 6-81 DeepClone 6-6 DefGlobalFn 6-87 DefGlobalVar 6-88 defining 4-2 Downcase 6-17 EndsWith 6-17 Erf 6-52 Erfc 6-53 exception 6-71 Exp 6-53 Expm1 6-53 ExtractByte 6-77 ExtractBytes 6-78 ExtractChar 6-78 ExtractCString 6-80 extraction of data 6-77 ExtractLong 6-79 ExtractPString 6-80 ExtractUniChar 6-81 ExtractWord 6-80 ExtractXLong 6-79 Fabs 6-53 FDim 6-54 FeClearExcept 6-66 FeGetEnv 6-66 FeGetExcept 6-67 FeHoldExcept 6-67 FeRaiseExcept 6-67 FeSetEnv 6-68 FeSetExcept 6-68 FeTestExcept 6-68 FeUpdateEnv 6-69 financial 6-69 floating point 6-48 exception 6-65 Floor 6-46 Fmax 6-54 Fmin 6-54 Fmod 6-55 I N D E X IN-5 functions (continued) Gamma 6-55 GetFunctionArgCount 6-7 GetGlobalFn 6-86 GetGlobalVar 6-87 GetSlot 6-7 GetVariable 6-8 GlobalFnExists 6-87 GlobalVarExists 6-87 global variables and functions 6-86 HasSlot 6-8 HasVariable 6-8 Hypot 6-55 InsertSlot 6-26 integer math 6-45 Intern 6-9 IsAlphaNumeric 6-17 IsArray 2-2, 6-9 IsBinary 6-9 IsCharacter 2-2, 6-9 IsFinite 6-55 IsFrame 2-2, 6-9 IsFunction 6-10 IsImmediate 6-10 IsInstance 6-10 IsInteger 2-2, 6-10 IsNaN 6-56 IsNormal 6-56 IsNumber 6-10 IsReadOnly 6-11 IsReal 2-2, 6-11 IsString 2-2, 6-11 IsSubclass 2-4, 6-11 IsSymbol 2-2, 6-12 IsWhiteSpace 6-18 Length 6-27 LessEqualOrGreater 6-56 LessOrGreater 6-56 LFetch 6-27 LGamma 6-57 Log 6-57 Log10 6-58 Log1p 6-57 Logb 6-57 LSearch 6-29 MakeBinary 6-12 Map 6-12 math 6-45 Max 6-46 message-sending 6-73 and methods 4-1 Min 6-46 miscellaneous 6-89 native 4-16 NearbyInt 6-58 NewWeakArray 6-30 NextAfterD 6-58 object system 6-5 Ord 6-92 Perform 6-74 PerformIfDefined 6-75 Pow 6-59 PrimClassOf 2-2, 6-13 ProtoPerform 6-75 ProtoPerformIfDefined 6-76 Random 6-47 RandomX 6-59 Real 6-47 Remainder 6-59 RemoveSlot 6-13 RemQuo 6-60 ReplaceObject 6-13 Rethrow 3-20, 6-72 Rint 6-60 RintToL 6-60 Round 6-61 Scalb 6-61 SetAdd 6-31 SetClass 2-3, 6-14 SetContains 6-31 SetDifference 6-32 SetLength 6-32 SetOverlaps 6-33 SetRandomSeed 6-47 I N D E X IN-6 functions (continued) SetRemove 6-33 SetUnion 6-34 SetVariable 6-15 SignBit 6-61 Signum 6-61 Sin 6-62 Sinh 6-62 Sort 6-34 sorted array 6-36 SPrintObject 6-18 Sqrt 6-62 StrCompare 6-18 StrConcat 6-19 StrEqual 6-19 StrExactCompare 6-19 string 6-16 StrLen 6-20 StrMunger 6-20 StrPos 6-21 StrTokenize 6-21 StuffByte 6-82 StuffChar 6-82 StuffCString 6-83 stuffing of data 6-81 StuffLong 6-84 StuffPString 6-84 StuffUniChar 6-85 StuffWord 6-86 StyledStrTruncate 6-22 SubStr 6-22 SymbolCompareLex 6-15 Tan 6-62 Tanh 6-63 Throw 3-19, 6-71 TotalClone 6-15 TrimString 6-22 Trunc 6-63 UnDefGlobalFn 6-89 UnDefGlobalVar 6-89 Unordered 6-63 UnorderedGreaterOrEqual 6-63 UnorderedLessOrEqual 6-64 UnorderedOrEqual 6-64 UnorderedOrGreater 6-64 UnorderedOrLess 6-64 UpCase 6-23 G Gamma function 6-55 garbage collection 1-6, C-6 GetFunctionArgCount function 6-7 GetGlobalFn function 6-86, 6-87 GetGlobalVar function 6-87 GetSlot function 6-7 GetVariable function 6-8 global GL-2 GlobalFnExists function 6-87 global function definition 4-7 global function invocation 4-8 GlobalVarExists function 6-87 global variable and functions functions 6-86 glossary GL-1 H HasSlot function 6-8 HasVariable function 6-8 Hypot function 6-55 I, J, K if…then…else 3-2 immediate objects 2-5 immediates object model 1-2 immediate value GL-2 I N D E X IN-7 implementor 4-11, GL-2 indentation of code 1-8 +INF value 6-48 -INF value 6-48 inheritance 5-2 to 5-12, GL-2 and overriding values 5-3 combining proto and parent 5-6 double 5-1 interaction order 5-7 mixed proto and parent 5-6 parent 5-1, 5-4 proto 5-1 rules for setting slot values 5-9 rules for slot and message lookup 5-7 rules for testing for the existence of a slot 5-9 inheritance rules history C-3 mixed proto and parent 5-6 parent 5-5 prototype 5-3 inherited description 4-4 in-line object syntax 1-9 InsertSlot function 6-26 instance C-1 Intclass 2-2 integer 2-10 integer functions 6-45 Intern function 6-9 IsAlphaNumeric function 6-17 IsArray function 2-2, 6-9 IsBinary function 6-9 IsCharacter function 2-2, 6-9 IsFinite function 6-55 IsFrame function 2-2, 6-9 IsFunction function 6-10 IsImmediate function 6-10 IsInstance function 6-10 IsInteger function 2-2, 6-10 IsNaN function 6-56 IsNormal function 6-56 IsNumber function 6-10 IsReadOnly function 6-11 IsReal function 2-2, 6-11 IsString function 2-2, 6-11 IsSubclass function 2-4, 6-11 IsSymbol function 2-2, 6-12 IsWhiteSpace function 6-18 iterators 3-3 for 3-4 foreach 3-6 loop 3-10 repeat 3-12 while 3-11 L latent typing 1-3 Length function 6-27 LessEqualOrGreater function 6-56 LessOrGreater function 6-56 lexical environment of function 4-10 LFetch function 6-27 LGamma function 6-57 line separator 1-8 local declaration 2-23 local variable GL-2 Log10 function 6-58 Log1p function 6-57 Logb function 6-57 Log function 6-57 logical operators 2-34 lookup 5-3 method C-3 mixed proto and parent 5-6 parent inheritance rules 5-5 prototype inheritance rules 5-3 variable C-3 loop 3-10 loop syntax for 3-4 foreach 3-6 I N D E X IN-8 loop syntax (continued) loop 3-10 repeat 3-12 while 3-11 LSearch function 6-29 M MakeBinary function 6-12 Map function 6-12 math functions 6-45 Max function 6-46 message GL-2 definition 4-1 environment 4-11 receiver 4-4 message sending functions 6-73 message send operator 4-4 conditional 4-4 method GL-2 definition 4-1 implementor 4-11 methods and function 4-1 methods and functions 4-1 Min function 6-46 miscellaneous functions 6-89 N NaN value 6-48 native functions 4-16 NearbyInt function 6-58 NewtonScript character set 1-9 class-based programming 1-4 classes 1-3 comments 1-10 compatibility 1-11 dynamic model 1-7 expression-based language 1-2 garbage collection 1-6 goals of 1-1 in-line object syntax 1-9 latent typing 1-3 object model 1-2 prototype-based language C-1 syntax 1-8 syntax description D-1 NewtonScript constants 2-26 NewtonScript objects 2-8 NewWeakArray function 6-30 NextAfterD function 6-58 nil value 2-9 numbers integer 2-10 real 2-11 O object GL-3 binary 2-1 constructor 1-9 function 4-9 inheritance C-1 in-line syntax 1-9 literal syntax 1-9 model 1-2 primitive class of 2-1 typed data 1-2 object functions 6-5 object model immediates 1-2 references 1-2 objects array 2-15 Boolean 2-9 character 2-8 I N D E X IN-9 objects (continued) frame 2-17 integer 2-10 path expressions 2-20 real 2-11 string 2-13 symbol 2-12 onexception clause 3-18 to 3-19 onexception clause 3-21 to 3-24 examples of 3-22 operator precedence 2-38 operators 2-29 to 2-38 arithmetic 2-31 array accessor 2-16 and strings 2-14 assignment 2-29 bitwise shift left 2-32 bitwise shift right 2-32 Boolean 2-34 div 2-32 equality 2-33 exists 2-37 frame accessor 2-19 mod 2-32 postfix 2-37 prefix 2-35 relational 2-33 string 2-36 unary 2-35 Ord function 6-92 overriding inherited value 5-3 P parameter passing 4-8 _parent slot 2-19, 5-1 parent GL-3 creating a 5-4 frame 5-4 inheritance 5-4 inheritance rules 5-5 parent inheritance C-4 path expression 2-20, GL-3 Perform function 6-74 PerformIfDefined function 6-75 Pow function 6-59 precedence of operators 2-38 PrimClassOf function 2-2, 6-13 primitive class array 2-1 binary 2-1 frame 2-1 immediate 2-1 objects 2-1 programming class-based C-1 _proto slot 2-19, 5-2 proto GL-3 ProtoPerform function 6-75 prototype 5-2 inheritance rules 5-3 slot 5-2 ProtPerformIfDefined function 6-76 Q quoted constant 2-28 R Random function 6-47 RandomX function 6-59 Real class 2-2 Real function 6-47 real numbers 2-11 receiver 4-12, GL-3 definition 4-4 self 4-4 I N D E X IN-10 reference GL-3 reference objects 2-5 references object model 1-2 relational operators 2-33 Remainder function 6-59 RemoveSlot function 6-13 RemQuo function 6-60 repeat 3-12 ReplaceObject function 6-13 reserved words A-1 Rethrow function 3-20, 6-72 return expression 4-3 Rint function 6-60 RintToL function 6-60 Round function 6-61 rules inheritance, history of C-3 mixed inheritance 5-6 S Scalb function 6-61 scope 1-4 constants 2-28 local variable 2-24 self GL-3 self pseudo-variable 4-4, 4-12 semantic types 1-3 semicolon 1-8 SetAdd function 6-31 SetClass function 2-3, 6-14 SetContains function 6-31 SetDifference function 6-32 SetLength function 6-32 SetOverlaps function 6-33 SetRandomSeed function 6-47 SetRemove function 6-33 setting slot values 5-9 SetUnion function 6-34 SetVariable function 6-15 short-circuit evaluation 2-35 SignBit function 6-61 Signum function 6-61 Sin function 6-62 Sinh function 6-62 slot GL-3 access 2-20 class 2-19 global GL-2 lookup 5-3 _parent 2-19, 5-1 _proto 2-19, 5-1, 5-2 setting values 5-9 special names in frames 2-19 syntax 2-17 sorted array functions 6-36 Sort function 6-34 special characters in symbols 2-12 SPrintObject function 6-18 Sqrt function 6-62 StrCompare function 6-18 StrConcat function 6-19 StrEqual function 6-19 StrExactCompare function 6-19 string object 2-13 operators 2-36 using array accessors on 2-14 String class 2-2, 2-4 string functions 6-16 strings, special characters in 2-14 StrLen function 6-20 StrMunger function 6-20 StrPos function 6-21 StrTokenize function 6-21 StuffByte function 6-82 StuffChar function 6-82 StuffCString function 6-83 StuffLong function 6-84 StuffPString function 6-84 StuffUniChar function 6-85 I N D E X IN-11 StuffWord function 6-86 StyledStrTruncate function 6-22 subclasses 2-3 SubStr function 6-22 Symbol class 2-2 SymbolCompareLex function 6-15 symbols class 2-1 special characters in 2-12 syntax 2-12 use of 2-12 and variables 2-23 syntax D-1 comments 1-10 conventions xiv in-line object 1-9 object constructor 1-9 object literal 1-9 overview 1-8 semicolon 1-8 T Tan function 6-62 Tanh function 6-63 Throw function 6-71 examples of 3-19 throwing exceptions 3-19 to 3-20 TotalClone function 6-15 TrimString function 6-22 true value 2-9 Trunc function 6-63 try statement 3-18 to 3-19 examples of 3-22 U unary operators 2-35 UnDefGlobalFn function 6-89 UnDefGlobalVar function 6-89 Unicode 2-8 Unordered function 6-63 UnorderedGreaterOrEqual function 6-63 UnorderedLessOrEqual function 6-64 UnorderedOrEqual function 6-64 UnorderedOrGreater function 6-64 UnorderedOrLess function 6-64 UpCase function 6-23 user-defined class array 2-15 frame 2-18 user-derined class 2-3 V value immediate GL-2 lookup 5-3 reference GL-3 variable local GL-2 variables 2-23 view system C-1 W, X, Y, Z while 3-11 T H E A P P L E P U B L I S H I N G S Y S T E M This Apple manual was written, edited, and composed on a desktop publishing system using Apple Macintosh computers and FrameMaker software. Proof pages were created on an Apple LaserWriter Pro 630 printer. Final page negatives were output directly from the text and graphics files. Line art was created using Adobe™ Illustrator. PostScript™, the page-description language for the LaserWriter, was developed by Adobe Systems Incorporated. Text type is Palatino® and display type is Helvetica®. Bullets are ITC Zapf Dingbats®. Some elements, such as program listings, are set in Apple Courier. WRITERS Adrian Yacub, Cheryl Chambers, Christopher Bey PROJECT LEADER Christopher Bey ILLUSTRATOR Peggy Kunz EDITORS Linda Ackerman, David Schneider PRODUCTION EDITOR Rex Wolf PROJECT MANAGER Gerry Kane Special thanks to Peter Canning, Bob Ebert, Mike Engber, Kent Sandvik, and Walter Smith. 在您安裝 MacOS X之前,請先閱讀本文件的內容。它包含關於安裝 MacOS X的 重要資訊。 系統需求 若要升級到 Snow Leopard 或第一次安裝 Snow Leopard,您必須有符合下列配備 的 Mac 電腦:  Intel 處理器  內置或外接 DVD 光碟機或“DVD 或 CD 共享”  最少 1 GB 的 RAM  內建螢幕或連接 Apple 顯示卡的螢幕(您的電腦必須能支援)  至少 5 GB 的可用磁碟空間,如果您安裝了開發人員工具,則需要 7 GB 的磁碟 空間 升級 Mac OS X 請依照下列的簡單步驟來升級至 Mac OS X Snow Leopard。 1 放入 Mac OS X 安裝光碟。 2 按兩下“安裝 Mac OS X 圖像”。 螢幕上會顯示“歡迎”面板,並接著顯示“軟體許可證”。請閱讀並同意軟體 許可協議的內容。 3 在您選擇磁碟的面板裡,請選擇您現用的 Mac OS X 磁碟(在大部分情況下, 只會有一個磁碟可供選擇)。 Mac OS X 10.6 Snow Leopard 安裝與設定指南 2 4 按一下“自定”來選取或取消選取附加軟體。 您可以自定要安裝的某些軟體,例如印表機驅動程式、字體和語言翻譯。在 “自定安裝”面板裡,選擇您要安裝的軟體,然後按一下“好”。 注意:如果您看到沒有足夠的磁碟空間安裝 Mac OS X 的訊息,您可以取消選取 某些項目來節省空間。 5 按一下“安裝”。 若要結束任何已開啟的應用程式並開始安裝,請在顯示的訊息裡按一下 “安裝”。當系統提示您時,請輸入您的管理者密碼。 使用另一部電腦的光碟機來進行升級 您可以使用“DVD 或 CD 共享”來在沒有配備光碟機的 Mac 上升級 Mac OS X(或 重新安裝 iLife 應用程式),此方式是使用另一部電腦的光碟機。另一部電腦必須 有 Mac OS X 10.4.10 或以上版本、Windows XP 或 Windows Vista。 注意:您不需要使用“遠端安裝 Mac OS X”來在沒有配備光碟機的 Mac 上升級 Mac OS X。然而,若您要將您的 Mac 回復成原始的出廠設定,或清除並重新安裝 Mac OS X,那麼您就必須使用“遠端安裝 Mac OS X”。 1 請確定兩部電腦都是位於相同的有線或無線網路上。 2 請確定您已經在要使用其光碟機的電腦上安裝了“DVD 或 CD 共享”。若電腦是 已安裝 Mac OS X 10.5.3 或以上版本的 Mac,那麼它已經安裝了“DVD 或 CD 共享”。  若要在安裝了 Mac OS X 10.4.10-10.5.2 的 Mac 上安裝“DVD 或 CD 共享”, 請參閱: http://support.apple.com/downloads/DVD_or_CD_Sharing_Setup_Update_for_Mac  在 Windows 電腦上,請參閱: http://support.apple.com/downloads/DVD_or_CD_Sharing_Update_1_0_for_Windows 3 請確定您已經在要使用其光碟機的電腦上啟用了“DVD 或 CD 共享”。  若要在 Mac 上啟用“DVD 或 CD 共享”,請在“共享”偏好設定裡勾選“DVD 或 CD 共享”註記框。  在 Windows 電腦上,請在 [DVD 或 CD 共享] 控制台裡選擇 [啟用遠端 DVD 或 CD] 。 4 將安裝光碟放入電腦的光碟機。 5 在您要安裝 Mac OS X(或 iLife 應用程式)的電腦上,請在 Finder 視窗側邊欄內 選擇“設備”下方的“遠端光碟”。 若您看見“詢問以使用”按鈕,請按它一下。在已放入安裝光碟的電腦上,按一 下“接受”。 6 選擇光碟,打開“安裝程式”,然後依照螢幕上的指示操作。 3 使用 Time Machine 來備份和回復您的系統 當您安裝好 Snow Leopard 之後,請將 Time Capsule、外接 USB 或 FireWire 磁碟機 連接到您的電腦上,並使用 Time Machine 來備份最新的電腦內容。如果您已經製 作了 Time Machine 備份,而且您需要重新安裝 Snow Leopard 時,請使用“回復 工具程式”來將電腦上的內容回復成先前的狀態。 1 放入 Mac OS X 安裝光碟,然後按兩下“安裝 Mac OS X”圖像。 2 在“安裝程式”裡按一下“工具程式”,然後再按一下“重新開機”。 3 當顯示“語言選擇器”時,請選擇您的語言,然後按一下“繼續”按鈕(其外觀 如同一個箭頭)。 4 選擇“工具程式”>“從備份回復系統⋯”,然後在顯示的螢幕裡按一下 “繼續”。 5 選擇備份來源。 選擇您想用來回復系統且包含 Time Machine 備份的磁碟,然後依照螢幕上的指示 操作。 注意:回復系統會清除所選卷宗裡的所有內容。 將電腦回復成出廠設定 若您要將電腦回復成原始的出廠設定,請使用電腦隨附的安裝光碟。 重要事項:若您將電腦回復成出廠設定,則電腦上的所有項目 ─ 您的使用者帳 號、網路設定和所有檔案及檔案夾都會被刪除。在您進行回復之前,請先將您要 備份的檔案拷貝到其他磁碟上。從“網路”偏好設定裡記下您的網路設定,以便 在重新安裝 Mac OS X 之後可以更容易地重新連接網路。 1 放入電腦隨附的 Mac OS X 安裝光碟,然後按兩下“安裝 Mac OS X”圖像。 注意:您可以使用“遠端安裝 Mac OS X”來在沒有配備光碟機的 Mac 上將電腦回 復成出廠設定,此方式是使用另一部電腦上的光碟機。若要使用“遠端安裝 Mac OS X”,請先依照本文件稍後的“使用遠端安裝 Mac OS X”裡的指示操作,然後 再前往本章節裡的步驟 3。 2 在“安裝程式”裡按一下“工具程式”,然後再按一下“重新開機”。 3 當顯示“語言選擇器”時,請選擇您的語言,然後按一下“繼續”按鈕(其外觀 如同一個箭頭)。 4 選擇“工具程式”>“磁碟工具程式”。 4 5 在左側的列表裡選擇磁碟,然後按一下“清除”標籤頁。 6 從“格式”彈出式選單裡選擇 Mac OS 擴充格式(日誌式)”,輸入磁碟名稱, 然後按一下“清除”。 清除了磁碟之後,請選擇“磁碟工具程式”>“結束磁碟工具程式”,然後依 照“Mac OS X 安裝程式”裡的指示來重新安裝 Mac OS X。 注意:安裝完成後,系統會提示您使用電腦隨附的 Applications Install DVD(應用 程式安裝 DVD)來重新安裝 iLife 應用程式(GarageBand、iPhoto、iMovie、iDVD 和 iWeb)。若要重新安裝 iLife 應用程式,請放入 Applications Install DVD(應用 程式安裝 DVD),按兩下 Install Bundled Software(安裝隨附軟體)圖像,然後 依照螢幕上的指示操作。 使用“遠端安裝 Mac OS X” 您可以使用“遠端安裝 Mac OS X”來在沒有配備光碟機的 Mac 上將電腦回復成出 廠設定(或清除並重新安裝 Mac OS X),此方式是使用另一部電腦上的光碟機。 另一部電腦必須有 Mac OS X 10.4.10 或以上版本、Windows XP 或 Windows Vista。 1 請確定兩部電腦都是位於相同的有線或無線網路上。 注意:您無法在受 WEP 保護的無線網路上使用“遠端安裝 Mac OS X”。 2 請確定您已經在要使用其光碟機的電腦上安裝了“DVD 或 CD 共享”。若電腦是 已安裝 Mac OS X 10.5.3 或以上版本的 Mac,那麼它已經安裝了“DVD 或 CD 共享”。  若要在安裝了 Mac OS X 10.4.10-10.5.2 的 Mac 上安裝“DVD 或 CD 共享”, 請參閱: http://support.apple.com/downloads/DVD_or_CD_Sharing_Setup_Update_for_Mac  在 Windows 電腦上,請參閱: http://support.apple.com/downloads/DVD_or_CD_Sharing_Update_1_0_for_Windows 3 將 Mac OS X 安裝光碟放入電腦的光碟機內。 4 在使用其光碟機的電腦上,請打開“遠端安裝 Mac OS X”。  在 Mac 電腦上,它是位於“應用程式”檔案夾的“工具程式”檔案夾裡。  在 Windows 電腦上,請從 Install Assistant(安裝輔助程式)選擇 [遠端安裝 Mac OS X]。 5 依照螢幕上的指示操作。 閱讀指示,選取您想要使用的安裝光碟,並依您的網路類型選取 AirPort 或乙太網 路。在每次面板顯示之後按一下“繼續”。 6 在您要安裝軟體的電腦上,請在重新啟動電腦時按住 Option(z)鍵,直到您 看見可用的啟動磁碟列表。 5 7 在使用安裝光碟的另一部電腦上,在“遠端安裝 MacOS X”裡按一下“繼續”。 注意:若您在步驟 5 選取了 AirPort 作為您的網路,請從彈出式選單中選擇 AirPort 網路。當您看見顯示訊號強度的 AirPort 狀態圖像,請在“遠端安裝 Mac OS X” 裡按一下“繼續”。 8 在您要安裝軟體的電腦上,請選擇安裝光碟,然後按一下光碟圖像下方的箭頭。 若要清除並重新安裝 Mac OS X,請前往本文件稍早章節裡的步驟 3「將電腦回復 成出廠設定」。 使用另一部電腦的光碟機來重新安裝應用程式 若您使用了“遠端安裝 Mac OS X”來將電腦回復成出廠設定,您就必須使用電腦 隨附的 Applications Install DVD(應用程式安裝 DVD)來重新安裝 iLife 應用程式 (GarageBand、iPhoto、iMovie、iDVD 和 iWeb)。若要重新安裝 iLife 應用程式, 請依照本文件稍早章節「使用另一部電腦的光碟機來進行升級」裡的指示來 操作。 關於安裝的建議 在下面的章節中,您可以找到解答,以解決安裝和使用 Mac OS X 時可能會遇到 的相關問題。 安裝期間使用鍵盤 當您使用“Mac OS X 安裝程式”和“Mac OS X 設定輔助程式”時,可以使用鍵盤 操控。按 Tab 鍵來反白按鈕、彈出式選單或其他選項。按向下鍵來打開彈出式選 單。按空白鍵來選擇項目。 更新印表機和掃描器軟體 在安裝期間,您的印表機和掃描器軟體將會升級成 Snow Leopard 相容的版本 (若有升級版本可使用的話)。在升級過程中,可能會移除不相容的軟體。如 需支援印表機和掃描器機型的相關資訊,請參閱:http://support.apple.com/kb/ HT3669?locale=zh_TW&viewlocale=zh_TW QuickTime 7 Pro 使用者的相關資訊 與 Snow Leopard 相容的 QuickTime Player 7 應用程式版本目前已可供使用。如需 Snow Leopard 中 QuickTime 7 Pro 的相關資訊,請參閱:http://support.apple.com/ kb/HT3678?locale=zh_TW&viewlocale=zh_TW “安裝程式”無法修復磁碟 若出現訊息告訴您“安裝程式”無法修復磁碟,您可能必須清除磁碟的內容。在 您清除磁碟內容之前,請嘗試將檔案拷貝到外接磁碟上。當您準備好清除磁碟並 重新安裝 Mac OS X 時,請依照本文件中「清除並重新安裝 Mac OS X」章節裡的 指示來操作。 6 “安裝程式”沒有開啟 若“安裝程式”沒有打開,請在重新開機時按住 C 鍵來使用 Mac OS X 安裝光碟 開機。若“安裝程式”還是沒有打開,請在重新開機時按住滑鼠或觸控式軌跡板 的按鈕,以退出光碟。在電腦啟動之後,放入 Mac OS X 安裝光碟。使用“啟動 磁碟”偏好設定來選擇光碟做為啟動磁碟,然後重新開機。 若您在使用“DVD 或 CD 共享”時,“安裝程式”沒有開啟,請嘗試使用“遠端 安裝 Mac OS X”。 若您的電腦已連接了網路,您的網路管理者可能會禁止您安裝軟體或升級 Mac OS X。請聯絡您的網路管理者尋求協助。 安裝沒有成功 若您無法安裝 Mac OS X,請嘗試下列動作: 1 在安裝過程中,請中斷連接所有不需要使用的外接設備。 2 移除所有製造商(Apple 除外)的介面卡。 3 嘗試再次安裝 Mac OS X。 4 若您無法再次安裝 Mac OS X,請選擇“工具程式”>“磁碟工具程式”。選擇您 要安裝的磁碟,按一下“修理工具”,然後再按一下“修復磁碟”。在修復所有 問題之後,結束“磁碟工具程式”,然後按一下“繼續”來嘗試再次安裝。 若您仍然無法安裝 Mac OS X,請嘗試在安裝 Mac OS X 之前先清除磁碟的內容。 在您清除磁碟內容之前,請嘗試將檔案拷貝到外接磁碟上。當您準備好清除磁碟 並重新安裝 Mac OS X 時,請依照本文件中「清除並重新安裝 Mac OS X」章節裡 的指示來操作。 清除並重新安裝 Mac OS X 若您需要清除並重新安裝 Mac OS X,請在“安裝程式”的第一個面板中按一下“ 工具程式”,然後再按“重新開機”。 注意:您可以使用“遠端安裝 Mac OS X”來在沒有配備光碟機的 Mac 上清除並 重新安裝 Mac OS X,此方式是使用另一部電腦上的光碟機。若要使用“遠端安裝 Mac OS X”,請先依照本文件中「使用遠端安裝 Mac OS X」章節裡的指示操作, 然後再依照下列的指示執行。 在您選擇了語言之後,請選擇“工具程式”>“磁碟工具程式”。在左側的列表 裡選擇磁碟,然後按一下“清除”標籤頁。從“格式”彈出式選單裡選擇 Mac OS 擴充格式(日誌式)”,輸入磁碟名稱,然後按一下“清除”。清除了磁碟 之後,請選擇“磁碟工具程式”>“結束磁碟工具程式”,然後依照“Mac OS X 安裝程式”裡的指示來重新安裝 Mac OS X。關於帳號和密碼的建議 在下面的章節中,您可以找到解答,以解決使用者名稱、密碼和登入可能會遇到 的相關問題。 無法登入電腦 請確定您輸入的名稱與密碼與當時製作的名稱和密碼完全相符,包括大小寫也必 須相同。若您還是無法登入,但您知道管理者的名稱與密碼(例如您所製作的第 一個使用者),請以管理者的身份登入,然後使用“帳號”偏好設定來更改您的 密碼。 您不記得您的密碼且需要重設密碼 若您不記得密碼,但您有 Mac OS X 安裝光碟,請放入光碟,並在重新啟動電 腦時按住 C 鍵。若您的電腦沒有配備光碟機,請使用“遠端安裝 Mac OS X”。 當“Mac OS X 安裝程式”出現時,請選擇您的語言,然後選擇“工具程式”> “重設密碼”,並依照螢幕上的指示操作。 無法登入遠端使用者帳號 若您要登入伺服器來取用您的使用者帳號,但無法登入,請聯絡系統管理者。 其他資訊 如需更多關於 Mac OS X 的資訊,請參閱:www.apple.com/tw/macosx 如需關於使用 Mac OS X 的最新資訊,請連接到 Internet 並打開“Mac 輔助 說明”。若要打開“Mac 輔助說明”,請在 Finder 裡選擇“輔助說明”> “Mac 輔助說明”。 如需所有關於 Apple 產品的更多支援與技術資訊,請參閱: www.apple.com/tw/support Copyright © 2009 Apple Inc. 保留一切權利。Apple、蘋果、Apple 標誌、AirPort、FireWire、GarageBand、 iDVD、iLife、iMovie、iPhoto、Mac、Mac OS、QuickTime、Time Capsule 和 Time Machine 是 Apple Inc. 在 美國及其他國家和地區註冊的商標。Finder、iWeb 和 Snow Leopard 是 Apple Inc. 的商標。Intel 是 Intel Corp. 在美國及其他國家和地區的商標。此處所提及的其他產品和公司名稱可能是其所屬公司的商標。 Power Macintosh User’s Guide Includes setup, troubleshooting, and important health-related information for Power Macintosh 9500 series computers K Apple Computer, Inc. © 1996 Apple Computer, Inc. All rights reserved. Under the copyright laws, this manual may not be copied, in whole or in part, without the written consent of Apple. Your rights to the software are governed by the accompanying software license agreement. The Apple logo is a trademark of Apple Computer, Inc., registered in the U.S. and other countries. Use of the “keyboard” Apple logo (Option-Shift-K) for commercial purposes without the prior written consent of Apple may constitute trademark infringement and unfair competition in violation of federal and state laws. Every effort has been made to ensure that the information in this manual is accurate. Apple is not responsible for printing or clerical errors. Apple Computer, Inc. 1 Infinite Loop Cupertino, CA 95014-2084 (408) 996-1010 Apple, the Apple logo, AppleScript, AppleShare, AppleTalk, GeoPort, ImageWriter, Inter•Poll, LaserWriter, LocalTalk, Macintosh, MacTerminal, PlainTalk, Power Macintosh, PowerTalk, and StyleWriter are trademarks of Apple Computer, Inc., registered in the U.S. and other countries. AppleCD, Apple Desktop Bus, At Ease, AudioVision, Balloon Help, Chicago, Disk First Aid, eWorld, Finder, Macintosh PC Exchange, and QuickDraw are trademarks of Apple Computer, Inc. Adobe and PostScript are trademarks of Adobe Systems Incorporated or its subsidiaries and may be registered in certain jurisdictions. Helvetica and Times are registered trademarks of Linotype-Hell AG and/or its subsidiaries. PowerPC and the PowerPC logo are trademarks of International Business Machines Corporation, used under license therefrom. Simultaneously published in the United States and Canada. Mention of third-party products is for informational purposes only and constitutes neither an endorsement nor a recommendation. Apple assumes no responsibility with regard to the performance or use of these products. iii Communications regulation information vi Preface Welcome to Power Macintosh ix Part I 1 Getting Started 1 Plugging in the computer 3 Installing an expansion card 4 Connecting a monitor 4 Connecting the mouse and keyboard 8 Connecting other equipment 10 Turning the computer on 11 Problems turning your computer on? 13 What’s next? 13 Learning the basics 14 Reviewing the basics 16 Turning the computer off 18 Where to find answers 19 Contents 2 Getting Help 21 Getting answers to your questions 22 Identifying objects on the screen 30 Learning useful shortcuts 31 3 Connecting Additional Equipment 33 Your computer at a glance 33 Connecting audio equipment 36 Connecting external SCSI devices 40 Expanding memory 44 Installing internal drives 44 Connecting network cables 45 4 Installing and Using Application Programs 47 Installing application programs 48 Working with several programs at a time 49 Backing up your files 51 Using Power Macintosh application programs 51 5 Using the Optional CD-ROM Player 53 Inserting a CD-ROM disc 54 Ejecting a CD-ROM disc 55 Playing audio CDs 56 Working with Photo CDs 57 Sharing a CD-ROM disc over a network 58 iv Contents Part II 6 Troubleshooting 61 When you have questions 61 If you have trouble 61 Solutions to common problems 64 Solutions to CD-ROM problems 77 If your computer’s performance decreases 84 Solving printer problems 85 Obtaining updated Apple software 86 Initializing a hard disk 90 Repairing a damaged disk 93 Installing or reinstalling system software 97 Installing or reinstalling CD-ROM software 107 Part III Appendix A Health, Safety, and Maintenance Tips 111 Health-related information about computer use 111 Safety instructions 116 Handling your computer equipment 117 Cleaning your equipment 123 Locking and unlocking the mouse 126 Appendix B Installing an Expansion Card 129 Expansion card power requirements 130 Installing an expansion card 130 Upgrading the processor 138 Appendix C Special Keys on Your Keyboard 139 Typing special characters and symbols 141 Special key combinations 143 Index 145 Contents v vi Communications Regulation Information Communications regulation information FCC statement This equipment has been tested and found to comply with the limits for a Class B digital device in accordance with the specifications in Part 15 of FCC rules. See instructions if interference to radio or television reception is suspected. Radio and television interference The equipment described in this manual generates, uses, and can radiate radio-frequency energy. If it is not installed and used properly—that is, in strict accordance with Apple’s instructions—it may cause interference with radio and television reception. This equipment has been tested and found to comply with the limits for a Class B digital device in accordance with the specifications in Part 15 of FCC rules. These specifications are designed to provide reasonable protection against such interference in a residential installation. However, there is no guarantee that interference will not occur in a particular installation. Note: When the 10BASE-T Ethernet is connected, the system complies only with the FCC Part 15, Class A limits and the CISPR 22, Class A limits, and may not be used in a residential area. You can determine whether your computer system is causing interference by turning it off. If the interference stops, it was probably caused by the computer or one of the peripheral devices. If your computer system does cause interference to radio or television reception, try to correct the interference by using one or more of the following measures: m Turn the television or radio antenna until the interference stops. m Move the computer to one side or the other of the television or radio. m Move the computer farther away from the television or radio. m Plug the computer into an outlet that is on a different circuit from the television or radio. (That is, make certain the computer and the television or radio are on circuits controlled by different circuit breakers or fuses.) If necessary, consult an Apple-authorized service provider or Apple. See the service and support information that came with your Apple product. Or, consult an experienced radio/television technician for additional suggestions. You may find the following booklet helpful: Interference Handbook (stock number 004-000-00493-1). This booklet, prepared by the Federal Communications Commission, is available from the U.S. Government Printing Office, Washington, DC 20402. IMPORTANT Changes or modifications to this product not authorized by Apple Computer, Inc., could void the FCC Certification and negate your authority to operate the product. This product was tested for FCC compliance under conditions that included the use of Apple peripheral devices and Apple shielded cables and connectors between system components. It is important that you use Apple peripheral devices and shielded cables and connectors between system components to reduce the possibility of causing interference to radios, television sets, and other electronic devices. You can obtain Apple peripheral devices and the proper shielded cables and connectors through an Apple-authorized dealer. For non-Apple peripheral devices, contact the manufacturer or dealer for assistance. DOC statement DOC Class B Compliance This digital apparatus does not exceed the Class B limits for radio noise emissions from digital apparatus as set out in the interference-causing equipment standard entitled “Digital Apparatus,” ICES-003 of the Department of Communications. Observation des normes—Classe B Cet appareil numérique respecte les limites de bruits radioélectriques applicables aux appareils numériques de Classe B prescrites dans la norme sur le matériel brouilleur : “Appareils Numériques”, NMB-003 édictée par le ministre des Communications. VCCI statement CD-ROM drive WARNING Making adjustments or performing procedures other than those specified in your equipment’s manual may result in hazardous exposure. WARNING Do not attempt to disassemble the cabinet containing the laser. The laser beam used in this product is harmful to the eyes. The use of optical instruments, such as magnifying lenses, with this product increases the potential hazard to your eyes. For your safety, have this equipment serviced only by an Apple-authorized service provider. If you have an internal Apple CD-ROM drive in your computer, your computer is a Class 1 laser product. The Class 1 label, located in a user-accessible area, indicates that the drive meets minimum safety requirements. A service warning label is located in a service-accessible area. The labels on your product may differ slightly from the ones shown here. Class 1 label Service warning label Communications Regulation Information vii Congratulations on the purchase of your new Macintosh. Your computer is designed to give you the highest performance combined with real ease of use—it’s easy to set up, easy to use, and easy to expand. This book will guide you through the setup procedure, tell you how to expand your Macintosh, and provide many tips on using your new system. Your Macintosh computer is powered by the new †microprocessor (or “chip”). This microprocessor was designed by Apple Computer, Inc., Motorola, Inc., and IBM Corporation. The †microprocessor uses Reduced Instruction Set Computing (RISC) technology to deliver very high performance at the lowest possible cost. The †RISC microprocessor represents the state of the art in microprocessor design. Your new Macintosh will run almost all your existing Macintosh software, but for best performance and greatest speed, look for the new software programs designed especially for Power Macintosh computers. You’ll find Power Macintosh programs at any software store that carries products for Macintosh. ix Welcome to Power Macintosh Ipart Chapter 1 Getting Started Chapter 2 Getting Help Chapter 3 Connecting Additional Equipment Chapter 4 Installing and Using Application Programs Chapter 5 Using the Optional CD-ROM Player The illustration on the next page shows all the equipment you will need to set up your computer and begin using it. (Note that your monitor and keyboard may look slightly different depending on what you purchased.) Place your equipment on a sturdy, flat surface near a grounded wall outlet. (Your computer was designed to be placed on the floor to conserve desk space, but it can also be placed on any stable, flat surface.) Before following the setup instructions in this chapter, you may want to read “Arranging Your Office” in Appendix A (in the section on health-related information) for tips on adjusting your work furniture so that you’re comfortable when using the computer. 1 1 Getting Started Follow the instructions in this chapter to set up your computer and learn the basics. Monitor power cord (sometimes built into the monitor) Computer power cord Monitor cable (sometimes built into the monitor) Mouse Keyboard Keyboard cable (sometimes built into the keyboard as shown here) Monitor Macintosh computer Apple PlainTalk Microphone (optional) Getting Started 3 Plugging in the computer Before you plug your Macintosh into a wall socket, carefully read all the setup instructions in this chapter. Then, before you connect anything to your Macintosh, follow the instructions in this section to plug it in. The plug grounds the computer and protects it from electrical damage while you are setting up. When you are ready to begin, follow these steps: 1 Plug the socket end of the computer’s power cord into the recessed power socket (marked with the symbol ≤) on the back of the computer. 2 Plug the other end of the power cord into a three-hole grounded outlet or power strip. Power cord plug Power cord socket WARNING This equipment is intended to be electrically grounded. Your Macintosh is equipped with a three-wire grounding plug—a plug that has a third (grounding) pin. This plug will fit only a grounded AC outlet. This is a safety feature. If you are unable to insert the plug into the outlet, contact a licensed electrician to replace the outlet with a properly grounded outlet. Do not defeat the purpose of the grounding plug! IMPORTANT The only way to disconnect power completely is to unplug the power cord. Make sure that at least one end of the power cord is within easy reach so that you can unplug the computer when you need to. Installing an expansion card If you purchased a monitor (video) card or other expansion card for your Macintosh, install it now. (See Appendix B, “Installing an Expansion Card,” for instructions.) Note: Some Power Macintosh 9500 models do not include a factory-installed monitor card, so that you can install your own monitor card. If you have one of these models, there is no monitor port on the back of the computer. You need to install your monitor card now. If you don’t have to install a monitor card or other expansion card, go on to the next section, “Connecting a Monitor.” Connecting a monitor You can connect many types of monitors to your Macintosh computer, including most standard monitors. See the Technical Information booklet that came with your computer for a complete list. This section contains instructions on connecting most types of monitors. Monitors from manufacturers other than Apple may require adapters for their monitor cables and power cords. If you are connecting a non-Apple monitor, also refer to the instructions that came with the monitor. 4 Chapter 1 Connecting the monitor power cord Monitors have two cords to connect: a power cord and a monitor cable. To connect the monitor power cord, follow these steps: 1 Place the monitor next to the computer. Keep these considerations in mind: m Allow a few inches for air circulation around the computer and monitor. m Make sure that the top of the screen is slightly below eye level when you’re sitting at the keyboard. m Position the monitor to minimize glare and reflections on the screen from overhead lights and windows. For further suggestions about locating your computer equipment, consult “Arranging Your Office” in Appendix A (in the section on health-related information). 2 Connect the monitor power cord to the monitor. On some monitors, the cord is already attached. Getting Started 5 3 Plug in the monitor power cord. Some monitor power cords are designed to plug into the back of your computer. Some monitor power cords must be connected to a grounded electrical outlet, not to the computer. Check the information that came with the monitor. Monitor power socket Monitor power cord 6 Chapter 1 Connecting the monitor cable After you plug in the monitor power cord, you connect the monitor cable to the computer’s monitor port. To connect the monitor cable, follow these steps: 1 Attach the monitor cable to the monitor. On some monitors, the cable is already attached. 2 Attach the monitor cable to the monitor port at the back of the computer. Video card Monitor cable Getting Started 7 8 Chapter 1 Connecting the mouse and keyboard You have a choice of several keyboards for your Macintosh. The way you connect the mouse and keyboard depends on whether the keyboard has a separate cable or a built-in cable. Connecting a keyboard with a built-in cable 1 Plug the mouse cable into the recessed port on the back of the keyboard. The plug and the port are marked with the ◊ icon (symbol). The positions of the port and icon on your keyboard may be different from those pictured. By the way: A port marked with the ◊ icon is called an Apple Desktop Bus (ADB) port. 2 Plug the keyboard cable into the port marked with the ◊ icon on the back of the computer. Some monitors have a port to which you can connect the keyboard or mouse. See the information that came with your monitor. This cable plugs into the Apple Desktop Bus (ADB) port, marked with the ◊ icon, on the back of the computer. Plug the mouse into the recessed port on the keyboard. The flat part of the plug should be pointing down, as shown here. Getting Started 9 Connecting a keyboard with a separate cable 1 Plug the mouse cable into the port on either side of the keyboard. Most right-handed people prefer to use the mouse with their right hand; most left-handed people prefer to use their left hand. Plug the mouse into the port on the side you prefer. The plug and the port are marked with the ◊ icon (symbol). Align the symbols before you insert the plug. (The positions of the port and icon on your keyboard may be different from those pictured here.) By the way: A port marked with the ◊ icon is called an Apple Desktop Bus (ADB) port. 2 Plug the keyboard cable (both ends are the same) into the other port on the keyboard. If you plugged the mouse cable in on the right, for example, plug the keyboard cable in on the left. 3 Plug the keyboard cable into the port marked with the ◊ icon on the back of the computer. Some monitors have a port to which you can connect the keyboard or mouse. See the information that came with your monitor. ADB icon Connecting other equipment If you are new to the Macintosh, it’s a good idea to get some experience using your computer before you connect other equipment, such as a printer or scanner. To learn basic Macintosh skills, continue with the instructions in this chapter. When you’re ready to connect other equipment to your Macintosh, see the instructions in Chapter 3. 10 Chapter 1 Turning the computer on To turn on the computer for the first time, follow these steps: 1 Turn on your computer by pressing the Power key on the keyboard. The Power key is marked with a triangle. Its location depends on which keyboard you have. You hear a tone from the computer as it starts up. Getting Started 11 2 Turn on your monitor. See the information that came with your monitor for the location of the power switch. On Apple monitors, the power switch is located on the front of the unit. By the way: You only need to turn on the monitor once. From now on, the monitor will turn off automatically when you shut down the computer, and it will turn on automatically when you start up the computer. (If the monitor is not plugged into the computer, it must be turned on separately each time you turn on the computer.) If you have extra DRAM installed in your computer, it can take several seconds for larger monitors to turn on. (The screen remains black.) 3 Check to see what’s on your screen. m If you see a message about saving energy, read the information and click “Close Message.” m If you see the Macintosh desktop, shown here, your system software is already set up correctly. Skip now to “What’s Next?” m If you see a blinking question mark, see “Solutions to Common Problems” in Chapter 6. m If you see anything else on your screen, or if you see nothing at all, see the next section, “Problems Turning Your Computer On?” 12 Chapter 1 Macintosh desktop Hard disk icon Problems turning your computer on? If you don’t see anything on the screen, check these items to see if you can identify the problem: m Is the computer plugged into a power source? If it is plugged into a power strip, is the power strip turned on? m Is the computer turned on? The power-on light on the front panel should be on. If it isn’t on, press the power button (marked with the symbol I). m Are the keyboard and mouse cables connected correctly? (Don’t connect or disconnect the keyboard or mouse cable while the computer is on. You could damage your equipment.) m Is the monitor power cord plugged in? m Is the monitor turned on? (Check the power-on light on the front of the monitor.) m Is the monitor cable attached firmly to both the monitor and computer? m Is the brightness control on the monitor adjusted correctly? (On most monitors, the brightness control is marked with the symbol ¤.) What’s next? You’ve finished setting up your computer. Continue with one of the following steps: m If you are new to the Macintosh, turn to the next section, “Learning the Basics.” m If you are an experienced Macintosh user, turn to Chapter 2, “Getting Help,” to learn about Macintosh Guide, your main source of information when you’re working with the Macintosh. m If you want to connect additional equipment, such as a microphone, to your computer, see Chapter 3 of this book for instructions. m If you want to install application software on your computer, see Chapter 4 of this book for information on setting up your programs and managing memory. You’ll need this information to properly set up any software programs specifically designed for Power Macintosh computers. IMPORTANT If you need to turn off your computer at any point, please see “Turning the Computer Off” later in this chapter. It is very important to use the correct procedure for shutting down your Macintosh before turning it off. Getting Started 13 Learning the basics If you are new to the Macintosh, you should begin by looking at the easy-touse program called the Macintosh Tutorial. The tutorial teaches you the basic skills you’ll need to use your computer. To start the tutorial, follow these steps: 1 Slide your mouse along your mouse pad or desk. Hold the mouse as shown, with the cable pointing away from you. Rest the heel of your palm on the desk and grasp the sides of the mouse between your thumb and fingers. Use your wrist and fingers to slide the mouse around with the index finger resting on the mouse button. Don’t press the mouse button (under your index finger). Notice that the arrow (8) on the screen moves in the same direction that you move the mouse. If the arrow doesn’t move, make sure that the cables connecting the mouse and keyboard are secure and that your mouse is positioned as shown in the illustration. Mouse button 14 Chapter 1 2 Move the tip of the arrow (8) to the question mark (h) in the upper-right portion of the screen. If you run out of room on your mouse pad or desk while moving the mouse, pick up the mouse and place it where there’s more room. (The arrow on the screen moves only when the mouse is in contact with the mouse pad or desk.) 3 With the tip of the arrow on the question mark, press and hold down the mouse button. A list of choices (called a menu) appears. This is the Guide (h) menu, which is the place to go when you have a question about how to use your computer. 4 While holding down the mouse button, move the arrow until the words “Macintosh Tutorial” are highlighted, then release the mouse button. A window appears welcoming you to the tutorial. You can set this book aside for now and follow the instructions on the screen. When you have completed the tutorial, return to this book. Getting Started 15 Reviewing the basics You can use the following illustrations to review the elements you use on your screen to do work with your computer. Menus The strip across the top of the screen is called the menu bar. The symbols and words in it represent menus of commands. To open a menu, place the pointer on the symbol or word for the menu and press the mouse button. 16 Chapter 1 Menu Window Icons Application menu You can have several application programs open at once. To see which program is active or to switch from one program to another, use this menu (called the Application menu). Guide menu To find an answer to a question, look in the Guide (h) menu. Icons Icons are small pictures that represent disks, programs, documents, and folders. You can double-click any icon to open it and see what it contains. This icon represents your computer’s internal hard disk. Icons like this one represent application programs, which you use to create documents and do other work. Icons like this one represent documents, which you can create and edit. Icons like this represent folders. A folder contains other icons. To throw away an item you no longer want, drag it to the Trash icon and choose Empty Trash from the Special menu. Windows Windows are boxes that display text, graphics, or icons. To change the shape or position of a window, or to close the window, use the elements shown here. Getting Started 17 Scroll arrow To bring hidden portions of a window’s contents into view, click one of the four scroll arrows. Close box To close a window, click the close box. Title bar To move a window, drag it by the middle of the title bar (anywhere in the bar except the small boxes). Size box To change the shape or size of a window, drag the size box. To bring a partially covered window to the front, click anywhere in it. 18 Chapter 1 Turning the computer off To turn your computer off, you choose Shut Down from the Special menu. Detailed instructions follow. 1 Move the tip of the arrow (8) to the word “Special” at the top center of the screen. If the word “Special” does not appear at the top of the screen, you’re working in the wrong program. Pull down the Application menu (to the right of the Guide [h] menu) and choose Finder. Then try step 1 again. 2 With the tip of the arrow on the word “Special,” press and hold down the mouse button. 3 While holding down the mouse button, move the arrow down until the words “Shut Down” are highlighted, then release the mouse button. Choosing Shut Down readies the hard disk for a fast restart next time you turn on the computer. It also prompts you to save any unsaved work on a disk before turning the power off. To turn the computer on again, just press the Power key on the keyboard. IMPORTANT The power button on the front of the computer should not be used to turn off your computer unless there is a problem that prevents it from being turned off with the Shut Down command. (You could lose unsaved work.) To make sure your work is saved, use the Shut Down command. Getting Started 19 Where to find answers When you have questions about using your Macintosh, there are several places you can look for answers. In this book Use this book to help you set up your computer and learn about it, or to find solutions to problems with your equipment. In the Guide menu The Guide menu (marked with the hicon) is your main source of information about the Macintosh. To learn how to get different kinds of help from the Guide menu, see Chapter 2 in this book. In other manuals For answers to questions about other equipment or about application programs you have purchased, see the manuals that came with the equipment or programs. In documents in the Apple Extras folder The Apple Extras folder on your hard disk contains a SimpleText document called About Apple Extras (often called a “Read Me” file) with important information about some of the application programs included with your computer. Read Me files can also be found inside application folders. From Apple’s customer support hotline If you can’t find an answer in any of the materials provided, call the customer support hotline. (The phone number for the hotline is in the service and support information that came with your computer.) If you have problems with a particular application program, contact the manufacturer of the program. User’s Guide Power Macintosh 21 The Guide menu is your main source of information when you’re working with your computer. The menu is identified by a question mark (h) in the upper-right corner of the screen. 2 Getting Help Use the instructions in this chapter to learn about the help available to you in the Guide menu. Getting answers to your questions When you have a question while working with your computer, you can get the answer by choosing Macintosh Guide from the Guide menu. 1 Pull down the Application menu (in the upper-right corner of the screen) and choose Finder to make it the active application program. A checkmark in the menu indicates that the Finder is the active program. 2 Pull down the Guide menu (marked with the hicon) and choose Macintosh Guide. The Macintosh Guide window appears. Whenever you use Macintosh Guide, its window remains in front of other windows. If the window gets in your way, you can move it by dragging its title bar (the gray bar across the top of the window). 22 Chapter 2 3 Notice the three buttons at the top of the window: Topics, Index, and Look For. Macintosh Guide gives you three ways of finding information: m Topics lets you choose from a list of general subjects; it is like the table of contents in a book. m Index lets you choose from an alphabetical list of more specific subjects; it is like the index in a book. m Look For lets you search for information related to a specific word or phrase that you type. In the following sections you will practice using each method. If you have problems while using Macintosh Guide, see “Tips for Using Macintosh Guide” at the end of this section. Getting answers with the Topics button 1 In the Macintosh Guide window, click the Topics button. A list of general topics appears on the left side of the Macintosh Guide window. (Depending on the hardware and software you have, the list of topics may look different.) Getting Help 23 2 Click “Customizing Your Computer” or “Setting Options” (whichever is available) in the list of topics. When you click any topic area, a list of related questions appears on the right side of the Macintosh Guide window. 3 Click the question “How do I set the time and date?” and then click OK. Or double-click the question. A small window appears with instructions for you to follow. 4 Read and follow the instructions in this window. Macintosh Guide provides step-by-step instructions to answer the question you selected. When you have completed each step, click the right arrow in the lower-right corner to see the next step. 5 When you have completed all the steps, click the Topics (or h) button in the lower-left corner to return to the main Macintosh Guide window. Now continue with the next section. 24 Chapter 2 Click here to see the next step (if there is one). To get instructions, click a question… …and then click OK. If you want to return to the main Macintosh Guide window, click this Topics button. (On some computers, it says “Topics.”) Getting answers with the Index button 1 In the Macintosh Guide window, click the Index button. An alphabetical list of subjects appears on the left side of the window. 2 Scroll through the alphabetical list until the phrase “background pattern” is visible. You can scroll through the list either by dragging the slider to the letter B or by using the scroll bar at the right of the list. 3 Click the phrase “background pattern” in the alphabetical list. When you click any index entry, a list of related questions appears on the right side of the Macintosh Guide window. Getting Help 25 Scroll bar Slider To get instructions, click a question… …and then click OK. 4 Click the question “How do I change the background pattern?” and then click OK. Or double-click the question. A small window appears with instructions for you to follow. 5 Read and follow the instructions in the window. Macintosh Guide provides step-by-step instructions to answer the question you selected. When you have completed each step, click the right arrow in the lower-right corner to see the next step. 6 When you have completed all the steps, click the Topics (or h) button in the lower-left corner to return to the main Macintosh Guide window. Now continue with the next section. 26 Chapter 2 Click here to see the next step (if there is one). If you want to return to the main Macintosh Guide window, click this Topics button. (On some computers, it says “Topics.”) Getting answers with the Look For button 1 In the Macintosh Guide window, click the Look For button. A small box appears on the left side of the window, where you can type text. 2 Click the arrow button to activate the text box. 3 Type “trash” in the text box and then click Search. When you click Search, a list of questions related to the word or phrase you typed appears on the right side of the Macintosh Guide window. Getting Help 27 To activate the text box, click here. Type a word or phrase in the text box… …and then click here. To get instructions, click a question… …and then click OK. 4 Click the question “How do I turn off the Empty Trash warning?” and then click OK. Or double-click the question. A small window appears with instructions for you to follow. 5 Read and follow the instructions in the window. Macintosh Guide provides step-by-step instructions to answer the question you selected. When you have completed each step, click the right arrow in the lower-right corner to display the next step. 6 When you have completed all the steps, click the close box in the upper-left corner to close Macintosh Guide. 28 Chapter 2 If you want to close Macintosh Guide, click here. Click here to see the next step (if there is one). Getting Help 29 Tips for using Macintosh Guide Here are a few tips for using Macintosh Guide effectively: m Macintosh Guide is available only when you are in the Finder—the desktop area where you can see the icons of disks, folders, and files. (Other programs may also have help available in the Guide menu, however.) If you don’t see Macintosh Guide in the Guide menu, pull down the Application menu (to the right of the Guide menu) and choose Finder. m Follow the steps when you’re instructed to; don’t skip ahead or read ahead. That way the computer can check to make sure you’ve done a step correctly. m Unlike most windows, the Macintosh Guide window stays in front of other windows on the screen so that your instructions are never covered. If you need to move the Guide window out of the way, drag it by the title bar at the top of the window. You can also move the window out of the way by clicking the zoom box. Click the box once to shrink the window; click it a second time to expand the window to its original size. m If you need more information about an instruction or a term, click the button labeled “Huh?” to get further explanation. (The “Huh?” button is dimmed when no additional information is available.) m If you want to return to the main Macintosh Guide window, click the Topics button in the lower-left corner of the Guide window. m When you’re finished using Macintosh Guide, click the close box in the upper-left corner of the window. Close box Title bar Zoom box Right arrow Topics button “Huh?” button 30 Chapter 2 Identifying objects on the screen Sometimes you’ll see an unfamiliar item on the screen and ask yourself, “What’s that?” You can get an answer by using a Macintosh feature known as Balloon Help. Balloon Help explains the function of icons, menus, commands, and other items on the Macintosh screen in balloons like those you see in comic strips. Follow these steps to use Balloon Help: 1 Pull down the Guide menu (marked with the hicon) and choose Show Balloons. 2 Point to any object on the screen that you want to identify. A balloon appears next to the object. In the following illustration, for example, pointing to the Trash displays a balloon that explains how to use the Trash to throw items away. Although balloons appear next to items when you point to them, the way you work does not change; you can still select icons, choose commands, and so on. 3 When you’re finished using Balloon Help, choose Hide Balloons from the Guide menu. Learning useful shortcuts You can perform many tasks in the Finder more quickly if you use keyboard or mouse shortcuts. For example, instead of clicking an icon and choosing Open from the File menu, you can simply double-click the icon to open it. Follow these steps to learn keyboard and mouse shortcuts: 1 Pull down the Guide menu (marked with the hicon) and choose Shortcuts. The main Macintosh Shortcuts window appears. 2 Click one of the category buttons. Another window appears, describing shortcuts for that category. Getting Help 31 If you want to close the window, click here. Click here to see the next window (if there is one). Click the Topics button to return to the main Macintosh Shortcuts window for more categories. 3 Read about the shortcuts available for the category you selected. Click the right arrow in the lower-right corner of the window to display the next window (if there is one). 4 When you finish reading about the shortcuts for your category, click the Topics button in the lower-left corner to return to the main Macintosh Shortcuts window. Or click the close box in the upper-left corner to close the window. 32 Chapter 2 33 3 Connecting Additional Equipment Your computer at a glance The illustration on the next page shows a basic Power Macintosh 9500 system, ready to use. (Remember that your monitor and keyboard may appear slightly different from the ones pictured here, depending on what you purchased.) You can also expand your computer system by connecting other equipment to it. The illustration on the facing page shows where equipment should be connected to your Macintosh. For instructions on connecting audio equipment or SCSI devices, refer to the next two sections of this chapter. For instructions on connecting other equipment, such as a CD-ROM player (also called a CD-ROM drive), see the manual that came with the equipment. IMPORTANT Make sure each device you add is compatible with your computer and does not exceed the maximum power allowance for that device. If it is a SCSI or ADB device, make sure to turn off your computer before connecting the device. For further information, consult your Apple-authorized dealer, the manufacturer of the component you want to add, or the Technical Information booklet that came with your computer. Read this chapter for information on expanding your computer system with additional hardware. 34 Chapter 3 Your computer’s ports and connectors SCSI port g Connects your Macintosh to SCSI equipment such as external hard disk drives and scanners. Ethernet port (AAUI) G Connects your Macintosh to a high-speed Ethernet network using an adapter. Ethernet port (10BASE-T) G Connects your Macintosh to a high-speed 10BASE-T Ethernet network. Modem port (GeoPort) W Connects an external modem or GeoPort Adapter to your Macintosh. Printer port (GeoPort) [ Connects your Macintosh to a printer, LocalTalk network, or GeoPort Adapter. Monitor port ™ Connects a monitor to a monitor (video) card. Monitor Microphone (optional) Keyboard Mouse CD-ROM drive (optional) Floppy disk drive Hard disk drive (internal) Power-on light A green light indicates that the computer is on. Power button CD-ROM drive Open/Close button Power key Use this key to turn your computer on and off. P Connecting Additional Equipment 35 Apple Desktop Bus V Connects your Macintosh to an input device, such as a (ADB) port keyboard or a trackball. Sound input port ≈ Connects your Macintosh to an Apple PlainTalk Microphone or other audio input equipment. Sound output port - Connects your Macintosh to headphones, externally powered (amplified) speakers, or other audio output equipment. Access covers for Your Macintosh supports up to six Peripheral Component expansion slots (6) Interconnect (PCI) cards. Security lock ports F You can attach a security lock to your Macintosh. See your computer products retailer for security lock devices that work with your computer. Monitor power socket Monitor port (optional) SCSI port Ethernet port (AAUI) Sound output port Apple Desktop Bus (ADB) port Sound input port Power socket Access covers for expansion slots (6) Security lock ports Modem port (GeoPort) Printer port (GeoPort) g G GEthernet port (10BASE-T) W [ ™ ≤ V ≈ - F Connecting audio equipment Your Macintosh can play and record stereo sound from a variety of sources. You can listen to or reproduce stereo sound by connecting audio equipment to the sound input and output ports on the computer. If you have an internal CD-ROM player, you can also use your computer to play and record sound from audio compact discs (CDs). For information on using Macintosh system software to choose audio input and output options, record an alert sound, or play audio CDs, see the “Sound” topic of Macintosh Guide, available in the Guide (h) menu. About your computer’s sound ports The sound input port is marked with an icon of a microphone. The sound output port is marked with an icon of a speaker. Sound input port Sound output port 36 Chapter 3 Connecting Additional Equipment 37 The computer’s sound ports accept these 3.5 mm audio connectors: The stereo miniplug is found most often on stereo equipment (for example, personal headphones). The extended miniplug is slightly longer and is found on voice-quality microphones (for example, the Apple PlainTalk Microphone). If your equipment has a different type of connector, you can purchase an adapter at an electronics supply store. Connecting audio equipment To play or record sound with your Macintosh, you can attach a microphone, amplifier, tape recorder, or a pair of speakers. For specific instructions on connecting a microphone, skip to the next section, “Connecting and Positioning a Microphone.” For specific instructions on connecting speakers, see “Connecting External Stereo Speakers,” later in this section. Follow these steps to connect audio equipment to the Macintosh: 1 Make sure that the audio equipment has a cable with a stereo miniplug connector. If it does not, attach an adapter that has a stereo miniplug. 2 Place the audio equipment near the Macintosh. 3 Shut down the Macintosh and turn off the audio equipment. 4 Attach the cable to the audio equipment and to the appropriate sound port on the Macintosh. To record incoming sound on the computer, connect the audio equipment to the sound input port (X). To record the sound produced by the computer or play that sound through external speakers, connect the audio equipment to the sound output port (-). 5 Turn on the computer and the audio equipment. Stereo miniplug Extended miniplug You’re now ready to begin listening to and working with sound. For more information on working with sound, see the “Sound” topic of Macintosh Guide, available in the Guide (h) menu. Connecting and positioning a microphone With appropriate software, you can use the Apple PlainTalk Microphone that comes with some Macintosh computers (or a compatible line-level microphone) to record your voice or other sounds. You can’t use the round, omnidirectional microphone supplied with some other Macintosh models. Follow these steps to connect and position the microphone: 1 Shut down the Macintosh. 2 Plug the microphone’s connector into the sound input port (X) on the back of the computer. 3 Place the microphone at the top center of the monitor, so that the microphone’s Apple (K) icon is facing you. Apple PlainTalk Microphone 38 Chapter 3 Connecting Additional Equipment 39 If you can’t place the microphone on top of the monitor, position the microphone according to these guidelines: m The microphone should be between 1 and 3 feet away from you. m The microphone should be directly in front of you to minimize the effect of background noises. 4 Turn on the computer. You’re now ready to begin using your microphone. Connecting external stereo speakers You can take advantage of your computer’s stereo sound output by attaching externally powered (amplified) speakers. 1 Assemble the speakers and the cable you need. You need a cable with a stereo miniplug at one end to connect one or both speakers to the computer. (Some speakers require a dual-plug adapter. Others, like those shown in the next illustration, accept a single stereo miniplug and are joined by standard speaker wires.) See the documentation that came with your speakers for more information. 2 Turn off the Macintosh. 3 Plug a stereo miniplug into the sound output port (-) on the Macintosh. 4 Connect the speakers together with speaker wires, if necessary. Your finished connections should look something like this: Audio In port Sound output port - Externally powered speakers 5 Turn on the computer. Now you hear the computer’s sound through the external speakers. Note: To control the volume of your external speakers, open the Sound control panel and choose Volumes in the pop-up menu. Use the Built-in Headphones slider to adjust the volume for your external speakers. If you are playing an audio CD, you may also need to adjust the volume control in the program you’re using to play CDs. Connecting external SCSI devices Your computer has a port for connecting devices that use the Small Computer System Interface (SCSI, pronounced “skuh-zee”). The SCSI port permits high-speed communication between the computer and the device. The SCSI icon appears above the port on the computer’s back panel. You can connect SCSI devices to the SCSI port in a chain. The first device in the chain plugs into the SCSI port; the second device plugs into the first device, and so on. SCSI devices commonly used with the Macintosh include hard disk drives, CD-ROM players, scanners, printers, and tape or cartridge backup drives. You can attach up to seven SCSI devices to the external SCSI port of your computer. Note: In addition to the external SCSI port, your computer has a second, internal SCSI interface. The internal hard disk drive that came with the computer and the optional CD-ROM player are connected to this internal SCSI interface. You can have an Apple-authorized dealer attach an additional device to the internal SCSI interface. For more information about the SCSI interfaces, see the Technical Information booklet that came with your computer. SCSI port SCSI icon 40 Chapter 3 IMPORTANT “Before You Connect a Device” and “Connecting a SCSI Device” contain general instructions for attaching SCSI devices to your computer. Be sure also to follow the specific instructions that came with your external hard disk drive or other SCSI device when connecting the device to your Macintosh. Before you connect a device Before you connect a SCSI device to your Macintosh, be sure to complete these tasks: m Install any necessary device drivers (software that makes a device work with your computer). Drivers needed for a SCSI device usually come on a floppy disk with the device. (If no drivers come with the device, then the device doesn’t need drivers.) Be sure the drivers are designed for Power Macintosh. m Make sure each SCSI device connected to your Macintosh has its own, unique ID number from 0 to 6 (or from 1 to 6 if you have a second internal hard disk installed). See the instructions that came with each SCSI device for information on checking and setting its SCSI ID number. IMPORTANT If you use two or more devices with the same ID number, your equipment could malfunction and you could lose data as a result. m Make sure you have the appropriate cable for attaching the SCSI device to your Macintosh. If the device is the first or only one you’re connecting, use a SCSI system cable to connect it to the computer’s SCSI port. Connecting Additional Equipment 41 If the device is not the first one, use a SCSI peripheral interface cable to connect it to the last device in the chain. IMPORTANT The total length of the cables in a SCSI chain should not exceed 6 meters (20 feet). SCSI cables must have a 110-ohm impedance. For best results, use SCSI cables manufactured by Apple Computer. m Make sure that the last (or only) device in the SCSI chain has a terminator. Make sure that no other external SCSI device has a terminator. To ensure accurate transmission of information, a terminator must be at each end of a SCSI chain. Some external SCSI devices from manufacturers other than Apple have built-in terminators. (Check the information that came with the device.) If the device at the end of the SCSI chain does not have a built-in terminator, you need to attach an external terminator. If your SCSI device has a built-in terminator, you may choose to use it as your first or last device in the chain, or you may have your Apple-authorized service provider remove any extra built-in terminators. You can attach or remove external terminators yourself. SCSI terminator 42 Chapter 3 Connecting a SCSI device Use these general instructions in conjunction with the instructions that came with your SCSI device: 1 Turn off your Macintosh. 2 Make sure the SCSI device is switched off. 3 Use a SCSI cable to connect the device either to the computer’s SCSI port or to the last SCSI device already in the chain. 4 Turn on the devices in your SCSI chain. IMPORTANT Always turn on any external SCSI devices connected to your Macintosh before turning on the computer itself. Otherwise, your computer won’t be able to recognize that the SCSI devices are connected to it and your computer may not be able to start. Note: If you experience problems after connecting a SCSI device, see the troubleshooting information in Chapter 6 for possible solutions. WARNING Do not connect or disconnect any device while the device or your Macintosh is turned on. Doing so could damage the device, your computer, or both. Connecting Additional Equipment 43 Expanding memory The dynamic random-access memory (DRAM) in your computer can be expanded. Installing additional DRAM adds more memory to your computer and expands its capabilities. The Technical Information booklet that came with your computer describes how much additional memory can be installed in your Power Macintosh. Memory for your computer is provided in packages called DRAM Dual Inline Memory Modules (DIMMs). The DIMMs must be the correct type for your computer. The memory used to display images on the screen (called video RAM, or VRAM) can also be expanded. It is very important that the DRAM DIMMs be correctly installed in your Power Macintosh, because incorrect installation can result in errors, unpredictable results, and damage to your equipment and data. Installing internal drives Your Macintosh can hold up to four internal storage devices. Possible configurations could include a floppy disk drive, a CD-ROM player, and two hard disk drives (several capacities are available) or a CD-ROM player, a floppy disk drive, a removable hard drive, and a DAT drive. Depending on the configuration you purchased, these storage devices may already be installed. If you want to add an internal drive to your Macintosh, see your Appleauthorized dealer. Refer to the Technical Information booklet that came with your Macintosh for more information about internal drives. WARNING To avoid damage to your computer, Apple recommends that only an Apple-certified technician install additional DRAM. Consult the service and support information that came with your computer for instructions on how to contact an Apple-authorized service provider or Apple for service. If you attempt to install additional DRAM yourself, any damage you may cause to your equipment will not be covered by the limited warranty on your computer. See an Apple-authorized dealer or service provider for additional information about this or any other warranty question. 44 Chapter 3 Connecting Additional Equipment Connecting network cables Your Macintosh can be connected to a high-speed Ethernet network via an AAUI Ethernet connector or a high-speed 10BASE-T Ethernet connector. You can also connect to a LocalTalk network. It is possible to be physically connected to more than one kind of network at the same time, but you can use only one of your connections at a time. If both 10BASE-T and AAUI networks are connected, your Macintosh automatically uses the 10BASE-T connection. If 10BASE-T and LocalTalk are connected, your Macintosh uses the 10BASE-T connection. If AAUI and LocalTalk are connected, your Macintosh uses the AAUI connection. About Macintosh networking Your Power Macintosh can connect to a network that consists of as few as two computers or as many as thousands or even millions of computers and other devices. The network allows you and the other people connected to it to share information, access remote services, and share computing resources such as printers and modems. A network extends the features of your Macintosh by extending your reach to the services and resources provided on the network. For example, your computer alone lets you store, retrieve, and modify information on floppy disks, hard disks, and CD-ROM discs. On a network, however, you can also store and retrieve information on the hard disks and CD-ROM discs of other computers, access information that other people have stored for you, or use mail or other network services. Your computer comes equipped with two built-in network interfaces: LocalTalk and Ethernet. You can also purchase additional Peripheral Component Interconnect (PCI) cards for alternative networks such as TokenRing, ISDN, or FDDI. To connect your computer to a network you need to do two things: connect your computer to the network using the appropriate cable, and set up your network configuration in the AppleTalk control panel, the TCP/IP control panel, or both. 45 To set up your network configuration, open the AppleTalk control panel to choose the physical network interface you are using. (The AppleTalk control panel also contains zone information—a default zone is chosen for you.) If you plan to use TCP/IP on your Power Macintosh, you also need to choose settings in the TCP/IP control panel. You can set up your connection in two ways: manually, by entering a static Internet address, or automatically by using a network service to connect with a dynamic Internet address. Refer to the “Networks” or “Networking & Communications” topic of Macintosh Guide, available in the Guide (h) menu for more information on setting up network configurations. If you’re using a static Internet address, you’ll need the following information before configuring your system (your network administrator or Internet access provider can provide this information): m Internet (IP) address: for example, 192.3.232.55 m Domain name and domain name server address: A domain connects an Internet address to a name for your site, for example, acme.com. Enter your Domain name or type a period (.). m Gateway address: This address provides the path the information will take through the network at your site to reach the Internet. m Subnet mask: A subnet mask further defines the location of your machine. You don’t need to change the default unless instructed to do so by your network administrator. If you’re using a server on the network that will be issuing you an Internet address using a technique called bootstrapping, then you need to decide what protocol you will use: BOOTP (BOOTstrap Protocol), or DHCP (Dynamic Host Configuration Protocol). Your network administrator will tell you which to choose. If you see an error message after configuring your AppleTalk and TCP/IP control panels, such as, “Unable to locate host,” or “Could not create a socket,” this could indicate a problem in the TCP/IP configuration. Contact your network administrator for additional assistance. 46 Chapter 3 47 Read this chapter for information on installing and working with application programs on your computer. Your computer has several application programs already installed, as well as some programs that need to be installed before you can use them. The programs that come with your computer include m AppleScript, which allows you to automate any actions you perform repeatedly on your Macintosh m Drive Setup, which enables you to initialize, test, and update hard disks and other storage media. Drive Setup lets you partition very large disks (up to 2 terabytes) m PowerTalk, which provides built-in mail and collaboration services m QuickDraw GX, which gives your computer more powerful printing and typographical capabilities m Text-to-speech software that allows your Macintosh to speak typed text in compatible applications such as SimpleText You’ll find most of these plus other programs in the Apple Extras folder on your hard disk. (Drive Setup is in the Utilities folder.) To find out if a program needs to be installed, look inside the program’s folder for an icon labeled Installer. If you find an Installer icon and want to use that program, doubleclick the Installer and follow the instructions on the screen. 4 Installing and Using Application Programs IMPORTANT If your computer did not come with a CD-ROM player and you did not get the CD-ROM disc that contains system software, be sure to make a backup copy of the programs in the Apple Extras folder. Backup copies allow you to restore your software if anything should go wrong. It is always a good idea to make backup copies of application programs and other software. Installing application programs You’ll probably want to buy and install additional programs. See the manuals you receive with your programs for instructions on installing and using them. In most cases, you’ll install an application program on your internal hard disk from a CD-ROM disc that contains the program. The illustration shows how to insert a CD-ROM disc into your computer’s disk drive, with the disc lying flat, label side up. For instructions on how to eject CD-ROM discs, see “Ejecting a CD-ROM Disc” in Chapter 5. Some application programs come on floppy disks. See the “Disks” topic of Macintosh Guide, available in the Guide (h) menu for information on inserting and ejecting floppy disks. 48 Chapter 4 To use your programs most effectively, follow these guidelines: m To avoid installation problems, turn off virus protection programs and use Apple Extensions Manager to turn off system extensions (except for Macintosh Easy Open) before you install any software. To start Apple Extensions Manager, restart your computer while holding down the space bar. Use Apple Extensions Manager to turn off all system extensions except Macintosh Easy Open (this extension is needed to rebuild the desktop correctly). To turn extensions back on, use Apple Extensions Manager to turn them on, then restart your computer. m Put only one copy of each program on your hard disk. Having more than one copy can cause errors. m Whenever you copy a program disk to your hard disk, be careful not to copy a System Folder. Always check to see what you’ve copied, and drag any extra System Folders to the Trash. m If a program malfunctions consistently, try installing a fresh copy. If that doesn’t help, find out from the software manufacturer whether your version of the program is compatible with the hardware and system software you’re using. Working with several programs at a time You can open as many application programs and desk accessories as your computer’s memory allows. All open programs are listed in the Application menu at the right end of the menu bar. The name of the active program (the one you’re using right now) has a checkmark next to it, and its icon appears in the menu bar. Installing and Using Application Programs 49 The Finder icon Commands to hide or display open windows A checkmark Open programs indicates the active program. 50 Finding out which programs are open If you have several programs and windows open, you can find out which program is active and which other programs are open by pulling down the Application menu. Switching programs You can switch to another open program or desk accessory by choosing its name from the Application menu. If a program’s icon is dimmed in the menu, that means its windows are hidden. Choosing the program from the Application menu displays its windows. You can also switch to another program by clicking in a window that belongs to an open program, by double-clicking a program icon, or by double-clicking the icon of a document that was created with the program. Hiding and showing windows on the desktop You can hide all windows except those of the active program by choosing Hide Others from the Application menu. The other programs remain open even though their windows are hidden. When you switch to another program, its windows become visible again. If you want to see all the open windows, choose Show All from the Application menu. Chapter 4 Backing up your files Making backup copies of important files is good protection against possible damage to the originals. m You can back up files stored on your hard disk by copying them to floppy disks. m You can back up an entire floppy disk by copying it to another floppy disk of the same capacity or larger, or by copying it to a hard disk. m You can use a commercial backup program to copy new and changed files from a hard disk to another hard disk, to a tape drive, or to a series of floppy disks. m If your computer is on a network, you may be able to back up files by copying them to a shared disk on the network. Using Power Macintosh application programs Your Power Macintosh is compatible with most application programs intended for use with Macintosh computers. But certain programs are designed especially for Power Macintosh computers. (These are sometimes called “native” applications.) You’ll find that these programs take best advantage of your computer’s speed. Special memory requirements Some Power Macintosh programs may be slightly larger than other programs and may take up more memory. If you find that you are running out of memory when you use your Power Macintosh programs, you can use space on your computer’s hard disk as additional memory. For instructions on how to use hard disk space as memory, see the “Memory” topic of Macintosh Guide, available in the Guide (h) menu. You can also have more memory added to your computer, as described in “Expanding Memory” in Chapter 3. Installing and Using Application Programs 51 Shared libraries Power Macintosh programs use special files called shared libraries. These files help Power Macintosh programs to run more efficiently, and can be used by more than one Power Macintosh program simultaneously. Any necessary shared libraries are installed automatically in the System Folder when you install Power Macintosh programs. If a Power Macintosh program requires a shared library and there is not enough memory available for the shared library, you’ll see a message that the program could not be opened because of insufficient system memory. If this happens, see the “Memory” topic of Macintosh Guide, available in the Guide (h) menu, for instructions on turning on virtual memory. If a required shared library is missing, you’ll see a message that the program could not be opened because the shared library could not be found. If this happens, follow the directions that came with your program to reinstall the program. If the shared library is still missing, contact the program’s manufacturer for assistance. 52 Chapter 4 53 This chapter provides information on the optional CD-ROM player. Refer to Appendix A, “Health, Safety, and Maintenance Tips” for information on the proper handling of these discs. Your internal CD-ROM (Compact Disc Read-Only Memory) player for Macintosh computers works with CD-ROM discs, standard audio compact discs (CDs), and single-session or multisession Photo CDs. Your CD-ROM player provides access to large amounts of information. However, you cannot save information on CD-ROM discs. ROM stands for read-only memory, meaning that the player cannot “write” information onto CD-ROM discs. A wide selection of CD-ROM discs is available for entertainment, education, and business. A typical disc can hold over 650 megabytes (MB) of information—the equivalent of 270,000 pages of text, up to 8 hours of speech or music (depending on the sound quality), hundreds of highresolution images, or any combination of text, sound, and graphics. 5 Using the Optional CD-ROM Player Read this chapter for information on using the internal CD-ROM player, if your computer has one. 54 Chapter 5 Inserting a CD-ROM disc Follow these instructions to insert a CD-ROM disc into your CD-ROM player. Then follow the instructions provided with your disc, as well as the instructions in this manual. 1 Start up your Macintosh computer, if it’s not already on. 2 Press the Open/Close button to open the tray of the CD-ROM player. The tray opens. 3 Place a CD-ROM disc in the tray, with the disc label facing up. Make sure the disc is lying flat and centered in the tray. If you are using a small (8 cm) disc, make sure it is centered within the inside ring on the tray. 4 Push the tray in, or press the Open/Close button, to close the tray. In a few moments, an icon for the CD-ROM disc appears on your screen. Open/Close button Using the Optional CD-ROM Player 55 Ejecting a CD-ROM disc Follow these instructions to open the tray and eject a CD-ROM disc from your computer. IMPORTANT You may not be able to eject a disc if it is being shared. To turn off file sharing, use the Sharing Setup control panel. 1 Open the tray. There are several ways to open the tray of your CD-ROM player. If a CD-ROM disc icon appears on your screen: m Select the disc icon on your screen and drag the icon to the Trash. m Click the disc icon, then choose the Put Away command in the File menu. m While the AppleCD Audio Player window is active, choose Eject CD from the File menu, or simultaneously press the x and E keys. (AppleCD Audio Player is a program that allows you to control your CD-ROM player and is available in the Apple [K] menu.) If no CD-ROM disc icon appears on your screen: m Press the Open/Close button for your CD-ROM player. 2 Take the CD-ROM disc out of the tray. Store your disc in a safe place, away from heat, dust, and moisture. 3 Push the tray in, or press the Open/Close button, to close the tray. To avoid possible damage to the tray or the CD-ROM player, keep the tray closed when you are not using it. Playing audio CDs With your CD-ROM player and your computer’s built-in speaker, you can play audio compact discs (CDs) or audio tracks on CD-ROM discs. You can also attach headphones or speakers to the computer to listen to audio CDs and audio tracks. See Chapter 3, “Connecting Additional Equipment,” for information on connecting sound equipment to your computer. To start, stop, and otherwise control audio discs, use the AppleCD Audio Player program, available in the Apple (K) menu. Your audio CD software will only play tracks that contain audio information. You can listen to an audio CD or audio tracks in the background while you do other work on your computer. For more information about playing audio CDs, see the “CD-ROM Discs” topic of Macintosh Guide, available in the Guide (h) menu. 56 Chapter 5 Using the Optional CD-ROM Player 57 Working with Photo CDs You can use your CD-ROM player to open Photo CD images stored on Photo CDs. A Photo CD image is a digitized version of a standard photograph that you can open and view on your computer screen. You can do many things with the images on your Photo CDs: m Open and view the images individually on your computer screen. m View the images on your computer screen in a series, as you would view a slide presentation. m Copy and save the images, print them, paste them into word-processing documents or other documents that accept graphics, and edit them with a graphics application program. Photo CD images are an excellent source of graphics for desktop publishing, multimedia presentations, business documents, and professional-quality graphic design. For more information on working with Photo CD images, see the “CD-ROM Discs” topic of Macintosh Guide, available in the Guide (h) menu. Sharing a CD-ROM disc over a network You can share a CD-ROM disc using your computer’s file-sharing feature. If the disc has audio portions, you will be able to hear the audio yourself, but other people on the network will not. Likewise, you cannot hear the audio portions of discs you access over a network. For further information about file sharing, see the “Networks and Telecommunications” or “Sharing Files” topic of Macintosh Guide, available in the Guide (h) menu. 58 Chapter 5 IpaIrt Chapter 6 Troubleshooting 61 Consult this chapter if you experience problems using your computer. When you have questions If you want to know how to do a particular task with your computer, refer to Macintosh Guide in the Guide (h) menu. For instructions on using Macintosh Guide, see Chapter 2 of this manual. If you have trouble While you’re using your computer, you may occasionally see a bomb icon or an error message, or the pointer (8) may “freeze” on the screen. If you have trouble with your computer, take a few minutes to read the information in this chapter. If your problem is related to a particular procedure, you should also look for information on that procedure in Macintosh Guide, available in the Guide (h) menu. For additional troubleshooting information and a list of common questions relating to your system software, see the “Troubleshooting” topic of Macintosh Guide. If you are unable to access Macintosh Guide (for example, if your screen is “frozen”), refer to this chapter to see if you can resolve the problem. 6 Troubleshooting Take your time When you see an error message, you don’t have to take action immediately. The message stays on the screen until you click the OK (or Restart) button or turn off the Macintosh. To help diagnose and correct the problem, gather as much information on the situation as you can. Then follow the instructions in the next section, “Start Over.” m Make a note of exactly what you were doing when the problem occurred. Write down the message on the screen and its ID number (if any). Also list the programs you were using and the names of any items you know have been added to the System Folder since the system software was installed. This information will help a service person diagnose the problem. (It is helpful to keep a printed copy of the items in your System Folder. For instructions on printing the contents of a folder, see the “Printing” or “Printing & Fonts” topic of Macintosh Guide, available in the Guide [h] menu.) m Check the screen for any clues. Is a menu selected? What programs and document icons are open? Note anything else that seems relevant. m If you were typing text and were not able to save it before the problem occurred, you can write down the parts of the text still visible on the screen so that some of your work will be easy to replace. m Ask other Macintosh users about the problem you’re having; they may have a solution for it. If you need repair service, consult the service and support information that came with your computer for instructions on how to contact an Appleauthorized service provider or Apple for assistance. If you know that the problem is with a particular application program, contact the manufacturer of that software for assistance. 62 Chapter 6 Start over Often you can eliminate a problem simply by clearing the computer’s memory and starting over. If you can, save any open documents before restarting the Macintosh. If your system is frozen and does not respond to anything you do, or if you have a “bomb” message on the screen, saving may not be possible. You can try pressing x-Option-Esc to quit the program in use when the problem occurred; if this works, you can then save the documents open in other programs before restarting. (Be sure to restart the computer immediately after you save your documents; quitting a program using x-Option-Esc may leave corrupt data in the computer’s memory. This corrupt data is erased when you restart the computer.) To restart your Macintosh, try the following solutions: m If you can, choose Restart from the Special menu or from the dialog box that’s on the screen. Dialog boxes contain messages from the computer. If something goes wrong, a message may appear on the screen, asking you to restart the computer. m If you can’t choose Restart, hold down the x and Control keys while you press the Power key on the keyboard (marked with a triangle). This key combination restarts the computer. (Use this key combination only when you can’t choose Restart from the Special menu.) m Turn off your computer with the power button on the front panel of the computer, wait at least 10 seconds, and then turn it on again. If the computer does not turn off, try pressing and holding down the power button for 3–4 seconds. m If the power button doesn’t turn off the computer, unplug your Macintosh. m If you suspect that the problem is with other equipment, such as a printer or an external hard disk that’s attached to your computer, turn that equipment off for 10 seconds or longer, then turn it on again and restart the Macintosh. Troubleshooting 63 Rebuild your desktop regularly A process known as “rebuilding the desktop” helps your Macintosh keep track of data on your startup disks. Although you usually use the hard disk in your computer as a startup disk, you can also start up from any other disk that has system software installed. It’s a good idea to rebuild the desktop of your startup disks regularly. To rebuild the desktop of a startup disk, follow these steps: 1 Hold down the Option and x keys while you start up your computer. Do not release the keys until you see a message asking whether you want to rebuild the desktop. 2 Click OK. Solutions to common problems This section contains descriptions of problems you could experience with your computer. Some problems may be caused by your CD-ROM player, so if you don’t find your problem here, be sure to check the section, “Solutions to CD-ROM Problems,” later in this chapter. The computer is turned on but the screen is dark. One of the following is probably the cause: m You have a screen saver program that darkens the screen when the computer has not been used for a certain period. Press a key or move the mouse to turn off the screen saver. m The computer is in sleep mode. Press a key on the keyboard and/or move the mouse. m The monitor’s brightness control (¤) is not adjusted properly. Check the monitor’s brightness control and turn it up if necessary. 64 Chapter 6 m The Macintosh or the monitor is not getting power. If you have a separate monitor, check that the monitor is plugged in and turned on, and that the monitor cable is firmly connected to both the computer and the monitor. Check that the computer’s power cord is firmly connected to the computer and plugged into a grounded electrical outlet, and that the outlet has power. If you have more than one monitor, and only one is dark, check that it is set up correctly in the Monitors control panel. For information on using more than one monitor, see the “Monitors” topic of Macintosh Guide, available in the Guide (h) menu. m If none of these steps solves the problem, you may need to reset your computer’s Parameter RAM (PRAM). Reset PRAM by turning off the computer and disconnecting all external SCSI devices. Next, restart the Macintosh while holding down the key combination x-Option-p-r. Wait for the second startup chime, then release the keys. (Note that the “caps lock” key must be in the up position. This procedure won’t work with the uppercase “P” and “R” keys.) If you are displaying video from your computer on a television screen, it is normal for your computer monitor to be dark. The computer’s clock keeps time inaccurately. Your computer has a clock that runs continuously. When the computer is turned off, a battery keeps the clock running. If your clock begins to keep time inaccurately, have an Apple-authorized service provider replace the battery. Consult the service and support information that came with your computer for instructions on how to contact an Apple-authorized service provider or Apple for assistance. Troubleshooting 65 When you start up, a disk icon with a blinking question mark appears in the middle of the screen. This icon indicates that your Macintosh cannot find the system software it needs to start up. One of the following is probably the cause: m Your computer may be having a problem recognizing external equipment that uses the Small Computer System Interface (SCSI). Shut down the computer, turn off all external SCSI equipment, and disconnect the first SCSI device in the chain from your computer’s SCSI port. Then restart the computer. If the computer starts up after you disconnect your SCSI equipment, refer to the manuals that came with the equipment for information on the proper way to connect SCSI equipment and assign SCSI ID numbers. If you have a printer connected to your computer’s SCSI port, make sure your printer is not supposed to be connected to the printer port instead. Check the manuals that came with your printer for information on how to properly connect it. m System software may not be installed on the startup hard disk, the system software may be damaged, or the hard disk may not be working properly. Start up your computer using the Disk Tools floppy disk or (if you have a built-in CD-ROM player) with the CD-ROM disc that contains system software. (For instructions on how to start up your computer from the CD-ROM disc, see “Starting Up From a CD-ROM Disc” in the section “Initializing a Hard Disk” later in this chapter.) Then follow the instructions in “Repairing a Damaged Disk” later in this chapter to test your startup hard disk and repair any damage. If repairing the disk doesn’t help, follow the instructions in “Installing or Reinstalling System Software” later in this chapter to reinstall system software on your startup hard disk. 66 Chapter 6 When you try to start up from a floppy disk, a disk icon with an X appears in the middle of the screen and the floppy disk is ejected. This icon indicates that the floppy disk you tried to start up from is not a startup disk. Wait a few seconds. The computer should start up from its internal hard disk. Make sure you insert floppy disks only after the computer has begun starting up. A “sad Macintosh” icon appears and the computer won’t start up. This icon indicates that your Macintosh cannot start up because of a problem with the system software or the computer hardware. Eject any floppy disks by turning off the computer and then holding down the mouse button while you turn the computer on again. Try starting up with the Disk Tools floppy disk or (if you have a built-in CD-ROM drive) with the CD-ROM disc that contains system software. (For instructions on how to start up your computer from the CD-ROM disc, see “Starting Up From a CD-ROM Disc” in the section “Initializing a Hard Disk” later in this chapter.) If the “sad Macintosh” icon appears again, consult the service and support information that came with your computer for information on contacting an Appleauthorized service provider or Apple for assistance. Troubleshooting 67 The hard disk icon does not appear on the desktop. If you don’t see a hard disk icon on the desktop, try the following: m Use the Drive Setup program to make the disk available. Drive Setup is located in the Utilities folder on your hard disk. For instructions, start Drive Setup, then choose Drive Setup Guide from the Guide (h) menu. m If the hard disk is internal, shut down your computer, wait at least 10 seconds, and then turn it on again. m If the hard disk is external, make sure that it is turned on and that its cable is connected firmly; then restart the Macintosh. m Check the ID numbers of all SCSI equipment connected to your computer. No two SCSI devices on the same SCSI chain can have the same ID number. In addition, there are special requirements for assigning SCSI ID numbers that don’t conflict with your computer or its internal storage devices. See Chapter 3 and the manuals that came with your SCSI equipment for information on setting SCSI ID numbers. m If the hard disk is your startup disk, start your computer using the Disk Tools floppy disk or (if you have a built-in CD-ROM player) with the CD-ROM disc that contains system software. (For instructions on how to start up your computer from the CD-ROM disc, see “Starting Up From a CD-ROM Disc” in the section “Initializing a Hard Disk” later in this chapter.) Then follow the instructions in “Repairing a Damaged Disk” later in this chapter to test your startup hard disk and repair any damage. If repairing the disk doesn’t help, follow the instructions in “Installing or Reinstalling System Software” later in this chapter to reinstall system software on your startup hard disk. Icons do not appear correctly on your screen. You need to rebuild the desktop—a process that helps your Macintosh keep track of files and folders on your hard disk. For instructions, see “Rebuild Your Desktop Regularly” in the section “If You Have Trouble” earlier in this chapter. If icons do not appear correctly after you rebuild the desktop, restart your computer while pressing the Shift key to temporarily turn off system extensions. When you see the “Welcome to Macintosh—extensions off” message, release the Shift key and press the Option and x keys simultaneously until you see a message asking if you want to rebuild the desktop. 68 Chapter 6 Your Macintosh can’t read a floppy disk. If you see a message that a floppy disk is unreadable, try one of the following: m If the disk has never been used, you may simply need to initialize it. For instructions, see the “Disks” topic of Macintosh Guide, available in the Guide (h) menu. m The disk may be damaged. See “Repairing a Damaged Disk” later in this chapter for information on testing and repairing disks. m If the disk is a high-density disk previously used on another computer, the disk may have been formatted incorrectly as an 800K disk rather than as a 1440K (high-density) disk. If so, use the other computer to copy the disk’s contents onto a properly formatted disk. m The disk may have been formatted for use on another kind of computer. You may be able to use a program that lets you work with such disks on your Macintosh. If you are trying unsuccessfully to use a DOS floppy disk, consider the following: m Make sure Macintosh PC Exchange is installed and turned on. Macintosh PC Exchange is a control panel that allows your Macintosh to read files from DOS computers. m When formatting floppy disks on a DOS computer for use in a Macintosh, you need to format standard double-sided disks as 720K disks and highdensity disks as 1440K disks. Double-sided disks formatted in 1440K format and high-density disks formatted in 720K format may not work in a Macintosh. If you think your DOS floppy disk might have a format that doesn’t work with a Macintosh, use a DOS computer to copy the contents of the disk onto a properly formatted disk. Troubleshooting 69 You can’t eject a floppy disk If you can’t eject a floppy disk in the usual way, try the following in order: m Hold down the x and Shift keys and press the number 1 key on your keyboard to eject a disk in the internal disk drive. m Turn off the computer. If the disk isn’t ejected, then hold down the button on your mouse or other pointing device while you turn the computer on again. m Locate the small hole near the disk drive’s opening, and carefully insert the end of a large straightened paper clip into it. Push gently until the disk is ejected. Do not use excessive force. If none of these solutions work, take the computer or disk drive to your Apple-authorized service provider to have the disk removed. You installed a CD-ROM player after you bought your computer and your computer won’t restart after you’ve copied software for your CD-ROM player to the System Folder. m If you attempt to install software for your CD-ROM player without using the Installer, you may not be able to restart your computer. Restart the computer with the Shift key held down (to turn off system extensions), then remove any CD-ROM software files you copied by dragging them to the Trash. Reinstall the software according to the instructions that came with the drive. If this procedure doesn’t solve the problem, start your computer using the Disk Tools floppy disk or the CD-ROM disc containing system software that came with your computer. (For instructions on starting your computer using a floppy disk, see “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk,” later in this chapter.) 70 Chapter 6 Your computer won’t restart and there is a CD-ROM disc inside the CD-ROM player. m Your computer may be trying to start up from the CD-ROM disc. Press the Open/Close button on the front of the computer to open the tray, and remove the CD-ROM disc. Close the tray, then restart your computer. Your computer starts up and you see large folder-shaped areas, containing labeled pictorial buttons, instead of the usual Macintosh desktop. m Your computer may have started up from a CD-ROM disc containing At Ease, an alternative to the Macintosh desktop. You need to have the Macintosh desktop on your screen before you can use the installation instructions in this manual. To return to the Macintosh desktop, choose Shut Down from the Special menu. When your computer is off, press the Open/Close button of your CD-ROM player to open the tray, then remove the CD. Close the tray. Then start up your computer again. To avoid having the computer start up from a CD-ROM disc, remember to remove any disc in the drive before you shut down your computer. You can’t start an application program or it quits unexpectedly. Or, when you try to open a program, you see a message that not enough memory is available. One of the following is probably the cause: m The Macintosh ran out of memory. Quit the programs that you have open and then open the program you want to use, or restart your Macintosh. Use the Memory control panel to turn on virtual memory. (This is especially important if you have a Power Macintosh computer or Power Macintosh upgrade card and are using programs designed specifically for the Power Macintosh.) For more information on virtual memory, see the “Memory” topic of Macintosh Guide, available in the Guide (h) menu. m The program needs more memory. Use the program’s Info window to give it more memory. For more information on increasing a program’s memory, see the “Memory” topic of Macintosh Guide, available in the Guide (h) menu. Troubleshooting 71 m The program is a 68K application running in emulation mode that requires a separate floating-point unit (FPU). It cannot use the built-in FPU on your computer’s microprocessor. Check the documentation that came with the program to find out if the program requires the FPU found in the 68K chip. If it does, you may need to upgrade to a Power Macintosh version of the program, or install software that emulates the 68K FPU. m Sometimes incompatible system extensions or control panels can cause software problems. Restart while holding down the Shift key to temporarily turn off all system extensions. If your program works normally after you do this, use the Extensions Manager control panel to turn off individual extensions and control panels. For detailed instructions, see the “Customizing Your Computer” or “Setting Options” topic of Macintosh Guide, available in the Guide (h) menu. If your program performs better when a particular extension or control panel is turned off, contact the software’s manufacturer for information or an upgrade. A dialog box with a bomb appears. Your system has a software problem. m Write down what you were doing when the message appeared, and write down the message. m Restart your Macintosh. (See “Start Over” in the section “If You Have Trouble,” earlier in this chapter, for instructions.) Most software problems are temporary, and restarting usually corrects the problem. m Check the startup disk and application program you were using when the dialog box appeared. Make sure that all programs, desk accessories, and system extensions you’re using are compatible with the system software. Reinstalling the system software may correct the problem. m If the bomb only occurs in one application program, try reinstalling the program from the original disks. If reinstalling doesn’t solve the problem, contact the manufacturer of the program. 72 Chapter 6 m Sometimes incompatible system extensions or control panels can cause system software problems. Restart while holding down the Shift key to temporarily turn off all system extensions. If your computer works normally after you do this, use the Extensions Manager control panel to turn off individual extensions and control panels. For detailed instructions, see the “Customizing Your Computer” or “Setting Options” topic of Macintosh Guide, available in the Guide (h) menu. If your computer performs better when a particular extension or control panel is turned off, contact the extension’s or control panel’s manufacturer for information or an upgrade. m If the problem recurs, you may need to reinstall system software. See “Installing or Reinstalling System Software” later in this chapter for instructions. The pointer (8) doesn’t move when you move the mouse. One of the following situations is probably the cause: m Your system has a software problem. Press x-Option-Esc to quit the application program in use when the problem occurred. If this works, you can save the documents open in other programs before restarting. If that doesn’t solve the problem, follow the suggestions in the previous section, “A Dialog Box With a Bomb Appears.” m Your keyboard or mouse cable connection may have been loosened or disconnected. Turn the computer off using the power button on the front of the computer, check that the mouse and keyboard cables are connected properly, and then restart the computer. IMPORTANT Do not connect or disconnect the mouse or keyboard while the computer is turned on. You may damage your computer. Troubleshooting 73 m Signals from the mouse are not reaching the computer, either because the mouse needs cleaning or because there is something wrong with the mouse. Clean the mouse according to the instructions in Appendix A of this book. If you have another mouse or pointing device, try connecting and using it. (Turn off the computer before connecting it.) If the new device works, there is probably something wrong with the mouse you replaced. If none of these procedures solves the problem, consult the service and support information that came with your computer for instructions on how to contact an Apple-authorized service provider or Apple for assistance. Typing on the keyboard produces nothing on the screen. One of the following is probably the cause: m If the computer beeps every time you press a key, Easy Access is probably turned on. Open Easy Access from the control panels listed under the Apple () menu and turn it off. m You haven’t selected any text or set the insertion point (i). Make sure the program you want to type in is the active program. Then place the pointer (8) in the active window and click to set an insertion point (i) or drag to select text (if you want to replace the text with your typing). m The keyboard is not connected properly. Turn off the computer using the power button on the front of the computer, then check that the keyboard cable is connected properly at both ends. If you have a keyboard with an ADB port (marked with the ◊ icon) on each end, turn off the Macintosh using the power button and plug the keyboard cable into the other ADB port on the keyboard. (You may have to unplug the mouse to do this.) Then restart the computer. m The keyboard is damaged. If you have access to another keyboard, try using it instead. (Turn the computer off before connecting it.) If the new keyboard works, there is probably something wrong with the one you replaced. 74 Chapter 6 m Your system has a software problem. Restart your Macintosh. For instructions, see “Start Over” in the section “If You Have Trouble” earlier in this chapter. Check the startup disk and application program you were using when the problem occurred. Make sure that all programs, desk accessories, and system extensions you’re using are compatible with the system software. If the problem recurs, try restarting the computer with system extensions turned off. (To turn system extension off, hold down the Shift key while restarting the computer.) If that doesn’t work, you may need to reinstall system software. See “Installing or Reinstalling System Software” later in this chapter for instructions. If none of these procedures solves the problem, consult the service and support information that came with your computer for instructions on how to contact an Apple-authorized service provider or Apple for assistance. You can’t open a document, or you see a message that an application program can’t be found. m Some documents can be opened by more than one application program. Try starting a program that you think might be able to open the document, then choose Open from the program’s File menu to try to open the document. m Purchase and install the correct software to use the document, or find out if the creator of the document can convert it to a form that one of your programs can use. m Don’t try to open the files in your System Folder. Most of the files in your System Folder are used by your computer for internal purposes and are not intended to be opened. m Rebuild your desktop by holding down the Shift key while starting up your computer. Keep holding down the Shift key until you see a message that extensions are turned off; then hold down the Option and x keys. Keep holding down the Option and x keys until you see a message asking whether you want to rebuild the desktop. Click OK. m If the document is from a DOS computer, use the PC Exchange control panel to specify which Macintosh program will open the document. For information about working with DOS documents on your Macintosh, see the information about DOS in Macintosh Guide, available in the Guide (h) menu. Troubleshooting 75 You experience problems using a document from a DOS computer. If you can’t open a DOS document using a Macintosh program, try the following: m Open the document from within the program by choosing Open in the program’s File menu. m Use the PC Exchange control panel to specify which Macintosh program will open the document. If a DOS document is displayed incorrectly, or you see strange codes or characters in the document, try one of the following: m Your application program may have special procedures for opening and saving documents with different file formats. See the information that came with your program. m Try opening the document in another program. Note: Some characters that can be displayed on the Macintosh are not accurately displayed on DOS computers, and vice versa. For more information about working with DOS documents on your Macintosh, see the information about DOS in Macintosh Guide, available in the Guide (h) menu. You see a message that your application program can’t be opened because a file can’t be found. Power Macintosh programs use special files called shared libraries. Any necessary shared libraries should be installed automatically when you install Power Macintosh programs. Follow the directions that came with your program to reinstall the program. If the shared library is still missing, contact the software program’s manufacturer for assistance. 76 Chapter 6 77 You experience problems using an older Macintosh program. Some older Macintosh programs are not completely compatible with Power Macintosh computers. Check with the program’s manufacturer for compatibility and upgrade information. Open the Memory control panel and turn off Modern Memory Manager. For more detailed instructions, see the “Working with Programs” topic of Macintosh Guide, available in the Guide (h) menu. Solutions to CD-ROM problems Problems using the CD-ROM player The CD-ROM player icon does not appear on screen. m If you have other internal SCSI devices attached to your computer, make sure that each device has a unique SCSI ID number. (If your CD-ROM player was installed in your computer at the factory, it has SCSI ID 3.) Refer to the documentation that came with your SCSI devices if you need to reset SCSI ID numbers. Note: Your computer also has an external SCSI connector. All devices on the same SCSI chain must have unique ID numbers, but devices on different SCSI chains may use the same SCSI ID number. (For example, you could have a CD-ROM player with ID number 3 connected to the internal SCSI chain and a tape drive with ID number 3 connected to the external SCSI chain.) m If you installed a CD-ROM player after you bought your computer, make sure the CD-ROM software that came with the drive is installed. See the manual that came with the CD-ROM player for software installation instructions. m If you reinstall the CD-ROM software, make sure to restart your computer after you reinstall the software. Troubleshooting If you installed a CD-ROM player after you bought your computer and your computer won’t restart after you’ve copied software for your CD-ROM player to the System Folder. m If you attempt to install software for your CD-ROM player without using the Installer, you may not be able to restart your computer. Restart the computer while holding down the Shift key (to turn off system extensions), and then remove any CD-ROM software files you copied by dragging them to the Trash. Reinstall the software according to the instructions that came with the drive. If this procedure doesn’t solve the problem, start your computer using the Disk Tools floppy disk. (For instructions on starting your computer using a floppy disk, see “Starting Up From a Floppy Disk,” later in this chapter.) Your computer starts up and you see large folder-shaped areas, containing labeled pictorial buttons, instead of the usual Macintosh desktop. m Your computer may have started up from a CD-ROM disc containing At Ease, an alternative to the Macintosh desktop. You need to have the Macintosh desktop on your screen before you can use any of the installation instructions in this manual. To return to the Macintosh desktop, choose Shut Down from the Special menu. When your computer is off, press the Open/Close button of your CD-ROM player to open the tray, then remove the CD-ROM disc. Close the tray. Then start up your computer again. To avoid having the computer start up from a CD-ROM disc, remember to remove any disc in the CD-ROM player before you shut down your computer. 78 Chapter 6 The tray of your CD-ROM player won’t open. If a CD-ROM disc icon appears on your screen: m Drag the disc icon to the Trash, or select it and choose Put Away from the File menu. If the AppleCD Audio Player program is active, choose Eject CD from the File menu. If you see a message that a disc can’t be put away because it is being shared, turn off file sharing, then try again to put away the disc. If no CD-ROM disc icon appears on your screen: m Press the Open/Close button for your CD-ROM player. m The signal to open the tray may not be reaching the computer. Turn off your computer and locate the small pinhole to the lower right of the CD-ROM tray opening. Insert the end of a large, straightened paper clip firmly and horizontally into the pinhole. Push gently until the tray is released, then carefully pull the tray open. Do not force the tray open; wait until the paper clip has dislodged it or you may break the front of the tray. If neither of these suggestions works, your CD-ROM player may be damaged. Contact an Apple-authorized service provider or Apple for further assistance. Your computer won’t restart, and a CD-ROM disc is in the CD-ROM player. m Your computer may be trying to start up from the CD-ROM disc. Press the Open/Close button of your CD-ROM player to open the tray, and remove the CD-ROM disc. Close the tray, then restart your computer. WARNING Turn off your computer before you attempt to eject the tray using a paper clip. If you don’t, you may damage the CD-ROM player. Troubleshooting 79 Problems with CD-ROM discs You insert a CD-ROM disc, but its icon doesn’t appear on the Macintosh desktop. m Make sure that the disc label is facing up and the disc is centered in the tray. If you’re using a small (8 cm) disc, make sure it is within the tray’s inner ring. m Make sure the tray is closed all the way. m Try restarting your computer. m Try starting your computer from the CD-ROM disc that contains system software while holding the “c” key down. If only the hard drive icon appears on the desktop, then there may be a hardware problem with your CD-ROM player. If the CD-ROM icon appears above the hard drive icon, try reinstalling your CD-ROM software following the instructions in “Installing or Reinstalling CD-ROM Software.” m If you installed the CD-ROM player after you bought your computer, make sure the CD-ROM software is installed. (Refer to the documentation that came with the CD-ROM player.) CD-ROM software is already installed on Macintosh computers that come with CD-ROM players. You can reinstall it by following the procedure in “Installing or Reinstalling CD-ROM Software” later in this chapter. Your computer displays the message “This is not a Macintosh disk: Do you want to initialize it?” when you insert a CD-ROM disc in the CD-ROM player. m Make sure that the Foreign File Access and/or Audio CD Access CD-ROM extensions are installed in your System Folder and are turned on. (If they are not turned on, use the Extensions Manager control panel to turn them on and then restart your computer.) m Make sure the CD-ROM software is installed. (The CD-ROM software is already installed on Macintosh computers that come with CD-ROM players.) If you installed a CD-ROM player after buying your computer, see the manual that came with your player. m The disc may use a format that the Macintosh cannot recognize. 80 Chapter 6 Your computer ejects a CD-ROM disc without giving you any error message. m Make sure the disc is flat in the tray and the disc label is facing up. If you’re using a small (8 cm) disc, make sure it’s centered within the tray’s inner ring. m The disc may need to be cleaned. (See “Handling CD-ROM Discs” in the section “Handling Your Equipment” in Appendix A.) If there are visible scratches on the shiny side of the disc, you may be able to remove them with a CD polishing kit (available from your audio CD dealer). If the scratches can’t be removed, you’ll need to replace the disc. m The disc may be damaged. Try another disc in the drive, and try the original disc in another drive. If the original drive reads other discs or if the original disc doesn’t work in another drive, the disc is probably damaged. You’ll need to replace the disc. You can’t open a document on a CD-ROM disc. m Try opening the application program first; then open the document. m Read the manual that came with your CD-ROM disc. Some discs come with software that you need to install on your computer before using the disc. You can’t save changes you make to information on a CD-ROM disc. m CD-ROM is a read-only medium. This means that information can be read (retrieved) from it, but not written (stored) on it. You can save the changed information on a hard disk or floppy disk. Problems using ISO 9660 or High Sierra discs You cannot access files on a CD-ROM disc that uses the ISO 9660 or High Sierra format. m Discs in the ISO 9660 and High Sierra disc formats have version numbers attached to file names. Some application programs need these version numbers in order to work with files. To make the version numbers available to programs on your computer, follow these instructions: Drag the CD icon to the Trash. When the tray opens, hold down the Option key and push the tray back in, continuing to hold down the Option key until the disc is fully in the drive. The program you are using should now be able to locate file names on that CD-ROM disc. Troubleshooting 81 Problems playing audio CDs You don’t hear any sound when you play an audio CD or an audio track on a CD-ROM disc using the AppleCD Audio Player. m If your CD-ROM player was installed after you bought your computer, make sure the audio cable is properly connected. See the documentation that came with the CD-ROM player for more information. m If you have headphones or speakers connected to the computer, adjust the connector to make sure they are firmly connected. Make sure the volume control on your headphones or speakers is not turned down too low. m If you do not have headphones or speakers connected to the computer, make sure that nothing else is plugged into the sound output port on your computer. m Some programs change the sound options to suit their needs. You may need to reset the sound options in a control panel. Refer to the “Sound” topic of Macintosh Guide available in the Guide (h) menu. m If you are using a CD-ROM disc over a network, you won’t be able to hear the audio portion. m Make sure the volume is turned up in the AppleCD Audio Player. With the Audio Player open, drag the volume control slider up or press the Up Arrow key on your keyboard. m The CD may have been paused. Click the Play/Pause button once or twice. While playing an audio track on a CD-ROM disc that combines audio tracks and data, you double-click the disc icon and the audio track stops playing. m You can’t open data files on a CD-ROM disc and listen to audio tracks on that disc at the same time. You are unable to record sound from an audio CD. m Check your computer’s sound input port to see if a microphone or other device is connected. m You may need to reset the sound options in a control panel. Refer to the “Sound” topic of Macintosh Guide, available in the Guide (h) menu. 82 Chapter 6 Problems using Photo CDs Your CD-ROM player will not open Photo CDs. m Reinstall the CD-ROM software (available through the “MultiMedia Software” option in Custom Install when you reinstall system software). Your computer does not display color icons for individual images on a Photo CD. m Your system may be low on memory. To view color icons, restart your computer and then reopen the Photos folder. See the “Memory” topic of Macintosh Guide, available in the Guide (h) menu for more information on managing memory. After you open an image on a Photo CD, the image is scrambled, colors are displayed incorrectly, or no image appears in the window. m The program you are using may not be designed to work with large (highresolution) image files. You can open the image with another program or you can assign more memory to the program. (For more information on managing memory, see the “Memory” topic of Macintosh Guide, available in the Guide (h) menu.) After you open an image on a Photo CD, your system is “frozen” and does not respond to any input, or you have a “bomb” message on your screen. m Restart your Macintosh. The program you are using may not be designed to work with large (high-resolution) image files. You can open the image with another program or you can assign more memory to the program. (For more information on managing memory, see the “Memory” topic of Macintosh Guide available in the Guide (h) menu.) Troubleshooting 83 If your computer’s performance decreases If you notice a decrease in your computer’s speed and general performance after you add special software like a control panel, system extension, or custom utility, it may be because this software does not work well with Power Macintosh computers. m To find out if a system extension is the problem, hold down the Shift key while you restart the computer. This temporarily turns off system extensions. If the computer performs better without this software, one of the system extensions is likely to be the problem. (If you just added a new system extension, it is the most probable cause of the problem.) Return the system extensions to the System Folder one at a time, restarting and checking your computer’s performance each time until you identify the extension that is causing problems. Contact the software’s manufacturer for information or an upgrade. m To find out if a new control panel or custom utility you’ve added is the problem, drag it out of the System Folder. (This software may be in the Control Panels or elsewhere inside the System Folder.) Next, restart your computer and check its performance. If there’s an improvement, the new software was probably the cause of the problem. Contact the software’s manufacturer for information or an upgrade. If you don’t know which control panel or custom utility is causing the problem, you can drag all of these items out of the System Folder and restart the computer. If the computer performs better when the software is removed, you need to find out which item is causing the problem. Return the control panels and custom utilities to the System folder one at a time, restarting and checking your computer’s performance each time until you identify the one that is causing problems. If you still do not notice an improvement, follow the instructions in “Installing or Reinstalling System Software” later in this chapter to reinstall system software on your startup hard disk. 84 Chapter 6 Solving printer problems m All printers: Check your printer settings in the Chooser, making sure you have selected the correct printer. Next, turn off the computer and printer and check the printer cable connections. If neither of these suggestions solves the problem, reinstall your printer driver (this software probably came with your printer on a floppy disk). m Personal LaserWriter LS, LaserWriter Select 300, and Personal LaserWriter 300: The system software installed on your computer includes a new version (version 1.2) of the Personal LaserWriter 300 printer driver. This driver works with all three of these printers. Do not install your older Personal LaserWriter LS or LaserWriter Select 300 drivers; the older printer drivers are not compatible with Power Macintosh computers. m StyleWriter and StyleWriter II printers: The system software installed on your computer includes a new version (version 2.0) of the StyleWriter I/II printer driver. This driver works with both the StyleWriter II and the StyleWriter printers. Do not install your older StyleWriter driver; the older driver is not compatible with Power Macintosh computers. If your printer is different from the ones just mentioned, its driver may not be included on the Power Macintosh hard disk. You should install the driver for your printer if you encounter printing problems. Install the driver from the disks that came with the printer. Troubleshooting 85 Obtaining updated Apple software Apple software updates include all of the latest versions of Apple software, including most printer drivers, System Enablers, and updates to utilities, networking, and communication software. IMPORTANT Be sure to read the posted Apple Software License Agreement before installing any software. Currently, Apple’s Customer Service Division (CSD) posts Apple software updates to the following online services: m AppleLink m CompuServe m Internet: Apple Computer Higher Education gopher server m Internet: ftp.info.apple.com (formerly ftp.austin.apple.com) m Internet: ftp.support.apple.com Specific paths and details for each service follow. AppleLink Apple software updates are posted to the APPLE SW UPDATES board located in the following path: AppleLink Services (main window) Software Sampler Apple SW Updates eWorld Apple software updates are posted to the Apple Software Updates board located in the following path: Computer Center Apple Customer Center Apple Software Updates 86 Chapter 6 CompuServe Apple software updates are posted to two separate areas on CompuServe: Apple Support Forum and Apple New Updates. All updates are posted simultaneously to both areas. Updates are removed from the Apple New Updates area after three weeks. Apple Support Forum (GO APLSUP) contains all software and information libraries. Software is organized by category into separate libraries, including m System Software m Apple II m Newton m System Enablers m Printing m Display & Peripheral Software m Networking & Communications m DOS & Windows Apple New Updates (GO APLNEW) contains all recently published Apple software updates, allowing you to download the latest and most popular Apple Software Updates quickly and easily. Troubleshooting 87 Internet: Apple Computer Higher Education gopher server Apple recommends using TurboGopher client software to access the Apple Computer Higher Education gopher server. The “Apple Support Area” folder is located in the following path: Home Gopher Server Computer Information Apple Computer Higher Education gopher server Apple Support Area Apple SW Updates TurboGopher Client software is available via anonymous File Transfer Protocol (ftp) to boombox.micro.umn.edu in the /pub/gopher directory. m Host name: info.hed.apple.com Internet: ftp.info.apple.com This is a File Transfer Protocol (ftp) server with all of the latest Apple software updates. (This ftp site was formerly called ftp.austin.apple.com) m Host name: ftp.info.apple.com, IP number is: 204.96.16.4 m Path: ftp/Apple.Support.Area/Apple.SW.Updates You can also download Apple software updates via Apple’s Worldwide Web server, www.info.apple.com. The Apple web site allows you an easy way to download Apple software updates from ftp.info.apple.com. m URL for the Apple web site is: http://www.info.apple.com m IP number for the Web site is: 204.96.16.2 88 Chapter 6 Internet: ftp.support.apple.com This is a File Transfer Protocol (ftp) server with all of the latest Apple software updates. m Host name: ftp.support.apple.com. m IP number: 130.43.6.3 m Path: /pub/Apple SW Updates America Online ftp (file transfer protocol) gateway You can log onto our ftp.info.apple.com server via the America Online ftp gateway. You need an America Online account. Once online, follow these steps: 1 Use the keyword “ftp” to take you to the ftp area. 2 Click the FTP button (icon of disk with sunglasses). 3 In the favorite sites list, double-click “ftp.info.apple.com”. A dialog box will appear with the ftp.info.apple.com welcome screen. 4 Click the OK button. 5 Double-click the Apple.Support.Area folder to open it. 6 Double-click the Apple.Software.Updates folder to open it. Each time you open a folder, a new Macintosh window opens. Troubleshooting 89 Initializing a hard disk Before you can use a new disk, the disk must be prepared so that the computer knows where to store information on the disk. This preparation is called initializing (or formatting) the disk. When do you need to initialize a hard disk? The hard disk inside your computer was initialized at the factory, so you shouldn’t need to initialize it. You need to initialize a hard disk only if m you purchase a hard disk that has not been initialized at the factory m your hard disk is damaged If a hard disk needs to be initialized, the disk’s icon does not appear on the desktop when you start up the computer using another disk. If the hard disk you want to initialize is not the startup disk, you can use the Drive Setup program to initialize it. Drive Setup is located on the floppy disk labeled Disk Tools that came with your computer. If your computer came with a CD-ROM player and you didn’t receive floppy disks, you can find Drive Setup on the CD-ROM disc that contains system software. For instructions, start Drive Setup and choose Drive Setup Guide from the Guide (h) menu. If the hard disk you want to initialize is the startup disk, follow the instructions in this chapter. WARNING Initializing a disk erases any information that may be on it. Before you initialize a damaged disk, try to repair it as described in “Repairing a Damaged Disk” later in this chapter. 90 Chapter 6 Starting up from a CD-ROM disc To initialize, test, or repair a hard disk, or to install system software on a hard disk, you need to start up your computer from another disk. If your computer has a CD-ROM player, you can start up your computer using the CD-ROM disc containing system software that came with the computer. To start up the computer using the CD-ROM disc, follow these steps: 1 Turn your computer on. 2 When you see the desktop on your screen, press the Open/Close button on your CD-ROM player, and insert the CD-ROM disc containing system software into the player. 3 Turn your computer off. The CD-ROM disc will remain in the CD-ROM player. 4 Hold down the C key on your keyboard and restart your computer. Continue to hold down the key until you see the “Welcome to Macintosh” message. Starting up from a floppy disk To initialize, test, or repair a hard disk, or to install system software on a hard disk, you need to start up your computer from another disk. If you don’t have a built-in CD-ROM player, you can start up the computer using either the Disk Tools or disk 1 from the set of system software disks that came with your computer. To start up your computer using a floppy disk, follow these steps: 1 Shut down your computer. 2 Insert the floppy disk into the disk drive. If you want to initialize, test, or repair your hard disk, use the Disk Tools disk to start up your computer. If you want to install system software, use disk 1 from the set of system software disks that came with your computer. 3 Turn on the computer. Troubleshooting 91 How to initialize a hard disk You initialize an Apple SCSI hard disk by using a program called Drive Setup, which is on the floppy disk labeled Disk Tools that came with your computer. If your computer came with a CD-ROM player and you didn’t receive floppy disks, you can find Drive Setup on the CD-ROM disc that contains system software. (To initialize a hard disk from another manufacturer, use the utility software that came with the hard disk.) 1 Start up your computer from the Disk Tools disk or the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” earlier in this section. 2 Open the Drive Setup icon. You may need to look in a folder called Utilities to find Drive Setup. 3 In the list of drives, click the disk you want to initialize. 4 Click Initialize to initialize the hard disk. 5 Click Quit when you see a message reporting that initialization was successful. If a message reports that initialization failed, try again. If initialization fails a second time, take the disk to your Apple-authorized service provider for repair. 92 Chapter 6 Click the drive you want to initialize... ...then click Initialize. Repairing a damaged disk Disks can become damaged by repeated use and handling. When do you need to repair a disk? If you see a message reporting that a disk is damaged or unreadable, you may need to repair the disk. Try these suggestions first If you can’t start up from a hard disk or you don’t see the hard disk icon on the desktop, try the following: m If the hard disk is internal, shut down your Macintosh, wait at least 10 seconds, and then turn it on again. m If the hard disk is external, make sure that it is turned on and that its cable is connected firmly; then restart the Macintosh. m If the hard disk is your startup disk, start up with a different startup disk. If the hard disk’s icon appears on your desktop, reinstall system software on the hard disk. See “Installing or Reinstalling System Software” later in this chapter. m Check the ID numbers of all SCSI equipment connected to your computer. Your computer has two SCSI chains, an internal one and an external one. All devices on the same SCSI chain must have unique ID numbers, but devices on different SCSI chains may use the same SCSI ID number. (For example, you can have a CD-ROM player with ID number 3 connected to the internal SCSI chain and a tape drive with ID number 3 connected to the external SCSI chain. You cannot have 2 SCSI devices connected to the external SCSI chain that both use ID number 3.) On the internal SCSI chain, the computer itself has the ID number 7, and the factory-installed hard disk has the number 0. If your computer came with a CD-ROM player installed, it is also connected to the internal SCSI chain and has ID number 3. On the external SCSI chain, SCSI devices are numbered either 0 to 6, or 1 to 6 if you have an additional hard drive installed (its number is 0). Troubleshooting 93 Check that both chains of devices are terminated properly. For information on setting SCSI ID numbers and terminating a SCSI chain, see Chapter 3 of this manual and the manuals that came with your SCSI equipment. m Test the disk following the instructions that come next. How to test a hard disk You can test an Apple SCSI hard disk with the Drive Setup program, which is on the floppy disk labeled Disk Tools that came with your computer. If your computer has a built-in CD-ROM player, and you didn’t receive floppy disks, you can find the Drive Setup program on the CD-ROM disc that contains system software. 1 Start up your computer from the Disk Tools disk or the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. 2 Open the Drive Setup icon. You may need to look in a folder called Utilities to find Drive Setup. 94 Chapter 6 3 In the list of drives, click the disk you want to test. 4 Pull down the Functions menu and choose Test Disk. 5 When a message tells you that testing is complete, click Quit. If the test reveals a problem, you may be able to correct it by using Disk First Aid or another disk repair program (see the instructions in the next section), or you may need to reinitialize the disk (see “Initializing a Hard Disk” earlier in this chapter). Consult an Apple-authorized service provider for assistance if necessary. If you had a hard disk from another manufacturer installed after you bought your computer, use the software that came with the disk or contact the disk vendor to get the latest version of software. How to repair a hard disk or floppy disk You can repair some types of disk damage by using the Disk First Aid program, which is included either on the Disk Tools floppy disk or on the CD-ROM disc containing system software that came with your computer. 1 Start up your computer from the Disk Tools disk or the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. Troubleshooting 95 2 Open the Disk First Aid icon. You may need to look in a folder called Utilities to find Disk First Aid. 3 Click the icon of the disk you want to test. Disk icons appear in a box at the top of the Disk First Aid window. 4 Click Repair to begin testing and repairing the disk. You can’t repair the startup disk or the disk that contains the Disk First Aid program, but you can test these disks by clicking Verify. If the program reveals a problem with either of these disks, start up the computer from another disk so that you can repair the damaged disk. If you want to test and repair another disk, click its icon and then click Repair. 5 When testing and repair are finished, choose Quit from the File menu. 96 Chapter 6 Troubleshooting 97 If Disk First Aid cannot correct the problem m Try repairing the disk again. Sometimes repeating the process corrects the problem. m Use another disk repair or recovery program. Some disk repair programs let you recover information from a damaged disk. m Consult a computer repair specialist for help. m Once you have recovered all the information you can, erase (reinitialize) the disk. If initialization doesn’t work, discard the damaged disk (if it’s a floppy disk), or take it to your Apple-authorized service provider for repair (if it’s a hard disk). Installing or reinstalling system software System software is the set of programs and other files that your computer uses to start itself up, keep track of your files, and run the application programs you use. System software is kept in the folder called the System Folder. When you turn on your computer, it looks for a startup disk, which is a disk that contains the system software. The startup disk is usually the hard disk that’s inside your computer, though another hard disk or a floppy disk can also be a startup disk. The accessory kit that came with your Macintosh provides system software on either a set of floppy disks or a CD-ROM disc. You can use the floppy disks or the CD-ROM disc to install the system software on your Macintosh if you need to do so. When should you install system software? Your Macintosh came with all the necessary system software installed on its internal hard disk, so you don’t need to install system software on that disk unless you encounter software problems. If you have a new hard disk or a newly initialized hard disk that doesn’t contain system software, or if you want to upgrade to a more recent version of system software on a hard disk, follow the instructions in “Installing System Software” later in this section. When should you reinstall system software? If you have a problem with your system software, you may see this icon in the middle of the screen: If this icon appears, follow the instructions in “Repairing a Damaged Disk” earlier in this chapter to test your startup hard disk and repair any damage. If repairing the disk doesn’t help, follow the instructions in the next section, “Installing System Software,” to reinstall system software on your startup hard disk. Installing system software Follow the steps in this section to do what is commonly called a “normal” installation of system software. If you’re installing system software on a hard disk for the first time, make sure that your hard disk has been initialized, a process that prepares the disk to store information. If you see the hard disk’s icon on the desktop when you start up the computer, the disk has been initialized. If no disk icon appears when you start up, see “Initializing a Hard Disk” earlier in this chapter for instructions. To do a normal installation, follow these steps: 1 Start up your computer from the Disk Tools disk or the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. 2 Find and open the Disk First Aid icon. You may need to look in a folder called Utilities to find Disk First Aid. 98 Chapter 6 After Disk First Aid starts, follow the instructions on the screen. Disk First Aid checks your hard disk for any problems. 3 When Disk First Aid has finished checking your hard disk, choose Quit from the File menu. 4 Open the Drive Setup program. You use the Drive Setup program to update your hard disk. 5 In the list of drives, click your startup disk. 6 Pull down the Functions menu and choose Update Driver. 7 When the update process is finished, quit Drive Setup. 8 Shut down your computer. 9 Start up your computer from disk 1 from your set of system software disks, or from the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. The Installer’s Welcome screen appears. You may have to double-click the System Software Installer icon to open the Installer program. 10 Click OK. The Easy Install dialog box appears. Troubleshooting 99 Disk on which system software will be installed Click here to install the software you need. Click here to install on a different disk. You may have a later version of system software. 11 Make sure that the hard disk named in the box is the one on which you want to install system software. If it isn’t, click Switch Disk until the correct disk name appears. 12 Click Install. 13 Follow the instructions that appear on the screen. If you’re installing system software from floppy disks, you see messages asking you to insert different disks. 14 When you see a message reporting that the installation was successful, click Restart. If a message reports that installation was not successful, try installing again. (Follow the instructions on the screen.) If, after reinstalling system software by doing a normal installation, you still experience problems with your computer, follow the steps in the next section for doing a “clean” installation of system software. IMPORTANT Certain system extensions or application programs that were originally on your hard disk may not be installed with the Installer program. If you notice that a certain extension or program was not installed, you may need to install it separately. You can find these additional extensions and programs on the CD-ROM disc that contains system software. (Application programs from other vendors can be reinstalled from backup copies you made.) If you don’t have a CD-ROM player, see the service and support information that came with your computer for information on how to contact Apple directly for assistance. 100 Chapter 6 Doing a clean installation of system software The steps in this section outline what is commonly called a “clean” installation of system software. A clean installation allows you to discover which item in your System Folder is causing a problem. A clean installation creates a brand new System Folder and saves everything in your original System Folder in a different location. You can then follow the instructions in “Replacing Special Software,” later in this section, to reinstall system extensions, control panels, and other special software one at a time from the old System Folder to the new System Folder. This procedure allows you to determine which item in the old System Folder was the source of the problem. Do a clean installation if you can’t determine what is damaged in your System Folder (especially if you think any special software, such as control panels, system extensions, or custom utilities, may be causing the problems you’re experiencing). You should also do a clean installation if you’re still having problems with your computer after you’ve reinstalled system software by doing a normal installation. To do a clean installation, follow these steps: 1 Start up your computer from the Disk Tools disk or the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. 2 Find and open the Disk First Aid icon. You may need to look in a folder called Utilities to find Disk First Aid. After Disk First Aid starts, follow the instructions on the screen. Disk First Aid checks your hard disk for any problems. 3 When Disk First Aid has finished checking your hard disk, choose Quit from the File menu. Troubleshooting 101 4 Open the Drive Setup program. You use the Drive Setup program to update your hard disk. 5 In the list of drives, click your startup disk. 6 Pull down the Functions menu and choose Update Driver. 7 When the update process is finished, quit Drive Setup. 8 Shut down your computer. 9 Start up your computer from disk 1 of the set of system software disks that came with your computer, or from the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. The Installer’s Welcome screen appears. You may have to double-click the System Software Installer icon to open the Installer program. 10 Click OK. The Easy Install dialog box appears. 102 Chapter 6 For a clean installation, DO NOT click the Install button. If you need to install on a different disk, click this button. Disk on which system software will be installed 11 Make sure that the hard disk named in the Destination Disk box is the one on which you want to install system software. If it isn’t, click Switch Disk until the correct disk name appears. 12 Hold down Shift–x–K to start the clean installation. The following dialog box appears. 13 Click the Install New System Folder button and click OK. The Easy Install dialog box appears. The Install button has changed to Clean Install, and the contents of your old System Folder have been moved to a new folder named Previous System Folder. 14 Click Clean Install. 15 Follow the instructions that appear on the screen. It takes a few minutes to complete the installation. Troubleshooting 103 Click here to install the software you need. 16 When you see a message reporting that the installation was successful, you may need to click Restart. You need to click Restart only if you installed software onto the startup disk. If a message reports that installation was not successful, try repeating the clean installation procedure. IMPORTANT Certain system extensions or application programs that were originally on your hard disk may not be installed with the Installer program. If you notice that a certain extension or program was not installed, you may need to install it separately. You can find these additional extensions and programs on the CD-ROM disc that contains system software. (Application programs from other vendors can be reinstalled from backup copies you made.) If you don’t have a CD-ROM player, see the service and support information that came with your computer for information on how to contact Apple directly for assistance. Replacing special software Special software consists of items such as control panels, system extensions, custom utilities, fonts, or Apple menu items that you may have added to your old System Folder. To make sure that special software does not create any conflicts with other programs on your computer, follow this procedure to safely replace these items in your new System Folder: 1 Copy any special software items from the Previous System Folder back to your System Folder one item at a time, restarting the computer after copying each item. IMPORTANT Be very careful not to replace (copy over) any of the files in the System Folder with files from the Previous System Folder. 2 Check after each restart to make sure your computer is not having any software problems. If any of your special software items cause software problems, contact the software manufacturer for assistance or an upgrade. 104 Chapter 6 Doing a custom installation For most Macintosh users, the Easy Install procedure described in the previous sections is appropriate, because it automatically installs all the items you need. However, if you’d like to select a combination of system software files for your specific needs, you can customize your system software installation. You use custom installation to install or update one or more specific files, or to save space on your hard disk by installing only the files you want. To install customized system software, follow these steps: 1 Start up your computer from disk 1 of the set of system software disks that came with your computer, or from the CD-ROM disc that contains system software. See “Starting Up From a CD-ROM Disc” or “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. 2 Click OK. The Easy Install dialog box appears. 3 Choose Custom Install from the pop-up menu. Troubleshooting 105 The Custom Install dialog box appears, listing all available system software components. 4 Scroll through the list of components, clicking the checkbox next to each component you want to install. You can see and select individual items within each component by clicking the arrow to the left of the component, then clicking the item you want to install. To get additional information about each component listed, click the box with the letter i in it to the right of the component. 5 Click Install. 6 Follow the instructions that appear on the screen. 7 When you see a message reporting that the installation was successful, click Quit. If a message reports that installation was not successful, try installing again. (Follow the instructions on the screen.) 8 Restart your Macintosh. The system software is installed and your computer is ready to use. Don’t forget to eject the CD-ROM disc or floppy disk containing system software when you are finished. 106 Chapter 6 Installing or reinstalling CD-ROM software CD-ROM software is a set of programs and files that allow your CD-ROM player to work correctly with your computer and allow it to play different kinds of CDs, like Photo CDs or audio CDs. If your computer came with a CD-ROM player installed, the CD-ROM software is part of system software and was pre-installed for you on your computer’s hard disk. (It is also available on floppy disks and a CD-ROM disc that came with your Macintosh.) If you added a CD-ROM player after you bought your computer, the CD-ROM software is probably on floppy disks that came with the player. When should you install or reinstall CD-ROM software? If your Macintosh came with the CD-ROM player already installed, you don’t need to install the CD-ROM software unless you encounter problems. (See “Solutions to CD-ROM Problems” earlier in this chapter for descriptions of the kinds of problems you might encounter.) If you added a CD-ROM player after you bought your computer, you should install the CD-ROM software before you attempt to use the CD-ROM player. Reinstalling CD-ROM software 1 Start up your computer from disk 1 of the set of system software disks that came with your computer. See “Starting Up From a Floppy Disk” in the section “Initializing a Hard Disk” earlier in this chapter. 2 Click OK. The Easy Install dialog box appears. 3 Choose Custom Install from the pop-up menu. Troubleshooting 107 The Custom Install dialog box appears, listing all available system software components. 4 Select Multimedia Software by clicking the checkbox next to it. To get additional information about each component listed, click the box with the letter i in it to the right of the component. 5 Click Install. 6 Follow the instructions that appear on the screen. 7 When you see a message reporting that the installation was successful, click Quit. If a message reports that installation was not successful, try installing again. (Follow the instructions on the screen.) 8 Restart your Macintosh. The CD-ROM software is reinstalled and your computer is ready to use. Don’t forget to eject the CD-ROM disc or floppy disk containing system software when you are finished. 108 Chapter 6 IpIarIt Appendix A Health, Safety, and Maintenance Tips AppendixB Installing an Expansion Card Appendix C Special Keys on Your Keyboard 111 For your own safety and that of your equipment, follow all the instructions in this chapter. Keep these instructions available for reference by you and others. Health-related information about computer use Muscle soreness, eye fatigue, and other discomforts and injuries sometimes associated with using computers can occur from performing any number of activities. In fact, misuse of the same muscles during multiple activities can create a problem that might not otherwise exist. For example, if you engage in nonwork activities that involve repetitive stress on the wrist—such as bicycling—and also use your computer’s keyboard improperly, you may increase your likelihood of developing wrist problems. Some individuals are at greater risk of developing these problems because of their health, physiology, lifestyle, and general exposure to stress. Work organization and conditions, such as workstation setup and lighting, also play a part in your overall health and comfort. Preventing health problems is a multifaceted task that requires careful attention to the way you use your body every hour of every day. The most common health effects associated with using a computer are musculoskeletal discomfort and eye fatigue. We’ll discuss each area of concern. Appendix A Health, Safety, and Maintenance Tips Read this appendix for important health and safety instructions, as well as tips on keeping your computer in good working order. Musculoskeletal discomfort As with any activity that involves sitting for long periods of time, using a computer can make your muscles sore and stiff. To minimize these effects, set up your work environment carefully, using the guidelines that follow, and take frequent breaks to rest tired muscles. To make working with your computer more comfortable, allow enough space in your work area so that you can change position frequently and maintain a relaxed posture. Another type of musculoskeletal concern is repetitive stress injuries (RSIs), also known as cumulative trauma disorders (CTDs). These problems can occur when a certain muscle or tendon is repeatedly overused and forced into an unnatural position. The exact causes of RSIs are not totally understood, but in addition to awkward posture, such factors as the amount of repetition, the force used in the activity, the individual’s physiology, workplace stress level, and lifestyle may affect the likelihood of experiencing an RSI. RSIs did not suddenly arise when computers were invented; tennis elbow and writer’s cramp, for example, are two RSIs that have been with us for a long time. Although less common than other RSIs, one serious RSI discussed more often today is a wrist problem called carpal tunnel syndrome, which may be aggravated by improper use of computer keyboards. This nerve disorder results from excessive pressure on the median nerve as it passes through the wrist to the hand. This section offers advice on setting up your work area to enhance your comfort while you use your computer. Since the effects of repetitive movements associated with using a computer can be compounded by those of other work and leisure activities to produce or aggravate physical problems, proper use of your computer system must be considered as just one element of a healthy lifestyle. No one, of course, can guarantee that you won’t have problems even when you follow the most expert advice on using computer equipment. You should always check with a qualified health specialist if muscle, joint, or eye problems occur. 112 Appendix A Eye fatigue Eye fatigue can occur whenever the eyes are focused on a nearby object for a long time. This problem occurs because the eye muscles must work harder to view an object that’s closer than about 20 feet (6 meters). Improper lighting can hasten the development of eye fatigue. Although eye fatigue is annoying, there’s no evidence that it leads to permanent damage. Whenever you’re engaged in an activity that involves close-up work—such as reading a magazine, doing craft work, or using a computer—be sure to have sufficient glare-free lighting and give your eyes frequent rest breaks by looking up and focusing on distant objects. Remember to have your eyes examined regularly. To prevent discomfort and eye fatigue: m Arrange your work space so that the furniture is properly adjusted for you and doesn’t contribute to an awkward working posture. m Take frequent short breaks to give your muscles and eyes a chance to rest. Arranging your office Here are some guidelines for adjusting the furniture in your office to accommodate your physical size and shape. m An adjustable chair that provides firm, comfortable support is best. Adjust the height of the chair so your thighs are horizontal and your feet flat on the floor. The back of the chair should support your lower back (lumbar region). Follow the manufacturer’s instructions for adjusting the backrest to fit your body properly. m When you use the computer keyboard, your shoulders should be relaxed. Your upper arm and forearm should form an approximate right angle, with your wrist and hand in roughly a straight line. Health, Safety, and Maintenance Tips 113 You may have to raise your chair so your forearms and hands are at the proper angle to the keyboard. If this makes it impossible to rest your feet flat on the floor, you can use a footrest with adjustable height and tilt to make up for any gap between the floor and your feet. Or you may lower the desktop to eliminate the need for a footrest. Another option is to use a desk with a keyboard tray that’s lower than the regular work surface. m Position the mouse at the same height as your keyboard. Allow adequate space to use the mouse comfortably. m Arrange the monitor so the top of the screen is slightly below your eye level when you’re sitting at the keyboard. The best distance from your eyes to the screen is up to you, although most people seem to prefer 18 to 28 inches (45 to 70 cm). m Position the monitor to minimize glare and reflections on the screen from overhead lights and windows. You may want to use a tiltable monitor stand. The stand lets you set the monitor at the best angle for viewing, helping to reduce or eliminate glare from lighting sources you can’t move. Thighs horizontal Shoulders relaxed Screen positioned to avoid reflected glare Forearms and hands in a straight line Forearms level or tilted up slightly Lower back supported Feet flat on the floor Top of the screen at or slightly below eye level (You may need to adjust the height of your monitor by placing something under it or by raising your work surface.) Clearance under work surface 45–70 cm (18–28 in.) 114 Appendix A Avoiding fatigue m Change your seated position, stand up, or stretch whenever you start to feel tired. Frequent short breaks are helpful in reducing fatigue. m Use a light touch when typing or using a mouse and keep your hands and fingers relaxed. m Some computer users may develop discomfort in their hands, wrists, or arms after intensive work without breaks. If you begin to develop chronic pain or discomfort in your hands, wrists, or arms, consult a qualified health specialist. m Allow adequate work space so that you can use your keyboard and mouse comfortably. Place papers or other items so you can view them easily while using your computer. A document stand may make reading papers more comfortable. m Eye muscles must work harder to focus on nearby objects. Occasionally focus your eyes on a distant object, and blink often while you work. m Clean your screen regularly. Keeping the screen clean helps reduce unwanted reflections. What about electromagnetic emissions? There has been recent public discussion of the possible health effects of prolonged exposure to extremely low frequency (ELF) and very low frequency (VLF) electromagnetic fields. Such fields are associated with electromagnetic sources such as television sets, electrical wiring, and some household appliances—as well as computer monitors. Apple has reviewed scientific reports and sought the counsel of government regulatory agencies and respected health organizations. Based on the prevailing evidence and opinions, Apple believes that the electric and magnetic fields produced by computer monitors do not pose a health risk. In response to those customers who wish to reduce their exposure to electromagnetic fields, Apple has lowered the emission levels of our products. We are also actively encouraging further scientific research so we can continue to promote the health and safety of our customers and employees. Health, Safety, and Maintenance Tips 115 Safety instructions For your own safety and that of your equipment, always take the following precautions. Turn off the computer completely and disconnect the power plug (by pulling the plug, not the cord) if any of the following conditions exists: m the power cord or plug becomes frayed or otherwise damaged m you spill something into the case m your Macintosh is exposed to rain or any other excess moisture m your Macintosh has been dropped or the case has been otherwise damaged m you suspect that your Macintosh needs service or repair m you want to clean the case (use only the recommended procedure described later in this chapter) Be sure that you always do the following: m Keep your Macintosh away from sources of liquids, such as wash basins, bathtubs, shower stalls, and so on. m Protect your Macintosh from dampness or wet weather, such as rain, snow, and so on. m Read all the installation instructions carefully before you plug your Macintosh into a wall socket. m Keep these instructions handy for reference by you and others. m Follow all instructions and warnings dealing with your system. WARNING Electrical equipment may be hazardous if misused. Operation of this product, or similar products, must always be supervised by an adult. Do not allow children access to the interior of any electrical product and do not permit them to handle any cables. 116 Appendix A Handling your computer equipment Follow these guidelines for handling your computer and its components: m When setting up your computer, place components on a sturdy, flat surface, and carefully follow all setup instructions. m When connecting or disconnecting a cable, always hold the cable by its connector (the plug, not the cord). m Turn off your computer and all its components before connecting or disconnecting any cables to add or remove any component. Failure to do so could seriously damage your equipment. m Never force a connector into a port. If the connector and port do not join with reasonable ease, they probably don’t match. Make sure that the connector matches the port and that you have positioned the connector correctly in relation to the port. m Take care not to spill any food or liquid on the computer, keyboard, mouse, or other components. If you do, turn your computer off immediately and unplug it before cleaning up the spill. Depending on what you spilled and how much of it got into your equipment, you may have to bring your equipment to an Apple-authorized service provider. m Protect the computer and its components from direct sunlight and rain or other moisture. m Keep all ventilation openings clear and unobstructed. Without proper air circulation, components can overheat, causing damage or unreliable operation. WARNING This equipment is intended to be electrically grounded. Your Macintosh is equipped with a three-wire grounding plug—a plug that has a third (grounding) pin. This plug will fit only a grounded AC outlet. This is a safety feature. If you are unable to insert the plug into the outlet, contact a licensed electrician to replace the outlet with a properly grounded outlet. Do not defeat the purpose of the grounding plug! Health, Safety, and Maintenance Tips 117 Handling the monitor Follow these procedures for handling a monitor: m Turn down the screen brightness control if you leave the computer turned on for extended periods. If the brightness is not turned down, the image on the screen could “burn in” and damage the screen. You can also use a “screen saver” program, which dims or varies the image on the screen when the computer has been idle for a specified period of time. These programs are available from independent suppliers and user groups. m Make sure that the ventilation openings on the computer and the monitor are clear and unobstructed. m Some large monitors cannot safely be placed on top of the computer. Check the instructions that came with the monitor for setup information. m If there is interference on the monitor’s screen or on a television or radio near your computer, move the affected equipment farther away. Handling the keyboard Take care not to spill any liquid on the keyboard. If you do, turn off your computer immediately. m If you spill liquid that is thin and clear, unplug the keyboard, turn it upside down to let the liquid drain out, and let it dry for 24 hours at room temperature. If, after you take these steps, the keyboard doesn’t work, take it to an Apple-authorized service provider for repair. m If you spill liquid that is greasy, sweet, or sticky, unplug the keyboard and take it to an Apple-authorized service provider for repair. 118 Appendix A Handling floppy disks 125° F (52° C) 50° F (10° C) Keep disks dry. Do not use a pencil or an eraser on a disk or disk label. Store disks at temperatures between 50° F and 125° F. Do not touch the exposed part of the disk behind the metal shutter. Keep disks away from magnets. Avoid exposing disks to extremely hot temperatures. Health, Safety, and Maintenance Tips 119 Handling CD-ROM discs Keep these important safety instructions in mind as you use CD-ROM discs: m Hold a disc by the edges or by one edge and the center hole. Do not touch the disc surface. m To clean discs, wipe the shiny surface with a soft damp cloth, working in straight lines from center to edge. Do not use any form of cleaning agent. m To avoid damage to your discs, keep these points in mind: Do not put tape on discs. Do not scratch discs. Do not write on discs. Do not spill liquids on discs. Do not get dust on discs. Do not expose discs to direct sunlight. 120 Appendix A Other important safety instructions to keep in mind as you use your CD-ROM player: m Position your computer so that when the tray opens, it doesn’t bump into anything. m Do not leave the disc tray open. If dust gets on the lens of the CD-ROM player, the player may have problems reading your compact discs. m Do not put anything (for instance, a cup) on top of the tray when it is open. m Do not force the tray open by hand. m Do not wipe the lens with a paper towel or other abrasive surface. If you need to clean the lens, see an Apple-authorized service provider for a lens cleaner. m Never transport your computer with a disc inside the CD-ROM player. m Keep your computer equipment away from any source of liquid (such as wash basins, bathtubs, and shower stalls). If you drink coffee or other beverages while you’re at your computer, take care not to spill. m Avoid exposing your equipment to damp or wet weather. If your system is near a window, be sure the window is closed in rainy weather. The tray on your CD-ROM player automatically closes when you shut down your computer. You may want to open the tray and take out your CD-ROM disc before shutting down. Health, Safety, and Maintenance Tips 121 122 Appendix A Ejecting a floppy disk For instructions on ejecting a floppy disk or a removable media disk, see the “Disks” topic of Macintosh Guide, available in the Guide (h) menu. If you can’t eject a floppy disk If you can’t eject a floppy disk in the usual way, try the following in order: m Hold down the x and Shift keys and press the number 1 key on your keyboard to eject a disk in the internal disk drive. m Turn off the computer. If the disk isn’t ejected, then hold down the button on your mouse or other pointing device while you turn the computer on again. m Locate the small hole near the disk drive’s opening, and carefully insert the end of a large straightened paper clip into it. Push gently until the disk is ejected. Do not use excessive force. If nothing works, take the computer or disk drive to your Apple-authorized service provider to have the disk removed. Power supply The power supply in your computer is a high-voltage component and should not be opened for any reason, even when the computer is off. If the power supply needs service, contact your Apple-authorized dealer or service provider. Cleaning your equipment Follow these general rules when cleaning the outside of your computer and its components: m Use a damp, soft, lint-free cloth to clean the computer’s exterior. Avoid getting moisture in any openings. m Don’t use aerosol sprays, solvents, or abrasives. Cleaning the computer case To clean the case, do the following: 1 Turn off the computer completely and then disconnect the power plug. (Pull the plug, not the cord.) 2 Wipe the surfaces lightly with a clean, soft cloth dampened with water. Cleaning the monitor To clean the screen, put household glass cleaner on a soft cloth and wipe the screen. Don’t spray the cleaner directly on the screen, because the liquid might drip into the monitor or computer. Cleaning the mouse The mouse contains a small ball that must roll smoothly for the mouse to work properly. You can keep this ball free of dirt and grease by using the mouse on a clean, lint-free surface and cleaning it occasionally. You need a few cotton swabs and a clean, soft, lint-free cloth. 1 Turn off your computer. Health, Safety, and Maintenance Tips 123 2 Turn the mouse upside-down and turn the plastic ring on the bottom counterclockwise to disengage it. If you have an older mouse, you may need to press the plastic ring (rather than turn it) to disengage it. If the mouse is locked, see the next section, “Locking and Unlocking the Mouse,” for instructions on how to unlock it. 3 Turn the mouse right-side up with one hand and catch the ring and the ball with your other hand. 4 Clean the three small rollers inside the mouse with a cotton swab moistened with water. Rotate the rollers to clean all around them. 124 Appendix A 5 Wipe the mouse ball with a clean, soft, dry, and lint-free cloth. 6 If necessary, wash the mouse ball with warm soapy water (use a mild soap such as a dishwashing liquid) and then dry the mouse ball thoroughly. 7 Gently blow into the mouse case to remove any dust that has collected there. 8 Put the ball and the ring back in place. Your mouse should roll smoothly across your mouse pad or desk. If it doesn’t, repeat these instructions carefully. Health, Safety, and Maintenance Tips 125 Locking and unlocking the mouse Some mouse devices can be locked so that the ball can’t be removed. A locking mouse has a small hole on the plastic ring. To lock the mouse, follow these steps: 1 Insert a straightened paper clip into the hole on the plastic ring. 2 Press down on the paper clip while you turn the ring clockwise. Turn the ring a very short distance, until it stops. When the recessed area on the ring is not lined up with the recessed area surrounding the ring, the mouse is locked. The mouse ring is locked when the recessed area on the ring does not line up with the recessed area surrounding the ring. Recessed area on ring Recessed area surrounding ring Insert a straightened paper clip into this hole. (The hole may be located here on your mouse.) 126 Appendix A To unlock the mouse, follow these steps: 1 Insert a straightened paper clip into the hole on the plastic ring. 2 Press down on the paper clip while you turn the ring counterclockwise. Turn the ring a very short distance. When the recessed area on the ring is lined up with the recessed area surrounding the ring, the mouse is unlocked. The mouse ring is unlocked when the recessed area on the ring lines up with the recessed area surrounding the ring. Recessed area on ring Recessed area surrounding ring Insert a straightened paper clip into this hole. (The hole may be located here on your mouse.) Health, Safety, and Maintenance Tips 127 You can install printed circuit boards (called cards) for video and graphics applications, networking and communications, additional processing power, or other purposes. The cards fit into expansion slots inside the computer. Your Macintosh has six expansion slots, each designed to accept a Peripheral Component Interconnect (PCI) card. There is also an expansion slot that contains the computer’s processor card. (The processor card can be upgraded by replacing it with a more powerful processor card.) IMPORTANT Some cards may need to be installed by an Apple-authorized service provider. Check the information that came with the card. WARNING If an expansion card requires an adapter, be sure to use the adapter card designed specifically for your model of the computer. Failure to do so could damage the card and your computer. 129 Appendix B Installing an Expansion Card Read this appendix for instructions on installing an expansion card in your computer. Expansion card power requirements The combined power consumption of expansion cards must not exceed the limits specified for your Macintosh model. If you have more than one expansion card installed, check the information that came with your cards to make sure that their power consumption is within the limits specified in the Technical Information booklet. Installing an expansion card IMPORTANT Some cards may need to be installed by an Apple-authorized service provider. Check the information that came with the card. 1 Turn off the computer. Leave the computer plugged in to ground it. 2 Loosen the six large screws at the corners and sides of the back panel. Do not completely remove the screws or the back panel. 130 Appendix B 3 Remove the cover from the computer. Slide the cover away from the back panel an inch or two. Then raise the cover straight up and off the computer. Installing an Expansion Card 131 4 Touch the metal part of the power supply case inside the computer to discharge static electricity. Always do this before you touch any parts, or install any components, inside the computer. Power supply 132 Appendix B 5 Lower the auxiliary fan. Squeeze the sides of the fan and pull down. To lower the auxiliary fan, squeeze the sides to unlatch it. Installing an Expansion Card 133 6 Being careful not to touch the sharp edges, pull out the metal access port cover behind the expansion slot you want to use, and set the access port cover aside. 7 Remove the card from its static-proof bag. Hold the card by its edges to avoid touching the connector. Connector 1 Press the two levers apart that are next to the card access port to release the access port cover. 2 Slide the access port cover out and away from the access port. 134 Appendix B 8 Align the connector end of the card with the expansion slot. 9 Press the card gently but firmly until the connector is fully inserted. m Slide the card between the two levers that held the access port cover you removed earlier. You may need to press the levers apart slightly to guide the card between them. m Don’t force the card. If you meet a lot of resistance, pull the card out and try again. m To see if the card is properly connected, pull it gently. If it resists and stays in place, it’s connected. (Make sure you don’t pull the card so much that you accidentally disconnect it.) If you have other cards to install, put them in now by repeating steps 6 through 9. Connector Expansion slot If your expansion card is full-length, be sure that it engages the card guide in the computer’s interior. Installing an Expansion Card 135 10 Lift the auxiliary fan back into place. When the card is properly seated, the levers snap into place and secure the card. Snap the auxiliary fan back into place. Processor card This guide on the auxiliary fan housing engages the processor card in the computer. 136 Appendix B 11 Replace the cover on the computer. Lower the cover all the way down onto the case. Push the cover back until it touches the back panel. 12 Tighten the screws on the back panel. You are now finished installing the card. You may turn on the computer and start using the new card. WARNING Always replace the cover before turning the computer on. Installing an Expansion Card 137 Upgrading the processor Your computer’s processor can be upgraded with the installation of a processor upgrade card. To upgrade your processor, remove the old processor card, then follow the procedure in this chapter for installing expansion cards to install the new processor card. (Note that you do not need to remove the access port cover as described in step 6.) Refer to the documentation that came with the processor upgrade card for instructions specific to the card. Processor card (behind auxiliary fan) 138 Appendix B 139 Your computer keyboard contains certain special keys that typewriter keyboards don’t have. Many of these keys allow you to give commands to the computer without using the mouse. For example, in many application programs, you can press the x (Command) key at the same time as the Q key to quit a program. The following table describes what you can do with the special keys on your keyboard. The special keys on your keyboard depend on the model of keyboard you have; some keyboards do not have all the keys listed here. Special keys on Apple keyboards Arrow keys Use to move the insertion point, as an alternative to using the pointer. In some programs, the arrow keys have other functions. Caps Lock key Use to capitalize a series of letters (numbers and symbols aren’t affected). Clear key Use to delete the current selection (or use the Delete key). In some programs, Clear has other functions. x (Command) key Use in combination with other keys as an alternative to choosing a menu command. continued . Read this appendix to learn how to use the special keys on your keyboard. caps lock num lock clear Appendix C Special Keys on Your Keyboard Special keys on Apple keyboards (continued) Control key In combination with other keys, this key provides shortcuts or modifies other actions. Delete key Use to delete selected material, or the character to the left of the insertion point. Enter key In a dialog box, pressing Enter is the same as clicking the outlined button. In some programs, pressing this key confirms information you have provided. Escape key The function of this key depends on the program you’re using. Function keys Some programs allow you to use the 12 function keys to give commands. You can assign commands or action sequences to function keys with special utility programs. Option key Use in combination with other keys to produce special characters or modify actions. Numeric keys Use to produce numbers and mathematical symbols; some programs use these keys as function keys to initiate actions. Power key On some models, press to turn on the computer. Also press to shut down the computer on certain models. Return key Use to move the insertion point to the beginning of the next line. In a dialog box, pressing Return is the same as clicking the outlined button. Shift key Use to produce capital letters (or the upper character on the key). Tab key Use to move the insertion point to the next stopping place (such as a tab stop or field in a dialog box or program). Other special keys The function of these keys depends on the operating system and program you’re using. 140 Appendix C delete enter esc F1 option alt num lock clear = / * 7 4 0 8 5 2 9 6 3 enter 1 . return shift help home end ins del page up page down tab control Typing special characters and symbols You can type a variety of international and other special symbols and characters (including characters with diacritical marks, such as accents) by pressing combinations of keys. The Key Caps program, which is installed with your system software, shows you the characters produced when you type certain keys and key combinations in the fonts available on your computer. Choose Key Caps from the Apple (K) menu, then choose the font from the Key Caps menu. To have Key Caps show more options for special characters, press each of these keys or key combinations: Option, Shift, Shift-Option, Shift-x, and Option-x. Special Keys on Your Keyboard 141 Characters available in the Chicago font Characters appear here when you press keys on the keyboard or click them in the window. Characters available in the Chicago font when the Option key is pressed The highlighted key represents the key held down on the keyboard— in this case, the Option key. If you press the Option key, Key Caps outlines lightly the keys that you can use in combination with letter keys to type letters with accents or other diacritical marks. If you see rectangles: If you see rectangles instead of diacritical marks on some of the pictures of keys in Key Caps, try pressing Option-x to see the diacritical marks. However, you only need to use the Option key (not Option-x) in combination with the other keys to type letters with diacritical marks. If you press the Option key at the same time as a key for a specific diacritical mark and then release both keys, Key Caps outlines in bold the keys for letters that can be typed with that mark. (You’ll see that most key combinations for diacritical marks can be used with the Space bar as well as letter keys—producing the mark without a letter.) The most common diacritical marks and how to create them are summarized next. Diacritical mark Key combination Grave accent ( ` ) Option-`, then type the character Acute accent ( ´ ) Option-e, then type the character Circumflex (^) Option-i, then type the character Tilde (~) Option-n, then type the character Umlaut ( ¨ ) Option-u, then type the character The letter “c” with a cedilla (ç) Option-c m To type a letter or a space with a specific diacritical mark, press the Option key and the key for the mark simultaneously. Then type the letter that needs the mark. If you are having trouble getting a mark and letter to appear together, try again. Be sure to press the Option key before (or at the same time as) the key for the mark; then, after you release both keys, type the letter to be marked. 142 Appendix C Special key combinations If difficulties with your mouse or computer don’t allow you to use standard methods of quitting a program or restarting your computer, you can try using these special key combinations. To do this... …press this key combination Force a program to quit x-Option-Esc Force the computer to restart x-Control-Power key Here are other key combinations you may find useful. To do this... …press this key combination Start a “debugging” application used by software programmers* x-Power key Start the computer from a CD-ROM disc C key (at startup) Rebuild desktop Shift key (while starting up) release, then hold Option-x *If you do not have a debugging program installed, your screen displays a caret prompt (>). To return to the desktop, type “G.” Special Keys on Your Keyboard 143 A AAUI network, connecting to 45 accent marks, typing 141–142 access covers for expansion slots 35, 134 active program 16, 49, 50 acute accent (´), typing 142 adapter for expansion card 129 ADB port. See Apple Desktop Bus (ADB) port America Online, obtaining Apple software updates 89 amplifier, connecting 37–38 Apple-authorized service providers, contacting. See also troubleshooting attaching devices to the internal SCSI interface 40 connecting additional equipment 33 disk initialization failure 92, 97 installing additional DRAM 44 installing expansion cards 129, 130 interference with radio and television reception vi lens cleaner for CD-ROM lens 121 liquid or other spills on computer equipment 117, 118 pointer doesn’t move when you move the mouse 74 problems ejecting a floppy disk 70, 122 problems opening tray of CD-ROM player 79 problems starting up the computer 67 reinstalling system extensions or application programs 100, 104 removing built-in terminators 42 repair service 62, 75 replacing the clock battery 65 servicing the power supply 122 AppleCD Audio Player 56, 82 Apple Desktop Bus (ADB) port 8, 9, 35, 74 Apple Extensions Manager 49 Apple Extras folder application programs contained in 47 as a source of help 19 AppleLink software updates, obtaining 86 Apple (K) menu, Key Caps program 141–142 Apple PlainTalk Microphone 2. See also microphone AppleScript program 47 Apple software updates, obtaining 86–89 AppleTalk control panel 45–46 145 Index If you can’t find what you’re looking for in this index, look in Macintosh Guide— available in the Guide (h) menu on your computer. Application menu Hide Others/Show All commands 50 using 16 working with several programs at a time 49–50 application programs backing up 48 can’t be found 75 can’t be opened 76 compatibility issues with older Macintosh programs 77 icons for 17 included with your computer 47 installing and using 48–50 opening/saving documents with different file formats 76 Power Macintosh “native” applications 51–52 reinstalling 72, 100, 104 won’t start or quit unexpectedly 71–72 arrow keys 139 arrow pointer on screen moving 14–15 what to do if it “freezes” 61, 63, 73–74 At Ease 71, 78 Audio CD Access CD-ROM extension 80 audio CDs 56, 82 audio equipment, connecting 36–40 auxiliary fan 133, 136 B backing up application programs 48 files and disks 51 Balloon Help 30 battery in clock, replacing 65 blinking question mark icon 66, 98 “bomb” message/icon on screen 61, 63, 72, 83 brightness control 13, 64, 118 BOOTP bootstrapping protocol 46 C cables audio equipment 37, 82 Ethernet 45 external stereo speaker 39 keyboard 2, 8, 9, 73, 74 monitor 2, 7, 65 mouse 8, 9, 73 network 45 printer 85 safe handling of 117 SCSI peripheral interface 42 SCSI system 41 Caps Lock key 139 cards. See expansion cards carpal tunnel syndrome 112 cartridge backup drives, connecting 40–43 CD-ROM discs. See also CD-ROM system software disc cleaning 120 ejecting 55 guidelines for handling 120 icon doesn’t appear on desktop 80 inserting 48, 54 problems with 80–81 sharing over a network 58 starting up from 91, 143 storage capacity of 53 using ISO 9660 or High Sierra discs 81 CD-ROM drive/player connecting 40–43 icon doesn’t appear on screen 77 illustration 34 installing 44 installing software for 107–108 opening/closing 54, 55, 79 overview 53 playing audio CDs 56, 82 problems using 77–79 safety instructions vii, 121 software installation problems 70, 77, 78, 80 working with Photo CDs 57 146 Index CD-ROM system software disc, starting up from basic instructions 91 installing system software 99, 102, 105 for troubleshooting 66, 67, 68, 70, 80 to use Disk First Aid 95, 98, 101 to use Drive Setup 90, 94 cedilla (ç), typing 142 chains, SCSI 40, 42, 43 chair, adjusting for computer use 113, 114 Chooser, printer settings 85 circumflex (^), typing 142 C key (at startup) to start from a CD-ROM disc 143 cleaning computer equipment 120, 123–125 clean installation of system software 101–104 Clear key 139 clock in computer keeps time inaccurately 65 close box 17 in Macintosh Guide window 28, 29 x-Control-Power key to restart the computer 63 x key 139 x-Option-Esc to quit a program 63, 73, 143 x-Option-p-r to reset PRAM 65 x-Power key to start a debugging application 143 x-Shift-1 keys to eject a floppy disk 70 compatibility issues with system extensions or control panels 72, 73, 84 CompuServe, obtaining Apple software updates 87 computer case, cleaning 123 computer equipment. See equipment connecting. See also installing audio equipment 36–40 computer 3 external stereo speakers 39–40 keyboard 8–9 microphone 38–39 monitor 4–7 mouse 8–9 SCSI devices 40–43 to a network 45–46 Control key 140 control panels AppleTalk 45–46 Extensions Manager 72, 73 Memory 71, 77 Monitors 65 PC Exchange 75, 76 performance problems and 84 Sharing Setup 55 TCP/IP 45–46 turning off 72, 73, 74 cumulative trauma disorders (CTDs) 112 customer support hotline 19. See also Apple-authorized service providers custom installation of system software 105–106 Custom Install dialog box 106, 108 custom utilities, performance problems and 84 Index 147 D dampness, protecting the computer from 116, 117, 121 DAT drive, installing 44 Delete key 140 desktop At Ease 71, 78 hard disk icon doesn’t appear 68 hiding/showing windows on 50 looks unusual 71, 78 rebuilding 64, 68, 75, 143 device drivers for SCSI devices, installing 41 diacritical marks, typing 141–142 DIMMs 44 disconnecting power to the computer 4 Disk First Aid program 95–97, 98–99, 101 disk repair/recovery programs 97 Disk Tools disk, starting up from basic instructions 91 for troubleshooting 66, 67, 68, 70, 78 to use Disk First Aid 98, 101 to use Drive Setup 90, 94, 95 documents. See also files can’t open 75, 76, 81 icons for 17 DOS disks, using in the Macintosh 69 DOS documents, problems opening on the Macintosh 75, 76 DRAM Dual Inline Memory Modules (DIMMs) 44 Drive Setup program initializing a hard disk 90, 92 making a hard disk available 68 overview 47 testing a hard disk 94–95 updating a hard disk 99, 102 dual-plug adapter 39 dynamic random-access memory (DRAM), expanding 44 E Easy Access 74 Easy Install dialog box 99, 102, 103 ejecting CD-ROM discs 55 floppy disks, problems with 122 electromagnetic emissions, health effects of exposure to 115 Empty Trash command (Special menu) 17 Enter key 140 equipment arranging and adjusting for optimal use 112, 113–114 cleaning 123–125 guidelines for handling 117–121 illustration 2, 34–35 safety precautions 116 error messages. See under troubleshooting Escape key 140 Ethernet cables 45 Ethernet network 45 connecting to 45–46 Ethernet ports (AAUI, 10BASE-T) 34, 35 expansion cards installing 4, 129–137 power requirements 130 expansion slots 129, 135 access covers for 35, 134 Extensions Manager control panel 72, 73 external stereo speakers, connecting 39–40 eye fatigue associated with computer use 111, 113, 115 148 Index F fatigue from computer use, avoiding 113, 115 FDDI networks 45 files. See also documents backing up 51 file sharing ejecting CD-ROM discs and 55 sharing a CD-ROM disc 58 Finder activating 22, 29 icon 49 floating-point unit (FPU) requirements 72 floppy disk drive illustration 34 installing (internal) 44 floppy disks backing up 51 can’t eject 70 can’t start up from 67 ejecting 122 format/density issues 69 guidelines for handling 119 repairing 95–97 starting up from 91 unreadable 69 folders Apple Extras 19, 47–48, 68 icons for 17 Previous System Folder 103, 104 System Folder 49, 52, 84, 97, 101–104 Utilities 68, 92, 94, 96, 98, 101 Foreign File Access CD-ROM extension 80 formatting a hard disk 90–92 Function keys 140 furniture for computer use, arranging 113–114 G graphics, Photo CD images as a source for 57 grave accent (`), typing 142 grounding the computer 3, 117 Guide (h) menu. See also Macintosh Guide displaying 15, 16, 22 Hide Balloons command 30 Shortcuts command 31–32 Show Balloons command 30 H hard disk backing up 51 icon 12, 17 icon does not appear on the desktop 68, 90, 93 initializing 90–92 making available 68 repairing 93, 95–97 testing 94–95 updating 99, 102 hard disk drive connecting 40–43 illustration 34 installing (internal) 44 hard disk space, using as memory 51 health-related information about computer use 111–115 help. See Apple-authorized service providers; Balloon Help; customer support hotline; Guide (h) menu; Macintosh Guide; troubleshooting Hide Balloons command (Guide [h] menu) 30 Hide Others command (Application menu) 50 hiding/showing windows on the desktop 50 High Sierra CD-ROM discs 81 “Huh?” button, Macintosh Guide window 29 Index 149 I, J icons ADB 8, 9 application program 17 blinking question mark 66, 98 defined 17 Disk First Aid 96, 98, 101 disk with an X 67 document 17 do not appear correctly on screen 68 Finder 49 folder 17 hard disk 12, 17 ports 34–35 “sad Macintosh” 67 SCSI 40 Trash 17 Index button, Macintosh Guide 23, 25–26 initializing a hard disk 90–92 inserting a CD-ROM disc 48 Installer program clean installation of system software 101–104 custom installation of system software 105–106 installing CD-ROM software 70, 78, 107–108 normal installation of system software 99–100 installing. See also connecting additional DRAM 44 CD-ROM software 107–108 device drivers for SCSI devices 41 expansion card 4, 129–137 internal storage devices 44 monitor card 4 processor upgrade card 138 system extensions 100, 104 system software 97–106 interference with radio and television reception vi, 118 international characters and symbols, typing 141–142 Internet configuring your system for 45–46 ISDN networks 45 obtaining Apple software updates 88–89 ISO 9660 CD-ROM discs 81 K keyboard connecting 8–9 correct posture for using 113–114 guidelines for handling 118 illustration 2, 34 ports 8, 9 typing produces nothing on screen 74 keyboard cable checking connections 73, 74 illustration 2 plugging in 8, 9 keyboard shortcuts 31–32 keyboard tray 114 Key Caps program (Apple [K] menu) 141–142 key combinations for common diacritical marks 142 for special functions 143 150 Index L LaserWriter Select 300 model, printer driver compatibility 85 liquid spills on computer equipment 116, 117, 118, 121 LocalTalk network, connecting to 45 locking the mouse 126 Look For button, Macintosh Guide 23, 27–28 M Macintosh Easy Open 49 Macintosh Guide. See also Guide (h) menu activating 22 closing 28, 29 Index button 23, 25–26 Look For button 23, 27–28 moving the window out of the way 29 returning to main window 24, 26, 29 tips for using 29 Topics button 23–24 Macintosh Tutorial 14–15 memory allocating more 71 DRAM 44 expanding 44 “not enough memory” message 71–72 PRAM 65 using hard disk space as 51 virtual memory 71 VRAM 44 Memory control panel 71, 77 memory requirements for Power Macintosh applications 51 menu bar 16 menus 15, 16 microphone connecting 38–39 illustration 2, 34 modem port (GeoPort) 34, 35 Modern Memory Manager, turning off 77 moisture, protecting the computer from 116, 117, 121 monitor brightness control 13, 64, 118 cleaning the screen 115, 123 guidelines for handling 118 illustration 2, 34 placement and position of 5, 114 turning on 12 monitor cable 2, 7, 73 monitor card 4 monitor port 7, 34, 35 monitor power cord 5–6 monitor power cord socket 6, 35 Monitors control panel 65 mouse cleaning 123–125 connecting 8–9 how to use 14–15 illustration 2, 34 locking/unlocking 126–127 problems with 73–74 mouse button 14, 15 mouse cable 8, 9, 73 mouse ports 8, 9 mouse shortcuts 31–32 musculoskeletal discomfort associated with computer use 111, 112 N network cables 45 networks connecting to 45–46 sharing a CD-ROM disc and 58 normal installation of system software 98–101 “not enough memory” message 52 Numeric keys 140 Index 151 O Option-x keys to rebuild the desktop 64, 68, 143 Option key 140 combined with other keys for typing diacritical marks 142 P Parameter RAM (PRAM), resetting 65 PC Exchange control panel 69, 75, 76 performance issues 84 Peripheral Component Interconnect (PCI) cards 45, 129 Personal LaserWriter LS and 300 models, printer driver compatibility 85 Photo CDs 57, 83 plugging in the computer 3 pointer. See arrow pointer on screen ports Apple Desktop Bus (ADB) 8, 9, 35, 74 Ethernet (AAUI) 34, 35 Ethernet (10BASE-T) 34, 35 joining connectors to 117 keyboard 8, 9 modem (GeoPort) 34, 35 monitor 7, 34, 35 mouse 8, 9 printer (GeoPort) 34, 35 SCSI 34, 35, 40 security lock 35 sound input/output 35–39 power button 18, 34, 63 power cords checking connections 65 connecting the monitor 5–6 disconnecting the computer’s cord 4 illustration 2, 3 power cord sockets 3, 6, 35 Power key illustration 11, 34, 140 restarting the computer 63 turning on the computer 11, 18, 34, 140 Power Macintosh “native” application programs 51–52 Power-on light 34 PowerPC microprocessor ix power supply 122, 132 power switch on monitor 12 PowerTalk program 47 precautions. See safety instructions Previous System Folder 103, 104 printer driver compatibility issues 85 printer port (GeoPort) 34, 35 printers connecting 40–43 problems with 85 problems. See troubleshooting processor upgrade card, installing 138 programs. See application programs and names of specific programs Q QuickDraw GX program 47 R radio and television reception, interference with vi, 118 RAM. See memory Read Me file 19 rebuilding the desktop 64, 68, 75, 143 Reduced Instruction Set Computing (RISC) technology ix reinstalling CD-ROM software 107–108 system software 97–106 152 Index repairing disks 93–97 repetitive stress injuries (RSIs) 112 replacing special software in new System Folder 104 replacing the clock battery 65 Restart command (Special menu) 63 restarting the computer methods for 63, 143 troubleshooting and 66–67, 70–73, 75, 78, 80 Return key 140 S “sad Macintosh” icon 67 safety instructions CD-ROM discs 120 CD-ROM drive/player vii, 121 cleaning equipment 120, 123–125 connecting a SCSI or ADB device 33 floppy disks 119 general precautions 116 handling equipment 117–118 installing additional DRAM 44 scanners, connecting 40–43 screen. See also monitor appears dark 64 cleaning 115, 123 minimizing glare and reflections 114, 115 screen saver programs 64, 118 scroll arrows 17 scroll bar, Macintosh Guide Index window 25 SCSI chains 40, 42, 43 SCSI devices computer doesn’t recognize 66 connecting 40–43 SCSI ID numbers 41, 66, 68, 77, 93 SCSI interface (internal) 40 SCSI peripheral interface cable 42 SCSI port 34, 35, 40 SCSI system cable 41 SCSI terminators 42 security lock ports 35 shared libraries for Power Macintosh applications 52, 76 Sharing Setup control panel 55 Shift key 140 Shortcuts command (Guide [h] menu) 31–32 Show All command (Application menu) 50 Show Balloons command (Guide [h] menu) 30 showing/hiding windows on the desktop 50 Shut Down command (Special menu) 18, 71, 78 size box 17 sleep mode 64 slider, Macintosh Guide Index window 25 software license agreement 86 software updates, obtaining 86–89 sound input/output ports 35–39 special characters and symbols, typing 141–142 special keys 140, 143 Special menu Empty Trash command 17 Restart command 63 Shut Down command 18, 71, 78 spills on computer equipment 116, 117, 118, 121 startup disk, defined 97 static electricity, discharging 132 stereo miniplug 37, 39 stereo speakers, connecting 39–40 StyleWriter and StyleWriter II models, printer driver compatibility 85 switching to another program 50 symbols and international characters, typing 141–142 Index 153 system extensions performance problems and 84 reinstalling 100, 104 turning off before installing application programs 49 to rebuild the desktop 68, 75 to resolve software problems 70, 72, 73, 78 System Folder creating a new one 101–104 decreased performance and 84 discarding extras 49 replacing special software items 104 shared libraries and 52 system software and 97 system software installing/reinstalling 97–106 problems starting up the computer 66 System software floppy disks, starting up from basic instructions 91 installing CD-ROM software 107 installing system software 99, 102, 107 T Tab key 140 tape backup drives, connecting 40–43 tape recorder, connecting 37–38 TCP/IP control panel 45–46 television and radio reception, interference with vi, 118 temperature ranges for storing floppy disks 119 10BASE-T network, connecting to 45 terminators for SCSI chains 42 testing a hard disk 94–95 text box, Macintosh Guide Look For window 27 Text-to-speech program 47 tilde (~), typing 142 title bar, Macintosh Guide window 29 TokenRing networks 45 Topics button Macintosh Guide 23–24, 26, 29 Macintosh Shortcuts 31–32 Trash, dragging items to 17 troubleshooting. See also Appleauthorized service providers arrow pointer “freezes” on screen 61, 63, 73–74 audio CD problems 82 CD-ROM disc problems 80–81 CD-ROM player problems 77–79 computer’s clock keeps time inaccurately 65 diagnosing problems 62–63 error messages “application program can’t be found” 75 “application program can’t be opened because a file can’t be found” 76 blinking question mark icon 66, 98 “bomb” message/icon on screen 61, 63, 72, 83 “Could not create a socket” 46 “not enough memory” message 52, 71 resolving 61, 62 “This is not a Macintosh disk: Do you want to initialize it?” 80 “Unable to locate host” 46 floppy disks can’t eject 70, 122 can’t read 69 can’t start up from 67 format/density issues 69 repairing 95–97 hard disk icon does not appear 68 repairing 93–97 icons CD-ROM disc icon doesn’t appear on desktop 80 do not appear correctly on screen 68 154 Index network configuration problems 46 Photo CD problems 83 printer problems 85 restarting the computer can’t restart after installing software for CD-ROM player 70, 78 can’t restart with CD-ROM disc inside the player 71, 79 using x-Control-Power key to restart 63 screen is dark 64 starting up computer can’t find system software to start up 66 computer doesn’t recognize SCSI equipment 66 disk with an X appears on screen 67 “sad Macintosh” icon appears 67 turning on the computer 13 unusual desktop appears after computer starts up 71, 78 system is “frozen” 61, 63, 73, 83 system software problems 66 working with programs application won’t start or quits unexpectedly 71–72 can’t open a DOS document on the Macintosh 75, 76 compatibility issues with older Macintosh programs 77 performance problems 84 typing produces nothing on screen 74–75 using x-Option-Esc to quit a program 63 turning off Easy Access 74 turning off system extensions. See system extensions turning off the computer 18, 34, 116, 117, 140 turning on the computer 11, 13, 18, 34, 140 turning on the monitor 12 tutorial, starting the Macintosh Tutorial 14–15 typing produces nothing on screen 74 U umlaut (¨), typing 142 unlocking the mouse 127 updated Apple software, obtaining 86–89 updating the hard disk 99, 102 Utilities folder Disk First Aid program 96, 98, 101 Drive Setup program 68, 92, 94 V ventilation for computer equipment 117, 118 video RAM (VRAM), expanding 44 viewing PhotoCD images 57 virtual memory 71 virus-protection programs 49 volume control of external speakers 40 W, X, Y warranty on computer 44 windows, viewing and moving 17 work space, arranging 113–114 Z zoom box, Macintosh Guide window 29 Index 155 Apple Computer, Inc. 1 Infinite Loop Cupertino, California 95014-2084 408.996.1010 030-8760-A Printed in U.S.A. iPhone 4 Guida alle informazioni importanti sul prodotto Questa Guida alle informazioni importanti sul prodotto contiene informazioni sulla licenza software, sulla normativa, la sicurezza e la garanzia di iPhone. Consulta le informazioni sullo smaltimento e il riciclaggio e altre informazioni sull’ambiente nel Manuale Utente di iPhone all’indirizzo: support.apple.com/it_IT/manuals/iphone ± Per evitare lesioni, leggi tutte le istruzioni relative al funzionamento e le informazioni di sicurezza prima di utilizzare iPhone. Per istruzioni dettagliate sul funzionamento, leggi il Manuale Utente di iPhone direttamente dal dispositivo andando all’indirizzo help.apple.com/iphone o utilizzando il preferito Manuale Utente di iPhone in Safari. Per versioni scaricabili del Manuale Utente di iPhone e per l’ultima versione di questa Guida alle informazioni importanti sul prodotto, vai su: support.apple.com/it_IT/manuals/iphone Informazioni importanti sull’uso e la sicurezza ATTENZIONE: la mancata osservanza di queste istruzioni sulla sicurezza potrebbe essere causa di incendio, scosse elettriche o altri danni e lesioni a iPhone o ad altre proprietà. Trasportare e utilizzare iPhone iPhone contiene componenti delicati. Non fare cadere, non smontare, esporre a microonde, incenerire, dipingere iPhone e non inserirvi oggetti estranei. Non utilizzare iPhone se è stato danneggiato, ad esempio se si è rotto, forato o è stato danneggiato dall’acqua. I rivestimenti anteriore e posteriore di iPhone sono in vetro. Tale parte in vetro potrebbe rompersi se iPhone fosse lasciato cadere su una superficie dura, se ricevesse un forte colpo o se venisse schiacciato, piegato o deformato. Se il vetro si scheggia o si frantuma, evita di toccare o di rimuovere la parte danneggiata. Non utilizzare iPhone finché il vetro non viene sostituito da Apple o da un fornitore di servizi autorizzato da Apple. La garanzia non risponde dei vetri frantumati a causa di un utilizzo scorretto o eccessivo. Puoi proteggere iPhone da eventuali graffi o abrasioni utilizzando una custodia venduta separatamente. Mantenere pulito l’esterno di iPhone Pulire iPhone immediatamente se viene a contatto con agenti contaminanti che possano provocare macchie,—come ad esempio inchiostro, tinture, trucco, sporcizia, cibo, olio e lozioni. Per pulire iPhone, scollega tutti i cavi e spegnilo (premi e tieni premuto il pulsante Sospensione/Riattivazione e fai scorrere il cursore su schermo). Quindi, usa un panno morbido non sfilacciato e leggermente umido. Evita di fare entrare umidità nelle aperture. Evita di usare detergenti per vetri, prodotti generici per la pulizia della casa, prodotti a spruzzo, solventi, alcol, ammoniaca o sostanze abrasive per pulire iPhone. La superficie anteriore in vetro è dotata di un rivestimento oleorepellente. Per rimuovere le impronte, passa un panno morbido e non sfilacciato su queste superfici. La capacità oleorepellente di tale rivestimento diminuisce con l’uso normale e diminuisce ulteriormente strofinando lo schermo con materiale abrasivo; quest’ultima azione può inoltre graffiare il vetro. Evitare l’acqua e i luoghi umidi Non esporre iPhone a contatto con acqua o pioggia, né utilizzarlo in prossimità di luoghi umidi come ad esempio lavandini o bagni. Fai attenzione a non versare alcun cibo o liquido su iPhone. Nel caso in cui iPhone si bagni, scollega tutti i cavi, spegnilo prima di pulirlo e lascialo asciugare completamente prima di riaccenderlo. Evita di asciugare iPhone con una fonte di calore esterna, come un forno a microonde o un asciugacapelli. I danni causati a iPhone dal contatto con liquidi non vengono coperti dalla garanzia. Riparare o modificare iPhone Non tentare di riparare o modificare iPhone da solo. iPhone non contiene parti che possano essere sostituite dall’utente, a eccezione della scheda SIM e dello sportello SIM, se è il caso. Se disassembli iPhone, compresa la rimozione delle viti esterne e del rivestimento posteriore, potresti provocare danni non coperti dalla garanzia. Se iPhone è stato immerso in acqua, è forato o ha subito un grave danno, evita di utilizzarlo e recati presso un fornitore di servizi autorizzato da Apple. L’assistenza deve essere prestata solo da Apple o da un fornitore di servizi autorizzato da Apple. In caso di dubbi, contatta Apple o un fornitore di servizi autorizzato da Apple. Per informazioni sull’assistenza, visita il sito: www.apple.com/it/support/iphone/service/faq Sostituzione della batteria Non cercare di sostituire la batteria ricaricabile di iPhone da solo. La batteria deve essere sostituita solo da Apple o da un fornitore di servizi autorizzato da Apple. Per ulteriori informazioni sul servizio di sostituzione della batteria, vai su: www.apple.com/it/batteries/replacements.html Caricare iPhone Per caricare iPhone, utilizza soltanto il connettore Apple da Dock a USB con seguenti elementi: (i) un alimentatore di corrente USB di Apple, (ii) un altro prodotto o accessorio Apple compatibile con iPhone, (iii) a accessorio di terze parti certificato per l’uso del logo “Works with iPhone” o “Made for iPhone”, (iv) una porta USB ad alta velocità su un altro dispositivo compatibile con lo standard USB 2.0 o 1.1, (v) un alimentatore di corrente conforme a uno dei seguenti standard EN 301489-34, IEC 62684, YD/T 1591-2009, CNS 15285, ITU L.1000 o un altro standard di interoperabilità applicabile per alimentatori di corrente di telefoni cellulari. Per collegare iPhone ad alcuni alimentatori di corrente compatibili, potrebbe essere necessario l’alimentatore Micro USB per iPhone (disponibile separatamente in alcune regioni) o un altro alimentatore. Nota: sono compatibili solo gli alimentatori di corrente micro USB conformi agli standard di interoperabilità applicabili in alcune regioni per alimentatori di corrente per telefoni cellulari. Per sapere se l’alimentatore di corrente micro USB usato è conforme a tali standard, contatta il fabbricante dell’alimentatore. Leggi le istruzioni di sicurezza relative a tutti i prodotti e accessori prima di utilizzarli con iPhone. Apple non è responsabile del funzionamento di accessori di terzi, di eventuali danni da essi causati o della loro conformità agli standard sulla sicurezza e le normative. Quando utilizzi l’alimentatore di corrente USB di Apple per caricare iPhone, assicurati che l’alimentatore sia completamente montato prima di collegarlo a una presa elettrica. Quindi, inserisci saldamente l’alimentatore di corrente USB di Apple nella presa elettrica. Non collegarlo o scollegarlo con le mani bagnate. L’alimentatore di corrente USB di Apple può scaldarsi durante l’uso. Lascia sempre un adeguato spazio di ventilazione intorno all’alimentatore di corrente USB di Apple e manipolalo con cura. Scollega l’alimentatore di corrente USB di Apple se si verifica una delle seguenti condizioni:  Il cavo e/o la spina di alimentazione sono consumati o danneggiati.  L’alimentatore è stato esposto alla pioggia, a liquidi o a eccessiva umidità.  L’involucro dell’alimentatore è danneggiato.  Ti sembra che l’alimentatore debba essere riparato.  Desideri pulire l’alimentatore. Evitare danni all’udito Se utilizzi il ricevitore, gli auricolari, le cuffie o l’altoparlante a volume elevato, potresti subire una perdita permanente dell’udito. Utilizza solo ricevitori, auricolari, cuffie o altoparlanti compatibili con il dispositivo. Attiva l’audio e controlla il volume prima di inserire gli auricolari o le cuffie nelle orecchie. Col tempo, potresti adattarti a un volume audio più elevato che potrebbe sembrarti normale, ma che può danneggiarti l’udito. Se senti fischi o rumori attutiti, interrompi l’ascolto ed effettua un controllo dell’udito. Più alto è il volume e in meno tempo l’udito potrebbe subire dei danni. Per proteggere l’udito gli esperti consigliano di:  Ridurre l’utilizzo di ricevitore, auricolari, cuffie, o altoparlante ad un volume elevato.  Evitare di aumentare il volume in ambienti rumorosi.  Abbassare il volume se non riesci a sentire le persone che parlano accanto a te. Per informazioni su come impostare un limite massimo per il volume su iPhone, consulta il Manuale Utente di iPhone. Chiamate di emergenza Non fare affidamento sui dispositivi wireless per chiamate di importanza fondamentale, come ad esempio le emergenze mediche. Potrebbe non essere sempre possibile effettuare chiamate ai servizi d’emergenza con iPhone. I numeri e i servizi di emergenza variano da regione a regione e talvolta potrebbe essere impossibile realizzare una chiamata di emergenza a causa della mancata disponibilità del network o di interferenze ambientali. Alcuni network cellulari potrebbero non accettare chiamate di emergenza da iPhone se il dispositivo non è attivato, se non è compatibile o configurato per funzionare su un determinato network cellulare, se non dispone di scheda SIM o se la SIM è protetta da PIN, se è il caso. Guidare o andare in bicicletta in modo sicuro Quando sei alla guida o in bicicletta, l’utilizzo di iPhone potrebbe provocare distrazioni. Se ritieni che l’utilizzo di iPhone sia motivo di distrazione o disturbo mentre guidi o vai in bicicletta, fermati e parcheggia prima di effettuare o rispondere a una chiamata. Quando sei alla guida o in bicicletta, l’utilizzo di iPhone, con o senza gli auricolari (anche in un solo orecchio), è sconsigliato; in alcune zone è vietato per legge. Considera l’utilizzo di un dispositivo vivavoce compatibile con iPhone. In alcune zone potrebbe essere necessario l’utilizzo di un dispositivo vivavoce. Controlla e rispetta le leggi e la normativa relativa all’uso di dispositivi portatili come iPhone nelle zone in cui stai guidando o andando in bicicletta. Navigazione sicura Non fare affidamento sulle applicazioni di iPhone che forniscono mappe, indicazioni tramite bussola, informazioni sull’orientamento, informazioni sul traffico, indirizzi o navigazione basata sulla localizzazione per stabilire posizioni, prossimità, distanze, condizioni del traffico e indicazioni con precisione. Tali applicazioni dovrebbero essere utilizzate solo per un’assistenza di navigazione basica. Mappe, gli indirizzi e le applicazioni di localizzazione dipendono dai servizi di dati. Tali servizi sono soggetti a modifiche e cambiamenti e potrebbero non essere disponibili in tutte le aree; per questo motivo, le mappe, le indicazioni tramite bussola digitale, gli indirizzi, le condizioni del traffico o informazioni di localizzazione potrebbero essere imprecisi, incompleti o non essere disponibili. iPhone contiene una bussola digitale interna situata nell’angolo superiore destro del dispositivo. La precisione delle rotte indicate dalla bussola digitale potrebbe essere alterata da interferenze magnetiche o da altre interferenze ambientali, compresa l’interferenza causata dalla vicinanza ai magneti contenuti negli auricolari di iPhone. Non fare affidamento esclusivamente sulla bussola digitale per determinare gli indirizzi con precisione. Confronta sempre le informazioni fornite da iPhone con le informazioni presenti nella zona in cui ti trovi e utilizza la segnaletica stradale per risolvere eventuali problemi. Non utilizzare applicazioni di localizzazione mentre svolgi attività che richiedono un’attenzione totale. Assicurati di rispettare sempre la segnaletica stradale, le leggi e la normativa prevista nei paesi in cui utilizzi iPhone. Per i veicoli dotati di airbag Un airbag si gonfia con grande potenza. Non posizionare iPhone o i suoi accessori nell’area sopra l’airbag o nella zona in cui è previsto che si gonfi. Convulsioni, svenimenti e dolore agli occhi Una ridotta percentuale di persone potrebbe essere soggetta a svenimenti o convulsioni (anche qualora non abbia mai sperimentato prima episodi di questo tipo) quando esposta a luci intermittenti o a motivi luminosi come quelli prodotti da videogiochi o durante la riproduzione di un video. Se hai antecedenti personali o familiari di svenimenti o convulsioni, dovresti consultare un medico prima di giocare con i videogiochi (se disponibili) o di guardare video su iPhone. Se vieni colpito da mal di testa, svenimenti, convulsioni, spasmi muscolari o agli occhi, perdita di conoscenza, movimenti involontari o disorientamento, sospendi l’utilizzo di iPhone e consulta un medico. Per ridurre il rischio di mal di testa, svenimenti, convulsioni e dolore agli occhi, evita l’utilizzo prolungato, mantieni iPhone ad una certa distanza dagli occhi, utilizzalo in ambienti ben illuminati e fai pause frequenti. Pericolo di soffocamento iPhone i relativi accessori contengono parti piccole, che potrebbero rappresentare un rischio di soffocamento per i bambini. Tenere tali parti fuori dalla portata dei bambini. Movimenti ripetuti Attività ripetitive come digitare testo o giocare con videogiochi su iPhone possono provocare disturbi occasionali a mani, braccia, spalle, collo o altre parti del corpo. Fai delle pause frequenti e, se riscontri dei disturbi durante o dopo tale utilizzo, interrompi l’utilizzo e consulta un medico. Atmosfere potenzialmente esplosive Spegni iPhone, se ti trovi in una zona con atmosfera potenzialmente esplosiva. Non caricare iPhone e segui attentamente le indicazioni fornite. In tali zone la presenza di scintille potrebbe causare esplosioni o incendi, causando lesioni gravi o persino la morte. Le zone con atmosfera potenzialmente esplosiva sono solitamente, ma non sempre, segnalate chiaramente. Le zone potenzialmente esplosive potrebbero includere: aree di rifornimento di carburante (come distributori di benzina); interni delle barche; impianti di immagazzinamento o trasferimento di combustibile o sostanze chimiche; veicoli che utilizzano gas liquido (come propano o butano); zone la cui aria contiene sostanze chimiche o particelle (come granelli, polvere o polveri di metallo) e qualsiasi altra zona in cui è generalmente consigliabile spegnere il motore dell’auto. Utilizzare connettori, porte e tasti Non forzare mai un connettore in una porta, né esercitare una pressione eccessiva su un tasto; ciò potrebbe causare danni non coperti dalla garanzia Se il connettore e la porta non si collegano con facilità, probabilmente non corrispondono. Verifica eventuali ostruzioni e accertati che il connettore corrisponda alla porta e che sia posizionato correttamente rispetto alla porta. Accessori e prestazioni wireless Non tutti gli accessori di iPod sono completamente compatibili con iPhone. L’attivazione della modalità di uso in aereo su iPhone potrebbe eliminare le interferenze audio tra iPhone e un accessorio. Quando la modalità di uso in aereo è attivata, non puoi effettuare o ricevere chiamate e non puoi utilizzare funzionalità che richiedono la comunicazione wireless. In alcune condizioni, determinati accessori potrebbero compromettere le prestazioni wireless di iPhone. Riorientare o riposizionare iPhone e l’accessorio collegato può migliorare le prestazioni wireless. Mantenere iPhone entro temperature accettabili iPhone è stato progettato per funzionare a temperature comprese tra 0º e 35º C (da 32º a 95º F) e per essere conservato a temperature tra -20º e 45º C (da -4º a 113º F). Condizioni di alta o bassa temperatura possono accorciare temporaneamente la durata della batteria o causare il malfunzionamento momentaneo di iPhone. Lasciare iPhone in macchina o esporlo alla luce diretta del sole può provocare l’aumento delle temperature di conservazione e funzionamento di iPhone. Evita di utilizzare iPhone quando ci sono cambi drastici di temperatura o di livello di umidità poiché potrebbe formarsi della condensa sopra o dentro iPhone. Quando iPhone è in funzione e la batteria è in ricarica, è normale che iPhone si surriscaldi. La parte esteriore di iPhone funge da superficie di raffreddamento trasferendo il calore dall’interno dell’unità al suo esterno. Esposizione all’energia a radiofrequenza iPhone trasmette e riceve energia a radiofrequenza (RF) attraverso l’antenna. L’antenna cellulare di iPhone si trova sul margine inferiore di iPhone, a sinistra del pulsante Home. L’antenna Wi-Fi e Bluetooth® si trova nel margine superiore di iPhone, a destra dell’uscita della cuffia. iPhone è stato progettato, fabbricato e testato nel rispetto dei limiti di esposizione all’energia a RF stabiliti dalle entità di regolamentazione internazionali, tra cui la Federal Communications Commission (FCC) degli Stati Uniti, la Industry Canada (IC) del Canada, il Ministero degli Affari interni e Comunicazioni del Giappone (MIC) e il Consiglio dell’Unione Europea. Il tasso di assorbimento specifico (Specific Absorption Rate) o SAR si riferisce al tasso di assorbimento secondo il quale il corpo assorbe l’energia a radiofrequenza (RF). Il limite SAR per i telefoni cellulari è di 1,6 watt per chilogrammo (W/kg) per la FCC e la Industry Canada e di 2,0 W/kg per il Consiglio dell’Unione Europea. iPhone è stato testato1 e soddisfa i requisiti di esposizione RF stabiliti dalla FCC, da IC e dall’Unione Europea per le operazioni realizzate tramite cellulari, Wi-Fi e Bluetooth. I test per il tasso SAR vengono condotti su posizioni di funzionamento standard di iPhone e i radiotrasmettitori vengono impostati al livello massimo di potenza. Il livelli SAR massimo di iPhone su ciascuna frequenza operativa vengono indicati in una tabella alla fine di questo paragrafo. I livelli del tasso SAR durante il normale utilizzo possono essere inferiori ai livelli massimi di tale tasso. In condizioni di normale utilizzo, iPhone regola automaticamente la potenza di trasmissione radio al livello minimo necessario per la comunicazione con il network wireless. Durante il trasporto, mantieni iPhone a una distanza dal corpo di almeno 1,5 cm (5/8 in.) per assicurarti che i livelli di esposizione siano pari o al di sotto dei livelli massimi. Evitare custodie con parti in metallo. L’esposizione all’energia a radiofrequenza (RF) è legata al tempo di utilizzo e alla distanza. Se hai ancora preoccupazioni relative all’esposizione all’energia a RF, riduci il tempo totale delle chiamate su iPhone, aumenta la distanza dal dispositivo utilizzando una delle opzioni di vivavoce disponibili,come gli altoparlanti integrati, le cuffie con microfono integrato fornite o altri accessori di terze parti. Per ulteriori informazioni sull’esposizione all’energia RF, consulta la pagina sulla sicurezza relativa alla radiofrequenza della FCC all’indirizzo: www.fcc.gov/oet/rfsafety Per ottenere informazioni sulla ricerca scientifica relativa all’esposizione all’energia a RF, consulta il database della ricerca sul campo elettromagnetico (EMF) dell’Organizzazione Mondiale della Sanità sul sito: www.who.int/peh-emf/research/database 1 Il dispositivo è stato testato secondo gli standard di misurazione e le procedure specificate in: “FCC OET Bulletin 65, Supplement C (Edition 01-01) and IEEE 1528-2003 and Canada RSS 102, Issue 4, March 2010”. iPhone segue le direttive del Consiglio Europeo del 12 luglio 1999 sulla limitazione dell’esposizione della popolazione ai campi elettromagnetici [1999/519/CE]. Modello GSM Banda di frequenza2 Corpo3 Testa Limite SAR 1g stabilito dalla FCC & IC (W/kg) GSM 850 1,11 1,00 1,6 GSM 1900 0,43 1,17 1,6 UMTS II 1900 0,43 1,17 1,6 UMTS V 850 1,11 1,00 1,6 2.4 GHz Wi-Fi 0,07 0,88 1,6 Banda di frequenza2 Corpo3 Testa Limite SAR 10g stabilito dall’Unione Europea (W/kg) EGSM 900 0,74 0,66 2,0 GSM 1800 0,28 0,59 2,0 UMTS I 2100 0,36 0,93 2,0 UMTS VIII 900 0,74 0,66 2,0 2.4 GHz Wi-Fi 0,05 0,36 2,0 Modello CDMA Banda di frequenza2 Corpo3 Testa Limite SAR 1g stabilito dalla FCC (W/kg) 800 MHz Banda Classe 0 0,87 1,06 1,6 1900 MHz Banda Classe 1 0,45 1,18 1,6 2.4 GHz Wi-Fi 0,15 0,54 1,6 Interferenza di radiofrequenza Le emissioni a radiofrequenza dei dispositivi elettronici possono alterare il funzionamento di altri apparati elettronici causandone il malfunzionamento. Nonostante iPhone sia stato progettato, testato e prodotto in conformità alle regolamentazioni in materia di emissioni a radiofrequenza di paesi quali gli Stati Uniti, il Canada, l’Unione Europea e il Giappone, i trasmettitori wireless e i circuiti 2 iPhone può essere configurato per supportare una o alcune delle bande di frequenza elencata, a seconda della tecnologia del gestore e della disponibilità del network. La banda di frequenza utilizzata da iPhone varia in base al fornitore di servizi wireless, alla tecnologia wireless e alla regione. 3 iPhone posizionato a più di 10 mm (13/32 in.) di distanza dal corpo. elettrici di iPhone potrebbero causare interferenze su altri dispositivi elettronici. Prendi quindi le seguenti precauzioni: In aereo L’uso di iPhone in aereo potrebbe essere proibito. Per ulteriori informazioni sull’utilizzo della modalità di uso in aereo per disattivare i trasmettitori wireless di iPhone, consulta il Manuale Utente di iPhone. Veicoli Le emissioni a radiofrequenza di iPhone potrebbero alterare i sistemi elettronici dei veicoli a motore. Rivolgiti al produttore o al rappresentante del tuo veicolo per maggiori informazioni. Pacemaker La Health Industry Manufacturers Association consiglia di mantenere una distanza di almeno 15 cm (6 in.) tra un telefono palmare wireless ed un pacemaker al fine di evitare eventuali interferenze con il pacemaker. Persone con pacemaker:  iPhone dovrebbe essere sempre mantenuto a più di 15 cm (6 in.) di distanza dal pacemaker quando il telefono è acceso ÂÂ È meglio evitare di tenere iPhone in una tasca in prossimità del petto ÂÂ È meglio utilizzare l’orecchio opposto al pacemaker per minimizzare eventuali interferenze potenziali Se hai motivo di sospettare che si stia verificando un’interferenza, spegni immediatamente iPhone. Compatibilità con gli apparecchi acustici iPhone è stato testato e classificato in conformità agli standard di compatibilità degli apparecchi acustici C63.19-2007 stabiliti dall’ANSI (American National Standard Institute). Lo standard ANSI misura l’interferenza a radiofrequenza per l’accoppiamento acustico (classificazione “M”) e per l’accoppiamento induttivo con apparecchi acustici che funzionano in modalità telecoil (classificazione “T”). Per essere considerati compatibili con gli apparecchi acustici secondo gli standard stabiliti dalla FCC, i telefoni devono avere una classificazione pari o superiore a M3 o pari o superiore a M4. Il modello di iPhone 4 CDMA è compatibile con gli apparecchi acustici in base alle regole FCC. Il modello di iPhone 4 GSM è compatibile con gli apparecchi acustici in base alle regole FCC quando la modalità di compatibilità con gli apparecchi acustici è attivata. Per attivare la modalità di compatibilità con gli apparecchi acustici su iPhone 4, vai su Impostazioni > Generali > Accessibilità. L’attivazione di questa impostazione può ridurre la copertura rete dati cellulare di 2G. Per ulteriori informazioni, consulta il paragrafo Compatibilità con gli apparecchi acustici del Manuale Utente di iPhone. Per conoscere le classificazioni di compatibilità di iPhone con gli apparecchi acustici, vai all’indirizzo: www.apple.com/support/hac iPhone potrebbe interferire con alcuni apparecchi acustici. In tal caso, rivolgiti al produttore dell’apparecchio o al medico per rimedi o possibili alternative. Compatibilità con altre tecnologie wireless Questo telefono è stato testato e classificato per l’utilizzo con apparecchi acustici per alcune delle tecnologie wireless di cui fa uso. Tuttavia il telefono potrebbe utilizzare delle tecnologie wireless più recenti non ancora testate per l’utilizzo con apparecchi acustici. Per determinare la presenza di eventuali interferenze, è importante provare tutte le funzionalità del telefono in diversi luoghi, utilizzando l’apparecchio acustico o impianto cocleare. Consulta il tuo fornitore di servizi o il produttore del telefono per informazioni sulla compatibilità del dispositivo con apparecchi acustici. Se hai domande relative alle politiche di cambio o restituzione, consulta il tuo fornitore di servizi o il rivenditore del telefono. Altri dispositivi medici Se utilizzi altri dispositivi medici, rivolgiti al produttore del dispositivo o al tuo medico curante per determinare se tale dispositivo sia protetto adeguatamente dalle emissioni di energia a RF di iPhone. Strutture sanitarie Le apparecchiature utilizzate in ospedali e strutture sanitarie potrebbero essere sensibili all’energia alle emissioni a RF. Spegni iPhone qualora ti venga espressamente richiesto dal personale o dai cartelli presenti. Zone a rischio di esplosione e locali con divieto Per evitare interferenze con operazioni che implicano esplosioni, spegni iPhone se ti trovi in un’atmosfera potenzialmente esplosiva o in zone segnalate con indicazioni come “Spegnere ricetrasmittenti”. Attenersi alle segnalazioni e alle istruzioni. Certificazione e conformità Consulta iPhone per i marchi di certificazione e conformità specifici del dispositivo. Per visualizzarli, scegli Impostazioni > Generali > Info > Normative. Australia/ Nuova Zealanda Russia Brasile Taiwan Canada IC ID: 579C-E2380A IC ID: 579C-E2380B Unione Europea Giappone AD 10-0008 202 202XY10671311 202MW10671311 202WW10671312 202WW10671311 202GZ10671311 AD 10-0009 202 202XY10671321 202MW10671321 202WW10671322 202WW10671321 202GZ10671321 Sudafrica Costa Rica 00065-2010 Messico Cofetel: RTIAPA 108- 0752-A2 Singapore Argentina CNC: 25-8540, 25-8541, 25-8542 Corea del Sud Filippine Indonesia Tailandia CLASS B NTC ID. B38504-10-0242 Emirati Arabi Uniti Stati Uniti FCC ID: BCG-E2380A FCC ID: BCG-E2422A FCC ID: BCG-E2380B FCC ID: BCG-E2422B Importante: cambiamenti o modifiche a questo prodotto non autorizzati da Apple potrebbero annullare la conformità agli standard sulla compatibilità elettromagnetica (EMC) e wireless così come la tua autorizzazione a utilizzare il prodotto. La conformità del prodotto agli standard EMC è stata dimostrata in condizioni che comprendevano l’uso di dispositivi periferici e cavi schermati tra i componenti di sistema. L’uso di dispositivi periferici e cavi schermati a norma tra i componenti di sistema è importante per ridurre la possibilità di causare interferenze con radio, televisioni e altri dispositivi elettronici. Dichiarazione di conformità FCC This device complies with part 15 of the FCC rules. Operation is subject to the following two conditions: (1) this device may not cause harmful interference, and (2) this device must accept any interference received, including interference that may cause undesired operation. Note: This equipment has been tested and found to comply with the limits for a Class B digital device, pursuant to part 15 of the FCC Rules. These limits are designed to provide reasonable protection against harmful interference in a residential installation. This equipment generates, uses, and can radiate radio frequency energy and, if not installed and used in accordance with the instructions, may cause harmful interference to radio communications. However, there is no guarantee that interference will not occur in a particular installation. If this equipment does cause harmful interference to radio or television reception, which can be determined by turning the equipment off and on, the user is encouraged to try to correct the interference by one or more of the following measures:  Reorient or relocate the receiving antenna.  Increase the separation between the equipment and receiver.  Connect the equipment into an outlet on a circuit different from that to which the receiver is connected.  Consult the dealer or an experienced radio/TV technician for help. Dichiarazione di conformità del Canada (Modello GSM) Complies with the Canadian ICES-003 Class B specifications. Cet appareil numérique de la Classe B est conforme à la norme NMB-003 du Canada. This device complies with RSS 210 of Industry Canada. This Class B device meets all the requirements of the Canadian interference-causing equipment regulations. Cet appareil numérique de la Classe B respecte toutes les exigences du Règlement sur le matériel brouilleur du Canada. This device complies with Industry Canada license-exempt RSS standard(s). Operation is subject to the following two conditions: (1) this device may not cause interference, and (2) this device must accept any interference, including interference that may cause undesired operation of the device. Cet appareil est conforme aux normes CNR exemptes de licence d’Industrie Canada. Le fonctionnement est soumis aux deux conditions suivantes : (1) cet appareil ne doit pas provoquer d’interférences et (2) cet appareil doit accepter toute interférence, y compris celles susceptibles de provoquer un fonctionnement non souhaité de l’appareil. Conformità alla normativa UE (Modello GSM) Il dispositivo è conforme ai requisiti di esposizione RF 1999/519/ EC, raccomandazione del Consiglio del 12 luglio 1999 riguardanti la limitazione all’esposizione del pubblico ai campi elettromagnetici (0–300 GHz). Questo dispositivo soddisfa i seguenti standard: EN 300 328, EN 301 489-17, EN 301 511, EN 301 908, EN 50385 Questo dispositivo wireless soddisfa le direttive R&TTE. Dichiarazione di conformità UE (Modello GSM) Български Apple Inc. декларира, че това устройство с клетъчен, Wi-Fi и Bluetooth предавател е в съответствие със съществените изисквания и другите приложими правила на Директива 1999/5/ЕС. Česky Společnost Apple Inc. tímto prohlašuje, že toto mobilní zařízení s technologií Wi-Fi a Bluetooth vyhovuje základním požadavkům a dalším příslušným ustanovením směrnice 1999/5/ES. Dansk Undertegnede Apple Inc. erklærer herved, at følgende udstyr cellular, Wi-Fi og Bluetooth overholder de væsentlige krav og øvrige relevante krav i direktiv 1999/5/EF. Deutsch Hiermit erklärt Apple Inc., dass sich Mobiltelefon, Wi-Fi und Bluetooth in Übereinstimmung mit den grundlegenden Anforderungen und den übrigen einschlägigen Bestimmungen der Richtlinie 1999/5/EG befinden. Eesti Käesolevaga kinnitab Apple Inc., et see mobiil-, Wi-Fi- ja Bluetooth-seade vastab direktiivi 1999/5/EÜ põhinõuetele ja nimetatud direktiivist tulenevatele teistele asjakohastele sätetele. English Hereby, Apple Inc. declares that this cellular, Wi-Fi, and Bluetooth device is in compliance with the essential requirements and other relevant provisions of Directive 1999/5/EC. Español Por medio de la presente Apple Inc. declara que este dispositivo celular, Wi-Fi y Bluetooth cumple con los requisitos esenciales y cualesquiera otras disposiciones aplicables o exigibles de la Directiva 1999/5/CE. Ελληνικά Mε την παρούσα, η Apple Inc. δηλώνει ότι αυτή η συσκευή κινητού, Wi-Fi και Bluetooth συμμορφώνεται προς τις βασικές απαιτήσεις και τις λοιπές σχετικές διατάξεις της Οδηγίας 1999/5/ΕΚ. Français Par la présente Apple Inc. déclare que l’appareil cellulaire, Wi-Fi, et Bluetooth est conforme aux exigences essentielles et aux autres dispositions pertinentes de la directive 1999/5/CE. Islenska Apple Inc. lýsir því hér með yfir að þetta tæki, sem er farsími, þráðlaus og með blátannartækni (e: cellular, Wi-Fi and Bluetooth,) fullnægir lágmarkskröfum og öðrum viðeigandi ákvæðum Evróputilskipunar 1999/5/EC. Italiano Con la presente Apple Inc. dichiara che questo dispositivo cellulare, Wi-Fi e Bluetooth è conforme ai requisiti essenziali ed alle altre disposizioni pertinenti stabilite dalla direttiva 1999/5/CE. Latviski Ar šo Apple Inc. deklarē, ka cellular, Wi-Fi un Bluetooth ierīce atbilst Direktīvas 1999/5/EK būtiskajām prasībām un citiem ar to saistītajiem noteikumiem. Lietuvių Šiuo „Apple Inc.“ deklaruoja, kad korinio, „Wi-Fi“ ir „Bluetooth“ ryšio įrenginys atitinka esminius reikalavimus ir kitas 1999/5/EB Direktyvos nuostatas. Magyar Alulírott, Apple Inc. nyilatkozom, hogy a mobil, Wi-Fi és Bluetooth megfelel a vonatkozó alapvetõ követelményeknek és az 1999/5/EC irányelv egyéb elõírásainak. Malti Hawnhekk, Apple Inc. tiddikjara li dan l-apparat ċellulari, Wi-Fi, u Bluetooth huwa konformi mar-rekwiżiti essenzjali u dispożizzjonijiet oħra relevanti tad-Direttiva 1999/5/KE. Nederlands Hierbij verklaart Apple Inc. dat het toestel cellular, Wi-Fi, en Bluetooth in overeenstemming is met de essentiële eisen en de andere bepalingen van richtlijn 1999/5/EG. Norsk Apple Inc. erklærer herved at dette mobiltelefon-, Wi-Fi- og Bluetooth-apparatet er i samsvar med de grunnleggende kravene og øvrige relevante krav i EU-direktivet 1999/5/EF. Polski Niniejszym Apple Inc. oświadcza, że ten telefon komórkowy, urządzenie Wi-Fi oraz Bluetooth są zgodne z zasadniczymi wymogami oraz pozostałymi stosownymi postanowieniami Dyrektywy 1999/5/EC. Português Apple Inc. declara que este dispositivo móvel, Wi-Fi e Bluetooth está em conformidade com os requisitos essenciais e outras disposições da Directiva 1999/5/CE. Română Prin prezenta, Apple Inc. declară că acest aparat celular, Wi-Fi și Bluetooth este în conformitate cu cerinţele esenţiale şi cu celelalte prevederi relevante ale Directivei 1999/5/CE. Slovensko Apple Inc. izjavlja, da so celične naprave ter naprave Wi-Fi in Bluetooth skladne z bistvenimi zahtevami in ostalimi ustreznimi določili direktive 1999/5/ES. Slovensky Apple Inc. týmto vyhlasuje, že toto mobilné, Wi-Fi & Bluetooth zariadenie spĺňa základné požiadavky a všetky príslušné ustanovenia Smernice 1999/5/ES. Suomi Apple Inc. vakuuttaa täten, että tämä matkapuhelin-, Wi-Fija Bluetooth-tyyppinen laite on direktiivin 1999/5/EY oleellisten vaatimusten ja sitä koskevien direktiivin muiden ehtojen mukainen. Svenska Härmed intygar Apple Inc. att denna mobiltelefoni-, Wi-Fi-, och Bluetooth-enhet står i överensstämmelse med de väsentliga egenskapskrav och övriga relevanta bestämmelser som framgår av direktiv 1999/5/EG. Una copia della dichiarazione di conformità dell’Unione Europea è disponibile all’indirizzo:www.apple.com/euro/compliance iPhone può essere utilizzato nei seguenti paesi: Restrizioni della Comunità Europea (Modello GSM) Français Pour usage en intérieur uniquement. Consultez l’Autorité de Régulation des Communications Electroniques et des Postes (ARCEP) pour connaître les limites d’utilisation des canaux 1 à 13. www.arcep.fr Dichiarazione di conformità del Giappone— Dichiarazione VCCI Class B (Modello GSM) Termini e condizioni di iPhone IMPORTANTE: UTILIZZANDO iPHONE, iPAD o iPOD TOUCH (“DISPOSITIVO iOS”), L’UTENTE ACCETTA DI ESSERE VINCOLATO AI SEGUENTI TERMINI E CONDIZIONI DI APPLE E DI TERZE PARTI. A. LICENZA DEL SOFTWARE iOS APPLE B. NOTIFICHE DA APPLE C. TERMINI E CONDIZIONI GOOGLE MAPS D. TERMINI E CONDIZIONI YOUTUBE APPLE INC. LICENZA SOFTWARE iOS Licenza per uso individuale LEGGETE ATTENTAMENTE LA PRESENTE LICENZA SOFTWARE (“LICENZA”) PRIMA DI UTILIZZARE IL DISPOSITIVO iOS O DI SCARICARE L’AGGIORNAMENTO SOFTWARE CHE ACCOMPAGNA QUESTA LICENZA. UTILIZZANDO IL DISPOSITIVO iOS O SCARICANDO UN AGGIORNAMENTO SOFTWARE, SECONDO IL CASO, ACCETTATE I TERMINI E LE CONDIZIONI DELLA PRESENTE LICENZA. QUALORA NON SIATE D’ACCORDO CON LE CONDIZIONI E I TERMINI DELLA LICENZA, NON UTILIZZATE IL DISPOSITIVO iOS E NON SCARICATE L’AGGIORNAMENTO SOFTWARE. PER GLI ACQUIRENTI DI DISPOSITIVI iOS, QUALORA NON SIATE D’ACCORDO CON TALI CONDIZIONI E TERMINI, RESTITUITE IL DISPOSITIVO iOS AD APPLE STORE O AD UN DISTRIBUTORE AUTORIZZATO ENTRO IL PERIODO DI RESTITUZIONE PER OTTENERE UN RIMBORSO, SECONDO I TERMINI DELLA POLITICA DI RESTITUZIONE CHE TROVERETE SU http://www.apple.com/legal/sales_policies. 1. Generale. (a) Il software (incluso il codice Boot ROM e altro software integrato), le interfacce, i contenuti, i font, la documentazione e tutti i dati forniti con il dispositivo iOS (“Software originale iOS”), così come quelli aggiornati o sostituiti dalle funzionalità aggiunte, dagli aggiornamenti software o da software per il ripristino del sistema forniti da Apple (“Aggiornamenti del Software iOS”), sia su memoria di sola lettura, ovvero su altri supporti o in altra forma (il Software originale iOS e gli Aggiornamenti del Software iOS sono denominati collettivamente il “Software iOS”), vengono concessi in licenza, e non venduti, da Apple Inc. (“Apple”) per essere usati unicamente nei termini di questa Licenza. Apple e i suoi licenziatari rimangono proprietari del Software iOS e si riservano tutti i diritti non espressamente accordati. (b) Apple, a sua discrezione, potrebbe rendere disponibili degli aggiornamenti futuri per il dispositivo iOS. Qualora presenti, tali aggiornamenti potrebbero non includere necessariamente tutte le funzionalità esistenti nel software o le nuove funzionalità fornite da Apple per altri modelli dei dispositivi iOS o per i modelli più recenti. I Termini e condizioni della presente Licenza regoleranno tutti gli Aggiornamenti del Software iOS forniti da Apple per la sostituzione e/o l’integrazione del Software originale iOS, a meno che tale Aggiornamento del Software iOS non sia regolato da una licenza separata; in tal caso, saranno applicabili i Termini e condizioni di questa licenza. 2. Usi consentiti e restrizioni della Licenza. (a) Conforme ai termini e alle condizioni stabiliti nella presente Licenza, Vi viene accordata una licenza limitata e non esclusiva per utilizzare il Software iOS su un singolo dispositivo iOS Apple. Salvo nella misura di quanto consentito dal paragrafo 2(b) a continuazione e salvo quanto stabilito in un contratto separato tra Voi e Apple, la presente Licenza non consente di utilizzare il Software iOS su più di un dispositivo iOS Apple alla volta e non consente di distribuire o di utilizzare il Software iOS su una rete dove potrebbe essere utilizzato da più dispositivi contemporaneamente. La presente licenza non concede alcun diritto relativamente all’utilizzo delle interfacce di proprietà di Apple né di altre proprietà intellettuali per il design, lo sviluppo, la fabbricazione, la concessione in licenza o la distribuzione di dispositivi e accessori di terze parti né di applicazioni di terze parti da utilizzare con i dispositivi iOS. Alcuni di tali diritti sono concessi in licenza separatamente da Apple. Per ulteriori informazioni relativamente allo sviluppo di dispositivi e accessori di terze parti per i dispositivi iOS, contattare madeforipod@apple.com. Per ulteriori informazioni relativamente allo sviluppo di applicazioni per i dispositivi iOS, contattare devprograms@apple.com. (b) Conforme ai termini e alle condizioni stabiliti nella presente Licenza, Vi viene accordata una licenza limitata e non esclusiva per scaricare gli Aggiornamenti del Software iOS resi eventualmente disponibili da Apple per il modello del dispositivo iOS al fine di aggiornare o ripristinare il software di tutti i dispositivi iOS che possedete o controllate. Questa Licenza non consente di distribuire o rendere disponibili gli Aggiornamenti del Software iOS su una rete dove potrebbero essere utilizzati da più dispositivi o computer contemporaneamente. Se avete scaricato un Aggiornamento del Software iOS sul computer, Vi è consentito eseguire una copia degli Aggiornamenti del Software iOS memorizzati sul Vostro computer in formato leggibile dalla macchina per soli scopi di backup, purché la copia di backup riporti tutte le informazioni relative ai diritti d’autore o altri diritti di proprietà contenute nell’originale. (c) Non è consentito, e accettate quindi di non farlo e di non permettere ad altri di farlo, copiare (salvo nei limiti di quanto espressamente consentito dalla presente Licenza), decompilare, disassemblare, riassemblare, tentare di ricavare il codice sorgente, decodificare o modificare il Software iOS e qualunque servizio fornito dal Software iOS o parte di esso né ricavarne prodotti derivati (salvo nei limiti di quanto consentito dalla legge applicabile o dai termini e le condizioni del contratto di licenza che regolano l’uso dei componenti open source inclusi con il Software iOS). Qualsiasi tentativo di compiere una delle suddette azioni costituisce una violazione dei diritti di Apple e dei licenzianti del Software iOS. (d) Archiviando dei contenuti sul Vostro dispositivo iOS, ne eseguite una copia digitale. In alcune giurisdizioni è illegale eseguire copie digitali senza ottenere prima il consenso da parte del detentore dei diritti. Il Software iOS può essere utilizzato per riprodurre materiale purché tale utilizzo sia limitato alla riproduzione di materiale non protetto da copyright, di materiale di cui detenete il copyright, o di materiale per cui non disponete dell’autorizzazione o del permesso legale per la riproduzione. (e) Accettate di utilizzare il Software iOS e i Servizi (così come stabilito nel Paragrafo 5 a continuazione) in conformità a tutte le leggi applicabili, comprese la legislazione locale del paese o della regione in cui risiedete o in cui scaricate o utilizzate il Software iOS e i Servizi. (f ) L’utilizzo e l’accesso a determinate funzionalità del Software iOS e a determinati Servizi (così come stabilito nel Paragrafo 5) potrebbero richiedere la registrazione per una combinazione unica di nome utente e password, nota come ID apple. Inoltre, riconoscete che molte funzionalità e Servizi del Software iOS eseguono la trasmissione di dati che potrebbe ripercuotersi sul vostro piano tariffario e che la responsabilità di tali costi ricade esclusivamente su di Voi. Per ulteriori informazioni, consultate il Manuale utente del Vostro dispositivo iOS. 3. Trasferimento. Non Vi è consentito dare in locazione, in leasing, in prestito, vendere, ridistribuire o concedere in sublicenza il Software iOS. Tuttavia è consentito trasferire in maniera permanente tutti i diritti relativi al Software iOS a terzi, in caso di trasferimento di proprietà del dispositivo iOS, a condizione che: (a) il trasferimento riguardi il dispositivo iOS e tutto il Software iOS, inclusi tutti i componenti, i supporti originali, il materiale stampato e la presente Licenza; (b) non venga conservata nessuna copia totale o parziale del Software iOS, comprese eventuali copie memorizzate su computer o su altro dispositivo di archiviazione dati; e (c) la parte ricevente il Software iOS legga e accetti i termini e le condizioni della presente Licenza. 4. Consenso all’utilizzo dei dati. (a) Dati di utilizzo e diagnosi. Se scegliete la raccolta dei dati di utilizzo e diagnosi, accettate che Apple, le sue società affiliate i suoi agenti possano raccogliere, conservare, processare e utilizzare informazioni tecniche, di diagnosi, utilizzo e altre informazioni ad esse collegate, in particolare (ma non esclusivamente) informazioni relative al dispositivo iOS, al computer, al software di sistema e applicativo nonché alle periferiche in uso. Questi dati vengono raccolti periodicamente per consentire ad Apple la preparazione e la fornitura di aggiornamenti, supporto tecnico e altri servizi relativi al Software iOS e per verificare la conformità ai termini e alle condizioni della presente Licenza. Tali dati vengono utilizzati da Apple in misura e forma tale che non sia possibile scoprire l’identità della persona a cui appartengono, allo scopo di fornire e migliorare i prodotti e servizi Apple. Se avete scelto di attivare l’opzione Localizzazione, anche la posizione del Vostro dispositivo può essere inviata, per aiutare Apple ad analizzare questioni relative all’esecuzione della rete dati cellulare o wireless (ad esempio la potenza o la debolezza di un segnale cellulare in un determinato luogo). Per consentire ai partner e agli sviluppatori terze parti di Apple di migliorare il proprio software, hardware e i servizi destinati all’utilizzo con i prodotti Apple, Apple può inoltre fornire a tali partner e sviluppatori terze parti un sottoinsieme di informazioni di diagnosi importanti per il loro software, hardware e/o servizi, così come informazioni di diagnosi, in misura e forma tale che non sia possibile identificarVi personalmente. (b) Dati di localizzazione. Apple e i suoi partner potrebbero fornire tramite il dispositivo iOS alcuni servizi che si basano su informazioni relative all’ubicazione. Per fornire e migliorare tali servizi, dove disponibili, Apple, i suoi partner e i suoi licenziatari potrebbero dover trasmettere, raccogliere, gestire, elaborare e utilizzare i vostri dati relativi all’ubicazione, comprese le informazioni sulla localizzazione geografica in tempo reale del dispositivo iOS, informazioni sulla velocità del veicolo su strada e le ricerche di luoghi. La raccolta dei dati di localizzazione e sulle ricerche da parte di Apple avviene in modo da non identificarVi personalmente e tali dati potrebbero essere utilizzati da Apple, dai suoi partner e dai suoi licenziatari per fornire prodotti e servizi basati sulla localizzazione. Utilizzando sul dispositivo iOS qualsiasi servizio di localizzazione, accettate e acconsentite che Apple, i suoi partner e i suoi licenziatari trasmettano, raccolgano, gestiscano, elaborino e utilizzino i vostri dati relativi all’ubicazione e alle ricerche al fine di fornirVi e migliorare i prodotti e i servizi basati sulla localizzazione e sul traffico stradale. Potete revocare il Vostro consenso in qualunque momento andando all’impostazione dei servizi di localizzazione sul dispositivo iOS e disattivando tutti i servizi di localizzazione o disattivando le impostazioni individuali di localizzazione per ogni elemento che fa uso di tali dati sul dispositivo iOS. La disattivazione delle funzionalità di localizzazione avrà effetto unicamente sulle funzionalità di localizzazione del dispositivo iOS e non su quelle non relative ai servizi di localizzazione. Quando utilizzate applicazioni o servizi di terze parti sul dispositivo iOS che utilizza o fornisce dati di localizzazione, siete soggetti ai termini e alla politica sulla privacy relativa all’uso dei dati di localizzazione delle applicazioni o dei servizi di tali terze parti e siete altresì tenuti a rivederli. (c) Siri. Se il Vostro dispositivo iOS supporta Siri, che include la funzionalità di dettatura, tale funzionalità Vi consente di effettuare richieste, dare ordini e dettare del testo al dispositivo utilizzando la voce. Quando utilizzate Siri, ciò che dite verrà registrato e inviato a Apple al fine di elaborare le Vostre richieste. Inoltre, il dispositivo invierà ad Apple altre informazioni, quali il Vostro nome o soprannome, i nomi, i soprannomi e i rapporti di parentela con Voi (ad es. “il mio papà”) dei contatti della rubrica indirizzi e i nomi dei brani della Vostra raccolta (collettivamente “Dati utente”). Tutti questi dati vengono utilizzati per aiutare Siri a capire e riconoscere meglio ciò che dite. Siri non è vincolato ad altri dati che Apple potrebbe ricavare dal Vostro utilizzo di altri servizi Apple. Utilizzando Siri, accettate e consentite a Apple, alle sue società controllate e ai propri rappresentanti la trasmissione, la raccolta, la conservazione, l’elaborazione e l’utilizzo di tali informazioni, incluso l’utilizzo del Vostro input vocale e dei “Dati utente”, al fine di fornire e migliorare Siri e altri prodotti e servizi Apple. Se l’opzione Localizzazione è attivata, anche la posizione del dispositivo nel momento in cui eseguite la richiesta verrà inviata a Apple, per aiutare Siri a migliorare la precisione della propria risposta alle richieste basate sulla localizzazione. Potete disabilitare la funzionalità basata sulla localizzazione di Siri andando sull’impostazione Localizzazione sul dispositivo iOS e disattivando l’opzione relativa alla posizione individuale di Siri. Potete anche disattivare completamente Siri in qualsiasi momento. Per eseguire questa operazione, aprite Impostazioni, toccate Generali e scorrete l’interruttore di Siri su “off”. È inoltre possibile restringere l’utilizzo di Siri mediante l’impostazione Restrizioni. (d) FaceTime. Per la funzionalità di videochiamata FaceTime del software iOS (“FaceTime”) occorre l’acceso a Internet e potrebbe non essere disponibile in tutti i paesi o regioni. L’utilizzo di FaceTime è soggetto all’osservanza da parte vostra del paragrafo 2(e) di cui sopra. Al fine di configurare FaceTime, inviare e ricevere chiamate da altri utenti di FaceTime, occorrono determinati identificatori unici per il dispositivo iOS e un account. Tali identificatori unici possono includere il Vostro o i Vostri indirizzi e-mail, le informazioni dell’ID Apple da Voi fornite, un identificatore dell’hardware per il dispositivo iOS e il numero di telefono del Vostro iPhone. Utilizzando il Software iOS, consentite ad Apple la trasmissione, la raccolta, la conservazione, l’elaborazione e l’utilizzo di tali identificatori, al fine di fornire e migliorare la funzionalità FaceTime. Accettate che il numero di telefono del Vostro iPhone venga visualizzato all’altra parte durante la videochiamata (sebbene abbiate protetto il numero) o che venga mostrato il Vostro indirizzo e-mail, in base all’impostazione scelta. Se utilizzate un iPad o un iPod touch che supporta FaceTime, il Vostro indirizzo e-mail verrà visualizzato all’altra parte durante la videochiamata. Potete disattivare la funzionalità FaceTime accedendo all’impostazione FaceTime del dispositivo iOS oppure accedendo all’impostazione Restrizioni e abilitando la restrizione per FaceTime. (e) iMessage. La funzionalità di messaggeria del Software iOS (“iMessage”) potrebbe non essere disponibile in tutti i paesi o le regioni. L’utilizzo di iMessage è soggetto all’osservanza del Paragrafo 2(e) di cui sopra. Al fine di configurare iMessage, inviare e ricevere messaggi iMessage da altri utenti del dispositivo iOS, occorrono determinati identificatori unici per il dispositivo iOS e un account. Tali identificatori unici possono includere il Vostro o i Vostri indirizzi e-mail, le informazioni dell’ID Apple da Voi fornite, un identificatore dell’hardware per il dispositivo iOS e il numero di telefono del Vostro iPhone. Utilizzando il Software iOS, consentite ad Apple la trasmissione, la raccolta, la conservazione, l’elaborazione e l’utilizzo di tali identificatori, al fine di fornire e migliorare il servizio iMessage. iMessage richiede una connessione rete dati cellulare o Wi-Fi. Per facilitare la consegna dei messaggi iMessage e consentirVi di mantenere conversazioni mediante i dispositivi, Apple potrebbe conservare i messaggi iMessage in formato codificato per un periodo di tempo limitato. Se il Vostro messaggio non può essere inviato come messaggio iMessage, questo può essere inviato come messaggio SMS o MMS; in tal caso potrebbero essere applicate le tariffe del gestore del servizio di messaggeria. Accettate che il numero di telefono del Vostro iPhone venga visualizzato all’altra parte durante la videochiamata (sebbene abbiate protetto il numero) o che venga mostrato il Vostro indirizzo e-mail, in base all’impostazione scelta. Se utilizzate un iPad o un iPod touch che supporta iMessage, il Vostro indirizzo e-mail verrà visualizzato all’altra parte. Potete disattivare il servizio iMessage accedendo all’impostazione Messaggi sul dispositivo iOS. (f ) Photo Stream. Utilizzando la funzionalità Photo Stream di iCloud, consentite ad Apple l’eventuale archiviazione di foto scattate sul dispositivo iOS o caricate dal computer, per un periodo di tempo limitato, e l’invio automatico delle foto agli altri dispositivi iOS Apple o ai computer che supportano la funzionalità Photo Stream. È possibile archiviare un numero limitato di foto alla volta e le vecchie foto verranno automaticamente eliminate da Photo Stream nel corso del tempo. Tutte le foto che desiderate conservare devono essere salvate in Rullino foto, in un altro album o sul computer. La risoluzione delle foto può variare a seconda del dispositivo sul quale vengono scaricare le foto. Se non desiderate utilizzare Photo Stream, potete disattivare Photo Stream su tutti i dispositivi iOS o sui computer che supportano tale funzionalità. Qualsiasi utilizzo della funzionalità Photo Stream è soggetto ai Termini e condizioni del presente contratto e ai Termini e condizioni di iCloud disponibili all’indirizzo: http://www.apple.com/it/legal/icloud/ww/ (g) Pubblicità sulla base degli interessi. Apple può fornirVi della pubblicità mobile sulla base dei Vostri interessi. Se non desiderate ricevere tali annunci sul dispositivo iOS potete rinunciarvi aprendo questo link relativo al dispositivo iOS: http://oo.apple.com. Se decidete di rinunciare, continuerete a ricevere lo stesso numero di annunci mobili, ma saranno meno rilevanti perché non saranno selezionati a partire dai Vostri interessi. Potrete comunque visualizzare gli annunci relativi al contenuto di una pagina web o di un’applicazione oppure basati su altre informazioni non personali. La rinuncia ha valore solamente sui servizi pubblicitari di Apple e non ha effetto sulla pubblicità basata sugli interessi offerta da altri network pubblicitari. (h) Politica sulla Privacy. I Vostri dati verranno trattati in ogni momento in conformità con la politica di tutela della privacy di Apple, integrata come riferimento alla presente Licenza e consultabile su http://www.apple.com/it/privacy/. 5. Servizi e materiali di terze parti. (a) Il software iOS consente l’accesso a iTunes Store, App Store, Game Center, iCloud di Apple e ad altri siti e servizi di Apple e di terze parti (collettivamente e individualmente, “Servizi”). Tali Servizi potrebbero essere disponibili solo in alcune lingue o in alcuni paesi. L’utilizzo di questi Servizi richiede l’accesso a Internet e per l’utilizzo di alcuni Servizi potrebbero essere necessari un ID Apple e l’accettazione di ulteriori termini e condizioni; inoltre potrebbero essere applicate tariffe aggiuntive. L’utilizzo di questo software con un ID Apple, un account iTunes Store, Game Center o un account iCloud comporta l’accettazione dei termini e delle condizioni del servizio applicabili a tale account, quali i Termini e condizioni di iTunes Store o Game Center più recenti, che possono essere consultati e controllati su http://www.apple.com/legal/itunes/ww/ o i Termini e condizioni di iCloud disponibili all’indirizzo http://www.apple.com/it/legal/icloud/ww/. (b) Se eseguite la registrazione per iCloud, alcune funzionalità iCloud, quali “Backup” e “Trova il mio iPhone” potrebbero essere accessibili direttamente dal Software iOS. Riconoscete e accettate che il Vostro utilizzo di iCloud e di queste funzionalità è soggetto ai Termini e condizioni più recenti del servizio iCloud, che possono essere consultati e controllati su http://www.apple.com/it/legal/icloud/ww/. (c) Riconoscete che, utilizzando uno qualunque dei Servizi, esiste la possibilità che troviate contenuti che potreste considerare offensivi, indecenti o discutibili, che potrebbero o meno contenere linguaggio esplicito, e che i risultati di qualunque ricerca o l’inserimento di un URL specifico potrebbero generare automaticamente e involontariamente dei collegamenti o dei riferimenti a materiale discutibile. Accettate tuttavia di utilizzare i Servizi a vostro unico rischio e riconoscete che Apple non sarà ritenuta responsabile per contenuti che potrebbero essere giudicati offensivi, indecenti o discutibili. (d) Alcuni Servizi possono visualizzare, contenere o rendere disponibili contenuti, dati, informazioni o materiali di terze parti (“Materiali di terze parti”) oppure facilitare collegamenti ad alcuni siti web di terze parti. Utilizzando i Servizi, riconoscete ed accettate che Apple non è responsabile della valutazione del contenuto né dell’accuratezza, della completezza, della divulgazione, della validità, del rispetto del copyright, della legalità, della decenza e della qualità d tali materiali o siti web di terze parti. Apple, i suoi direttori, le società ad essa affiliate e le sue società controllate non si fanno garanti, non assumono responsabilità né saranno soggetti ad alcuna responsabilità per i Servizi, i materiali o i siti web di terze parti, né per qualunque altro materiale, prodotto o servizio di terze parti. I materiali di terze parti e i collegamenti ad altri siti web sono forniti esclusivamente a titolo di cortesia. (e) Le informazioni di carattere finanziario visualizzate dai Servizi sono da considerarsi a solo scopo informativo generale e non sono da considerarsi affidabili come consigli per eventuali investimenti. Prima di realizzare qualsiasi transazione borsistica sulla base delle informazioni ottenute mediante i Servizi, dovreste consultare un professionista in campo finanziario o borsistico che sia legalmente qualificato per fornire consulenza finanziaria o azionaria nel Vostro paese o regione. I dati sull’ubicazione forniti da uno qualsiasi dei Servizi è da intendersi esclusivamente per fini di spostamento e orientamento generali e su di esse non si deve fare affidamento in situazioni in cui sono necessarie informazioni precise rispetto all’ubicazione che, qualora si rivelassero errate, non precise, in ritardo o incomplete potrebbero provocare morte, lesioni personali o danni ambientali. Né Apple né i suoi fornitori di contenuti garantiscono la disponibilità, precisione, completezza, affidabilità o puntualità delle informazioni relative alle azioni, all’ubicazione o di altre informazioni visualizzate mediante i Servizi. (f ) Accettate che i Servizi contengono contenuto proprietario, informazioni e materiale di proprietà di Apple e/o dei suoi licenziatari e sono protetti dalle leggi sulla proprietà intellettuale e da altre leggi in vigore comprese, a titolo esemplificativo ma non esaustivo, quelle sul copyright. Accettate altresì di non utilizzare tali informazioni e materiali proprietari diversamente da quanto consentito relativamente all’utilizzo dei Servizi né in nessun altro modo non conforme ai termini della presente Licenza o che violi i diritti di proprietà intellettuale di Apple o di terze parti. Non è consentito riprodurre parti dei Servizi, in nessuna forma e in nessun modo. Accettate di non dare in locazione, in leasing, in prestito, vendere, modificare, distribuire i Servizi né di ricavarne prodotti derivati in alcun modo così come di non utilizzare i Servizi in modi non consentiti, compresi, a titolo esemplificativo ma non esaustivo, l’uso dei Servizi per la trasmissione di virus informatici, worm, trojan o altro malware e i casi di violazione o sovraccarico alla capacità del network. Accettate inoltre di non utilizzare i Servizi in modo alcuno che possa molestare, abusare di, perseguitare, minacciare, diffamare, infrangere o violare in altra forma i diritti di terzi e riconoscete che Apple non è in alcun modo responsabile di tali utilizzi da parte vostra, né di qualunque molestia, minaccia, diffamazione, violazione, messaggio offensivo o illegale che possiate ricevere come conseguenza dell’utilizzo dei Servizi. (g) Inoltre, i Servizi e i materiali di terze parti che potrebbero essere aperti, visualizzati o a cui potrebbero esistere collegamenti dal dispositivo iOS non sono disponibili in tutte le lingue o in tutti i paesi o le regioni. Apple non offre alcuna dichiarazione riguardo all’adeguatezza di tali Servizi e materiali e alla loro disponibilità di utilizzo in luoghi particolari. Nel momento in cui scegliete di accedere a o di utilizzare tali Servizi e materiali, lo fate di vostra iniziativa e siete ritenuti responsabili del rispetto della legislazione vigente, comprese, a titolo esemplificativo ma non esaustivo, le leggi locali in vigore. Apple e i suoi licenziatari si riservano il diritto di modificare, sospendere, eliminare o disabilitare l’accesso a qualunque Servizio in qualsiasi momento e senza previo avviso. In nessun caso Apple sarà ritenuta responsabile dell’eliminazione o inabilitazione dell’accesso a uno qualsiasi di tali Servizi. Apple si riserva altresì il diritto di imporre limiti sull’utilizzo e sull’accessibilità di alcuni Servizi, in qualunque momento e senza previo avviso né vincolo alcuno. 6. Conclusione. La presente Licenza resterà valida fino alla sua conclusione. I diritti accordati dalla presente Licenza termineranno automaticamente o smetteranno altrimenti di essere in vigore senza preavviso alcuno da parte di Apple in caso di inadempienza di qualsiasi termine della Licenza stessa. In seguito alla conclusione di questa Licenza è fatto obbligo di interrompere l’utilizzo del Software iOS. I paragrafi 4, 5, 6, 7, 8, 9, 12 e 13 rimarranno validi anche dopo la conclusione della stessa. 7. Clausola esonerativa di altre garanzie. 7.1 Se siete clienti consumatori (ossia, se utilizzate privatamente il Software iOS al di fuori del Vostro ambito commerciale, d’affari o professionale), nel Vostro paese di residenza potreste godere di diritti legali che vietano l’applicazione delle limitazioni seguenti, che, in tal caso, non Vi riguarderanno. Per ulteriori informazioni sui diritti legali, consultate un’organizzazione locale per l’orientamento del consumatore. 7.2 NELLA MISURA DI QUANTO CONSENTITO DALLA LEGGE APPLICABILE, RICONOSCETE E ACCETTATE ESPRESSAMENTE CHE L’USO DEL SOFTWARE iOS E DEI SERVIZI AVVIENE A VOSTRO RISCHIO E PERICOLO, ACCETTANDONE ALTRESÌ IL RISCHIO RIGUARDANTE LA QUALITÀ, LE PRESTAZIONI, LA PRECISIONE E L’IMPIEGO SODDISFACENTI. 7.3 NEI LIMITI MASSIMI CONSENTITI DALLA LEGGE, IL SOFTWARE iOS E I SERVIZI FORNITI DAL SOFTWARE iOS VENGONO FORNITI NELLO STATO IN CUI SI TROVANO E COSÌ COME DISPONIBILI, CON TUTTI I POSSIBILI ERRORI E SENZA GARANZIE DI SORTA, E APPLE E I LICENZIATARI DI APPLE (COLLETTIVAMENTE DENOMINATI “APPLE” AI FINI DEI PARAGRAFI 7 E 8) ESCLUDONO ESPRESSAMENTE, RELATIVAMENTE AL SOFTWARE iOS E AI SERVIZI, OGNI GARANZIA E CONDIZIONE, ESPRESSA, IMPLICITA O STATUTARIA, INCLUSE, A TITOLO ESEMPLIFICATIVO MA NON ESAUSTIVO, LE GARANZIE IMPLICITE E/O LE CONDIZIONI DI COMMERCIABILITÀ, DI QUALITÀ SODDISFACENTE, DI IDONEITÀ DEL PRODOTTO A SODDISFARE UNO SCOPO SPECIFICO, DI PRECISIONE, DI GODIMENTO ESENTE DA TURBATIVE E DI NON VIOLAZIONE DEI DIRITTI DI TERZE PARTI. 7.4 APPLE NON GARANTISCE CHE L’UTILIZZO DEL SOFTWARE iOS E DEI SERVIZI SIA ESENTE DA INTERFERENZE, CHE LE FUNZIONI DEL SOFTWARE iOS E DEI SERVIZI SIANO IDONEE A SODDISFARE LE VOSTRE ESIGENZE, CHE IL FUNZIONAMENTO DEL SOFTWARE iOS E DEI SERVIZI SIA ININTERROTTO O IMMUNE DA DIFETTI, CHE I SERVIZI CONTINUERANNO AD ESSERE DISPONIBILI, CHE I DIFETTI RISCONTRATI NEL SOFTWARE iOS VENGANO CORRETTI NÉ CHE IL SOFTWARE iOS SIA COMPATIBILE O CHE FUNZIONI CON APPLICAZIONI, SERVIZI O SOFTWARE DI TERZE PARTI. L’INSTALLAZIONE DI QUESTO SOFTWARE POTREBBE INTERFERIRE CON IL FUNZIONAMENTO DI SOFTWARE DI TERZI. 7.5 RICONOSCETE ALTRESÌ CHE L’UTILIZZO DEL SOFTWARE iOS E DEI SERVIZI NON È INTESO PER NÉ ADATTO A SITUAZIONI O AMBIENTI IN CUI IL MALFUNZIONAMENTO, EVENTUALI RITARDI, ERRORI O IMPRECISIONI DEL CONTENUTO, DEI DATI O DELLE INFORMAZIONI FORNITE DAL SOFTWARE iOS E DAI SERVIZI POTREBBERO ESSERE CAUSA DI MORTE, DANNI FISICI O AMBIENTALI COMPRESI, A TITOLO ESEMPLIFICATIVO MA NON ESAUSTIVO, LE SITUAZIONI IN CUI VENGONO UTILIZZATE ATTREZZATURE NUCLEARI, STRUMENTAZIONI DI VOLO O DI COMUNICAZIONE CON AEROPLANI E SISTEMI RELATIVI AL CONTROLLO DEL TRAFFICO AEREO, DI SOCCORSO O AD ARMI. 7.6 EVENTUALI INFORMAZIONI O CONSIGLI ORALI O SCRITTI DA PARTE DI APPLE O RAPPRESENTANTI AUTORIZZATI DI APPLE NON POSSONO IN OGNI CASO COSTITUIRE UNA GARANZIA. NEL CASO DI DIFETTI DEL SOFTWARE iOS O DEI SERVIZI I COSTI DERIVANTI DA INTERVENTI, CORREZIONI E RIPARAZIONI CHE DOVESSERO RENDERSI NECESSARI SARANNO TOTALMENTE A CARICO DELL’UTENTE. POICHÉ ALCUNE GIURISDIZIONI NON AMMETTONO L’ESCLUSIONE DELLE GARANZIE IMPLICITE O LE LIMITAZIONI AI DIRITTI ATTRIBUITI DALLA LEGGE AL CONSUMATORE, L’ESCLUSIONE E LE LIMITAZIONI DI CUI SOPRA POTREBBERO NON ESSERE APPLICABILI. 8. Limitazioni della responsabilità. PER QUANTO NON ESPRESSAMENTE PROIBITO DALLA LEGGE APPLICABILE, APPLE È SOLLEVATA DA OGNI RESPONSABILITÀ PER QUALSIASI LESIONE PERSONALE O PER QUALSIASI DANNO, DIRETTO O INDIRETTO E DI OGNI GENERE E SPECIE, INCLUSI, A TITOLO ESEMPLIFICATIVO MA NON ESAUSTIVO, I DANNI PER MANCATO GUADAGNO, DANNEGGIAMENTO O PERDITA DI DATI, ERRORE NELLA TRASMISSIONE O RICEZIONE DEI DATI, INTERRUZIONE DELL’ATTIVITÀ O ALTRI DANNI O PERDITE COMMERCIALI, DERIVANTI O CORRELATI CON L’UTILIZZO O IL CATTIVO UTILIZZO DEL SOFTWARE iOS, DEI SERVIZI O DI QUALUNQUE SOFTWARE O APPLICAZIONE DI TERZE PARTI CONGIUNTAMENTE AL SOFTWARE iOS, INDIPENDENTEMENTE DALLA LORO CAUSA E DALL’ORIGINE DELLA RESPONSABILITÀ (INTERRUZIONE DEL CONTRATTO, ATTO ILLECITO O ALTRI), ANCHE NEL CASO IN CUI APPLE SIA STATA AVVERTITA DELLA POSSIBILITÀ DI TALI DANNI. POICHÉ ALCUNE GIURISDIZIONI NON AMMETTONO L’ESCLUSIONE O LA LIMITAZIONE DELLA RESPONSABILITÀ PER LESIONI PERSONALI, O PER DANNI DIRETTI O INDIRETTI, LE ESCLUSIONI E LE LIMITAZIONI DI CUI SOPRA POTREBBERO NON ESSERE APPLICABILI. In nessun caso il limite di responsabilità nei confronti dell’utente a carico di Apple per la globalità del danno (escluso quanto eventualmente previsto dalle leggi applicabili in materia di lesioni personali), potrà superare l’importo di duecentocinquanta dollari (USD 250,00). Le limitazioni di cui sopra saranno applicabili anche qualora il risarcimento citato sia carente dello scopo sostanziale. 9. Certificati digitali. Il Software iOS contiene delle funzionalità che consentono di accettare certificati digitali emessi da Apple o da terzi. SIETE GLI UNICI RESPONSABILI DI DECIDERE SE CONSIDERARE O MENO AFFIDABILE UN CERTIFICATO EMESSO DA APPLE O DA TERZI. L’UTILIZZO DEI CERTIFICATI DIGITALI È ESCLUSIVAMENTE A VOSTRO RISCHIO. NEI LIMITI DI QUANTO PERMESSO DALLA LEGGE APPLICABILE, APPLE NON OFFRE ALCUNA DICHIARAZIONE NÉ GARANZIA, ESPRESSA O TACITA, RIGUARDO ALLA COMMERCIABILITÀ O ALL’ADEGUATEZZA A SCOPI PARTICOLARI, ALL’ACCURATEZZA, ALLA SICUREZZA O ALLA NON VIOLAZIONE DEI DIRITTI DI TERZE PARTI RELATIVAMENTE ALL’UTILIZZO DEI CERTIFICATI DIGITALI. 10. Controllo dell’esportazione. Non è consentito utilizzare, esportare o riesportare il Software iOS se non in conformità con le leggi degli Stati Uniti d’America o del paese in cui il Software iOS è stato acquisito. In particolare, ma senza limitazioni, non è possibile esportare o riesportare il Software iOS (a) in nessun paese sottoposto ad embargo da parte degli Stati Uniti o (b) a chiunque figuri nell’elenco del Dipartimento del Tesoro degli Stati Uniti denominato Specially Designated Nationals o negli elenchi del Dipartimento del Commercio degli Stati Uniti denominati Denied Person List o Entity List. Utilizzando il Software iOS, l’utente afferma espressamente e garantisce di non trovarsi in uno di tali paesi, ovvero di non figurare negli elenchi di cui sopra. L’utente si impegna, inoltre, ad accettare di non utilizzare il Software iOS per nessuno degli scopi vietati dalla legge degli Stati Uniti, inclusi, a titolo esemplificativo ma non esaustivo, lo sviluppo, la progettazione, la fabbricazione o produzione di armi nucleari, chimiche, biologiche o missili. 11. Utenti finali governativi. Il Software iOS e la relativa documentazione sono “Prodotti commerciali”, come in base alla definizione contenuta in 48 C.F.R. §2.101, composti di “Software per uso commerciale” e di “Documentazione relativa a software per uso commerciale”, come in base alle definizioni contenute in 48 C.F.R. §12.212 o 48 C.F.R. §227.7202, secondo il caso. In conformità con 48 C.F.R. §12.212 o 48 C.F.R. da §227.7202-1 a 227.7202-4, secondo applicabilità, il software per uso commerciale e la documentazione relativa a software per uso commerciale vengono dati in licenza al Governo degli Stati Uniti d’America (a) unicamente come prodotti commerciali e (b) con gli stessi diritti di cui godono gli altri utenti finali e in conformità con i termini e le condizioni della presente Licenza. I diritti non pubblicati sono protetti dalla legge degli Stati Uniti sul diritto d’autore. 12. Legge regolatrice ed eventuale nullità di una o più clausole. Questa Licenza sarà regolata ed interpretata in conformità con la legislazione dello Stato della California, ad esclusione dei conflitti legislativi. Questa Licenza non sarà regolata dalla Convenzione delle Nazioni Unite sui contratti di vendita internazionale di merci, la cui applicazione viene esclusa espressamente. Se siete dei consumatori residenti nel Regno Unito, la presente Licenza sarà regolata dalle leggi del Vostro paese di residenza. Se per qualsiasi ragione un tribunale competente dovesse ritenere inapplicabile una o più clausole o parti di clausole di questa Licenza, le altre clausole o parti di clausole rimarranno valide e applicabili. 13. Integrità dell’accordo. Questa Licenza costituisce l’intero accordo tra Voi e Apple relativamente all’uso del Software iOS e sostituisce ogni eventuale accordo precedente o contemporaneo riguardante quanto in oggetto. Per essere effettivi, eventuali emendamenti o modifiche di questa Licenza dovranno essere effettuati in forma scritta e sottoscritti da un rappresentante autorizzato di Apple. La presente Licenza viene tradotta unicamente per esigenze locali e nel caso in cui la versione inglese della Licenza e la versione tradotta fossero discrepanti, farà fede la versione inglese, nella misura di quanto consentito dalla legislazione locale della Vostra giurisdizione. 14. Riconoscimenti a terzi. Alcune parti del Software iOS potrebbero utilizzare o comprendere software di terze parti e altro materiale soggetto a copyright. I riconoscimenti, le condizioni e i termini di licenza e le esclusioni relativi a tali materiali si trovano nella documentazione elettronica del Software iOS e ogni uso di tale materiale è regolato dai rispettivi termini e condizioni. L’uso del servizio Google Safe Browsing è soggetto alle condizioni del servizio di Google (http://www.google.com/terms_of_service.html) e alla politica di tutela della privacy di Google (http://www.google.com/privacypolicy.html). 15. Utilizzo di MPEG-4; avviso H.264/AVC. (a) Il Software iOS contiene funzionalità di codifica e/o decodifica video MPEG-4. Il Software iOS è concesso in licenza secondo i termini della MPEG-4 Visual Patent Portfolio License per l’utilizzo personale e non commerciale da parte di un utente per (i) la codifica di video conformi a MPEG-4 Visual Standard (“MPEG-4 Video”) e/o (ii) la decodifica di video MPEG-4 codificati da utenti impegnati in attività personali e non commerciali e/o ottenuti da un distributore video autorizzato da MPEG LA per la fornitura di video MPEG-4. Nessuna licenza è concessa o è implicita per utilizzi di tipo diverso. Ulteriori informazioni, incluse quelle relative all’utilizzo promozionale, interno e commerciale, e relative licenze, sono fornite da MPEG LA, LLC. Consultate il sito http://www.mpegla.com. (b) Poiché il Software iOS contiene funzionalità di codifica e/o decodifica AVC, l’uso commerciale di H.264/AVC richiederà la concessione di una licenza aggiuntiva e l’applicazione delle seguenti condizioni: LA FUNZIONALITÀ AVC DEL SOFTWARE iOS È CONCESSA IN LICENZA UNICAMENTE PER USO PERSONALE E NON COMMERCIALE A UN UTENTE PER (i) LA CODIFICA VIDEO CONFORME ALLO STANDARD AVC (“VIDEO AVC”) E/O (ii) LA DECODIFICA DI VIDEO AVC CODIFICATI DA UN UTENTE OCCUPATO IN ATTIVITÀ PERSONALE E NON COMMERCIALE E/O VIDEO AVC OTTENUTI DA UN PROVIDER VIDEO IN POSSESSO DI LICENZE IDONEE PER LA FORNITURA DI VIDEO AVC. È POSSIBILE OTTENERE ULTERIORI INFORMAZIONI RIGUARDO ALTRI USI E LICENZE DA MPEG LA L.L.C. CONSULTARE IL SITO HTTP://WWW.MPEGLA.COM. 16. Restrizioni del servizio Yahoo Search. Il servizio Yahoo Search disponibile mediante Safari è concesso in licenza per essere utilizzato solamente nei seguenti paesi o regioni: Argentina, Aruba, Australia, Austria, Bahamas, Barbados, Belgio, Bermuda, Brasile, Bulgaria, Canada, Cile, Cina, Cipro, Colombia, Corea del Sud, Danimarca, Ecuador, El Salvador, Filippine, Finlandia, Francia, Germania, Giamaica, Giappone, Grecia, Grenada, Guatemala, Hong Kong, India, Indonesia, Irlanda, Islanda, Isole Cayman, Italia, Lettonia, Lituania, Lussemburgo, Malaysia, Malta, Messico, Nicaragua, Norvegia, Nuova Zelanda, Paesi Bassi, Panamá, Perù, Polonia, Portogallo, Porto Rico, Regno Unito, Repubblica Ceca, Repubblica Dominicana, Romania, Santa Lucia, Saint Vincent, Singapore, Slovacchia, Slovenia, Spagna, Svezia, Svizzera, Tailandia, Trinidad e Tobago, Turchia, Ungheria, Uruguay, Stati Uniti e Venezuela. 17. Avviso Microsoft Exchange. L’impostazione e-mail Microsoft Exchange del Software iOS è concessa in licenza solamente per la sincronizzazione di informazioni come e-mail, contatti, calendari e attività mediante trasmissione over-the-air tra iOS e Microsoft Exchange Server o altro software server concesso in licenza da Microsoft per migliorare il protocollo Microsoft Exchange ActiveSync. EA0790 Rev. 15/08/2011 NOTIFICHE DA APPLE Qualora Apple dovesse volerVi contattare relativamente al Vostro prodotto o account, accettate di ricevere le notifiche via e-mail. Riconoscete che tali notifiche inviate elettronicamente da Apple soddisfano ogni requisito di comunicazione legale. TERMINI E CONDIZIONI GOOGLE MAPS Grazie per aver scelto l’applicazione software Google Maps per cellulari. L’utilizzo di questo software, nonché di ogni eventuale software di terze parti reso disponibile insieme al software e/o al servizio correlato (denominati collettivamente “Google Maps per cellulari”) presuppone l’accettazione incondizionata da parte dell’utente dei presenti termini i condizioni (“Termini e condizioni”), che valgono sia per l’uso personale che per l’uso aziendale di Google Maps per cellulari. I Termini e condizioni costituiscono un contratto legalmente vincolante tra l’utente e Google e devono pertanto essere letti con la massima attenzione. Scaricando Google Maps per cellulari, l’utente presta il proprio incondizionato consenso ad essere legalmente vincolato dai presenti Termini e condizioni. Termini aggiuntivi Google Maps per cellulari è stato progettato per essere utilizzato insieme al servizio Google Maps e ad altri servizi Google. L’utente riconosce pertanto che l’utilizzo di Google Maps per cellulari è soggetto anche (a) ai termini di servizio specifici di Google Maps (consultabili all’indirizzo http://www.google.it/help/terms_maps.html), comprese le note sui contenuti applicabili (consultabili all’indirizzo http://www.google.it/help/legalnotices_maps.html), (b) ai termini di servizio generali di Google (consultabili all’indirizzo http://www.google.it/terms_of_service.html) e (c) alle norme generali sulla privacy di Google (consultabili all’indirizzo http://www.google.it/privacypolicy.html), le cui disposizioni si intendono incorporate nei presenti Termini e condizioni mediante riferimento. Qualora sussistano incongruenze o conflitti tra tali termini aggiuntivi e i presenti Termini e condizioni, prevarranno le disposizioni di questi ultimi. Spese di rete Google non applica alcun costo per il download o l’utilizzo di Google Maps per cellulari. Tuttavia, a seconda del piano tariffario e dell’operatore o gestore di telefonia prescelto dall’utente, è possibile che venga addebitato un costo per il download di Google Maps per cellulari o per l’utilizzo del cellulare quando si accede alle informazioni o ad altri servizi Google tramite Google Maps per cellulari. Solo per uso non commerciale Google Maps per cellulari è destinato esclusivamente a un uso non commerciale. “Uso non commerciale” significa che Google concede all’utente un diritto limitato di utilizzare Google Maps per cellulari esclusivamente per uso personale, al lavoro o a casa, per eseguire ricerche, nel rispetto delle limitazioni definite nei presenti Termini e condizioni. È consentito creare e distribuire copie di Google Maps per cellulari destinate all’uso all’interno dell’organizzazione del datore di lavoro (“Uso aziendale”) a condizione che: (a) tutte le persone che operano in tale organizzazione e che utilizzeranno Google Maps per cellulari abbiano avuto l’opportunità di prendere visione dei presenti Termini e condizioni e abbiano acconsentito ad essere vincolati dagli stessi (e che l’utente si impegni a produrre opportune prove al riguardo, se richiesto da Google); oppure che (b) l’utente abbia la capacità giuridica e l’autorità per accettare un contratto vincolante a nome dell’organizzazione nella quale intende utilizzare Google Maps per cellulari (e che l’utente si impegni a produrre opportune prove al riguardo, se richiesto da Google). Qualora l’utente non abbia tale facoltà o i soggetti interessati non abbiano avuto l’opportunità di prendere visione dei presenti Termini e condizioni e di esprimere il proprio consenso, l’Uso aziendale non sarà consentito. Per qualsiasi domanda in merito all’uso aziendale, inviare una e-mail all’indirizzo mobile-support@google.com. L’utente non potrà vendere Google Maps per cellulari o qualsiasi informazione, servizio o software ad esso associato o da esso derivato, né modificare, copiare (fatto salvo quanto consentito per Uso aziendale, come indicato sopra, ove applicabile), concedere in licenza o creare opere derivate da Google Maps per cellulari senza avere preventivamente ottenuto il consenso scritto di Google (che può essere richiesta in qualsiasi momento inviando una e-mail all’indirizzo mobile-support@google.com). L’utente si impegna altresì a non utilizzare Google Maps per cellulari in modi che possano danneggiare, disattivare, sovraccaricare o bloccare i servizi Google (ad esempio, non potrà utilizzare Google Maps per cellulari in modo automatico) o interferire con l’utilizzo dei servizi Google da parte di altri. Per inviare commenti su Google Maps per cellulari o proporre idee utili per migliorare questo servizio, inviare una email all’indirizzo mobilesupport@ google.com. Si tenga presente che, con tale comunicazione, l’utente concede a Google e a soggetti terzi il proprio consenso all’utilizzo e all’inserimento dei suddetti commenti e suggerimenti in Google Maps per cellulari (o altri software forniti da terzi) senza alcun compenso. Proprietà intellettuale Come definito nell’accordo tra l’utente e Google, l’utente prende atto del fatto che qualunque diritto, titolo o interesse relativi a Google Maps per cellulari, ivi compresi, a titolo esemplificativo ma non esaustivo, tutti i diritti di proprietà intellettuale insiti e inerenti, sono di proprietà di Google. Per “diritti di proprietà intellettuale” si intendono i diritti relativi a invenzioni, brevetti, marchi commerciali e marchi di servizio, progetti, nomi commerciali e nomi di società, diritti d’autore (inclusi, per fugare ogni dubbio, i diritti relativi ai software per computer), diritti relativi ai database e alla topografia dei semiconduttori (a prescindere dal fatto che siano registrati o meno e incluse le domande di registrazione) e ogni diritto o forma di protezione di natura simile o avente effetti simili o equivalenti a quelli dei diritti elencati sopra, in essere in qualsiasi parte del mondo. L’utente si impegna inoltre a non rimuovere, oscurare o altrimenti alterare le informative su diritti proprietari che siano pubblicate, contenute o rinvenibili tramite l’utilizzo di Google Maps per cellulari (incluse le note sul copyright o i marchi commerciali relativamente a diritti di proprietà di Google o di terze parti). Esclusione di garanzia Google ha facoltà di apportare miglioramenti e/o modifiche a Google Maps per cellulari, con o senza preavviso. Google Maps per cellulari viene fornito “così com’è” e Google non concede alcuna garanzia in merito a ciò. Fatto salvo quanto riportato sopra, Google non dichiara né garantisce che: (i) l’uso di Google Maps per cellulari soddisfi i requisiti dell’utente, sia fruibile ininterrottamente, sicuro o privo di errori, (ii) i difetti verranno corretti, (iii) Google Maps per cellulari sia privo di virus o altri software potenzialmente dannosi o (iv) l’utilizzo di Google Maps per cellulari e di qualsiasi informazione reperibile tramite Google Maps per cellulari sia corretta, precisa, tempestiva o in altro modo affidabile. Non si applicano a Google Maps per cellulari condizioni, garanzie o altri termini (inclusi i termini impliciti relativi a qualità soddisfacente, idoneità per uno scopo particolare o conformità alla descrizione), salvo nella misura in cui essi siano espressamente indicati nei presenti Termini e condizioni. Limitazione di responsabilità Nessuna disposizione dei presenti Termini e condizioni esclude o limita la responsabilità di Google in caso di morte o lesioni personali derivanti da negligenza di Google o truffa o asserzioni fraudolente da parte di Google. In virtù di quanto sopra, Google non sarà ritenuta responsabile nei confronti dell’utente per (a) perdite indirette o consequenziali, (b) perdite economiche o (c) perdite di notorietà o reputazione eventualmente subite e derivanti dall’utilizzo di Google Maps per cellulari, a prescindere dal fatto che Google fosse o meno consapevole del possibile verificarsi di tali perdite. Inoltre, Google non potrà essere ritenuta responsabile nei confronti dell’utente per eventuali errori o difetti in relazione all’utilizzo di Google Maps per cellulari o per qualsiasi interruzione, sospensione, cessazione, guasto o ritardo di funzionamento di Google Maps per cellulari. Disposizioni varie I presenti Termini e condizioni saranno disciplinati e interpretati in base alle leggi inglesi, cui l’utente accetta di rimettersi come giurisdizione esclusiva in caso di controversie o questioni derivanti dai presenti Termini e condizioni o ad essi connesse. La traduzione della versione originale inglese dei presenti Termini e condizioni (“Termini originali”) viene fornita unicamente allo scopo di facilitare la comprensione da parte dell’utente, il quale prende atto del fatto che in caso di conflitto tra la versione tradotta e i Termini originali, faranno fede i Termini originali. Qualora una delle clausole dei presenti Termini e condizioni dovesse risultare inefficace, illegale o inapplicabile, le restanti disposizioni dei presenti Termini e condizioni rimarranno pienamente in vigore. I presenti Termini e condizioni costituiscono l’intero accordo tra Google e l’utente in merito e sostituiscono qualsiasi altro accordo o contratto precedente o contemporaneo, scritto o orale, in relazione al medesimo oggetto. Qualsiasi rinuncia a far valere una clausola dei presenti Termini e condizioni sarà valida solo se redatta per iscritto e firmata da un rappresentante di Google debitamente autorizzato. Settembre 2007 YOUTUBE TERMS AND CONDITIONS http://www.youtube.com/t/terms Garanzia annuale limitata Apple – iPhone Solo per i prodotti a marchio Apple COME LE NORME A TUTELA DEL CONSUMATORE RIGUARDANO LA PRESENTE GARANZIA. LA PRESENTE GARANZIA CONFERISCE AL CONSUMATORE SPECIFICI DIRITTI, OLTRE A QUELLI EVENTUALMENTE ATTRIBUITIGLI DALLE LEGGI DEL PROPRIO STATO (O PAESE O REGIONE). .A MENO CHE NON SIA PERMESSO DALLA LEGGE, LA PRESENTE GARANZIA NON ESCLUDE, LIMITA O SOSPENDE ALCUN DIRITTO DEI CONSUMATORI INCLUSI QUELLI CHE POSSONO DERIVARE DA UNA NON-CONFORMITÀ AL CONTRATTO DI VENDITA. PER UNA PIENA COMPRENSIONE DEI PROPRI DIRITTI IL CONSUMATORE E’ PREGATO DI CONSULTARE LA NORMATIVA DEL PROPRIO PAESE; REGIONE O STATO. LIMITAZIONI DELLA GARANZIA CHE POSSONO PREGIUDICARE LE NORME A TUTELA DEI CONSUMATORI. NEL LIMITE PREVISTO DALLA LEGGE, LA PRESENTE GARANZIA E I RIMEDI SOPRA INDICATI SONO ESCLUSIVI E SOSTITUISCONO QUALSIASI ALTRA GARANZIA, RIMEDIO E CONDIZIONE, VERBALE O SCRITTA, LEGALE, ESPRESSA O IMPLICITA. NEL LIMITE PREVISTO DALLE LEGGI APPLICABILI APPLE NEGA SPECIFICAMENTE QUALSIASI GARANZIA DI LEGGE O IMPLICITA, IVI COMPRESE, A TITOLO ESEMPLIFICATIVO, LE GARANZIE DI COMMERCIABILITÀ E IDONEITÀ A SCOPI SPECIFICI E PER VIZI OCCULTI O LATENTI. QUALORA LE LEGGI NON CONSENTANO AD APPLE DI NEGARE LE SUDDETTE GARANZIE APPLE LIMITA LA DURATA E I RIMEDI PREVISTI DA TALE GARANZIA AL PERIODO DI DURATA DELLA PRESENTE GARANZIA E, A PROPRIA DISCREZIONE, AL SERVIZIO DI RIPARAZIONE E SOSTITUZIONE. POICHÉ ALCUNI PAESI, STATI E REGIONI NON AMMETTONO LIMITAZIONI SULLA DURATA DELLE GARANZIE O CONDIZIONI IMPLICITE, LE SUMMENZIONATE LIMITAZIONI POTREBBERO NON APPLICARSI. COSA È COPERTO DALLA PRESENTE GARANZIA? Apple garantisce che i prodotti hardware ed accessori a marchio Apple contenuti nella confezione originale (“Prodotti Apple”) sono esenti da difetti dei materiali e di produzione per UN (1) ANNO dalla data dell’acquisto originario da parte dell’utente finale (“Periodo di Garanzia”) qualora utilizzati in conformità alle guidelines pubblicate da Apple. Le guidelines pubblicate da Apple includono a mero titolo esemplificativo le informazioni contenute nelle specifiche tecniche, nei manuali utenti e nelle comunicazioni di servizio. CHE COSA NON È COPERTO DALLA PRESENTE GARANZIA? La presente garanzia non si applica a prodotti hardware o software di terzi, anche qualora acclusi o venduti assieme ai prodotti hardware di Apple. I produttori, fornitori o editori di software diversi da Apple possono fornire le proprie garanzie all’utente finale, tuttavia Apple, nei limiti di legge, fornisce i prodotti di terzi senza alcuna garanzia. Il software distribuito da Apple con o senza il marchio Apple (ivi compreso, a mero titolo esemplificativo, il software per l’installazione del sistema operativo) non è coperto dalla presente garanzia Limitata. Per maggiori informazioni sui diritti del consumatore circa l’uso del software si rimanda al contratto di Licenza del software Apple. Apple non garantisce che l’operatività del Prodotto Apple sia esente da interruzioni o errori. Apple non è responsabile dei danni causati dalla mancata osservanza delle istruzioni d’uso del Prodotto Apple. La presente garanzia non si applica a: (a) componenti consumabili, quali batterie o rivestimenti protettivi soggetti a riduzione nel tempo, salvo che il problema sia stato causato da un difetto di fabbricazione o di manodopera; (b) danni estetici, ivi inclusi, a titolo esemplificativo e non esaustivo, graffi, ammaccature e plastica rotta all’interno delle porte; (c) danni causati dall’uso in associazione a prodotti che non siano Apple; (d) danni causati da incidenti, abuso, uso improprio, contatto con liquidi, incendio, terremoto o qualsiasi altra causa esterna; (e) danni causati dall’utilizzo del Prodotto Apple in modo non conforme con gli usi previsti o descritti da Apple; (f) danni causati da interventi (ivi compresi gli interventi di miglioramento ed upgrade) effettuati da qualunque soggetto che non sia un rappresentante di Apple o un suo fornitore di servizi autorizzato (“AASP”, Apple Authorized Service Provider); (g) un Prodotto Apple che sia stato modificato per alterarne le funzionalità o capacità senza il permesso scritto di Apple; o (h) difetti riconducibili alla ordinaria usura del Prodotto Apple o altrimenti dovuti al normale invecchiamento dello stesso, o (i) un Prodotto Apple il cui numero di serie sia stato rimosso o reso illeggibile. IMPORTANTI LIMITAZIONI. Apple può limitare il servizio di garanzia nel paese nel quale Apple o i suoi Distributori Autorizzati hanno venduto originariamente il Prodotto Apple. VOSTRE RESPONSABILITÀ. SE SUL PRODOTTO APPLE SONO STATE CARICATE APPLICAZIONI SOFTWARE, DATI ED ALTRE INFORMAZIONI SI RACCOMANDA DI EFFETTUARE PERIODICAMENTE COPIE DI SALVATAGGIO DEI DATI CONTENUTI NEL DISCO FISSO, AI FINI DI PROTEZIONE DEI CONTENUTI E QUALE PRECAUZIONE CONTRO EVENTUALI DIFETTI OPERATIVI. Prima di erogare il servizio di garanzia, Apple o i suoi incaricati potrebbero richiedere di fornire la prova di acquisto, di rispondere a domande dirette all’assistenza con diagnosi di possibili problematiche e di seguire le procedure Apple per ottenere il servizio di garanzia. Prima di consegnare il Prodotto Apple al servizio di garanzia è responsabilità del consumatore effettuare una copia di salvataggio dei contenuti su un supporto separato, rimuovere tutti i dati e le informazioni personali che si desidera proteggere e disattivare eventuali password di sicurezza. IL CONTENUTO DEL DISCO FISSO SUL PRODOTTO APPLE POTREBBE ANDARE PERSO O VENIRE RIFORMATTATO DURANTE IL SERVIZIO DI GARANZIA. IN TALE CASO APPLE E I SUOI INCARICATI NON SONO RESPONSABILI DI EVENTUALI DANNI O PERDITA DI PROGRAMMI SOFTWARE, DATI O ALTRE INFORMAZIONI CONTENUTE SU TALE SUPPORTO O DI QUALSIASI COMPONENTE DEL PRODOTTO APPLE OGGETTO DEL SERVIZIO DI GARANZIA. A seguito del servizio di riparazione, il Prodotto Apple o un prodotto sostitutivo sarà restituito al consumatore nella configurazione in cui è stato acquistato il prodotto originale, fatti salvi i possibili aggiornamenti. Il consumatore sarà tenuto ad effettuare la reinstallazione dei programmi software, dei dati e delle password. Il recupero e la reinstallazione di programmi software e dei dati dell’utente non sono coperti dalla presente garanzia. Importante: non aprire il Prodotto Apple. L’apertura del Prodotto Apple potrebbe causare danni che non sono coperti dalla presente garanzia. Solo Apple o un AASP possono prestare i servizi su tale Prodotto Apple. COME OPERA APPLE NEL CASO IN CUI LA GARANZIA SIA VIOLATA? Qualora Apple o un AASP ricevano una valida contestazione entro il Periodo di Garanzia, Apple, a propria discrezione (1) riparerà il Prodotto Apple utilizzando componenti nuovi o componenti ricondizionati equivalenti al nuovo per prestazioni e affidabilità, (2) sostituirà il Prodotto Apple con un prodotto che come minimo abbia funzionalità equivalente al Prodotto Apple e sia costituito da parti nuove o usate che abbiano le medesime prestazioni e affidabilità di un prodotto nuovo o (3) rimborserà il prezzo d’acquisto del Prodotto Apple a fronte della restituzione dello stesso. Apple si riserva il diritto di chiedere al consumatore di sostituire talune parti o prodotti installabili direttamente dall’utente. Apple garantisce i prodotti o le parti sostituite, ivi compresi i componenti installabili direttamente dall’utente installati in conformità con le istruzioni fornite da Apple, per il periodo più lungo tra il periodo residuo della garanzia del Prodotto Apple e novanta (90) giorni dalla data di sostituzione o riparazione. Dopo la sostituzione, il prodotto o componente sostitutivo divengono proprietà del consumatore e il prodotto o componente sostituito diventa proprietà di Apple COME OTTENERE UN SERVIZIO DI GARANZIA? Prima di richiedere il servizio di garanzia si raccomanda di consultare le risorse di assistenza online descritte più avanti. Nel caso in cui il Prodotto Apple continui a non funzionare correttamente anche dopo aver seguito le istruzioni on line, il consumatore può contattare un rappresentante Apple o, se possibile, un punto vendita Apple (“Rivenditore Apple”) o AASP identificato mediante le informazioni di seguito fornite. Il rappresentante Apple o l’AASP aiuteranno il consumatore ad appurare se il Prodotto Apple necessiti del servizio di assistenza ed in tal caso illustreranno le modalità della prestazione da parte di Apple. Qualora Apple sia contattata telefonicamente, ulteriori tariffe possono essere applicate a seconda della località ove si trova il consumatore. Le informazioni on line con i dettagli circa come ottenere i servizi di garanzia sono indicati di seguito. DIVERSI SERVIZI DI GARANZIA. Apple presterà il servizio di garanzia attraverso una o più delle seguenti modalità: (i) Servizio Carry-in. Il consumatore può restituire il Prodotto Apple presso un Rivenditore Apple o presso la sede di un AASP che offrono il servizio carry-in. Il servizio sarà prestato a domicilio ovvero il Rivenditore Apple o un AASP possono inviare il Prodotto Apple presso la sede di un Servizio Riparazione Apple (“ARS”). Una volta che il consumatore riceverà la comunicazione che il servizio è stato completato, lo stesso dovrà tempestivamente recuperare il Prodotto Apple dal Rivenditore Apple o dalla sede AASP, ovvero il Prodotto Apple sarà inviato direttamente presso il consumatore dalla sede ARS. (ii) Servizio Mail-in. Qualora Apple stabilisca che il Prodotto Apple può usufruire del sevizio mail-in, Apple invierà al consumatore documenti di trasporto prepagati e, ove possibile, il materiale di imballaggio per consentirgli di effettuare la spedizione del Prodotto Apple presso un ARS o una sede AASP sulla base delle istruzioni fornite da Apple. Una volta che il servizio sia stato completato, la sede ARS o AASP restituiranno il Prodotto Apple al consumatore. Apple si farà carico delle spese di spedizione al e dal consumatore qualora tutte le istruzioni siano seguite. (iii) Servizio Do-it-yourself (DIY). Il servizio DIY permette al consumatore di riparare o sostituire direttamente il proprio Prodotto Apple. Qualora il servizio sia disponibile, si applicherà la seguente procedura. (a) Servizio per cui Apple richiede la restituzione del prodotto o della componente sostituita. Apple potrà richiedere l’autorizzazione ad addebitare sulla carta di credito del consumatore, a titolo di garanzia, un importo corrispondente al prezzo di vendita del prodotto o componente sostitutivo e alle relative spese di spedizione. Qualora il consumatore non fornisca l’autorizzazione all’addebito su carta di credito, il servizio DIY potrebbe non essere disponibile per il consumatore e Apple proporrà soluzioni alternative per il servizio. Apple spedirà un prodotto o un componente sostitutivo al consumatore unitamente alle istruzioni per l’installazione, ove necessarie, nonché ogni indicazione per la restituzione del prodotto o componente sostituito. Qualora il consumatore segua le istruzioni impartite, Apple cancellerà l’addebito e pertanto il prezzo del prodotto e le relative spese di spedizione non saranno addebitati sulla carta di credito del consumatore. Se il cliente non provvede a restituire il prodotto o il componente sostituito in conformità con le istruzioni, o se il prodotto o il componente sostituito non risultasse idoneo per il servizio in garanzia, Apple addebiterà l’importo autorizzato sulla carta di credito. (b) Servizio per cui Apple non richiede la restituzione del prodotto o componente sostitutivo. Apple spedirà un prodotto o componente sostitutivo al consumatore gratuitamente unitamente alle istruzioni per l’installazione, ove necessarie, nonché ogni indicazione per la restituzione del prodotto o componente sostituito. (c) Apple non è responsabile di eventuali costi sopportati dal consumatore con riferimento al servizio DIY. Qualora il consumatore necessiti di ulteriore assistenza, si prega di contattare Apple ai numeri di telefono indicati di seguito. Apple si riserva il diritto di modificare le modalità di prestazione del servizio di garanzia da parte di Apple nei confronti del consumatore, nonché la disponibilità di un particolare tipo di servizio per il Prodotto Apple. Il tipo di servizio, sarà limitato alle opzioni disponibili a seconda del paese in cui il servizio di garanzia viene richiesto. Le opzioni di servizio, la disponibilità delle parti e i tempi di risposta possono variare a seconda del paese. Il consumatore può essere responsabile per i costi di spedizione e gestione se il Prodotto Apple non può essere riparato o sostituito nel paese ove si trova. Se il servizio di garanzia viene richiesto in un paese diverso da quello in cui il prodotto è stato acquistato, il consumatore è tenuto ad osservare le leggi e i regolamenti applicabili in materia di importazione ed esportazione e a farsi carico dei dazi doganali, dell’IVA e di tutte le altre imposte ed oneri associati. In caso di fornitura del servizio di garanzia internazionale, Apple potrà riparare o sostituire i prodotti e i componenti difettosi con prodotti e componenti equiparabili conformi alle normative locali. LIMITAZIONI DI RESPONSBAILITÀ. FATTO SALVO QUANTO PREVISTO DALLA PRESENTE GARANZIA E FINO AL MASSIMO LIMITE PREVISTO DALLA LEGGE, APPLE NON È RESPONSABILE DEI DANNI DIRETTI, SPECIALI, INDIRETTI O ACCESSORI DERIVANTI DALLA VIOLAZIONE DELLA GARANZIA O DI SUE DISPOSIZIONI, OVVERO PREVISTI DA QUALSIASI ALTRO PRINCIPIO DI LEGGE, IVI COMPRESI, A TITOLO ESEMPLIFCIATIVO, LA PERDITA DI UTILIZZO, PERDITA DI FATTURATO, PERDITA DI UTILI EFFETTIVI O PREVISTI (COMPRESA LA PERDITA DI UTILI CONTRATTUALI); PERDITA DI LIQUIDITÀ; PERDITA DI RISPARMI ATTESI; PERDITA DI AFFARI; PERDITA DI OPPORTUNITÀ; PERDITA DI AVVIAMENTO; DANNI ALL’IMMAGINE; PERDITA, DANNI, ALTERAZIONE O DISTRUZIONE DI DATI; O QUALSIASI PERDITA O DANNO INDIRETTO O ACCESSORIO A PRESCINDERE DALLA CAUSA, IVI COMPRESA LA SOSTITUZIONE DI ATTREZZATURE E BENI, LE SPESE DI RECUPERO DATI, RIPROGRAMMAZIONE O RIPRODUZIONE DEI PROGRAMMI O DEI DATI CONTENUTI O UTILIZZATI CON IL PRODOTTO APPLE, NONCHÉ DELLA MANCATA PROTEZIONE DELLA RISERVATEZZA DELLE INFORMAZIONI MEMORIZZATE NEL PRODOTTO APPLE. LE SUDDETTE LIMITAZIONI NON SI APPLICANO IN CASO DI RICHIESTE DI RISARCIMENTO PER MORTE O LESIONI PERSONALI O ALLE RESPONSABILITÀ DI LEGGE PER COMPORTAMENTI O OMISSIONI DOLOSI O COLPOSI. APPLE SPECIFICAMENTE NON GARANTISCE CHE SARÀ IN GRADO DI RIPARARE OGNI PRODOTTO APPLE COPERTO DALLA PRESENTE GARANZIA O DI SOSTITUIRE IL PRODOTTO APPLE SENZA RISCHIO O PERDITA DI PROGRAMMI O DATI MEMORIZZATI NEL PRODOTTO APPLE. POICHÉ ALCUNI PAESI, REGIONI E PROVINCE NON AMMETTONO L’ESCLUSIONE O LA LIMITAZIONE IN CASO DI DANNI ACCIDENTALI O CONSEQUENZIALI, LE SUMMENZIONATE LIMITAZIONI ED ESCLUSIONI POTREBBERO NON ESSERE APPLICABILI. PRIVACY. Apple si impegna a conservare ed utilizzare le informazioni sulla clientela in conformità con la politica sulla privacy di Apple, disponibile alla pagina www.apple.com/legal/warranty/privacy. VARIE. Ai rivenditori, agenti o dipendenti di Apple non è consentito apportare modifiche, estensioni o integrazioni alla presente garanzia. Nel caso in cui alcune delle condizioni della presente garanzia siano dichiarate invalide, nulle o non applicabili le restanti condizioni dovranno comunque considerarsi pienamente valide ed efficaci. La presente garanzia è regolata e dovrà essere interpretata sulla base della legge del luogo di acquisto del Prodotto Apple. Apple è identificata in calce al presente documento sulla base del paese o regione in cui è avvenuto l’acquisto del Prodotto Apple. Apple o i suo aventi causa sono i prestatori di garanzia sulla base della presente garanzia. INFORMAZIONI ONLINE. Maggiori informazioni sui seguenti argomenti sono disponibili online: Supporto internazionale www.apple.com/support/country Distributori autorizzati www.apple.com/iphone/countries/ Fornitori di assistenza autorizzati Apple Authorized Service Provider support.apple.com/kb/HT1434 Apple Retail Store www.apple.com/retail/storelist Supporto e assistenza Apple http://www.apple.com/support/contact/phone_contacts.html Apple Complimentary Support http://www.apple.com/support/country/index.html?dest=complimentary OBBLIGATO PER LA GARANZIA IN BASE AL PAESE O ALLA REGIONE D’ACQUISTO Regione/Paese d’acquisto Apple Indirizzo Americhe Brasile Apple Computer Brasil Ltda Av. Cidade Jardim 400, 2 Andar, Sao Paulo, SP Brasil 01454-901 Canada Apple Canada Inc. 7495 Birchmount Rd.; Markham, Ontario, Canada; L3R 5G2 Canada Messico Apple Operations Mexico, S.A. de C.V. Prolongaciòn Paseo de la Reforma #600, Suite 132, Colonia Pena Blanca, Santa Fè, Delegaciòn Alvaro Obregòn, Mèxico D.F., CP01210, Mexico Stati Uniti ed altri Paesi americani Apple Inc. 1 Infinite Loop; Cupertino, CA 95014, U.S.A. Europa, Medio Oriente e Africa Tutti i Paesi Apple Sales International Hollyhill Industrial Estate Hollyhill, Cork, Republic of Ireland Asia-Pacifico Australia; Nuova Zelanda; Fiji, Papua Nuova Guinea; Vanuatu Apple Pty. Ltd. PO Box A2629, Sydney South, NSW 1235, Australia Hong Kong Apple Asia Limited 2401 Tower One, Times Square, Causeway Bay; Hong Kong India Apple India Private Ltd. 19th Floor, Concorde Tower C, UB City No 24, Vittal Mallya Road, Bangalore 560-001, India Giappone Apple Japan Inc. 3-20-2 Nishishinjuku, Shinjuku-ku, Tokyo, Japan Corea Apple Korea Ltd. 3201, ASEM Tower; 159, Samsung-dong, Gangnam- Gu; Seoul 135-798, Republic of Korea Afghanistan, Bangladesh, Bhutan, Brunei, Cambogia, Guam, Indonesia, Laos, Singapore, Malaysia, Nepal, Pakistan, Filippine, Sri Lanka, Vietnam Apple Computer South Asia PTE Ltd 7 Ang Mo Kio Street 64, Singapore 569086 Regione/Paese d’acquisto Apple Indirizzo Repubblica Popolare Cinese Apple Computer Trading (Shanghai) Co. Ltd. Room 1815, No. 1 Jilong Road, Waigaoqiao Free Trade Zone, Shangai 200131 China Taiwan Apple Asia LLC 16A, No. 333 Tun Hwa S. Road. Sec. 2, Taipei, Taiwan 106 Thailandia Apple South Asia (Thailand) Limited 25th Floor, Suite B2, Siam Tower,989 Rama 1 Road, Pataumwan, Bangkok, 10330 Altri Apple Inc. 1 Infinite Loop; Cupertino, CA 95014, U.S.A. iPhone T Warranty v3 © 2011 Apple Inc. Tutti i diritti riservati. Apple, il logo Apple logo, FaceTime, iPhone, iPod, iPod touch, iTunes, Safari, Siri, il logo “Made for iPod” e il logo “Works with iPhone” sono marchi di Apple Inc., registrati negli Stati Uniti e in altri paesi. Il logo “Made for iPhone” e iMessage sono marchi di Apple Inc. iTunes Store è un marchio di servizio di Apple Inc., registrato negli Stati Uniti e in altri paesi. App Store e iCloud sono marchi di servizio di Apple Inc. IOS è un marchio o un marchio di Cisco registrato negli Stati Uniti e in altri paesi il cui uso è concesso in licenza. Il marchio e i loghi Bluetooth® sono marchi registrati di proprietà di Bluetooth SIG, Inc. e qualsiasi uso di tali marchi da parte di Apple Inc. è concesso in licenza. T034-6009-A Printed in XXXX Logic Pro X Instrumente Für OS X KKApple Inc. © 2013 Apple Inc. Alle Rechte vorbehalten. Ihre Rechte an der Software unterliegen dem zugehörigen Softwarelizenzvertrag. Der Eigentümer oder autorisierte Benutzer einer gültigen Kopie der Logic Pro-Software ist berechtigt, diese Dokumentation zwecks Erlernen des Umgangs mit dieser Software zu reproduzieren. Kein Teil dieser Dokumentation darf für kommerzielle Zwecke, etwa zum Verkauf von Kopien dieser Dokumentation oder zum Bereitstellen zahlungspflichtiger Supportdienste, reproduziert oder übertragen werden. Das Apple-Logo ist eine Marke der Apple Inc., die in den USA und in weiteren Ländern eingetragen ist. Die Verwendung des über die Tastatur erzeugten Apple-Logos für kommerzielle Zwecke ohne vorherige Genehmigung von Apple kann als Markenmissbrauch und unlauterer Wettbewerb gerichtlich verfolgt werden. Die Informationen in diesem Handbuch wurden sorgfältig auf ihre Korrektheit überprüft. Apple übernimmt keine Verantwortung für Druck- oder Schreibfehler. Da Apple regelmäßig neue Versionen und Aktualisierungen von Systemsoftware, Programmen und Internetseiten veröffentlicht, unterscheiden sich die Abbildungen in diesem Handbuch unter Umständen von den Darstellungen in der Software. Apple 1 Infinite Loop Cupertino, CA 95014 408-996-1010 www.apple.com Apple, das Apple-Logo, Final Cut Pro, Finder, FireWire, GarageBand, iMovie, iPad, iPhoto, iPod, iTunes, iTunes Store, Jam Pack, Logic, Logic Pro, Mac, Macintosh, MainStage, QuickTime und Ultrabeat sind Marken der Apple Inc., die in den USA und weiteren Ländern eingetragen sind. IOS ist eine Marke oder eine in den USA und weiteren Ländern eingetragene Marke der Cisco und wird in Lizenz verwendet. Andere hier genannte Produkt- und Herstellernamen sind möglicherweise Marken ihrer jeweiligen Rechtsinhaber. Die Nennung von Produkten anderer Anbieter erfolgt lediglich zu Informationszwecken und stellt weder eine Bestätigung noch eine Empfehlung dar. Apple übernimmt hinsichtlich der Auswahl, Leistung oder Verwendbarkeit dieser Produkte keine Gewähr. D019-2552 Inhalt 13 Kapitel 1: Drum Kit Designer 13 Drum Kit Designer – Übersicht 14 Bereich „Edit“ von Drum Kit Designer 14 Verwenden von Drum Kit Designer 17 Erweiterte Parameter von Drum Kit Designer 18 Drum Kit Designer – Mappings 19 Kapitel 2: ES1 19 ES1 – Übersicht 20 ES1 Oszillators-Parameter 20 ES1-Oszillator-Parameter – Übersicht 21 ES1 Oszillator-Wellenformen 21 Verwenden des Suboszillators im ES1 21 ES1 Global-Parameter 23 ES1 Filter-Parameter 23 ES1 Filter-Parameter – Übersicht 24 Selbstoszillation des ES1-Filters 24 ES1 Amplifier-Parameter 25 ES1 Hüllkurven-Parameter 25 ES1 Hüllkurven-Parameter – Übersicht 25 Verwenden der Hüllkurve zum Steuern der Cutoff-Frequenz im ES1 26 Verwenden der Hüllkurve zum Steuern des Verstärkers im ES1 27 ES1 Modulation 27 ES1 Modulationsparameter – Übersicht 27 Verwenden des Routers im ES1 28 Verwenden des ES1 LFO 29 Verwenden von Mod ES1-Envelope 30 ES1 MIDI-Controller 32 Kapitel 3: ES2 32 ES2 – Übersicht 33 Bedienoberfläche des ES2 34 ES2-Soundquellen 34 ES2-Oszillator-Parameter – Übersciht 35 Grundlegende ES2-Oszillator-Wellenformen 36 Pulsbreitenmodulation im ES2 37 Frequenzmodulation im ES2 38 Ringmodulation im ES2 38 Verwenden von ES2-Digiwaves 39 Verwenden des ES2-Noise-Generators 39 Emulieren von verstimmten Analog-Oszillatoren im ES2 40 Streckung im ES2 3 41 Ausgleichen von ES2-Oszillatorpegeln 41 Ändern von Oszillator-Startpunkten im ES2 42 Synchronisieren von ES2-Oszillatoren 42 Globale Parameter im ES2 42 Globale Parameter – Übersicht 43 Einstellen des Keyboard-Modus im ES2 44 Verwenden von Unison und Stimmen im ES2 44 Festlegen der Zeiteinstellung für Glide im ES2 45 Pitch-Bend-Bereich des ES2 festlegen 45 Filter-Parameter des ES2 45 Filter im ES2 – Übersicht 46 Filterkonfiguration im ES2 47 Überblenden zwischen ES2-Filtern 48 Modi von Filter 1 im ES2 49 Flankensteilheiten von Filter 2 im ES2 49 Filter-Cutoff-Frequenz und Resonanz im ES2 51 Verzerren von ES2-Filtern 52 Modulieren der Frequenz von Filter 2 des ES2 52 Amplifier-Parameter des ES2 52 Verwenden der Dynamikstufe des ES2 53 Optimierte ES2-Sounds mit Sine Level 54 ES2-Modulation 54 ES2-Modulation – Übersicht 55 Modulations-Router im ES2 58 ES2 LFOs 60 ES2-LFOs verwenden 60 ES2-Hüllkurven 63 Verwenden der Vector-Hüllkurve 64 Punkte, Zeiten und Loops der Vector-Hüllkurve 70 Verwenden von Planar Pad 71 Referenz der Modulationsziele im ES2 75 Referenz der Modulationsquellen im ES2 76 Referenz der via-Modulationsquellen im ES2 78 Integrierter Effektprozessor des ES2 79 ES2-Makroregler und Reglerzuweisungen 79 ES2-Makro- und Reglerzuweisungen – Überscht 80 Makro-Steuerungen im ES2 80 ES2-Controller-Zuweisung 81 Surround-Modus des ES2 82 ES2 – Erweiterte Parameter 82 Erzeugen von zufälligen Sound-Variationen im ES2 82 Verwenden der Zufalls-Parameter des ES2 83 Beschränkung der Random-Funktion 84 Tutorials zum ES2 84 Erzeugen von völlig neuen ES2-Sounds 94 Erzeugen von ES2-Sounds mit Templates Inhalt 4 100 Kapitel 4: EFM1 100 EFM1 – Übersicht 101 EFM1 Modulator- und Carrier-Parameter 101 Modulator- und Carrier-Überblick 102 Einstellen der Tuning Ratio im EFM1 103 Auswählen einer anderen Modulator-Wellenform im EFM1 103 Parameter für EFM1-Modulation 105 EFM1-Globalparameter 106 EFM1-Ausgangsparameter 107 Erstellen von Random-EFM1-Sounds 107 EFM1-Ausgangsparameter 108 EFM1 MIDI-Controller-Zuweisungen 109 Kapitel 5: ES E 109 ES E – Übersicht 110 ES E-Oszillator-Parameter 110 ES E-LFO-Parameter 111 ES E-Filter-Parameter 112 ES E-Hüllkurvenparameter 112 ES E-Output-Parameter 113 Erweiterte ES E-Parameter 114 Kapitel 6: ES M 114 ES M – Übersicht 115 ES M-Oszillator-Parameter 116 ES M-Filter und -Filterhüllkurve 116 Lautstärke-Hüllkurve und Output-Parameter des ES M 117 Erweiterte ES M-Parameter 118 Kapitel 7: ES P 118 ES P – Übersicht 119 Oszillator-Parameter des ES P 120 ES P LFO-Parameter 120 ES P Filter-Parameter 121 Hüllkurve und der Level-Parameter des ES P 122 Integrierter ES P Effekt-Prozessor 122 Erweiterte Parameter des ES P 123 Kapitel 8: EVOC 20 PolySynth 123 EVOC 20 PolySynth und Vocoding 123 EVOC 20 PolySynth – Übersicht 124 Grundlagen zum Vocoder 125 EVOC 20 PolySynth Oberfläche 125 Analyse-Parameter des EVOC 20 PolySynth 127 EVOC 20 PolySynth (U/V) Detektor-Parameter 128 Synthese-Parameter des EVOC 20 PolySynth 128 Synthese-Parameter des EVOC 20 PolySynth – Übersicht 129 Oszillator-Parameter des EVOC 20 PolySynth 131 Parameter zur Steuerung von Stimmung und Tonhöhe im EVOC 20 PolySynth 131 Filter-Parameter des EVOC 20 PolySynth 132 Hüllkurven-Parameter des EVOC 20 PolySynth 132 Globale Parameter des EVOC 20 PolySynth Inhalt 5 133 Formant-Filter im EVOC 20 PolySynth 135 Modulationsparameter des EVOC 20 PolySynth 136 Output-Parameter des EVOC 20 PolySynth 137 EVOC 20 PolySynth Performance Tipps 137 Pegel- und Frequenz-Tipps 137 Vermeiden von klanglichen Artefakten 138 Verbessern der Sprachverständlichkeit 139 Vocoder-Geschichte 141 EVOC20-Blockschaltbild 142 Kapitel 9: EXS24 mkII 142 EXS24 mkII – Übersicht 144 Sampler-Instrumente 144 Sampler-Instrumente – Übersicht 144 Sample-Speicherorte 145 Verwalten von Sampler-Instrumenten 146 Sampler-Instrumente und -Einstellungen 147 Importieren von SoundFont2-, DLS- und Gigasampler-Dateien 148 Konvertieren von Audioregionen in Sampler-Instrumente 149 Konvertieren von ReCycle-Dateien in Sampler-Instrumente 151 Fenster „Parameter“ des EXS24 mkII 151 Fenster „Parameter“ des EXS24 mkII – Übersicht 152 Einblendmenü „Sampler Instruments“ 155 Globale Parameter des EXS24 mkII 158 Pitch-Parameter des EXS24 mkII 160 Filterparameter des EXS24 mkII 162 Output-Parameter des EXS24 mkII 163 Erweiterte Parameter des EXS24 mkII 163 EXS24 mkII-Modulation – Übersicht 164 EXS24 mkII-Modulations-Router 167 LFOs des EXS24 mkII 170 EXS24 mkII-Hüllkurven – Übersicht 172 EXS24 mkII-Modulationsreferenz 176 EXS24 mkII-Fenster „Instrument-Editor“ 176 EXS24 mkII-Instrument-Editor – Übersicht 177 Ansicht „Zonen“ und „Gruppen“ im EXS24 mkII 178 Erstellen von Instrumenten, Zonen und Gruppen 182 Bearbeiten von Zonen und Gruppen im EXS24 mkII 194 Sichern, Umbenennen und Exportieren von Instrumenten im EXS24 mkII 195 Bearbeiten von Samples im Audiodateieditor von Logic Pro 196 Verwenden eines externen Instrumenteditors im EXS24 mkII 197 Einstellungen des EXS24 mkII 200 EXS24 mkII-Speicherverwaltung 202 Kapitel 10: External Instrument 202 External Instrument – Übersicht 202 Verwenden von External Instrument 204 Kapitel 11: Klopfgeist 204 Klopfgeist-Parameter Inhalt 6 206 Kapitel 12: Retro Synth 206 Retro Synth – Übersicht 207 Steuerelemente für Analog-Oszillator in Retro Synth 208 Steuerelemente für Sync-Oszillator in Retro Synth 209 Steuerelemente für Table-Oszillator in Retro Synth 210 Steuerelemente für FM-Oszillator in Retro Synth 211 Steuerelemente für Filter in Retro Synth 213 Steuerelemente für Verstärker und Effekte in Retro Synth 214 Steuerelemente für Modulation in Retro Synth 214 Verwenden der Modulation in Retro Synth 216 Glide- und Autobend-Modus in Retro Synth 216 LFO und Vibrato in Retro Synth 217 Hüllkurven in Retro Synth 218 Globale und Controller-Einstellungen von Retro Synth 220 Erweiterte Parameter in Retro Synth 221 Kapitel 13: Sculpture 221 Sculpture – Übersicht 223 Die Oberfläche von Sculpture 224 Saiten-Parameter von Sculpture 224 Übersicht Saiten in Sculpture 225 Hide-, Keyscale- und Release-Darstellung in Sculpture 226 Grundlegende Parameter des Material Pads in Sculpture 227 Verwenden des Material Pads in der Keyscale- oder Release-Ansicht von Sculpture 228 Verwenden der Schieberegler für die Saiten-Parameter von Sculpture 230 Objekt-Parameter von Sculpture 230 Sculpture-Objekt – Übersicht 232 Tabelle Erregungs-Typen von Sculpture (Objekte 1 und 2) 233 Tabelle Stör- und Dämpf-Typen von Sculpture (Objekt 2 und 3) 234 Pickup-Parameter von Sculpture 234 Pickup-Parameter von Sculpture 236 Spread-Regler in Sculpture 237 Globale Parameter von Sculpture 238 Parameter der Amplitudenhüllkurve in Sculpture 239 Verwenden des Waveshaper in Sculpture 240 Filter-Parameter von Sculpture 241 Parameter für Delay-Effekt von Sculpture 241 Übersicht Delay-Effekt von Sculpture 242 Stereo-Groove-Pad von Sculpture 243 Groove-Pad (surround) von Sculpture 243 Body-EQ-Parameter von Sculpture 243 Übersicht Body EQ von Sculpture 244 Verwenden des Basic-EQ-Modells 245 Verwenden des Body-EQ-Modells 246 Output-Parameter von Sculpture 246 „Surround Range“ und „Surround Diversity“ in Sculpture Inhalt 7 247 Steuerelemente zur Modulation bei Sculpture 247 Übersicht Modulation bei Sculpture 248 LFOs in Sculpture 252 Vibrato-Parameter von Sculpture 253 Jitter-Generatoren von Sculpture 254 Note-On-Random-Modulatoren in Sculpture 254 Velocity-Modulatoren in Sculpture 255 Verwenden von Controller A und B in Sculpture 256 Hüllkurven-Parameter von Sculpture 262 Morph-Parameter von Sculpture 262 Morph-Parameter in Sculpture –Übersicht“ 263 Verwenden des Morph Pad von Sculpture 266 Verwenden der Morph-Hüllkurve von Sculpture 270 Definieren von MIDI-Controller in Sculpture 271 Sculpture-Tutorials 271 Grundlagen von Sculpture 276 Erzeugen von Grundklängen in Sculpture 285 Sculpture-Tutorial für Fortgeschrittene: Elektrische Bässe 301 Sculpture-Tutorial für Fortgeschrittene: Synthetische Klänge 306 Kapitel 14: Ultrabeat 306 Ultrabeat – Übersicht 307 Bedienoberfläche von Ultrabeat 308 Zuordnungsbereich in Ultrabeat 308 Übersicht Zuordnungsbereich in Ultrabeat 309 Wiedergeben und Auswählen von Drum-Sounds in Ultrabeat 310 Benennen, Austauschen und Kopieren von Drum-Sounds in Ultrabeat 312 Importieren von Sounds und EXS-Instrumenten in Ultrabeat 314 Ultrabeat-Settings 315 Übersicht Synthesizer-Bereich in Ultrabeat 317 Klangquellen in Ultrabeat 317 Übersicht Ultrabeat-Oszillator 318 Phasenoszillator-Modus von Oszillator 1 in Ultrabeat 319 Verwenden des FM-Modus von Oszillator 1 in Ultrabeat 320 Verwenden des Side-Chain-Modus von Oszillator 1 in Ultrabeat 321 Verwenden des Phasenoszillator-Modus von Oszillator 2 in Ultrabeat 322 Eigenschaften der grundlegenden Wellenform 322 Verwenden des Sample-Modus von Oszillator 2 in Ultrabeat 324 Verwenden des Modeling-Modus von Oszillator 2 in Ultrabeat 326 Ringmodulator in Ultrabeat 327 Rauschgenerator in Ultrabeat 328 Verwenden des Filter-Bereichs von Ultrabeat 330 Distortion-Schaltkreis in Ultrabeat 331 Ausgangsbereich in Ultrabeat 331 Übersicht Ausgangsbereich in Ultrabeat 332 Anpassen des Zweiband-Equalizers (two-band EQ) in Ultrabeat 333 Pan-Mod und Stereo-Spread in Ultrabeat 334 Lautstärkeregler „Voice“ in Ultrabeat 335 Ändern des Trigger-Verhaltens von Ultrabeat Inhalt 8 335 Modulation in Ultrabeat 335 Übersicht Modulation in Ultrabeat 336 mod- und via-Modulation in Ultrabeat 338 Erzeugen einer Modulationsverknüpfung in Ultrabeat 339 Ultrabeat-MIDI-Controller A–D zuweisen 339 Ultrabeat-LFOs verwenden 342 Übersicht Ultrabeat-Hüllkurven 343 Parameter der Hüllkurven in Ultrabeat 344 Verwenden der Anzeige des Modulationsziels in Ultrabeat 345 Step-Sequenzer von Ultrabeat 345 Übersicht Step-Sequenzer von Ultrabeat 345 Funktionsprinzip von Step-Sequenzern 346 Übersicht Bedienoberfläche des Step-Sequenzers 347 Globale Steuerung des Sequenzers in Ultrabeat 347 Pattern-Steuerung in Ultrabeat 348 Verwenden der Swing-Funktion von Ultrabeat 349 Step-Grid in Ultrabeat 354 Automatisieren von Parameterwerten im Step-Sequenzer von Ultrabeat 356 Exportieren von Ultrabeat-Patterns als MIDI-Regionen 357 MIDI-Steuerung des Step-Sequenzers von Ultrabeat 358 Ultrabeat-Tutorials 358 Sound-Programmierung – Übersicht 358 Erzeugen eines Kick-Drum-Sounds in Ultrabeat 362 Erzeugen eines Snare-Drum-Sounds in Ultrabeat 367 Erzeugen tonaler Percussion-Sounds in Ultrabeat 367 Erzeugen von HiHat- und Becken-Sounds in Ultrabeat 368 Erzeugen metalischer Sounds in Ultrabeat 368 Tipps für extreme Ultrabeat-Sounds 369 Kapitel 15: Vintage B3 369 Vintage B3 – Überblick 370 Hauptfenster von Vintage B3 370 Hauptfenster von Vintage B3 – Überblick 371 Steuerung der Zugriegel von Vintage B3 371 Scanner Vibrato- und Chorus-Effekt von Vintage B3 372 Percussion-Effekt von Vintage B3 373 Verwenden der Preset Keys von Vintage B3 375 Einrichten von Vintage B3 für MIDI-Equipment 378 Fenster „Rotor Cabinet“ von Vintage B3 378 Fenster „Rotor Cabinet“ von Vintage B3 – Überblick 379 Erweiterte Parameter für die Lautsprecherbox 380 Erweiterte Motor-Parameter 381 Erweiterte Brake-Parameter 382 Mikrofon-Parameter von Vintage B3 383 Mikrofon-Parameter von Vintage B3 383 Fenster „Options“ von Vintage B3 383 Fenster „Options“ von Vintage B3 – Überblick 384 Steuerelemente „Master“ und „Click“ in Vintage B3 384 Morph-Parameter von Vintage B3 385 Verwenden der Morph-Steuerelemente von Vintage B3 Inhalt 9 386 Fenster „Effects“ von Vintage B3 386 Verwenden der Effekte von Vintage B3 387 EQ von Vintage B3 387 Wah-Wah-Effekt von Vintage B3 388 Verzerrer-Effekt von Vintage B3 389 Hall-Effekt von Vintage B3 389 Fenster „Expert“ von Vintage B3 389 Fenster „Expert“ von Vintage B3 – Überblick 390 Steuerelemente „Pitch“ in Vintage B3 391 Steuerelemente „Sustain“ in Vintage B3 391 Steuerelemente „Condition“ in Vintage B3 393 Steuerelemente „Organ Model“ von Vintage B3 393 Verwenden eines MIDI-Controllers mit Vintage B3 393 Auswählen eines MIDI-Steuermodus in Vintage B3 394 MIDI-Modus in Vintage B3: Roland VK oder Korg CX 395 MIDI-Modus in Vintage B3: Hammond Suzuki 396 MIDI-Modus in Vintage B3: Native Instruments B4D 398 MIDI-Modus in Vintage B3: Nord Electro 399 Information zu B3 und Leslie 399 Additive Synthese mit Zugriegeln 400 Der Residualeffekt 400 Die Tonrad-Klangerzeugung 400 Die Geschichte der Hammond-Orgel 401 Das Leslie Cabinet 403 Kapitel 16: Vintage Clav 403 Vintage Clav - Übersicht 403 Vintage Clav Oberfläche 404 Fenster „Vintage Clav Main“ 404 Fenster „Vintage Clav Main“ – Überblick 405 Vintage Clav Modelle 406 Vintage Clav Modell-Charakteristiken 407 Verwenden von Vintage Clav Pickup-Parametern 408 Verwenden von Vintage Clav Stereo Spread-Parametern 408 Fenster „Vintage Clav Effekte“ 408 Fenster „Vintage Clav Effekte“ Überblick 410 Vintage Clav Compressor-Effekt 410 Vintage Clav Distortion-Effekt 411 Vintage Clav Modulation-Effekt 411 Vintage Clav Wah-Effekt 412 Fenster „Vintage Clav Details“ 412 Fenster „Vintage Clav Details“ Überblick 413 Vintage Clav Excite- und Klick-Parameter 414 Vintage Clav String Parameter 415 Vintage Clav Pitch Parameter 416 Vintage Clav Misc Parameter 417 Vintage Clav erweiterte Parameter 418 D6 Clavinet-Informationen 418 D6 Clavinet-Geschichte 419 Mechanische Details des D6 Clavinet Inhalt 10 420 Kapitel 17: Vintage-E-Piano 420 Vintage-E-Piano Übersicht 421 Vintage-E-Piano Oberfläche 422 Fenster „Vintage-E-Piano Effects“ 422 Vintage-E-Piano EQ 422 Vintage-E-Piano Drive-Effekt 423 Vintage-E-Piano Chorus-Effekt 423 Vintage-E-Piano Phaser-Effekt 424 Vintage-E-Piano Tremolo-Effekt 425 Fenster „Vintage-E-Piano Details“ 425 Fenster „Vintage-E-Piano“ Model-Parameter 426 Vintage-E-Piano Pitch-Parameter 427 Vintage-E-Piano Extended-Parameter 427 Vintage-E-Piano Emulationen 427 Rhodes-Modelle: 428 Hohner und Wurlitzer Modelle 429 Vintage-E-Piano MIDI-Controller 430 Anhang A: Ältere Instrumente 430 Ältere Instrumente – Übersicht 430 Emulierte Instrumente 430 Bass 430 Church Organ 431 Drum-Kits: 431 Electric Clav(inet) 431 Electric Piano 432 Guitar 432 Horns 432 Piano 432 Sound Effects 433 Strings 433 Tuned Percussion 433 Voice 433 Woodwind 434 Tonewheel Organ 434 Synthesizer 434 Analog Basic 435 Analog Mono 435 Analog Pad 436 Analog Swirl 436 Analog Sync 437 Digital Basic 437 Digital Mono 438 Digital Stepper 438 Hybrid Basic 439 Hybrid Morph Inhalt 11 440 Anhang B: Synthesizer-Grundlagen 440 Synthesizer-Grundlagen – Übersicht 440 Tongrundlagen 440 Tongrundlagen – Übersicht 441 Töne, Obertöne, Harmonische und Partialtöne 442 Das Frequenzspektrum 442 Weitere Eigenschaften von Wellenformen 443 Snythesizer-Grundlagen 445 Subtraktive Synthesizer 445 Funktionsprinzip von subtraktiven Synthesizern 446 Subtraktive Synthesizerkomponenten – Übersicht 447 Oszillatoren 449 Filter 452 Hüllkurven im Amplifier 454 Modulation 457 Globale Parameter 458 Weitere Synthese-Methoden 458 Weitere Synthese-Methoden – Überblick 458 Sample-basierte Synthese 459 Frequenzmodulation (FM-Synthese) 459 Component-Modeling-Synthese 460 Wavetable-, Vector- und Linear-Arithmetische (LA) Synthese 461 Additive Synthese 461 Phase-Distortion-Synthese 462 Granularsynthese 462 Die Geschichte des Synthesizers 462 Die Vorläufer des Synthesizers 463 Frühe spannungsgesteuerte Synthesizer 464 Der Minimoog 464 Speicherung und Polyphonie 465 Digitalsynthesizer Inhalt 12 1 13 Drum Kit Designer – Übersicht Mit Drum Kit Designer können Sie aus einer breiten Auswahl an Schlagzeug- und Percussion- Sounds ein eigenes Schlagzeug zusammenstellen. Daneben stehen Steuerelemente für die Klangregulierung zur Verfügung, über die Sie die Klangfarbe der einzelnen Elemente Ihres Schlagzeugs ändern können. Weitere Einstellungen ermöglichen es, verschiedene Mikrofone und Räume zu verwenden, um Producer-Kits zu erweitern. Producer-Kits werden in der Bibliothek durch ein „+“ am Ende des Patch-Namens gekennzeichnet. In der Logic Pro-Hilfe finden Sie weitere Informationen zu Producer-Kits unter „Hinzufügen eines Drummers zu einem Projekt“. Exchange panel Edit panel Drum kit Die Bedienoberfläche des Drum Kit Designers besteht aus den folgenden Hauptbereichen. •• Drumkit: Klicken Sie auf ein Schlagzeugelement für eine Hörprobe. Anschließend können Sie die Bereiche „Edit“ und „Exchange“ öffnen, wenn Austauschelemente für den betreffenden Schlagzeugtyp verfügbar sind. •• Bereich „Exchange“: Zeigt alle Drum- und Percussion-Sounds, die ausgetauscht werden können (scrollen Sie ggf. nach unten). •• Bereich „Edit“: Zeigt die Einstellungen, mit denen Klangmerkmale geändert werden. Drum Kit Designer Kapitel 1 Drum Kit Designer 14 Bereich „Edit“ von Drum Kit Designer Im Bereich „Edit“ können Sie die Klangfarbe der einzelnen Elemente Ihres Schlagzeugs ändern. Parameter im Bereich „Edit“ •• Drehregler und Feld „Tune“: Stellt die Tonhöhe ein. •• Drehregler und Feld „Dampen“: Stellt den Sustain-Pegel ein. •• Drehregler und Feld „Gain“: Stellt den Lautstärkepegel ein. •• Schalter „Leak“ (nur Producer-Kits): Auf ON wird der Klang dem Mikrofon der anderen Schlagzeugelemente beigemischt. •• Schalter „Overheads“ (nur Producer-Kits): Auf ON wird das Overhead-Mikrofon des Schlagzeugs dem Sound beigemischt. •• Schalter „Room“ (nur Producer-Kits): Mit diesem Schalter können Sie zwischen Raum A und Raum B wählen oder die Raumemulation ausschalten. Verwenden von Drum Kit Designer Drum Kit Designer zeigt eine 3D-Darstellung des aktuell geladenen Schlagzeugs und der dazugehörigen Einstellungen. Sie können die dem Schlagzeug zugeordneten Sounds vorhören, Pitch, Sustain und Volume jedes einzelnen Schlagzeug- und Percussionelements bearbeiten und die Kick- und Snare-Drums austauschen. Wenn Sie mit Producer-Kits arbeiten, können Sie weitere Toms, Becken und Hi-Hats austauschen. Mit den Producer-Kits können Sie verschiedene Mikrofone wie Overhead- oder Raummikrofone ein- oder ausschalten. Hinweis: Producer-Kits und einige Drums sind nur verfügbar, wenn Sie die zusätzlichen Inhalte geladen haben. Drum Kit Designer verfügt über weitere Parameter zum Anpassen der Lautstärke anderer Percussion-Elemente wie Shaker, Cowbell usw. Weitere Informationen finden Sie unter Erweiterte Parameter von Drum Kit Designer. Kapitel 1 Drum Kit Designer 15 Schlagzeug- oder Percussion-Element vorhören mm Klicken Sie auf ein Schlagzeug- oder Percussion-Element. Wenn Sie nach dem Öffnen eines Plug-Ins zum ersten Mal auf ein Schlagzeug- oder Percussion- Element klicken, werden zwei Bereiche geöffnet. Sie können einzelne Sounds im linken Bereich „Exchange“ austauschen und einzelne Schlagzeug- oder Percussionelemente im rechten Bereich „Edit“ bearbeiten. Drumkit-Einstellungen anpassen (alle Kits) 1 Klicken Sie auf ein Schlagzeug- oder Percussion-Element. Der rechte Bereich „Edit“ wird geöffnet. •• Toms: Klicken Sie auf den Tab des Toms, der bearbeitet werden soll, oder klicken Sie auf den Titel „All“, um den Sound aller Toms anzupassen. •• Becken: Klicken Sie auf den Tab des Crash-Beckens, das bearbeitet werden soll, oder klicken Sie auf den Titel „All“, um den Sound beider Crash-Becken anzupassen. Das Ride-Becken kann direkt bearbeitet werden •• Kicks und Snares: Es sind keine Tabs verfügbar, daher nehmen Sie Anpassungen mit den Steuerelementen vor. 2 Führen Sie einen der folgenden Schritte aus, um Einstellungen anzupassen: •• Tonhöhe anpassen: Bewegen Sie das Steuerelement „Tune“ in vertikaler Richtung oder doppelklicken Sie auf das Feld und geben Sie einen neuen Wert ein. •• Sustain anpassen: Bewegen Sie das Steuerelement „Dampen“ in vertikaler Richtung oder doppelklicken Sie auf das Feld und geben Sie einen neuen Wert ein. •• Lautstärke anpassen: Bewegen Sie das Steuerelement „Gain“ in vertikaler Richtung oder doppelklicken Sie auf das Feld und geben Sie einen neuen Wert ein. 3 Klicken Sie auf den Hintergrund des Plug-In-Fensters, um geöffnete Bereiche zu schließen. Kapitel 1 Drum Kit Designer 16 Schlagzeug-Element austauschen Für alle Drumkits können Sie Kick- und Snare-Drum austauschen. Wenn Sie mit Producer-Kits arbeiten, können Sie weitere Toms, Becken und Hi-Hats austauschen. Hinweis: Producer-Kits und einige Drums sind nur verfügbar, wenn Sie zusätzliche Inhalte laden. 1 Klicken Sie auf ein Schlagzeug- oder Percussion-Element. Der Bereich „Exchange“ wird links geöffnet, wenn Schlagzeugelemente für dieses Drumkit verfügbar sind. 2 Klicken Sie auf dem ausgewählten Schlagzeugelement auf die Taste „i“, um nähere Informationen zu erhalten. 3 Klicken Sie auf das Schlagzeug, das Sie im Bereich „Exchange“ austauschen möchten. Scrollen Sie ggf. nach oben oder unten, um das gewünschte Schlagzeugelement zu finden. Das Element wird ausgetauscht und der zugehörige Drum-Sound wird geladen. Hinweis: Die Toms und die Crash-Becken können nur als Gruppe ausgetauscht werden. 4 Klicken Sie auf den Hintergrund des Plug-In-Fensters, um geöffnete Bereiche zu schließen. Mikrofoneinstellungen anpassen (nur Producer-Kits) Führen Sie im Bereich „Edit“ einen der folgenden Schritte aus: mm Sound dem Mikrofon der anderen Schlagzeugelemente beimischen: Aktivieren Sie den Schalter „Leak“. Hiermit wird das Übersprechen (Bleed) des Mikrofons ein- oder ausgeschaltet, wenn der Sound eines Schlagzeugelements von den Mikrofonen anderer Schlagzeugelemente mit aufgenommen wird. Kapitel 1 Drum Kit Designer 17 mm Overhead-Mikrofon des Schlagzeugelements in den Sound integrieren: Aktivieren Sie den Schalter „Overheads“. Hierdurch wird das Overhead-Mikrofon für das ausgewählte Element ein- oder ausgeschaltet. mm Aufnahme einer bestimmten Raumemulation auswählen, die mit dem Sound verwendet werden soll: Wählen Sie zwischen Raum A und Raum B. Alternativ können Sie die Raummikrofone ausschalten. Raum A und B bestimmen, welche Einstellungen für Raummikrofone mit diesem Kit verwendet werden sollen. Erweiterte Parameter von Drum Kit Designer Drum Kit Designer hat zusätzliche Parameter, auf die Sie durch Klicken auf das Dreiecksymbol links unten in der Oberfläche zugreifen können. Das Einblendmenü „Input Mapping“ ermöglicht die Auswahl verschiedener Mappings, die eine erweiterte Steuerung von Hi-Hats erlauben. Die Zuweisungen beeinflussen auch den Klang von Drum Kit Designer-Sounds, die im MIDI-Notenbereich zugewiesen wurden. Weitere Informationen finden Sie unter Drum Kit Designer – Mappings. Erweiterte Parameter •• Einblendmenü „Input Mapping“: Wählen Sie einen Modus für das Keyboard-Mapping aus. •• GM: Die Drums werden nach dem GM-Standard zugewiesen. •• GM + ModWheel Controls HiHat opening level: Das ModWheel am Keyboard ist für die Hi-Hat- Steuerung zugewiesen. Weitere Sounds werden auf Keyboard-Bereiche über und unter dem standardmäßigen GM-Noten-Mappingbereich zugewiesen. •• V-Drum: Drums werden den Auslösern für V-Drum-Hi-Hat, Becken und Drum zugewiesen. •• Schieberegler „Gain“: Bewegen Sie den Schieberegler (oder bewegen Sie den Mauszeiger vertikal im Feld), um den Pegel des zugehörigen Sounds (falls im Kit verfügbar) anzupassen. •• Shaker Gain •• Tabourine Gain •• Glaps Gain •• Cowbell Gain •• Sticks Gain Kapitel 1 Drum Kit Designer 18 Drum Kit Designer – Mappings Drum Kit Designer ist mit dem GM-Standard kompatibel. Sie können auch „GM+“ wählen, wodurch das ModWheel des Keyboards für die Hi-Hat-Steuerung zugewiesen wird. Dies bedeutet, dass Sie das ModWheel des Keyboards verwenden können, um zu steuern, wie weit die Hi-Hats während der Drum-Performance geöffnet und geschlossen werden. Drum Kit Designer ist auch mit dem V-Drum-Standard kompatibel. Das Bild zeigt, wie das Remapping für Schlagzeug-Sounds erfolgt, wenn verschiedene Modi in den erweiterten Parametern aus dem Einblendmenü „Input Mapping“ ausgewählt werden. Hinweis: Eine Reihe von Alias-Drum-Sounds sind enthalten, um die GM-Kompatibilität zu gewährleisten. Shaker C3 Ride In Crash Right Ride Bell Ride Edge High Tom C2 High Tom High Mid Tom Low Mid Tom Low Tom Low Tom Snare Rimshot Snare Center C1 Kick C0 Kick Hi-Hat Foot Close Hi-Hat Foot Splash Crash Right Stop Crash Left Stop Cowbell Tambourine Ride Out Crash Left Hi-Hat Open Edge Hi-Hat Foot Hi-Hat Closed Tip C2 Hi-Hat Edge Hi-Hat Shank Hi-Hat Tip Claps Snare Sidestick Snare Edge Rimshot Edge Shaker C3 Ride In Crash Right Ride Bell Ride Edge High Tom High Tom High Mid Tom Low Mid Tom Low Tom Low Tom Snare Rimshot Snare Center C1 Kick C0 Kick Hi-Hat Foot Close Hi-Hat Foot Splash Crash Right Stop Crash Left Stop Cowbell Tambourine Ride Out Crash Left Claps Snare Sidestick Snare Edge Rimshot Edge GM Standard GM + ModWheel 2 19 ES1 – Übersicht ES1 simuliert die Schaltungen eines analogen Synthesizers in einer einfachen, übersichtlichen Oberfläche. Der ES1 erzeugt Klänge mithilfe der subtraktiven Synthese. Er verfügt über einen Oszillator und einen Suboszillator, die obertonreiche Wellenformen erzeugen. Von diesen Wellenformen werden Anteile subtrahiert (entfernt bzw. gefiltert), um sie umzuformen und so neue Klänge zu erzeugen. Die Klangerzeugung des ES1 bietet zudem flexible Modulationsoptionen, die es Ihnen leicht machen, knackige Bässe, atmosphärische Flächen, durchsetzungsfähige Lead Sounds und akzentuierte Perkussionsklänge zu erzeugen. Wenn Synthesizer noch Neuland für Sie sind, empfehlen wir zunächst die Lektüre von Synthesizer-Grundlagen – Übersicht auf Seite 440. Dort werden grundlegende Begriffe erläutert und verschiedene Klangerzeugungssysteme und ihre Funktionsweise im Überblick dargestellt. Global parameters Envelope parameters Modulation parameters Oscillator parameters Filter parameters Amplifier parameters ES1 ist in sechs Bereich unterteilt. •• Oscillator-Parameter: Links oben sehen Sie den Oszillator, der die grundlegende Wellenform erzeugt, mit der die Klangsynthese beginnt. Weitere Informationen finden Sie unter ES1- Oszillator-Parameter – Übersicht auf Seite 20. •• Globale Parameter: Ganz unten im grün-grauen Streifen finden Sie die globalen Parameter. Hier können Sie unter anderem die Stimmung global verändern und den integrierten Chorus einschalten. Der Chorus färbt und reichert den Sound an. Weitere Informationen finden Sie unter ES1 Global-Parameter auf Seite 21. •• Filter-Parameter: Sie finden diese oben in der Mitte im runden Filter-Bereich, sowie den Driveund Key-Scaling-Parametern. Mit dem Filter werden aus dem reichhaltigen Spektrum der Wellenformen der Oszillatoren Frequenzbereiche ausgefiltert. Weitere Informationen finden Sie unter ES1 Filter-Parameter – Übersicht auf Seite 23. •• Amplifier-Parameter: Mithilfe der Amplifier-Parameter oben rechts (der Dynamikstufe), können Sie den Pegelverlauf jeder Note bestimmen. Weitere Informationen finden Sie unter ES1 Amplifier-Parameter auf Seite 24. ES1 Kapitel 2 ES1 20 •• Parameter „Envelope“: Im dunkelgrün und grau gestalteten Bereich auf der rechten Seite finden Sie die ADSR-Schieberegler, die der Regelung des Verlaufs dienen, den die Cutoff-Frequenz (die „Filtereckfrequenz“ oder „Filtergrenzfrequenz“, also auch die Klangfarbe) und der Pegel über die Dauer jeder einzelnen Note nehmen. Weitere Informationen finden Sie unter ES1 Hüllkurven-Parameter – Übersicht auf Seite 25. •• Modulationsparameter: Im dunkelgrün und grau gestalteten Bereich links in der Mitte finden Sie die Modulationsquellen, den Modulations-Router für die Zuordnung von Modulationsquellen und Modulationszielen, sowie die Modulationshüllkurve und die Amplituden-Hüllkurve, mit denen Sie den Sound des ES1 vielfältig umgestalten können. Weitere Informationen finden Sie unter ES1 Modulationsparameter – Übersicht auf Seite 27. ES1 Oszillators-Parameter ES1-Oszillator-Parameter – Übersicht ES1 besitzt einen primären (Haupt-)Oszillator und einen Suboszillator. Der Oszillator erzeugt eine Wellenform, die von den anderen Synthesizer-Modulen einer weiteren Bearbeitung unterzogen wird. Der Suboszillator erzeugt ein Signal, das eine oder zwei Oktaven unter dem des Oszillators klingt. Oszillator-Parameter •• Drehregler „Wave“: Hier können Sie die Wellenform des primären Oszillators wählen, die für die Grundklangfarbe maßgeblich ist. Weitere Informationen finden Sie unter ES1 Oszillator- Wellenformen auf Seite 21. •• Schieberegler „Mix“: Regelt das Pegel-Mischungsverhältnis zwischen Oszillator und Suboszillator. Wenn der Suboszillator abgeschaltet ist (off), ist er gänzlich aus dem Signalweg entfernt. •• Drehregler „Sub“: Erzeugt Rechteck- und Pulswellen, aber auch so genanntes Weißes Rauschen. Der Suboszillator erlaubt es, ein Side-Chain-Signal durch die Klangerzeugung des ES1 zu routen. Weitere Informationen finden Sie unter Verwenden des Suboszillators im ES1 auf Seite 21. •• Die Tasten 2', 4', 8', 16', 32': Durch Klicken können Sie die die Tonhöhe in Oktaven verändern. 32 Fuß ist die tiefste, 2 Fuß die höchste Einstellung. Die Einheit Fuß geht auf das Längenmaß von Orgelpfeifen zurück. Je länger und breiter die Pfeife, desto tiefer der Ton. ES1 Pulsbreitenmodulation mm Drehen Sie den Wellenform-Drehregler in eine Position zwischen dem Rechteckund Pulswellensymbol. Die Pulsbreite kann auch automatisch über den Router moduliert werden (siehe Verwenden des Routers im ES1 auf Seite 27). Eine Modulation der Pulsbreite mit dem LFO (Low Frequency Oscillator) erlaubt beispielsweise periodisch mutierende, fette Bass-Sounds. Kapitel 2 ES1 21 ES1 Oszillator-Wellenformen Die Tabelle beschreibt die Grundklangfarben der Oszillator Wellenformen, wie sie Synthesizer-Sounds beeinflussen. Wellenform Klangcharakter Anmerkungen Sägezahn Warm und ebenmäßig Geeignet für Streicher, Flächen, Bässe und Bläser-Klänge Dreieck Warm klingend, sanfter als Sägezahn Geeignet für Flöten und Flächen Rechteck Hohl und „hölzern“ Geeignet für Bässe, Klarinetten und Oboen Pulswelle Nasal Sehr gut für Rohrblattinstrumente, Synthesizer-Akzente und Bässe Verwenden des Suboszillators im ES1 Der ES1 Suboszillator macht den Klang reicher. Die Tonhöhe entspricht der Frequenz des Hauptoszillators. Sie können zwischen den folgenden Suboszillator Wellenform- Einstellungen wählen: •• Eine Rechteckwelle, die eine oder zwei Oktaven unter dem Signal des Hauptoszillators klingt. •• Eine Pulswelle, die zwei Oktaven unter der Frequenz des Oszillators klingt. •• Variationen dieser Wellenformen mit unterschiedlichen Mischungsverhältnissen und Phasenbeziehungen ergeben unterschiedliche Klänge. •• Weißes Rauschen (White Noise) eignet sich für Perkussionsklänge und die Synthesizer-Sound- Klassiker Wind, Wellen und Regen. •• OFF erlaubt es, den Suboszillator zu deaktivieren. •• EXT erlaubt es, das Signal eines externen Channel-Strips (Kanalzugs) als so genannte Side- Chain durch die Klangerzeugung des ES1 zu führen. Kanal durch die ES1-Klangerzeugung leiten 1 Schalten Sie den Sub-Schalter auf EXT. 2 Oben rechts im ES1-Fenster können Sie im Einblendmenü „Side Chain“ auswählen, welcher Channel-Strip in das Filter gespeist werden soll. ES1 Global-Parameter Die globalen Parameter beeinflussen den Gesamtsound oder Verhalten des ES1 und befinden sich in dem Streifen, der die Oberfläche des ES1 umfasst. Der Glide-Regler befindet sich oberhalb des linken Endes des Streifens mit den globalen Parametern. Globale Parameter •• Schieberegler „Glide“: Bewegen bestimmt die Zeit, die die Tonhöhe braucht, um von einer Note zur nächsten angeschlagenen (getriggerten) Note zu gleiten. Das Glide-Trigger-Verhalten ist abhängig von der Einstellung des Feld „Voices“ (siehe weiter unten). •• Feld „Tune“: Durch Bewegen können Sie das Instrument in Cent einstellen. Ein Cent entspricht einem Hundertstel eines Halbtons. Kapitel 2 ES1 22 •• Feld „Analog“: Bewegen, um die Tonhöhe jeder Note nach dem Zufallsprinzip zu ändern – und die Cutoff-Frequenz des Filters. Dadurch wird die Verstimmung und Fluktuation von Oszillatoren und Filtern simuliert, die für ältere polyphone analoge Synthesizer so typisch sind, da deren Schaltungen temperaturanfällig sind und altern. Wenn „Analog“ auf „0 %“ gesetzt ist, sind die Einschwingphasen aller Stimmen synchronisiert. Diese Präzision ist z. B. für strenge elektronische Percussion hervorragend geeignet. Bei analogen Werten über 0 % können die Oszillatoren aller ausgelösten Stimmen frei schwingen. Wählen Sie höhere Werte, wenn Sie einen warmen, analogen Sound erzielen möchten, bei dem jede Note ein bisschen anders klingt. •• Feld „Bender Range“: Bestimmt in Halbtonschritten, wie stark der ES1 auf Pitchbending reagiert. •• Schieberegler „Neg Bender Range“ (erweiterte Parameter): Bestimmt die Empfindlichkeit des Pitch Benders speziell, bei Abwärtsbewegungen in Halbtonschritten. Die Standardeinstellung übernimmt den Wert für die Empfindlichkeit des „Pos PB“ (positive pitch bend), also des nach oben gedrehten Pitch-Bend-Rads. Klicken Sie auf das Dreiecksymbol links unten auf der ES1- Oberfläche, um auf die erweiterten Parameter zuzugreifen. •• Feld „Out Level“: Stellt den Gesamtpegel des ES1 ein. •• Feld „Voices“: Hier stellen Sie durch Bewegen die maximale Anzahl der gleichzeitig abspielbaren Noten ein, bis zu 16 Stimmen. Ist „Voices“ auf „Legato“ gesetzt, verhält sich der ES1 wie ein monophoner Synthesizer mit aktiviertem Single Trigger und Fingered Portamento. Dies bedeutet, dass bei Legato-Spiel ein Portamento erfolgt, wohingegen, wenn die Noten abgesetzt werden, kein Portamento erfolgt (Glide-Effekt von einer Note zur nächsten). Wenn alle Tasten vor dem Anschlag der neuen Note losgelassen werden, wird die Hüllkurve durch die neue Note getriggert und das Portamento bleibt aus. Sie können diese Funktion nutzen, um Pitch-Bend-Effekte zu erzielen, ohne dabei den Pitch Bender Ihrer Tastatur zu benutzen. Wenn Sie also die Legato-Einstellung einschalten, achten Sie darauf, auch „Glide“ hoch zu regeln. •• Feld „Chorus“: Durch Klicken wählen Sie einen klassischen Chorus-Effekttypen und einen Ensemble-Effekt aus oder deaktivieren den Effektprozessor. •• In der Einstellung „Off“ ist der integrierte Chorus deaktiviert. •• „C1“ ist ein typischer Chorus-Effekt. •• „C2“ ist eine Variation von „C1“, ist im Vergleich zu „C1“ jedoch stärker moduliert. •• „Ens(emble)“ hat eine komplexere Modulationsschaltung und klingt dadurch dichter und voller. Kapitel 2 ES1 23 ES1 Filter-Parameter ES1 Filter-Parameter – Übersicht In diesem Abschnitt sind die Filter-Parameter des ES1 beschrieben. Filter-Parameter •• Schieberegler „Cutoff“: Bewegen bestimmt die Cutoff-Frequenz des ES1 Tiefpassfilters. •• Schieberegler „Resonance“: Bewegen bewirkt eine Abschwächung oder Verstärkung der Signalanteile, die in unmittelbarer Umgebung der Filtereckfrequenz liegen. Die Verstärkung kann im Filter so stark eingestellt werden, dass das Filter selbst zu schwingen beginnt (siehe Selbstoszillation des ES1-Filters auf Seite 24). Tipp: Sie können simultan die Cutoff-Frequenz und die Resonanz des Filters regulieren, indem Sie den Schriftzug Filter, der sich in einem schwarzen Kreis befindet, bei gedrückter Maustaste vertikal (Cutoff-Frequenz) oder horizontal (Resonanz) bewegen. •• Slope-Tasten: Das Lowpass-Filter des ES1 bietet vier unterschiedlich klingende Flankensteilheiten (Slope): Klicken Sie auf eine der Tasten, um eine Flankensteilheit auszuwählen (beschreibt den Dämpfungsgrad in Dezibel (dB) pro Oktave): •• 24 dB classic: Verhält sich wie ein Moog-Filter. Das Anheben der Resonanz führt zu einer Absenkung der Bässe. •• 24 dB fat: Kompensiert die Reduktion der tieffrequenten Signalanteile bei hohen Werten für die Resonanz. Dieses Verhalten erinnert an ein Oberheim-Filter. •• 12 dB Hat einen sehr sanften Sound, der an den frühen Oberheim-SEM-Synthesizer erinnert. •• 18 dB Entspricht der Filter-Flankensteilheit der Roland TB-303 Bassline. •• Schieberegler „Drive“: Ändert das Klangverhalten von „Resonance“ und die Oszillator-Wellenform wird verzerrt. „Drive“ ist ein Input-Level-Regler, mit dem Sie das Filter übersteuern können. •• Schieberegler „Key“: Regelt den Effekt, der die Tonhöhe der Keyboard-Note (die Notennummer) auf die Cutoff-Frequenz des Filters hat. •• Wenn für „Key“ der Wert „0“ gewählt ist, wird die Cutoff-Frequenz von der Notennummer nicht beeinflusst. Dies hat zur Folge, dass tiefe Töne vergleichsweise mit mehr Obertönen erklingen als hohe Töne. •• Steht „Key“ hingegen auf „1“, folgt die Cutoff-Frequenz der gespielten Notennummer. Das Verhältnis von Cutoff-Frequenz und Tonhöhe bleibt stets gleich. Dies ahmt das Verhalten akustischer Instrumente nach, bei denen die hohen Töne auch höhere Obertöne aufweisen und heller klingen. •• Schieberegler „ADSR via Vel“: Bestimmt das Ausmaß, mit dem die Anschlagdynamik die Modulation der Cutoff-Frequenz des Filters durch den Hüllkurvengenerator beeinflusst. Weitere Informationen finden Sie unter ES1 Hüllkurven-Parameter – Übersicht auf Seite 25. Kapitel 2 ES1 24 •• Taste „Filter Boost“ (erweiterte Parameter): Erhöht den Output des Filters um ungefähr 10 Dezibel. Das Input-Signal des Filters hat die entsprechende Verminderung um ungefähr 10 Dezibel, um den Gesamtpegel zu halten. Dieser Parameter ist besonders nützlich, wenn hohe Resonanz- Werte angewendet werden. Weitere Informationen finden Sie unter Selbstoszillation des ES1-Filters. Klicken Sie auf das Dreiecksymbol links unten auf der ES1-Oberfläche, um auf die erweiterten Parameter zuzugreifen. Selbstoszillation des ES1-Filters Wenn Sie die Resonanz eines der Filter erhöhen, entsteht eine filterinterne Rückkopplung, die zu einer Selbstoszillation an der Grenzfrequenz des Filters (Cutoff Frequency) führt. Dies führt zu einer Sinus-Oszillation (einer Sinuswelle), die effektiv hörbar ist. Sie können das Filter des ES1 einen Sinuston ausspielen lassen. Dadurch können Sie einen Sinuston mit der Tastatur spielen. Das Filter einen Sinuston ausspielen lassen 1 Schalten Sie den Schalter Sub auf OFF. 2 Bewegen Sie den Mix-Schieberegler ganz nach unten (Sub). 3 Bewegen Sie den Resonanz-Schieberegler auf Maximum. 4 Klicken Sie auf das Dreiecksymbol links unten in der Oberfläche, um die erweiterten Parameter zu öffnen und anschließend klicken Sie auf die Taste „Filter Boost“ (erweiterte Parameter). „Filter Boost“ steigert den Output des Filters um ungefähr 10 Dezibel und verstärkt dadurch die Lautstärke des Signals. ES1 Amplifier-Parameter Die Parameter im Amplifier-Bereich (der Dynamikstufe) des ES1 bestimmen den Pegelverlauf jeder Note. Sie sind unabhängig von der Gesamt-Pegelregelung, die mit dem Parameter „Out Level“ bestimmt wird, den Sie als ES1 „Master Volume“ ganz unten bei den globalen Parametern finden. Weitere Informationen finden Sie unter ES1 Global-Parameter auf Seite 21. Amplifier-Parameter •• Schieberegler „Level via Vel“: Bestimmt, wie sehr der Pegel jeder Note von der Anschlagsdynamik abhängt. Je größer der Abstand dieser beiden Pfeile ist, desto stärker ist der Pegel von der Anschlagsdynamik abhängig. Der blaue Balken, der beide Pfeile verbindet, stellt diesen Dynamikbereich der Lautstärke dar. •• Bewegen des oberen Pfeils bestimmt die Lautstärke bei Fortissimo-Spiel (Velocity = 127). •• Bewegen des unteren Pfeils bestimmt die Lautstärke bei Pianissimo-Spiel (Velocity = 1). •• Mithilfe des Balkens können auch beide Pfeile gleichzeitig bewegt und dadurch die Modulationsdynamik und -intensität gleichzeitig verändert werden. Kapitel 2 ES1 25 •• Auswahltasten für Amplifier Envelope: Die Tasten „AGateR“, „ADSR“ und „GateR“ bestimmen, welche Parameter des ADSR-Hüllkurvengenerators auf den Pegelverlauf der Dynamikstufe Einfluss nehmen. Weitere Informationen finden Sie unter ES1 Hüllkurven-Parameter – Übersicht auf Seite 25. ES1 Hüllkurven-Parameter ES1 Hüllkurven-Parameter – Übersicht Der ES1 bietet eine ADSR-Hüllkurve mit den Parametern „Attack Time“, „Decay Time“, „Sustain Level“ und „Release Time“, die Einfluss auf den zeitlichen Verlauf der Cutoff-Frequenz des Filters oder den Pegel der Amplifier-Sektion nehmen kann. Hüllkurven-Parameter •• Schieberegler „A(ttack)“: Bestimmt die Zeit, die nach dem Anschlagen der Taste vergeht, bis der maximale Pegel erreicht ist (Einschwingzeit). •• D(ecay)-Schieberegler: Bestimmt die Zeit, die die Hüllkurve benötigt, um nach dem Triggern und der Attack-Phase auf den Sustain-Pegel zu fallen. •• S(ustain)-Schieberegler: Bestimmt den Pegel, der nach Ablauf von Attack- und Decay-Time aufrecht erhalten wird, bis die Taste losgelassen wird. •• R(elease)-Schieberegler: Bestimmt, wie lange die Hüllkurve nach dem Loslassen der Taste benötigt, um vom Sustain-Pegel wieder auf „0“ zu fallen. Verwenden der Hüllkurve zum Steuern der Cutoff-Frequenz im ES1 Der Hüllkurvengenerator moduliert die Filter-Cutoff-Frequenz, die sich damit im zeitlichen Verlauf der Note verändern lässt. Die Modulationsintensität und die Anschlagsdynamik wird durch die Pfeile auf dem Schieberegler „ADSR via Vel“ im Filterbereich eingestellt. ADSR via Vel slider Der Modulationsbereich ist durch den Abstand der beiden Pfeile gekennzeichnet. •• Der untere Pfeil bestimmt die minimale Modulation. •• Der obere Pfeil bestimmt die maximale Modulation. Kapitel 2 ES1 26 •• Der blaue Balken, der beide Pfeile verbindet, stellt den Dynamikbereich der Modulation dar. Sie können durch bewegen des blauen Balkens die Modulationsdynamik und -intensität gleichzeitig verändern. Tipp: Um sich mit diesen Parametern vertraut zu machen, stellen Sie Cutoff-Parameter auf einen niedrigen Wert, Resonance auf einen hohen Wert und regeln beide Pfeile „ADSR via Vel“ aufwärts. Schlagen Sie dabei immer wieder eine Taste auf der Tastatur an, um die Funktion der Parameter zu erlernen. Verwenden der Hüllkurve zum Steuern des Verstärkers im ES1 Die Tasten „AGateR“, „ADSR“ und „GateR“ (im Amplifier-Bereich) bestimmen, welche Parameter der ADSR-Hüllkurven auf den Pegelverlauf der Dynamikstufe Einfluss nehmen. Alle ADSR-Parameter behalten für das Filter ihre Gültigkeit. Die Buchstaben A, D, S, und R stehen für die Attack-, Decay-, Sustain- und Release-Phasen der Hüllkurve (siehe ES1 Hüllkurven-Parameter – Übersicht auf Seite 25). Gate ist der Name eines Steuersignals in analogen Synthesizern, das einem Hüllkurvengenerator anzeigt, dass eine Taste gedrückt ist. Solange eine Taste gedrückt ist, hält „Gate“ Vollpegel, ist keine Taste gedrückt, ist „Gate“ gleich Null. Wenn „Gate“ als Modulationsquelle in der Amplifier- Sektion gewählt wird, erklingt der Ton mit der Hüllkurve einer Orgel, also mit kurzem Attack, ohne Decay oder Release Time und vollem Sustain. Amplifier Envelope Selector buttons Im ES1 wirken sich die Schalter der Amplitudenhüllkurve auf die Noten wie folgt aus: •• AGateR: Die Attack- und Release-Regler der ADSR-Hüllkurve regeln wie gewohnt die Attackund Release-Phasen der Note. Dazwischen liefert das Gate-Signal maximalen Sustain-Pegel, sodass es keine Decay-Phase gibt. Sobald Sie die Taste loslassen, beginnt die Release-Phase. Die Decay- und Sustain-Regler der Hüllkurve sind in Bezug auf die Amplifier-Sektion außer Kraft gesetzt. •• ADSR: Die Standard-Betriebsart der meisten Synthesizer, bei der der Verlauf des Pegels jeder Note komplett von der ADSR-Hüllkurve bestimmt wird. •• GateR: Das Gate-Signal sorgt über den gesamten Verlauf einer Note, solange die Taste gedrückt gehalten wird, für einen stabilen Pegel. Sobald Sie die Taste loslassen, beginnt die Release- Phase. Die Parameter „Attack“, „Decay“ und „Sustain“ haben keinen Einfluss auf den Pegelverlauf der Note. Kapitel 2 ES1 27 ES1 Modulation ES1 Modulationsparameter – Übersicht ES1 bietet einige simple wie flexible Modulations-Routing-Optionen. Modulation bringt Bewegung in den Klang, der dadurch interessanter, lebendiger oder auch realistischer wird. Ein Beispiel für eine Modulation ist das Vibrato von Orchester-Streichern. LFO parameters Router Modulation Envelope Modulationsparameter •• LFO-Parameter: Werden zur automatischen, periodischen Beeinflussung anderer Parameter des ES1 genutzt. Weitere Informationen finden Sie unter Verwenden des ES1 LFO auf Seite 28. •• Router: Ermöglicht die Auswahl des zu modulierenden ES1-Parameters. Weitere Informationen finden Sie unter Verwenden des Routers im ES1 auf Seite 27. •• Modulationshüllkurve: Eine Modulationsquelle, die dazu da ist, andere ES1-Parameter zu steuern oder zur Steuerung des LFO-Pegel dient. Weitere Informationen finden Sie unter Verwenden von Mod ES1-Envelope auf Seite 29. Verwenden des Routers im ES1 Mit dem Router wählen Sie, welche ES1-Parameter (Ziele) vom LFO periodisch moduliert werden und welche durch die Modulationshüllkurve. Mithilfe der Tasten in der linken Spalte bestimmen Sie das LFO-Modulationsziel. Mithilfe der Tasten in der rechten Spalte bestimmen Sie die Modulationshüllkurve. Parameter target buttons Router-Parameter •• Tasten „Pitch“: Klicken Sie auf diese Tasten, um die Tonhöhe, genauer gesagt die Frequenz der Oszillatoren zu modulieren. •• Tasten „Pulse Width“: Durch Klicken modulieren Sie die Impulsbreite der Pulswelle. •• Tasten „Mix“: Durch Klicken modulieren Sie das Mischungsverhältnis (Mix) zwischen primärem Oszillator und Suboszillator. •• Tasten „Cutoff“: Klicken Sie auf diese Tasten, um die Cutoff-Frequenz des Filters zu modulieren. •• Tasten „Resonance“: Klicken Sie auf diese Tasten, um die Resonanz des Filters zu modulieren. •• Tasten „Volume“: Klicken Sie auf diese Tasten, um die Hauptlautstärke zu modulieren. Kapitel 2 ES1 28 •• Taste „Filter FM“ (nur Modulationshüllkurve): Durch Klicken moduliert die Dreieckwelle des Oszillators die Cutoff-Frequenz des Filters. Diese Modulation resultiert in einer Art Verzerrungseffekt oder führt zu metallischen, „FM-Synthese“-ähnlichen Sounds. Letzteres kommt voll zur Geltung, wenn Sie mit der Resonanz das Filter zur Selbstoszillation bringen (siehe Selbstoszillation des ES1-Filters auf Seite 24). •• „LFO AMP“ (nur Modulationshüllkurve): Durch Klicken können Sie den Hub der LFO-Modulation mit der Modulationshüllkurve im Verlauf regeln. Verwenden des ES1 LFO Der LFO („Low Frequency Oscillator“, niederfrequenter Oszillator) erzeugt eine regelbare, zyklische Wellenform, die verwendet werden kann, um andere ES1-Parameter zu modulieren. LFO-Parameter •• Drehregler „Wave“: Stellen Sie durch Drehen die LFO-Wellenform ein. Jede Wellenform hat ihre eigene Form, die zu unterschiedlichen Modulationen führt. •• Sie können zwischen folgenden Wellenformen auswählen: Dreieck, steigender und fallender Sägezahn, Rechteck, Sample & Hold (Zufallswelle) sowie eine tiefpassgefilterte, sich fließend ändernde Zufallswellenform. •• EXT erlaubt es Ihnen ein Side-Chain-Signal als Modulationsquelle einzuschalten. Oben rechts im ES1-Fensters können Sie im Einblendmenü „Side Chain“ auswählen, welcher Channel- Strip in das Filter gespeist werden soll. •• Schieberegler und Feld „Rate“: Bewegen bestimmt die Geschwindigkeit der Schwingung des LFO. •• Bei Werten rechts von „0“ schwingt der LFO dagegen frei. •• Bei Werten links von „0“ wird diese zum Tempo des Host-Programms synchronisiert. Die Perioden dauern in Stufen zwischen 1/96-Takt und 32 Takten gewählt werden. •• Beim Wert Null spielt der LFO einen konstanten vollen Pegelwert aus, der es beispielsweise erlaubt, die LFO-Geschwindigkeit mit dem Modulationsrad des Masterkeyboards zu regeln. Dies ist z. B. nützlich, wenn Sie die Impulsbreite der Pulswelle beim Keyboardspielen mit dem Modulationsrad in Echtzeit steuern wollen. Die Impulsbreite (Pulse Width) müsste dazu als LFO-Modulationsziel (Target) in der linken Reihe des Routers ausgewählt sein, während der Hub der Modulation mit „Int via Whl“ geregelt wird. •• Schieberegler „Int via Whl“ Der obere Pfeil bestimmt die Intensität der LFO-Modulation, wenn das Modulationsrad auf maximale Modulation eingestellt ist. Der untere Pfeil bestimmt die Intensität der LFO-Modulation, wenn das Modulationsrad auf „0“ gestellt ist. Der als einen grünen Balken angezeigte Abstand zwischen beiden Pfeilen zeigt den Einfluss des Modulationsrads auf die LFO-Modulationsintensität an. Sie können mithilfe des Balkens auch beide Pfeile gleichzeitig bewegen und dadurch Modulationsdynamik und -intensität gleichzeitig verändern. Dabei bleibt der Abstand der beiden Pfeile zueinander unverändert. Kapitel 2 ES1 29 Verwenden von Mod ES1-Envelope Die Modulationshüllkurve kann direkt den im Router ausgewählten Parameter modulieren. Sie bestimmt, wie lange es dauert, dass die Modulation sich einblendet oder ausblendet. An seiner Mittelposition (klicken Sie auf „full“) ist die Modulationsintensität statisch, also ohne Fade-In oder Fade-Out. Die Einstellung „full“ liefert eine konstante Modulationsintensität. Die Modulationshüllkurve (Modulation Envelope) erlaubt entweder perkussive Verläufe bei niedrigen Einstellungen ihres Reglers oder sich sanft einblendende Verläufe bei hohen Werten (Attack-Charakteristik). Modulationshüllkurven-Parameter •• Schieberegler und Feld „Form“: Bewegen regelt die Einblendzeit (Fade-In) oder Ausblendzeit (Fade-Out) für die Modulation. Wenn der Regler voll aufgedreht ist, ist die Modulationshüllkurve ausgeschaltet. •• Schieberegler „Int via Vel“: Der obere Pfeil regelt die Obergrenze der Modulationshüllkurve bei der größten Anschlagsdynamik (Velocity = 127). Der untere Pfeil regelt die Untergrenze bei der kleinsten Anschlagsdynamik (Velocity = 1). Der grüne Balken zwischen den Pfeilen zeigt den Einfluss der Anschlagsdynamik auf die Modulation durch die Modulationshüllkurve an. Sie können mithilfe des Balkens auch beide Pfeile gleichzeitig bewegen und dadurch Modulationsdynamik und -intensität gleichzeitig verändern. Dabei bleibt der Abstand der beiden Pfeile zueinander unverändert. Parameter mit Anschlagsdynamik modulieren 1 Wählen Sie ein Modulationsziel, z. B. Impulsbreite, in der rechten Reihe des Routers aus. 2 Stellen Sie den Schieberegler für die Form auf „Full“ und stellen Sie den Parameter „Int via Vel“ nach Belieben ein. Dies resultiert in einer von der Anschlagsdynamik abhängigen Modulation der Impulsbreite der Pulswelle (Pulse Width Modulation). Sie können direkt den Pegel des LFO steuern, wenn Sie in der rechten Reihe des Modulations- Routers auf „LFO Amp(litude)“ klicken. LFO-Modulation ein- oder ausblenden mm Blenden Sie die LFO-Modulation wie folgt ein: Bewegen Sie den Schieberegler „Form“ nach rechts in Richtung Attack. Je höher der Wert ist, desto länger dauert die Einblendung. mm Blenden Sie die LFO-Modulation wie folgt aus: Bewegen Sie den Schieberegler „Form“ nach rechts in Richtung Attack. Je niedriger der Wert und näher an Decay, desto kürzer ist die Fade-Out-Zeit. Hüllkurvengesteuerte LFO-Modulationen werden sehr häufig für verzögerte Vibrati eingesetzt. Die Technik des verzögerten Vibratos wird von vielen Instrumentalistinnen und Instrumentalisten sowie Sängerinnen und Sängern insbesondere bei langen Noten eingesetzt. Kapitel 2 ES1 30 Verzögertes Vibrato erzeugen 1 Bewegen Sie den Schieberegler „Form“ nach rechts in Richtung Attack. 2 Wählen Sie „Pitch“ als LFO Target (die Oszillatorenfrequenz als Modulationsziel) in der linken Reihe des Modulations-Routers. 3 Verwenden Sie den Wellenform-Drehregler und wählen Sie die Dreieckwelle als Wellenform für LFO 1 aus. 4 Bewegen Sie das Feld „Rate“ auf eine LFO-Rate von ungefähr 5 Hz. 5 Bewegen Sie den oberen Pfeil von „Int via Wheel“ auf einen eher niedrigen Wert und den unteren Pfeil auf Null. ES1 MIDI-Controller ES1 reagiert auf diese MIDI-Control-Change-Befehle (MIDI Continuous Controller Numbers), kurz „CC“. Controller-Nummer Parameter 12 Tasten für die Oszillator-Tonhöhe 13 Oszillator-Wellenform 14 Mix-Schieberegler 15 Wellenform des Suboszillators 16 Drive-Schieberegler 17 Cutoff-Schieberegler 18 Resonance-Schieberegler 19 Slope-Tasten 20 ADSR via Vel: unterer Pfeil 21 ADSR via Vel: oberer Pfeil 22 Attack-Schieberegler 23 Decay-Schieberegler 24 Sustain-Schieberegler 25 Release-Schieberegler 26 Key-Schieberegler 27 Auswahltasten für Amplifier Envelope 28 Level via Velocity: unterer Regler 29 Level via Velocity: oberer Regler 30 Chorus-Parameter 31 Modulationsziel für Mod Envelope 102 Schieberegler für die Form von Mod Envelope 103 Modulationshüllkurve: ADSR via Vel: unterer Regler 104 Modulationshüllkurve: Int via Vel: oberer Regler 105 LFO-Rate 106 LFO-Wellenform 107 LFO-Modulationsziel Kapitel 2 ES1 31 Controller-Nummer Parameter 108 LFO: Int via Whl: unterer Regler 109 LFO: Int via Whl: oberer Regler 110 Glide-Schieberegler 111 Tune-Parameter 112 Analog-Parameter 113 Bender Range-Parameter 114 Out Level-Parameter 115 Voices-Parameter 3 32 ES2 – Übersicht Der ES2 kombiniert subtraktive Synthese und Elemente der FM- und Wavetable-Synthese, um Sie beim Erzeugen extrem vielseitiger Sounds zu unterstützen. Dadurch empfiehlt er sich als ideales Gerät für mächtige Pads, lebendige Texturen, kraftvolle Bässe oder synthetische Brass-Sounds. Wenn Sie mit Synthesizern noch nicht vertraut sind, können Sie sich unter Synthesizer- Grundlagen – Übersicht auf Seite 440 informieren. Dort erhalten Sie eine Einführung in die Grundlage und die Terminologie von verschiedenen Synthesesystemen. Die drei Oszillatoren des ES2 arbeiten mit klassischen analogen Synthesizer-Wellenformen (inklusive Noise) und 100 zusätzlichen Einzelwellenformen, den so genannten Digiwaves. Diese bilden den Grundstein für Sounds, welche die gesamte Bandbreite von fetten Analog- bis hin zu harten Digital-Sounds abdecken und auch hybride Mischungen dieser beiden Klangwelten ermöglichen. Zudem können Sie die Oszillatoren gegeneinander modulieren und auf diese Weise leicht FM-typische Sounds erzeugen. Darüber hinaus haben Sie die Möglichkeit, die Oszillatoren zu synchronisieren und über eine Ring-Modulation zu verknüpfen oder eine Sinuswelle direkt auf die Ausgangsstufe zu mischen, um den Sound fetter zu machen. Der ES2 integriert einen flexiblen Modulations-Router, der bis zu zehn gleichzeitig nutzbare (und frei wählbare) Modulations-Routings bereitstellt. Zu den weiteren Modulationsoptionen zählt das einzigartige Planar Pad, mit dem Sie zwei Parameter gemeinsam über ein zweidimensionales Gitter steuern können. Das Planar Pad kann selbst über die ausgeklügelte Vector-Hüllkurve gesteuert werden. Hierbei handelt es sich um eine loopfähige Multipoint-Hüllkurve, die sich speziell zur Erzeugung komplexer, eigendynamischer Sounds eignet. Schließlich wurden auch Verzerrer-, Chorus, Phaser- und Flanger-Effekte im ES2 integriert. Wenn Sie sofort mit dem Experimentieren beginnen möchten, können Sie verschiedene Einstellungen ausprobieren. Außerdem stehen zwei Tutorials mit Tipps und Informationen zur Verfügung und laden Sie ein, den ES2 im Detail kennenzulernen. Näheres hierzu finden Sie unter ES2-Sound-Design – Übersicht auf Seite 84 und ES2-Sound-Design mit Templates auf Seite 94. Hinweis: Im gesamten Handbuch finden Sie Aufgaben, mit denen die Verwendung von Parametern als Modulationsziele und -quellen abgedeckt wird. Gemeint ist damit eine der größten Stärken des ES2 – nämlich seine umfangreichen Modulationsmöglichkeiten. Befolgen Sie die Schritte in diesen Aufgaben, um ausdruckstarke, eigendynamische Sounds zu erzeugen. Weitere Informationen finden Sie unter ES2-Modulation – Übersicht auf Seite 54. ES2 Kapitel 3 ES2 33 Bedienoberfläche des ES2 Die grafische Bedienoberfläche des ES2 besteht aus den folgenden Hauptbereichen. Modulation controls and parameters Macro Sound parameters Random parameters Click here to display the Vector Envelope. Amplifier parameters Planar Pad Filter section Effect section Oscillator section Global parameters Global parameters Modulation router •• Oszillator-Bereich: Die Oszillator-Parameter befinden sich im oberen linken Bereich der ES2- Oberfläche. Das Dreieck dient dazu, das Mischungsverhältnis zwischen den drei Oszillatoren zu steuern. Weitere Informationen finden Sie unter ES2-Oszillator-Parameter – Übersciht auf Seite 34. •• Globale Parameter: Links neben den Oszillatoren und oberhalb der Amplifier- und Filter- Parameter finden Sie verschiedene globale Parameter (z. B. „Tune“), die miteinander verknüpft sind und direkt auf die Signalausgabe des ES2 Einfluss nehmen. Weitere Informationen finden Sie unter Globale Parameter – Übersicht auf Seite 42. •• Filter-Bereich: Im kreisförmigen Bereich befindet sich der Filter-Bereich, inklusive der Parameter für Drive und Filter FM. Weitere Informationen finden Sie unter Filter im ES2 – Übersicht auf Seite 45. •• Amplifier-Parameter: Der Bereich rechts oben enthält die Ausgangsparameter, über die Sie die Gesamtlautstärke des ES2 einstellen und ein Sinus-Signal in die Ausgangsstufe einspeisen. Weitere Informationen finden Sie unter Verwenden der Dynamikstufe des ES2 auf Seite 52. •• Modulations-Router oder Vector-Hüllkurve: Der dunkel unterlegte Streifen, der sich zentral über die Bedienoberfläche des ES2 erstreckt, wird für den Modulations-Router und die Vector- Hüllkurve benutzt. Verwenden Sie die Tasten auf der rechten Seite dieses Abschnitts, um zwischen diesen beiden Betriebsarten umzuschalten. •• Der Router verknüpft Modulationsquellen wie Hüllkurven und andere Parameter, die im unteren Bereich der Bedienoberfläche eingeblendet werden, mit Modulationszielen wie den Oszillatoren und Filtern. Weitere Informationen finden Sie unter Verwenden des Modulation- Routers auf Seite 55. •• Die Vector-Hüllkurve ist ein flexibler und leistungsfähiger Hüllkurvengenerator, der Ihnen umfassende Steuerungsmöglichkeiten über Ihren Sound verleiht. Weitere Informationen finden Sie unter Verwenden der Vector-Hüllkurve auf Seite 63. •• Modulationsregler und -parameter: Der Bereich direkt unterhalb des Routers dient dazu, die Modulationsparameter (wie LFO- und Hüllkurvenregler) zuzuweisen und einzustellen. Weitere Informationen finden Sie unter ES2-Modulation – Übersicht auf Seite 54. Kapitel 3 ES2 34 •• Planar Pad: Der quadratische Bereich oben rechts ist ein zweidimensionaler Controller, der unter der Bezeichnung Planar Pad bekannt ist. Das Planar Pad vereinfacht die gleichzeitige Bearbeitung von zwei zuweisbaren Parametern und kann mit der Maus, einem anderen Controller oder der Vector-Hüllkurve kontrolliert werden. Weitere Informationen finden Sie unter Verwenden von Planar Pad auf Seite 70. •• Effekte-Bereich: Die internen Optionen zur Effektbearbeitung finden Sie rechts neben den Ausgangsparametern. Weitere Informationen finden Sie unter Integrierter Effektprozessor des ES2 auf Seite 78. •• Makro- und MIDI-Controller-Parameter: Der graue schmale Streifen am unteren Rand dient wahlweise zur Darstellung der Makro-Parameter oder MIDI-Controller-Zuweisungen. Über die voreingestellten Makro-Klangparameter können Sie den Sound des ES2 (oder ES2-basierter GarageBand-Instrumente) direkt manipulieren. Sie können die MIDI-Controller-Nummern dieser Parameter auch neu zuweisen. Weitere Informationen finden Sie unter ES2-Makro- und Reglerzuweisungen – Überscht auf Seite 79. ES2-Soundquellen ES2-Oszillator-Parameter – Übersciht Die ES2-Oszillatoren dienen zur Erzeugung einer oder mehrerer Wellenformen. Dieses Signal wird anschließend in andere Abschnitte der Synthesizer-Engine gespeist und dort geformt, mit Effekten bearbeitet und/oder manipuliert. •• Die Ausstattung der Oszillatoren 2 und 3 ist fast identisch, Oszillator 1 weicht ab. •• Oszillator 1 kann von Oszillator 2 frequenzmoduliert werden und so FM-Synthese-Sounds erzeugen. •• Die Oszillatoren 2 und 3 können zu Oszillator 1 synchronisiert oder ringmoduliert werden. Zudem verfügen sie über Rechteckwellenformen, die wahlweise eine feste, vom Anwender definierte Impulsbreite haben oder über Pulsbreitenmodulation (PWM) variiert werden. •• Mithilfe des Modulations-Routers können Sie die Impulsbreite der Rechteckwellenformen in Oszillator 1 und die synchronisierten und ringmodulierten Rechteckwellen in den Oszillatoren 2 und 3 gemeinsam verändern. (Fine) Frequency value field Wave knob Oscillator Mix (Triangle) Oscillator on/off button (Coarse) Frequency knob Kapitel 3 ES2 35 Oszillator-Parameter •• Tasten für Oszillator ein/aus: Mit den Nummern rechts neben den Oszillatoren werden die jeweiligen Oszillatoren unabhängig voneinander aktiviert oder deaktiviert. Wenn die Ziffer auf der Taste grün dargestellt wird, ist der Oszillator aktiviert. Wird die Ziffer auf der Taste grau dargestellt, ist der Oszillator nicht aktiviert. Durch die Deaktivierung eines Oszillators können Sie Rechenleistung Ihres Computers einsparen. •• Wellenform-Drehregler: Drehen Sie den Regler, um die Wellenform auszuwählen, die ein Oszillator erzeugt. Die Wellenform ist für die Grundklangfarbe maßgeblich. Weitere Informationen finden Sie unter Grundlegende ES2-Oszillator-Wellenformen auf Seite 35. •• Frequenz-Drehregler (Grobeinstellung): Schalten Sie durch Drehen zwischen den Frequenzen um ±3 Oktaven in Halbtonschritten gerastert um. Eine Oktave besteht aus 12 Halbtonschritten. Dementsprechend markieren die Positionen ±12, 24 und 36 die verschiedenen Oktaven. •• Frequenz-Feld (Feineinstellung): Stimmen Sie die Oszillator-Frequenz fein ab (Tonhöhe). Die Zahlen auf der linken Seite zeigen die Einstellung für den Halbton s, während die Zahlen auf der rechten Seite die Einstellung für den Cent c anzeigen (1 Cent = 1/100 Halbton). So ist ein Oszillator mit dem Wert von „12 s 30 c“ eine Oktave (12 Halbtöne) und 30 Cent höher gestimmt als ein Oszillator mit „0 s 0 c“. Durch vertikales Bewegen des Zeigers können Sie jeden Wert anpassen. •• Oszillatoren-Mischstufe (Dreieck): Bewegen Sie den Zeiger im Dreieck, um zwischen den drei Oszillatoren zu überblenden (also das Lautstärkeverhältnis zwischen ihnen einzustellen). Weitere Informationen finden Sie unter Ausgleichen von ES2-Oszillatorpegeln auf Seite 41. Grundlegende ES2-Oszillator-Wellenformen Alle ES2-Oszillatoren geben mehrere Standard-Wellenformen wie Sinuswelle, Pulswelle, Rechteckwelle, Sägezahn- und Dreieckwelle sowie alternativ eine von 100 Digiwaves aus (vgl. Verwenden von ES2-Digiwaves auf Seite 38). Die folgende Tabelle deckt die grundlegenden Wellenformen ab: Wellenform Klangcharakter Anmerkungen Pulswelle/Rechteck Nasal Gut für Holzblasinstrumente, Synth-Einwürfe und Bässe geeignet Rechteck Hohl und hölzern Geeignet für Bässe, Klarinetten und Oboen. Die Pulsbreite der Rechteck-Wellenformen (Oszillator 2 und 3) kann stufenlos zwischen 50 % und den schmalsten Impulsen eingestellt werden. Sägezahn Warm und ebenmäßig Geeignet für Streicher, Flächen, Bässe und Bläser-Klänge Dreieck Warm klingend, sanfter als Sägezahn Geeignet für Flöten und Flächenklänge Sinuswelle Ein reiner Klang Die Sinuswelle von Oszillator 1 kann durch Oszillator 2 in der Frequenz moduliert werden. Diese Art der Modulation ist die Grundlage der FM-Synthese (vgl. Frequenzmodulation im ES2 auf Seite 37). Kapitel 3 ES2 36 Zusätzlich sind wahlweise verfügbar: •• eine zu Oszillator 1 synchronisierte Rechteckwelle •• eine zu Oszillator 1 synchronisierte Sägezahnwelle •• für Oszillator 2 der Ausgang eines Ringmodulators, der vom Ausgang von Oszillator 1 und einer Rechteckwelle aus Oszillator 2 gespeist wird •• für Oszillator 3 farbiges Rauschen. Weitere Informationen finden Sie unter Verwenden des ES2- Noise-Generators auf Seite 39. Die Synchronisation von Oszillatoren und die Ringmodulation ermöglicht sehr komplexe und flexible Klangspektren. Das Prinzip der Synchronisation von Oszillatoren ist unter Synchronisieren von ES2-Oszillatoren auf Seite 42 beschrieben. Das Prinzip der Ringmodulation wird unter Ringmodulation im ES2 auf Seite 38 beschrieben. Pulsbreitenmodulation im ES2 Sie können die Klangfarbe von Rechteckwellen verändern, indem Sie die Breite der Wellenformimpulse auf einen beliebigen Wert einstellen. Diese Art der Modulation wird als Pulsbreitenmodulation bezeichnet. Die ES2-Pulsbreitenmodulation bietet Ihnen umfassende Funktionen. Wenn beispielsweise in allen Oszillatoren Rechteckwellen ausgewählt wurden, können Sie die Pulsbreite von Oszillator 1 und die synchronisierten Pulswellen von Oszillator 2 (oder die Rechteckwelle des Ringmodulators von Oszillator 2) und Oszillator 3 gleichzeitig modulieren. Ausgangs-Pulsbreite in den Oszillatoren 2 und 3 einstellen mm Bewegen Sie die Wellenform-Drehsteuerung, die den Wellenform-Drehregler umgibt (vgl. den hervorgehobenen Bereich im Bild oben). Nur in den Oszillatoren 2 und 3 ist es möglich, eine „Ausgangs-Pulsbreite“ vor der eigentlichen Pulsbreitenmodulation einzustellen. Pulsbreitenmodulation (von Oszillator 1) im Router einstellen 1 Wählen Sie eine Rechteckwelle für Oszillator 1. 2 Wählen Sie im Router „Osc1Wave“ als Ziel und „LFO1“ als Quelle. 3 Passen Sie den Schieberegler für den Wert der Modulation an (probieren Sie einen Wert von 0,12 aus). 4 Wählen Sie eine Sinuswelle für LFO 1. 5 Stellen Sie die Rate für LFO 1 ein (ungefähr 0.160 Hz für einen langsamen Sweep). Kapitel 3 ES2 37 Frequenzmodulation im ES2 Das Prinzip der Frequenzmodulation (FM) wurde Ende der 1960er, Anfang der 1970er Jahre von John Chowning entwickelt. Sie wurde durch Synthesizer wie die Yamaha DX-Reihe in den 1980er Jahren populär. Obwohl der ES2 im Bereich der reinen FM-Synthese nicht mit den DX-Synthesizern mithalten kann, ist er durchaus in der Lage, typische Sounds dieser Instrumente nachzubilden. Bei der reinen FM-Synthese wird die Frequenz eines Signalgenerators oder Oszillators von einem anderen Signalgenerator verändert (bzw. moduliert). Positive Werte des zweiten Signalgenerators heben die Frequenz des ersten Generators an. Negative Werte senken die Frequenz ab. In einem Synthesizer findet diese Art der Modulation im hörbaren Bereich statt. Abhängig von der Konzeption des Instruments können Sie wahlweise das Signal des ersten Oszillators (der vom zweiten Oszillator moduliert wird) alleine oder beide Oszillatoren gemeinsam abhören. Die Interaktion zwischen beiden Oszillatoren verändert das Wellenformsignal des ersten Oszillators und erzeugt neue Obertöne. Dieses Obertonspektrum dient dann als Quellsignal für die weitere Klangverarbeitung durch Filter, Hüllkurven usw. Weitere Informationen finden Sie unter Frequenzmodulation (FM-Synthese) auf Seite 459. Im ES 2 kann die Frequenz von Oszillator 1 (bei ausgewählter Sinuswelle in der 11-Uhr-Position des Wellenform-Drehreglers) vom Ausgangssignal von Oszillator 2 moduliert werden. •• Wenn Oszillator 2 ein positives Signal ausgibt, wird die Frequenz von Oszillator 1 angehoben. •• Wenn Oszillator 2 ein negatives Signal ausgibt, wird die Frequenz von Oszillator 1 abgesenkt. Effektiv führt das Beschleunigen oder Verlangsamen der Frequenz in Oszillator 1 in jedem Wellenformdurchgang zu einer Verzerrung der grundlegenden Kurvenform. Zudem hat die Verzerrung der Wellenform den Nebeneffekt, dass einige neue hörbare Obertöne entstehen. Wichtig: Die Wirkung aller Frequenzmodulationen, die Sie ausführen, hängt sowohl vom Frequenzverhältnis als auch von der Modulationsintensität der beiden Oszillatoren ab. Bei der „reinen“ FM-Synthese erzeugen sowohl der erste als auch der zweite Signalgenerator eine Sinuswelle (es werden sowohl Oszillator 1 als auch Oszillator 2 im ES2 darauf „reduziert“, eine Sinuswelle zu generieren). Der ES2 stellt aber zusätzlich 100 Digiwaves sowie zahllose Kombinationen aus Modulationsintensitäten und Frequenzverhältnissen für jeden Oszillator zur Auswahl. Dies stellt Ihnen eine große Auswahl an harmonischen Spektren und Tonfarben bereit, mit denen Sie experimentieren können. Tipp: Die Art der Modulation, die dabei entsteht, kann signifikant variieren, wenn Sie speziell für den modulierenden Oszillator 2 andere Wellenformen auswählen. Frequenzverhältnis einstellen und Modulationsintensität anpassen 1 Stellen Sie die Frequenz-Parameterwerte (Grob- und Feinstimmung) für einen oder beide Oszillatoren ein. 2 Klicken Sie auf den (oder bewegen Sie den Zeiger im) Regelbereich zwischen den Symbolen für „Sine“ und „FM“ auf dem Wellenform-Drehregler von Oszillator 1. So wird der Betrag oder die Intensität der Frequenzmodulation festgelegt. Kapitel 3 ES2 38 Ringmodulation im ES2 Die Ringmodulation eignet sich insbesondere für metallisch klingende, unharmonische und glockige Klänge. Die resultierenden Spektren sind nur bei kleinen, ganzzahligen Frequenzverhältnissen harmonisch. Der Ringmodulator ist ein Gerät aus den frühen Tagen der Synthesizer. Ein Ringmodulator hat zwei Inputs. Am Output sind die Summen- und Differenzfrequenzen der Input-Signale wahrnehmbar. Wenn ein Sinuston von 200 Hz mit einem Sinus von 500 Hz ringmoduliert wird, resultieren im Output neben diesen beiden Frequenzen als so genannte Seitenbänder auch die Frequenzen 700 Hz (Summe) und 300 Hz (Differenz). Negative Vorzeichen bei den Frequenzen der Seitenbänder entsprechen einfach einer Umkehr ihrer Phase. Tipp: Verwenden Sie Sägezahn- und (pulsbreitenmodulierte) Rechteck-Eingangssignale aus den Oszillatoren 1 bzw. 2, um ein deutlich komplexeres Ausgangssignal zu erzeugen. Der Einsatz dieser obertonreichen Wellenformen sorgt dafür, dass einige zusätzliche Seitenbänder hörbar werden. Ringmodulierten Sound erzeugen 1 Stellen Sie den Wellenform-Drehregler für Oszillator 2 auf die Ring-Einstellung ein. 2 Experimentieren Sie mit unterschiedlichen Werten für die Frequenz (Grob- und Feinstimmung) in einem oder beiden Oszillatoren. Der Ringmodulator von Oszillator 2 wird gespeist vom Output-Signal des Oszillators 1 und einer Rechteckwelle, die durch Oszillator 2 erzeugt wird. Die Pulsbreite dieser Rechteckwelle kann moduliert werden (vgl. Pulsbreitenmodulation im ES2 auf Seite 36). Verwenden von ES2-Digiwaves Neben den herkömmlichen Synthesizer-Wellenformen können alle Oszillatoren des ES2 100 zusätzliche Wellenformen, die so genannten Digiwaves, erzeugen. Hierbei handelt es sich um sehr kurze Samples der Attack-Transienten verschiedener Sounds und Instrumente. Digiwave auswählen mm Stellen Sie den Wellenform-Drehregler auf „Sine“ (6-Uhr-Position) und wählen Sie eine der folgenden Optionen: •• Klicken Sie bei gedrückter ctrl-Taste oder mit der rechten Maustaste auf „Sine“ und wählen Sie dann eine Wellenform aus dem Kontextmenü aus. •• Bewegen Sie „Sine“ bei gedrückter Maustaste in vertikaler Richtung. Kapitel 3 ES2 39 •• Klicken Sie bei gedrückter Umschalttaste auf „Sine“ und geben Sie einen numerischen Wert für die gewünschte Digiwave ein. Verwenden des ES2-Noise-Generators Die Klangpalette von Oszillator 3 wird durch einen Noise-Generator vervollständigt, den Sie durch Auswahl der Noise-Wellenform aktivieren. Dieser liefert in der Regel Weißes Rauschen. Weißes Rauschen ist ein homogenes Gemisch aller Frequenzen, die in jedem Frequenzband gleicher Bandbreite in Hertz die gleiche Intensität aufweisen. Die Bandbreite ist hier in Hertz angegeben. Sein neutraler Klang liegt irgendwo zwischen dem Konsonanten „F“ und Meeresrauschen. Wenn Sie Meeresrauschen, Windgeräusche oder auch elektronische Snaredrum-Sounds synthetisieren möchten, ist Weißes Rauschen die ideale Wellenform. Tatsächlich können Sie die tonale Färbung in Echtzeit modulieren, indem Sie die Wellenform von Oszillator 3 modulieren. Noise-Färbung ändern 1 Legen Sie das folgende Modulations-Routing an: Modulationsziel „Osc3Wave“, Quelle „ModWhl“. Der Schieberegler für die Modulationstiefe verhält sich in diesem Routing tatsächlich wie ein Filter. 2 Verwenden Sie negative Werte für die Modulationstiefe (nicht −1.000), um eine absteigende Filterneigung festzulegen, die ungefähr 6 dB/Oktave entspricht. Der Sound wird dunkler (rotes Rauschen), wenn Sie das Modulationsrad nach unten einstellen. 3 Um diesen Pseudofilter auf 18 Hz einzustellen, legen Sie die Modulationstiefe auf −1.000 fest. Bei positiver Modulation von „Osc3Wave“ wird das Rauschen heller (blaues Rauschen). 4 Wenn Sie die Modulationstiefe für das Modulationsziel „Osc3Wave“ auf einen Wert von +1.000 einstellen, wird die Cutoff-Frequenz des Filters auf 18 kHz eingestellt. Emulieren von verstimmten Analog-Oszillatoren im ES2 Der Parameter „Analog“ ändert nach dem Zufallsprinzip die Tonhöhe jeder Note – und der Cutoff-Frequenz des Filters. •• Niedrige Analog-Werte können dem Klang eine subtile Fülle verleihen. •• Mittlere Analog-Werte simulieren die mangelhafte Stimmstabilität analoger Synthesizer. Dadurch erzielen Sie den beliebten warmen Analogklang. •• Hohe Analog-Werte sorgen für eine auffallend instabile Stimmung, die auch tatsächlich nach falschen Tönen klingen kann – aber vielleicht ist das ja genau das, was Sie suchen. Kapitel 3 ES2 40 Drehen Sie den Analog-Drehregler, um die Tonhöhe jeder Note nach dem Zufallsprinzip zu ändern – und Cutoff-Frequenz des Filters. Wie bei polyphonen analogen Synthesizern behalten die drei Oszillatoren ihre spezifische Abweichung zu den Frequenzen der anderen Oszillatoren bei, allerdings können die Tonhöhen aller drei Oszillatoren über denselben Wert für „Analog“ verstimmt werden. Wenn beispielsweise die Analog-Verstimmung auf etwa 20 % eingestellt ist, werden alle drei Oszillatoren (sofern in Betrieb) nach dem Zufallsmuster um 20 % verstimmt. Hinweis: Bei den Tastaturmodi „Mono“ oder „Legato“ zeigt „Analog“ nur dann Wirkung, wenn „Unison“ aktiviert ist. In diesem Fall bestimmt „Analog“ den Grad der Verstimmung der übereinander gelegten Stimmen. Wenn der Parameter „Voices“ auf „1“ gesetzt ist und/oder „Unison“ nicht aktiv ist, hat der Parameter „Analog“ keinen Effekt. Weitere Informationen zu diesen Parametern finden Sie unter Einstellen des Keyboard-Modus im ES2 auf Seite 43. Streckung im ES2 Über den Frequency-Drehregler (Grobstimmung) jedes Oszillators können Sie die Oszillatoren 1, 2 und 3 in Halbton- oder Oktavschritten stimmen. Der Frequency-Parameter (Feinstimmung) ermöglicht es Ihnen nun, jeden Oszillator in Cent (1/100 Halbton) feinzustimmen. Eine präzise Verstimmung der Oszillatoren kann zu Schwebungen oder einem Phasing zwischen den Oszillator-Frequenzen führen. Diese Schwebungen fallen normalerweise bei hohen Frequenzen/ Noten schneller aus. Deshalb wirken höhere Noten oft verstimmter als tiefere Noten. CBD (Constant Beat Detuning) kann zur Korrektur von Schwebungen zwischen den Oszillatoren oder auch als kreatives Werkzeug zur Emulation einer gestreckten Stimmung genutzt werden. Die letzte Option kann vor allem dann von Bedeutung sein, wenn Sie ES2-Sounds gemeinsam mit Aufnahmen akustischer Pianos verwenden. Der Grund liegt darin, dass akustische Pianos absichtlich „verstimmt“ sind (von der gleich temperierten Stimmung). Man spricht hierbei von einer Streckung, die dazu führt, dass die oberen und unteren Bereiche auf der Klaviatur in Bezug auf die mittleren Oktaven etwas verstimmt sind, zueinander jedoch „gestimmt“ klingen. Wählen Sie einen CBD-Wert aus, um die Harmonien der Frequenzen von tiefen Noten in einem Verhältnis zu verstimmen, das zum Grundton der Frequenzen der oberen Noten proportional ist. CBD stellt fünf Werte zur Auswahl: “off“, „25%“, „50%“, „75%“ und „100%“. Bei „100%“ wird die Schwebungsfrequenz nahezu über den gesamten Tastaturbereich gleichmäßig gehalten. Dieser Wert ist jedoch möglicherweise zu hoch, da tiefe Noten bereits zu verstimmt erscheinen, während der Diskant angenehm schwebt. Versuchen Sie es zuerst mit niedrigeren CBD-Werten, wenn der Bass im Vergleich zu dem oberen Klaviaturbereich zu verstimmt klingt. Das Zentrum der Gewichtung für CBD ist das C3 (das mittlere C): Dessen Verstimmung bleibt bei jedem Wert von CBD gleich. Kapitel 3 ES2 41 Ausgleichen von ES2-Oszillatorpegeln Die Position des Zeigers im Dreieck wird durch zwei Parameter beschrieben – die X- und Y-Koordinaten – die für die Automation der Oszillatoren-Mischung verwendet werden. Diese mit „OscLevelX“ und „OscLevelY“ bezeichneten Parameter sind im Router als Ziele verfügbar. Bewegen Sie den Zeiger im Dreieck, um zwischen den drei Oszillatoren zu überblenden (also das Lautstärkeverhältnis zwischen ihnen einzustellen). Die Bedienung ist selbsterklärend. Wenn Sie den Zeiger nur auf einer Kante des Dreiecks verschieben, wird zwischen den beiden nächstliegenden Oszillatoren überblendet, während der dritte Oszillator stummgeschaltet wird. Click or drag in the Triangle to change the level balance between the oscillators. Die Position des Zeigers (X- und Y-Koordinaten) im Dreieck kann auch über die Vector-Hüllkurve gesteuert werden. Da in der Vector-Hüllkurve eine Loop-Funktion integriert ist, kann sie auch als Pseudo-LFO mit einer programmierbaren Wellenform benutzt werden. Weitere Informationen zu dieser Funktion finden Sie unter Verwenden der Vector-Hüllkurve auf Seite 63. Dreieck-Koordinaten mit dem Modulationsrad modulieren 1 Legen Sie das folgende Modulations-Routing an: Modulationsziel „OscLeveIX“, Quelle „ModWhl“. Stellen Sie die Intensität ein. 2 Legen Sie das folgende zweite Modulations-Routing fest: Modulationsziel „OscLevelY“, Quelle „ModWhl“. Stellen Sie die Intensität ein. Sie können andere Quellen für diese Ziele auswählen. Ändern von Oszillator-Startpunkten im ES2 Die Oszillatoren können frei laufen oder an derselben Phasen-Position ihres jeweiligen Wellenformdurchgangs gestartet werden, wenn eine Note angeschlagen wird. Wählen Sie die Optionen „Free“, „Soft“ oder „Hard“ im Einblendmenü „Osc(illator) Start“ aus. •• Free: Der anfängliche Startpunkt für die Oszillatorphase ist für jede gespielte Note zufällig. Das macht den Sound lebendiger. Der Nachteil ist, dass der Ausgangspegel bei jedem Anschlag einer Note unterschiedlich ausfallen kann: So kann die Attack-Phase trotz identischer Performance (wenn die Noten beispielsweise von einer MIDI-Region getriggert werden) weniger druckvoll klingen. Diese Einstellung empfiehlt sich, wenn Sie Sounds emulieren möchten, die für analoge Hardware-Synthesizer typisch sind. •• Soft: Die anfängliche Oszillatorphase beginnt bei einem Nulldurchgang für jede gespielte Note. Dies kommt dem Klangbild (und der Präzision) digitaler Synthesizer nahe. •• Hard: Die anfängliche Oszillatorphase beginnt mit dem größtmöglichen Pegel im Wellenformdurchgang für jede gespielte Note. Die Extraportion Druck, die Sie mit dieser Einstellung erzielen können, ist aber nur dann hörbar, wenn der Parameter „Attack Time“ für Hüllkurve 3 auf einen niedrigen Wert (und damit auf eine sehr schnelle Attack) eingestellt ist. Diese Einstellung ist besonders für elektronische Percussion und harte Bässe empfehlenswert. Kapitel 3 ES2 42 Hinweis: Wenn „Soft“ oder „Hard“ gewählt ist, wird von Seiten der Oszillatoren bei jeder Wiedergabe immer exakt der gleiche Pegel erzielt. Dies könnte beim Bouncen in Logic Pro von Bedeutung sein, wenn Sie möglichst nahe an die Aussteuerungsgrenze kommen möchten. Synchronisieren von ES2-Oszillatoren Die Sync-Funktion eignet sich besonders für aggressive, kreischende Klänge. Die Wellenformen „Rechteck“ und „Sägezahn“ von Oszillator 2 und 3 verfügen über die Option „Sync“. Wenn dieser Parameter eingeschaltet ist, wird die Phase von Oszillator 2 oder 3 mit Oszillator 1 synchronisiert. Jedes Mal, wenn Oszillator 1 einen neuen Wellendurchgang beginnt, wird der synchronisierte Oszillator (Oszillator 2 oder 3) ebenfalls auf den Anfang seiner Wellenform zurückgesetzt. Zwischen den Wellenformdurchgängen von Oszillator 1 laufen die Wellenformdurchgänge der synchronisierten Oszillatoren frei. Sie können interessante synchronisierte Oszillatorsounds erzeugen, indem Sie die Frequenz des synchronisierten Oszillators mit einem Hüllkurvengenerator modulieren. Dies ändert die Anzahl der Phasen in einem Abschnitt des synchronisierten Durchgangs konstant, was zu entsprechenden Änderungen im Frequenzspektrum führt. Synchronisierte Oszillator-Frequenz mit einer Hüllkurve modulieren 1 Stellen Sie den Wellenform-Drehregler für Oszillator 2 auf „Sync“ ein. 2 Legen Sie das folgende Modulations-Routing fest: Modulationsziel „Pitch2“, Quelle „Env2“. 3 Stellen Sie die Einstellungen von Hüllkurve 2 ein. Globale Parameter im ES2 Globale Parameter – Übersicht Die globalen Parameter im ES2 haben den größten Einfluss auf den gesamten, durch den ES2 erzeugten Sound. Die globalen Parameter befinden sich links neben den Oszillatoren und oberhalb des Filter- und Output-Bereichs. Global parameters Global parameters Kapitel 3 ES2 43 Globale Parameter •• Tasten „Keyboard Mode“: Schalten Sie den ES2 zwischen polyphonem, monophonem und Legato-Modus um. Weitere Informationen finden Sie unter Einstellen des Keyboard-Modus im ES2 auf Seite 43. •• Taste „Unison“: Klicken Sie auf die Taste, um den Unison-Modus ein- oder auszuschalten. Weitere Informationen finden Sie unter Verwenden von Unison und Stimmen im ES2 auf Seite 44. •• Feld „Voices“: Hier stellen Sie durch Bewegen die Anzahl der gleichzeitig abspielbaren Noten ein. •• Drehregler „Glide“: Drehen Sie diesen Drehregler, um die Dauer zu steuern, in der die Tonhöhe einer gespielten Note auf die Tonhöhe der nachfolgend gespielten Note gebunden wird. Weitere Informationen finden Sie unter Festlegen der Zeiteinstellung für Glide im ES2 auf Seite 44. •• Felder „Bend Range“: Definieren Sie durch Bewegen den oberen und unteren Pitch-Bend- Bereich. Weitere Informationen finden Sie unter Pitch-Bend-Bereich des ES2 festlegen auf Seite 45. •• Feld „Tune“: Legen Sie durch Bewegen die gesamte Tonhöhe des Instruments in Cent fest. 100 Cent entsprechen einem Halbtonschritt. Bei einem Wert von „0 c“ (null Cent) ist das mittlere A auf 440 Hz oder den Kammerton gestimmt. •• Drehregler „Analog“: Drehen Sie den Drehregler „Analog“, um die Tonhöhe jeder Note nach dem Zufallsprinzip zu ändern – und die Cutoff-Frequenz des Filters. Weitere Informationen finden Sie unter Emulieren von verstimmten Analog-Oszillatoren im ES2 auf Seite 39). •• Einblendmenü „Constant Beat Detuning (CBD)“: Wählen Sie einen CBD-Wert aus, um die Harmonien der Frequenzen von tiefen Noten in einem Verhältnis zu verstimmen, das zum Grundton der Frequenzen der oberen Noten proportional ist. Weitere Informationen finden Sie unter Streckung im ES2 auf Seite 40. •• Einblendmenü „Osc(illator) Start“: Wählen Sie die Optionen „free“, „soft“ oder „hard“ im Einblendmenü „Osc(illator) Start“ aus Weitere Informationen finden Sie unter Ändern von Oszillator-Startpunkten im ES2 auf Seite 41. Einstellen des Keyboard-Modus im ES2 Ein polyphones Instrument wie eine Orgel oder ein Klavier ermöglicht es, mehrere Noten gleichzeitig zu spielen. Viele alte Analogsynthesizer sind monophon, d. h. es kann wie auf einem Blasinstrument in der Regel nur ein Ton zur selben Zeit gespielt werden. Dies muss nicht von Nachteil sein, da es besondere Spielweisen erlaubt, die man von polyphonen Instrumenten zuvor nicht kannte. Keyboard-Modus ändern mm Klicken Sie auf die Taste „Poly“, „Mono“ oder „Legato“. •• Im Mono-Modus werden beim Staccato-Spiel die Abläufe der Hüllkurvengeneratoren jedes Mal neu gestartet, wenn eine Note gespielt wird. Spielen Sie hingegen legato (durch Anschlagen einer neuen Taste, während die alte gehalten wird), werden die Abläufe der Hüllkurven nur für die ersten legato gespielten Noten neu gestartet und folgen dann ihrem eingestellten Verlauf so lange, bis Sie die letzte legato gespielte Taste loslassen. Kapitel 3 ES2 44 •• „Legato“ ist ebenfalls monophon, allerdings mit einer Besonderheit: Die Hüllkurvengeneratoren werden nur dann mit jeder Note neu ausgelöst, wenn Sie abgesetzt (staccato) spielen, d. h. wenn Sie die jeweilige Taste loslassen, bevor Sie eine neue anschlagen. Wenn Sie legato spielen, werden die Hüllkurven nicht neu ausgelöst. Hinweis: Das Verhalten im Modus „Mono“ wird bei vielen monophonen Analogsynthesizern als Multi Trigger bezeichnet, das Verhalten im Modus „Legato“ als Single Trigger. Verwenden von Unison und Stimmen im ES2 Eine der großen Stärken polyphoner Analogsynthesizer ist der Unison-Modus, bei dem mehrere Stimmen übereinander geschichtet werden. Der Unison-Modus ist bei polyphonen analogen Synthesizern üblicherweise monophon, wobei alle Stimmen gleichzeitig wiedergegeben werden, wenn eine einzelne Note angeschlagen wird. Da die Stimmen des analogen Synthesizers nie exakt gleich gestimmt sind, ergibt sich ein imposanter Chorus-Effekt mit einer erstaunlichen Klangdichte. Monophonen Unison-Modus verwenden 1 Klicken Sie auf die Taste „Mono“ oder „Legato“, je nach gewünschtem Keyboard-Modus. Weitere Informationen finden Sie unter Einstellen des Keyboard-Modus im ES2. 2 Klicken Sie auf die Taste „Unison“. •• Die Intensität dieses Effekts hängt von der Anzahl der ausgewählten Stimmen im Parameterfeld „Voices“ ab. Erhöhen Sie den Voices-Wert, um einen volleren Klang zu erreichen. Weitere Informationen finden Sie unter Globale Parameter – Übersicht. •• Die Intensität der Verstimmung (Stimmenabweichung) wird über „Analog“ gesteuert. Weitere Informationen finden Sie unter Emulieren von verstimmten Analog-Oszillatoren im ES2. Polyphonen Unison-Modus verwenden mm Klicken Sie auf die Tasten „Poly“ und „Unison“. Im Modus „Poly/Unison“ wird jede Note gedoppelt oder genauer genommen halbiert sich die Anzahl der Stimmen im Voices-Feld. Diese beiden Stimmen sind zu hören, wenn Sie die Note spielen. Die Betriebsart „Poly/Unison“ erzeugt denselben Effekt wie die Einstellung „Mono/Unison“ (Stimmen = 2) im ES2, allerdings können Sie nun polyphon spielen. Festlegen der Zeiteinstellung für Glide im ES2 Der Parameter „Glide“ (auch als Portamentobekannt) legt die Zeit fest, die die Tonhöhe einer gespielten Note benötigt, um von einer anderen gespielten Note zur jetzigen Tonhöhe zu gleiten. Portamento aktivieren mm Drehen Sie den Drehregler „Glide“. Das Verhalten von Glide hängt vom gewählten Tastaturmodus ab. Weitere Informationen finden Sie unter Einstellen des Keyboard-Modus im ES2. •• Im Modus „Poly“ oder „Mono“ ist das Portamento ständig aktiv, sobald für „Glide“ ein anderer Wert als „0“ ausgewählt ist. •• Wenn aber „Legato“ ausgewählt ist, werden nur legato (gebunden) gespielte Noten (durch Halten der alten Taste und Anschlagen einer neuen) mit Portamento versehen. Ungebunden gespielte Noten erklingen ohne Portamento. Dieses Verhalten wird auch als Fingered Portamento bezeichnet. Kapitel 3 ES2 45 Pitch-Bend-Bereich des ES2 festlegen Die Felder „Bend“ definieren den Bereich für die Pitch-Bend-Modulation, die Sie üblicherweise über das Pitch-Bend-Rad an Ihrem Keyboard steuern. Unabhängige Bend-Bereiche für Aufwärts- und Abwärtsbewegung festlegen mm Bewegen Sie den Zeiger in einem der Felder, um einen Bend-Bereich festzulegen. Identische Bend-Bereiche für Aufwärts- und Abwärtsbewegung festlegen 1 Legen Sie das Feld für den Bend-Bereich in Aufwärtsrichtung auf den Link-Modus fest. Dadurch werden die Bend-Bereiche in Aufwärts- und Abwärtsrichtung gesperrt, sodass sie identische Werte aufweisen. 2 Legen Sie einen Wert für den Bend-Bereich in Abwärtsrichtung fest. Dieser Wert wird im Feld für den Bend-Bereich in Aufwärtsrichtung übernommen. Hinweis: Beispielsweise führt ein Bend von 4 Halbtönen in Abwärtsrichtung zu einem kombinierten Bend-Bereich von 8 Halbtönen – 9, wenn Sie die Standardtonhöhe oder Position ohne Bend berücksichtigen. Filter-Parameter des ES2 Filter im ES2 – Übersicht Der ES2 integriert zwei diskrete, unterschiedlich aufgebaute Filter. •• Filter 1 kann als Lowpass-, Highpass-, Bandpass-, Band-Reject- oder Peak-Filter betrieben werden. •• Filter 2 ist ein Lowpass-Filter mit unterschiedlichen Optionen für die Flankensteilheit (gemessen in dB/Oktave). Filter button Filter 1 Mode Filter Drive Click here to choose a parallel or series filter configuration. Filter FM Filter 2 Slope Filter 2 Resonance Filter 2 Cutoff Filter Blend Filter 1 Cutoff Filter 1 Resonance Filter-Parameter •• Taste „Filter“: Schaltet den Filter-Bereich ein bzw. aus. Diese Funktion erleichtert die Programmierung anderer Klangparameter, da die Filter den Klang entscheidend prägen. Wenn die Filter deaktiviert sind, wird außerdem die Prozessorlast erheblich reduziert. Kapitel 3 ES2 46 •• Taste „Filter Configuration“: Schaltet zwischen einer parallelen und seriellen Filter-Konfiguration um. Weitere Informationen finden Sie unter Filterkonfiguration im ES2 auf Seite 46. •• Schieberegler „Filter Blend“: Steuert die Balance zwischen Filter 1 und Filter 2. Weitere Informationen finden Sie unter Überblenden zwischen ES2-Filtern auf Seite 47. •• Modustasten für Filter 1: Schalten Sie Filter 1 zwischen den Betriebsarten „Lowpass“, „Highpass“, „Bandpass“, „Band Reject“ und „Peak“ um. Weitere Informationen finden Sie unter Modi von Filter 1 im ES2 auf Seite 48. •• Tasten für die Flankensteilheit von Filter 2: Schalten Sie die Flankensteilheit für Filter 2 um. Weitere Informationen finden Sie unter Flankensteilheiten von Filter 2 im ES2 auf Seite 49. •• “Cutoff“ und „Resonance“: Die Drehregler „Cutoff“ und „Resonance“ steuern die Cutoff-Frequenz und das Resonanzverhalten für jeden Filter. Weitere Informationen finden Sie unter Filter- Cutoff-Frequenz und Resonanz – Übersicht auf Seite 49. •• Drehregler „Filter Drive“: Drehen Sie ihn zum Übersteuern des Filters, was sich individuell auf jede Stimme auswirkt. Weitere Informationen finden Sie unter Verzerren von ES2-Filtern auf Seite 51. •• Drehregler „Filter FM“: Drehen Sie den Regler, um das Ausmaß der Cutoff-Frequenzmodulation von Filter 2 mit der Frequenz von Oszillator 1 festzulegen. Weitere Informationen finden Sie unter Modulieren der Frequenz von Filter 2 des ES2 auf Seite 52. Filterkonfiguration im ES2 Mit der Taste „Filter Configuration“ können Sie zwischen einem parallelen und seriellen Filter- Routing umschalten. Je nach Auswahl wird das gesamte kreisförmige Filter-Element gedreht, sodass die Positionen und die Ausrichtung der Filter-Drehregler den Signalfluss verdeutlichen. Die Beschriftung der Taste wird je nach Auswahl ebenfalls angepasst. Series filter signal flow Parallel filter signal flow In der Abbildung links sind die Filter seriell geschaltet. Das bedeutet, dass das (in der dreieckigen Oszillatoren-Mischstufe kombinierte) Signal aller Oszillatoren das erste Filter durchläuft. Anschließend durchläuft das gefilterte Signal Filter 2, wenn „Filter Blend“ auf die Mittelposition „0“ eingestellt ist. Das Ausgangssignal von Filter 2 wird dann auf den Eingang der Dynamikstufe (Amplifier-Bereich) gespeist. In der Abbildung rechts sind die Filter parallel geschaltet. Wenn „Filter Blend“ auf „0“ gesetzt ist, hören Sie eine Mischung zu gleichen Teilen, die über Filter 1 und Filter 2 geroutet wird. Die Ausgangssignale der beiden Filter werden nun auf den Eingang der Dynamikstufe gespeist. Weitere Informationen finden Sie unter Überblenden zwischen ES2-Filtern. Kapitel 3 ES2 47 Überblenden zwischen ES2-Filtern „Filter Blend“ kann einen enormen Einfluss auf den Signalfluss des ES2 haben. Unabhängig davon, ob Sie die parallele oder serielle Verschaltung wählen, hören Sie in der Einstellung „–1“ nur Filter 1. Bei „+1“ hören Sie hingegen nur Filter 2. Diese Abbildungen illustrieren den Signalfluss zwischen der Oszillatoren-Mischstufe (dem Dreieck) und der Dynamikstufe (den Verstärker). Abhängig von der Filter-Blend-Einstellung durchläuft das Signal die Filter und den Filter-Verzerrer (Parameter „Drive“). •• Filter Blend: Konfigurationsinformationen zu seriellen Filtern •• Verwenden Sie positive Werte für „Filter Blend“, um Filter 1 teilweise zu umgehen. •• Verwenden Sie negative Werte für „Filter Blend“, um Filter 2 teilweise zu umgehen. •• Bei Null oder positiven Werten für „Filter Blend“ liegt nur ein Verzerrer zwischen beiden Filtern. •• Bei negativen Werten für „Filter Blend“ wird ein weiterer Verzerrer geschaltet, der das Output- Signal der Oszillatoren-Mischstufe verzerrt, bevor es in Filter 1 gespeist wird. •• Wenn „Drive“ auf 0 steht, findet keine Verzerrung statt. Filter 1 Filter 1 Filter 1 Drive Drive Drive Drive Drive Filter 1 Filter 1 Filter 2 Filter 2 Filter 2 Drive Drive Filter 2 Filter 2 +1: –0,5: +0,5: –1: 0: •• Filter Blend: Konfigurationsinformationen zu parallelen Filtern In einer parallelen Konfiguration wird der Verzerrer – der Parameter „Drive“ – immer hinter der Oszillatoren-Mischstufe (dem Dreieck) und vor den Filtern verkabelt. Beide Filter empfangen das gleiche Monosignal vom Verzerrer. Die Outputs der beiden Filter werden mithilfe von „Filter Blend“ mono zusammengemischt. Mix Filter 1 Drive Filter 2 Der Parameter „Filter Blend“ steht als Modulationsziel im Router zur Verfügung. Sie können „Filter Blend“ über manuelle Steuerquellen wie das Modulationsrad steuern, allerdings können Sie das „Filter Blend“-Ziel auch kreativ einsetzen, um abrupt zwischen den beiden Filtern umzuschalten oder sanft zwischen diesen zu überblenden. Sie können auch Velocity oder eine Kombination aus Vector-Hüllkurve und Planar Pad als Quellen verwenden. Durch letzteres können Sie interessante Möglichkeiten zur Filterkontrolle nutzen, die sich unabhängig voneinander entwickeln, oder gemäß den Oszillator-Parametern, die ebenfalls mit der Vector-Hüllkurve kontrolliert werden. Kapitel 3 ES2 48 Überblenden zwischen Filtern mm Bewegen Sie den Schieberegler „Filter Blend“, um zwischen den beiden Filtern zu überblenden, sofern diese parallel „verkabelt“ sind. •• Wenn „Filter Blend“ oben steht (in der Regler-Ansicht zu lesen als –1), hören Sie nur den Effekt von Filter 1. •• Wenn „Filter Blend“ unten steht (Regler-Ansicht: +1), hören Sie nur den Effekt von Filter 2. •• Zwischen diesen Positionen wird überblendet. Sie hören den Effekt von beiden Filtern. Sie können auch dann zwischen den Filtern überblenden, wenn diese seriell betrieben werden. In der seriellen Verschaltung der beiden Filter ist außerdem der über „Drive“ gesteuerte Verzerrer zu berücksichtigen, der abhängig von „Filter Blend“ vor oder zwischen den Filtern angeordnet wird. Filter Blend mit einem LFO modulieren 1 Legen Sie das folgende Modulations-Routing fest: Modulationsziel „FltBlend“, Quelle „LFO2“. 2 Passen Sie die Einstellungen von LFO 2 an. Modi von Filter 1 im ES2 Filter 1 kann in verschiedenen Modi betrieben werden und filtert (eliminiert) bzw. verstärkt auf diese Weise spezifische Frequenzbänder. Klicken Sie auf eine der folgenden Modustasten für Filter 1: •• Lo (lowpass): Lässt Frequenzen unterhalb der Cutoff-Frequenz passieren. Die Flankensteilheit von Filter 1 beträgt 12 dB/Oktave. •• Hi (highpass): Lässt Frequenzen oberhalb der Cutoff-Frequenz passieren. Die Flankensteilheit von Filter 1 beträgt 12 dB/Oktave. •• Peak: Filter 1 wirkt als Peak-Filter. Es erlaubt die Anhebung eines Frequenzbands. Der Scheitel des Frequenzbands wird über den Cutoff-Parameter gesteuert. Die Breite des Frequenzbands wird über den Resonance-Parameter gesteuert. •• BR (Band Reject): Der Bereich um die Cutoff-Frequenz wird unterdrückt (ausgefiltert), während die umgebenden Frequenzbereiche passieren können. Der Resonance-Parameter steuert die Breite des gesperrten Frequenzbands. •• BP (Bandpass): In diesem Modus kann nur ein Frequenzband um die Cutoff-Frequenz herum passieren. Alle anderen Frequenzen werden unterdrückt. Der Resonance-Parameter steuert die Breite des Frequenzbands. Das Bandpass-Filter ist ein Zweipol-Filterelement, dessen Flankensteilheit auf beiden Seiten der Cutoff-Frequenz 6 dB/Oktave beträgt. Kapitel 3 ES2 49 Flankensteilheiten von Filter 2 im ES2 Die meisten Filter dämpfen die auszufilternden Signalanteile nicht vollständig, sondern immer nur mit einer begrenzten Trennschärfe. Die Flankensteilheit oder Kurve, die für Filter 2 gewählt wird, beschreibt den Dämpfungsgrad unterhalb der Cutoff-Frequenz in Dezibel pro Oktave. Slope-Tasten: Klicken Sie auf eine beliebige Taste, um eine Flankensteilheit für Filter 2 auszuwählen: 12 dB, 18 dB und 24 dB. Je steiler die Flankensteilheit ist, desto größer ist der Effekt auf Signalpegel unterhalb der Cutoff-Frequenz. Taste „Fat“: Klicken Sie auf die Taste „Fat“ für einen Wert von 24 dB pro Oktave der Bandsperre. Der Fat-Modus verfügt über eine integrierte Kompensations-Schaltung, um die Basslastigkeit des Sounds beizubehalten. Verglichen damit klingen in der herkömmlichen 24-dB-Einstellung basslastige Sounds dagegen nicht so voluminös. Filter-Cutoff-Frequenz und Resonanz im ES2 Filter-Cutoff-Frequenz und Resonanz – Übersicht In jedem Lowpass-Filter (ES2: Lo-Modus für Filter 1; Filter 2 ist ein Lowpass-Filter) werden alle Frequenzanteile oberhalb der Cutoff-Frequenz gedämpft oder beschnitten. Wenn Sie bisher keine Erfahrung mit Synthesizern und den Konzepten der Filter haben, lesen Sie Synthesizer-Grundlagen – Übersicht auf Seite 440. Parameter „Cutoff“ und „Resonance“ •• Drehregler „Cutoff Frequency“: Drehen Sie den Regler, um die Brillanz des Signals zu kontrollieren. •• Je höher die Cutoff-Frequenz in einem Lowpass-Filter, desto höherfrequente Signalanteile können passieren. •• Bei einem Highpass-Filter bestimmt die Cutoff-Frequenz den Punkt, ab dem tiefere Frequenzen unterdrückt und höhere Frequenzen durchgelassen werden. •• Bei einem Bandpass-/Bandsperr-Filter bestimmt die Cutoff-Frequenz die Scheitelfrequenz für den Bandpass- oder Bandsperr-Filter. •• Drehregler „Resonance“: Drehen Sie diesen Regler, um Teile des Signals über oder unter die eingestellte Cutoff-Frequenz anzuheben bzw. abzusenken. •• In einem Lowpass-Filter hebt die Resonanz Signale unter der Cutoff-Frequenz an oder senkt sie ab. •• In einem Highpass-Filter hebt die Resonanz Signale über der Cutoff-Frequenz an oder senkt sie ab. Kapitel 3 ES2 50 •• In einem Bandpass-/Bandsperr-Filter verstärkt oder unterdrückt „Resonance“ die Signalanteile (das Frequenzband) um die Frequenz herum, die mit dem Parameter „Cutoff Frequency“ eingestellt sind. Zwei Filter-Parameter gleichzeitig regeln Die Fähigkeit, „Cutoff“ und „Resonance“ gleichzeitig steuern zu können, ist für die Erzeugung expressiver Synthesizer-Sounds essenziell. mm Verschieben Sie eines der drei Kettensymbole in der Filtersektion des ES2. Click here to simultaneously adjust the cutoff of both Filter 1 and Filter 2. Click here to simultaneously adjust the cutoff and resonance of Filter 2. Click here to simultaneously adjust the cutoff and resonance of Filter 1. •• Die Kette zwischen den Drehreglern „Cut“ und „Res“ in Filter 1 steuert gleichzeitig die Resonanz (horizontale Bewegung) und Cutoff-Frequenz (vertikale Bewegung). •• Die Kette zwischen den Drehreglern „Cut“ und „Res“ in Filter 2 steuert gleichzeitig die Resonanz (horizontale Bewegung) und Cutoff-Frequenz (vertikale Bewegung). •• Die Kette zwischen den Cut-Drehreglern für Filter 1 und Filter 2 steuert gleichzeitig die Cutoff- Frequenz von Filter 1 (vertikale Bewegung) und Filter 2 (horizontale Bewegung). Erzwingen der Selbstoszillation von ES2-Filtern Wenn Sie die Resonanz eines der Filter erhöhen, entsteht eine filterinterne Rückkopplung, die zu einer Selbstoszillation an der Grenzfrequenz des Filters (Cutoff Frequency) führt. Dies führt zu einer Sinus-Oszillation (einer Sinuswelle), die effektiv hörbar ist. Um die Schwingung in Gang zu setzen, bedarf es eines gewissen Anfangsimpulses. Bei analogen Synthesizern genügt das Grundrauschen der analogen Schaltungen oder das Signal der Oszillatoren. Beim digitalen ES2 rauscht nichts. Wenn also alle Oszillatoren stummgeschaltet sind, liegt am Filter kein Input-Signal. Durch „Filter Reset“ wird ein Impulssignal bereitgestellt, das verwendet werden kann, um eine Eigen-Oszillation des Filters zu bewirken. Filter Reset für die Eigen-Oszillation der ES2-Filter verwenden mm Klicken Sie auf die Taste „Filter Reset“, um das Filter zu aktivieren. Wenn diese Taste aktiviert ist, können Sie jede Note mit einem Impuls beginnen lassen, sodass das Filter sofort schwingt/mit der Selbstoszillation beginnt. Kapitel 3 ES2 51 Hohe Resonanzwerte mit dem Parameter Fat(ness) kompensieren mm Aktivieren Sie die Taste „Fat(ness)“ durch Klicken, die sich unter den anderen Tasten für die Flankensteilheit befindet. Ein Anheben des Resonance-Werts führt bei Lowpass-Filtern zu einer Absenkung der Bässe. Sie können die Taste „Fatness“ verwenden, um diesen Nebeneffekt auszugleichen und einen voluminöseren Sound zu erhalten. Verzerren von ES2-Filtern Die Filter verfügen über getrennte Verzerrermodule. Sie können durch Drehen des Parameters „Drive“ die Verzerrungsintensität festlegen. Durch den Parameter „Drive“ wird jede Stimme unabhängig voneinander beeinflusst. Wenn jede Stimme einzeln verzerrt wird (wie bei einer Gitarre mit sechs Fuzz-Boxen, eine für jede Saite), können Sie über den gesamten Tastaturbereich komplexeste Harmonien spielen. Jede Stimme klingt sauber, ohne dass Intermodulationseffekte das Klangbild trüben. Bestimmte Drive-Einstellungen können zu einem unterschiedlichen Klangcharakter führen. Dies ist darauf zurückzuführen, dass der Klangcharakter eines Synthesizers in hohem Maß dadurch beeinflusst wird, auf welche Weise sich analoge Filter beim Übersteuern verhalten. Jedes Synthesizer-Modell hat diesbezüglich individuelle Klangeigenschaften. Der ES2 arbeitet in diesem Bereich sehr flexibel und ermöglicht klangliche Färbungen, die von dezenter Übersteuerung bis zur härtesten Verzerrung reichen. •• Solange die Filter parallel verschaltet sind, liegen diese Verzerrer im Signalfluss vor den Filtern. •• Bei serieller Verschaltung der Filter hängt die Position der Verzerrer vom Parameter „Filter Blend“ ab. Weitere Informationen finden Sie unter Überblenden zwischen ES2-Filtern. Tipp: Da das Filter 2 bei serieller Verschaltung die bei der Verzerrung entstehenden Obertöne ausfiltern kann, erscheint die Möglichkeit, vor und zwischen den Filtern zu verzerren, eher wie eine zusätzliche Option, die Oszillatoren-Wellenformen zu deformieren. Polyphone Verzerrungen in der Praxis Der ES2 stellt einen eigenen Distortion-Effekt im Effekte-Bereich zur Verfügung. Angesichts dieser integrierten Funktion stellt sich möglicherweise die Frage, welche Vorteile die Funktion „Drive“ des Filters bietet. Die Verzerrer-Schaltung im Effekte-Bereich beeinflusst die gesamte polyphone Ausgabe des ES2. Jeder Rock- Gitarrist weiß, dass komplexere Akkorde, die über Dur, parallele Quinten und Oktaven hinausgehen, unrein klingen, wenn sie im Ganzen verzerrt werden. Daher beschränken sich Gitarristen meist auf wenige Stimmen oder parallele Quinten und Oktaven. Der Drive-Parameter der Filter beeinflusst jede Stimme einzeln, wodurch Sie komplexe Akkorde spielen können, ohne dass unangenehme Intermodulationen auftreten, die der Verzerrungseffekt Ihrem Sound hinzufügen kann. Kapitel 3 ES2 52 Modulieren der Frequenz von Filter 2 des ES2 Die Cutoff-Frequenz von Filter 2 kann über eine Sinuswelle von Oszillator 1 moduliert werden, die selbst dann ausgegeben wird, wenn der Oszillator abgeschaltet ist. Der Pegel des Sinus- Signals kann in der Ausgangsstufe mit dem Parameter „Sine Level“ gemischt werden (vgl. Optimierte ES2-Sounds mit Sine Level auf Seite 53). Der Effekt einer solchen Modulation im Audiofrequenzbereich führt zu schwer vorhersagbaren Ergebnissen, deren Spektren bei dezent gewählten Modulationsintensitäten jedoch noch sehr harmonisch sind. Mit dem FM-Parameter wird die Intensität dieser Filter-Frequenzmodulation festgelegt. Hinweis: Verwechseln Sie diese Filter-Frequenzmodulation nicht mit der Funktion zur FM-Oszillation (Oszillator 1 wird von Oszillator 2 moduliert). Wenn Oszillator 1 von Oszillator 2 frequenzmoduliert wird, wird das Sinuswellen-Signal, das die Cutoff-Frequenzen moduliert, davon nicht beeinflusst. Weitere Informationen finden Sie unter Frequenzmodulation im ES2. Filter 2 ist bis zur Selbstoszillation resonanzfähig. Wenn Sie den Resonance-Wert sehr hoch wählen, erzeugt das Filter eine Sinusschwingung. Diese selbstschwingende Sinuswelle wird bei maximalem Resonance-Wert sogar verzerrt. Wenn Sie alle Oszillatoren stummschalten oder anderweitig ausblenden, hören Sie nur noch die Sinusschwingung des Lowpass. Mit einer Frequenzmodulation der Cutoff-Frequenz können Sie nun die gleichen Effekte erzeugen, die auch durch die Frequenzmodulation des Oszillators 1 durch Oszillator 2 möglich sind. Filter FM modulieren 1 Legen Sie das folgende Modulations-Routing fest: Modulationsziel „LPF FM“. Als Modulationsquelle dient stets ein Sinus mit der Frequenz des ersten Oszillators. Aufgrund dieser Standardzuweisung und der direkten Beziehung zwischen der Intensität von Filter FM und der Frequenz von Oszillator 1 können Sie ein zweites Routing zum Modulieren der Tonhöhe von Oszillator 1 einrichten. 2 Legen Sie das folgende Modulations-Routing fest: Modulationsziel „Pitch 1“, Quelle „LFO1“. 3 Passen Sie die Einstellungen für LFO an. Amplifier-Parameter des ES2 Verwenden der Dynamikstufe des ES2 Die Dynamikstufe eines Synthesizers bestimmt den Pegel eines Tons, also letztlich die wahrgenommene Lautstärke. Der zeitliche Verlauf des Pegels wird von einem Hüllkurvengenerator gesteuert. Weitere Informationen zu Hüllkurvengeneratoren finden Sie unter Synthesizer- Grundlagen – Übersicht auf Seite 440. ENV 3 ist fest mit der Dynamikstufe des ES2 verkabelt und dient daher immer zur Pegelsteuerung der Noten. Weitere Informationen finden Sie unter ES2-Hüllkurven – Übersicht. Die Dynamikstufe kann außerdem über den Router von jeder Modulationsquelle moduliert werden. Kapitel 3 ES2 53 Dynamikstufe modulieren (Amp) 1 Legen Sie das folgende Modulations-Routing fest: Modulationsziel „AMP“, Quelle „LFO1“. 2 Vergewissern Sie sich, dass für „via“ die Einstellung „Off“ ausgewählt wurde. 3 Passen Sie die Einstellungen für LFO an. Ein Tremolo-Effekt mit einem periodisch geänderten Pegel wird erzeugt, der auf dem aktuellen Wert für „LFO 1 Rate“ basiert. Optimierte ES2-Sounds mit Sine Level Mit dem Sine Level-Drehregler kann die Sinuswelle (bei der Frequenz von Oszillator 1) unter Umgehung der Filter direkt in der Dynamikstufe hinzugemischt werden. Selbst wenn Sie durch eine Hochpassfilterung den Grundton von Oszillator 1 ganz ausgeblendet haben, können Sie ihn mit diesem Parameter wieder zumischen. •• Auch wenn Oszillator 1 durch Oszillator 2 frequenzmoduliert ist (wenn Sie „FM“ mit dem Wave- Drehregler angehoben haben), wird hier nur die reine Sinuswelle dem Dynamikbereich zugemischt und nicht ein durch die Frequenzmodulation verzerrtes Signal. •• Jede Modulation der Tonhöhe von Oszillator 1, die im Router eingestellt wird, wirkt sich nun auf die Frequenz der Sinuswelle aus, die in dieser Stufe zugemischt wird. Hinweis: Der Drehregler „Sine Level“ eignet sich gut, um dem Klang Grundtönigkeit, Wärme und einen satten Bass zu verleihen. Insbesondere dünne Klänge können von diesem Parameter profitieren, vorausgesetzt Oszillator 1 spielt im Konzert der Oszillatoren tatsächlich den Grundton. Kapitel 3 ES2 54 ES2-Modulation ES2-Modulation – Übersicht Der ES2 bietet eine extrem große Anzahl an Modulationsquellen und Modulationszielen. Daher ist er ein außerordentlich flexibler Synthesizer, der ungewöhnliche Klänge erzeugen kann, die sich ständig weiterentwickeln, die wie Audio Loops klingen oder die sich einfach sehr ausdrucksstark spielen lassen. Modulation sources Click here to display the Vector Envelope. Planar Pad Modulation router •• Modulations-Router: Der Modulations-Router, oder kurz Router, verknüpft Modulationsquellen wie die Hüllkurve mit Modulationszielen wie den Oszillatoren und Filtern. Der Router enthält zehn Modulations-Routings, angeordnet in Spalten. Weitere Informationen finden Sie unter Verwenden des Modulation-Routers auf Seite 55. •• Modulationsquellen: Zu den Modulationsquellen gehören die LFOs und Hüllkurven. Näheres hierzu finden Sie unter ES2 LFO – Übersicht auf Seite 58 und ES2-Hüllkurven – Übersicht auf Seite 60. •• Vector-Hüllkurve: Die Vector-Hüllkurve ist eine extrem raffiniert aufgebaute loopfähige Multipoint-Hüllkurve, die zur Steuerung des Planar Pads und Dreiecks (Oszillatoren-Mischstufe) benutzt werden kann. Die Vector-Hüllkurve kann anstelle des Modulations-Routers in der Bedienoberfläche eingeblendet werden, indem Sie auf die Taste „Vector Envelope“ auf der rechten Seite des Routers klicken. Weitere Informationen finden Sie unter Verwenden der Vector-Hüllkurve auf Seite 63. •• Planar Pad: Das Planar Pad arbeitet als zweidimensionaler Controller, mit dem sich zwei frei zuweisbare Parameter gemeinsam steuern lassen. Es kann über die Vector-Hüllkurve gesteuert werden. Weitere Informationen finden Sie unter Verwenden von Planar Pad auf Seite 70. Kapitel 3 ES2 55 Modulations-Router im ES2 Verwenden des Modulation-Routers Der Modulations-Router (oder einfach Router) erstreckt sich quer über das Zentrum der ES2-Bedienoberfläche. Klicken Sie auf die Taste „Router“, um den Router anstelle der Vector- Hüllkurve einzublenden (diese beiden Komponenten teilen sich denselben Bereich auf der Bedienoberfläche). Sie können den Router bzw. die Vector-Hüllkurve durch Klicken auf das Dreiecksymbol zum Einblenden links unten im Abschnitt klicken. Wenn Synthesizer- Modulations-Routings für Sie etwas Neues sind, lesen Sie bitte unter Modulation – Übersicht auf Seite 454 nach. The modulation intensity slider divides into two halves when a via source is active. Modulation sources are shown at the bottom of each modulation routing. The modulation intensity slider is not divided when there is no active via source. Modulation targets are shown at the top of each modulation routing. Via sources are shown in the middle of each modulation routing. Auch eine große Auswahl an verschiedenen Modulationsquellen (Sources) lässt sich mit verschiedenen Modulationszielen (Targets) verknüpfen, wie bei einer manuellen Telefonzentrale mit dem Fräulein vom Amt oder bei einer Studio-Patchbay. Die Modulationsintensität (wie stark das Ziel von der Quelle beeinflusst wird) wird mit dem vertikalen Schieberegler rechts neben dem jeweiligen Modulations-Routing eingestellt. Die Intensität der Modulation kann wiederum auch moduliert werden: Der Parameter via bestimmt eine weitere Modulationsquelle, die die Intensität der Modulation regelt. Wenn „via“ aktiviert ist, können Sie obere und untere Grenzen für die Intensität der Modulation festlegen. Es können zehn solche Zuordnungen von Modulations-Routings (von Quelle, Via und Ziel) simultan erfolgen. Welchen der zehn Modulationswege Sie verwenden, ist unerheblich. Die verschiedenen Modulationsziele können sogar mehrfach ausgewählt werden. Sie können dieselben Quellen und dieselben „via“-Controller in verschiedenen Modulations-Routings simultan einsetzen. Einfaches Modulations-Routing erstellen 1 Wählen Sie in Einblendmenü „Target“ den Parameter aus, den Sie modulieren möchten. Kapitel 3 ES2 56 2 Wählen Sie im Einblendmenü „Source“ den Parameter aus, den Sie für die Modulation des Ziels verwenden möchten. 3 Bewegen Sie den Schieberegler „Intensity“, um eine feste Intensität für die Modulation festzulegen. Wenn „via“ aktiv ist, legt dieser Schieberegler die minimale Modulationsintensität fest. Modulations-Routing umgehen (Bypass) mm Klicken Sie auf die Taste „b/p“ ganz oben rechts im Modulations-Routing neben dem Parameter „Target“. Der Parameter „Bypass“ (b/p) aktiviert oder deaktiviert Modulationswege, ohne deren Einstellungen einzubüßen. Steuern der Modulationsintensität des ES2 mit „via“-Quellen In einem einfachen Modulations-Routing aus Ziel und Quelle können Sie eine feste Modulationsintensität einrichten, indem Sie den Schieberegler „Intensity“ rechts neben dem Routing vertikal verschieben. Dieser Reglerwert definiert immer eine konstante Modulationsintensität. Sie können eine weitere Modulationsquelle aus dem Einblendmenü „via“ auswählen, das die Modulationsintensität steuert. Wenn Sie einen anderen Wert als „off“ für „via“ auswählen, wird der Schieberegler „Intensity“ in zwei Hälften unterteilt. Jede dieser Hälften verfügt nun über ein eigenes Pfeilsymbol. •• Die obere Hälfte des Schiebereglers bestimmt die maximale Modulationsintensität bei voll aufgedrehtem via-Regler. •• Die untere Hälfte des Reglers bestimmt die minimale Modulationsintensität, wenn der „via“- Regler (z. B. das Modulationsrad) ganz heruntergedreht ist. •• Der Bereich zwischen den beiden Reglerhälften markiert den Modulationsbereich des via-Reglers. Kapitel 3 ES2 57 Modulations-Routing erzeugen, das eine „via“-Quelle enthält 1 Wählen Sie im Einblendmenü „Target“ ein Modulationsziel aus. 2 Wählen Sie im Einblendmenü „Source“ eine Modulationsquelle aus. 3 Wählen Sie über das Einblendmenü „via“ die Modulationsquelle aus, die Sie für die Regelung der Modulationsintensität verwenden möchten. 4 Bewegen Sie die obere Pfeilspitze des Intensity-Schiebereglers rechts vom Modulations-Routing in vertikaler Richtung, um die maximale Modulationsintensität einzustellen. 5 Bewegen Sie die untere Pfeilspitze des Intensity-Schiebereglers in vertikaler Richtung, um die minimale Modulationsintensität einzustellen. Bereich „via“ als Ganzes bewegen mm Bewegen Sie den Bereich vertikal (den Bereich zwischen den beiden Reglerhälften). Kapitel 3 ES2 58 Beide Pfeilspitzen bewegen sich gemeinsam. Wenn der Bereich zu klein ist, um ihn bewegen zu können, bewegen Sie mit der Maus einen nicht benutzten Bereich des Schiebereglers „Intensity“, um den Bereich zu bewegen. Modulationsintensität auf Null setzen mm Klicken Sie auf das Symbol mit der Null neben dem „via“-Parameter. Effekt der via-Modulationsquelle umkehren mm Klicken Sie auf den Parameter „via invert (inv)“ rechts neben dem „via“-Parameter. ES2 LFOs ES2 LFO – Übersicht Der ES2 integriert zwei LFOs mit mehreren Wellenformen. Beide stehen als Quellen im Router zur Auswahl. Der LFO 1 ist polyphon, d. h. die Modulationen der einzelnen Stimmen sind nicht phasenstarr. Außerdem ist der LFO 1 zum Tastenanschlag synchronisiert: Jedes Mal, wenn Sie eine Taste anschlagen, startet die LFO 1 Modulation der entsprechenden Stimme von Null. Um diese nicht phasenstarre Charakteristik besser zu verstehen, stellen Sie sich vor, dass ein Akkord auf der Klaviatur gespielt wird. Wenn LFO 1 beispielsweise zur Pitch-Modulation genutzt wird, könnte die Tonhöhe einer Stimme nun steigen, während sie bei einer anderen Stimme fällt und bei einer dritten Stimme ihren Maximalwert erreicht. Das heißt, die Modulation ist unabhängig für jede Stimme bzw. Note. Die Key-Sync-Funktion stellt sicher, dass der LFO-Zyklus immer bei Null beginnt, wodurch die Modulation konsistenter wird. Wenn die LFO-Wellenformdurchgänge nicht in dieser Form synchronisiert werden, klingen einzelne Noten-Modulationen unsauber. •• LFO 1 ist für die Regelung der Tonhöhe aller drei Oszillatoren vorkonfiguriert. Er kann gleichzeitig für die Modulation anderer Parameter verwendet werden. •• Der LFO 1 kann dank eines eingebauten Hüllkurvengenerators auch automatisch ein- oder ausgeblendet werden. •• Der LFO 2 ist monophon, d. h. die Modulation ist für alle Stimmen gleich. Stellen Sie sich beispielsweise vor, dass ein Akkord auf dem Keyboard gespielt wird. Wenn LFO 2 zur Pitch-Modulation genutzt wird, steigt und fällt die Tonhöhe aller Stimmen in dem gespielten Akkord synchron. Der LFO 2 eignet sich besonders zum Erzeugen von rhythmischen Modulationseffekten, die auch während der Änderungen des Projekttempos im Takt bleiben. Kapitel 3 ES2 59 LFO-Parameter •• Schieberegler „LFO 1 EG“: Bewegen Sie den Schieberegler, um zu bestimmen, wie lange es dauert, bis die LFO-Modulation ein- oder ausgeblendet wird. Der Wert wird in Millisekunden unterhalb des Reglers angezeigt. Klicken Sie auf die Null, um den Hüllkurvengenerator LFO 1 auszuschalten. •• Schieberegler „LFO 1 Rate“: Verschieben Sie den Schieberegler, um die Frequenz (Geschwindigkeit) der Modulation von LFO 1 einzustellen. Der Wert wird in Hertz (Hz) unterhalb des Reglers angezeigt. •• Tasten „LFO 1 Wave“: Wählen Sie die Wellenform aus, die durch LFO 1 verwendet wird. Weitere Informationen finden Sie unter LFO-Wellenformen im ES2 auf Seite 59. •• Schieberegler „LFO 2 Rate“: Verschieben Sie den Schieberegler, um die Frequenz der Modulation von LFO 2 einzustellen. LFO 2 kann mit dem Tempo der Host-Anwendung synchronisiert werden. LFO-Wellenformen im ES2 Wählen Sie eine Wellenform für LFO 1 oder LFO 2 mit den Tasten „LFO Wave“ aus. Die Tabelle unten erklärt, welche Auswirkungen diese Wellenformen auf Klänge haben. Tipp: Probieren Sie diese Wellenformen mit einem aktiven Modulations-Routing für Pitch123 (Tonhöhe aller drei Oszillatoren) aus. Wellenform Anmerkungen Dreieck Geeignet für Vibrato-Effekte Sägezahn Geeignet für Helikopter- und Space-Gun-Sounds. Intensive Modulationen der Oszillator-Frequenzen durch den negativen Sägezahn führen zu einem Blubbern. Intensive Sägezahn-Modulationen für „Cutoff“ und „Resonance“ im Lowpass-Filter sorgen für rhythmische Effekte. Die umgekehrte Sägezahn-Wellenform stellt einen unterschiedlichen Startpunkt für den Modulationszyklus bereit. Rechteck Rechteckwellen bewirken ein regelmäßiges Wechseln des LFO zwischen zwei Werten. Die obere Einstellung wechselt zwischen einem positiven Wert und dem Wert Null. Die untere schwankt zwischen einem positiven und negativen Wert gleichen Betrags oberhalb/unterhalb von Null. Ein interessanter Effekt ergibt sich übrigens, wenn Sie die Modulationsintensität einer Modulation von Pitch123 so bemessen, dass die Tonhöhe immer um den Wert einer musikalischen Quinte hin- und herspringt. Hierfür bietet sich die obere der beiden Rechteckwellen an. Sample & Hold Die unteren zwei LFO-Wellenformen geben zufällige Werte aus. Diese werden in regelmäßigen Zeitabständen ausgegeben, die durch die LFO-Frequenz bestimmt werden. Die obere Zufalls-Wellenform springt zwischen Zufallswerten um, schaltet also direkt zwischen diesen Werten um. Die untere Zufalls-Wellenform wird geglättet, was zu gleitenden Änderungen der Werte führt. Der Begriff „Sample & Hold“ (S & H) leitet sich von einem technischen Verfahren ab, bei dem einem Rauschsignal in regelmäßigen Zeitabständen Proben (Samples) entnommen werden. Die Spannung dieser Samples wird dann bis zur Entnahme des nächsten Samples gehalten. Tipp: Eine zufällige Modulation von Pitch123 führt zu einem Effekt, der unter dem Namen „Zufallstonmustergenerator“ oder „Sample & Hold“ bekannt ist. Probieren Sie eine sehr schnelle und intensive Modulation sehr hoher Noten aus. Sie kennen diesen Sound-Effekt aus vielen Science-Fiction-Filmen. Kapitel 3 ES2 60 ES2-LFOs verwenden Mit den ES2 LFO s erzeugen Sie verzögerte Modulationen, freie Modulationen und Modulationen, die mit Ihrem Hostprogramm synchronisiert werden. LFO 1-Modulations-Fade-Zeit einstellen mm Blenden Sie die LFO-Modulation wie folgt ein: Wählen Sie einen positiven Wert für „LFO 1 EG“ aus. Je höher der Wert, desto länger ist die Verzögerungszeit. mm Blenden Sie die LFO-Modulation wie folgt aus: Wählen Sie einen negativen Wert für „LFO 1 EG“ aus. Sie erfolgt umso schneller, je weiter Sie den Regler nach unten bewegen. Verzögertes Vibrato erzeugen LFO-Hüllkurven werden oft für ein verzögert einsetzendes Vibrato verwendet. Viele Instrumentalisten und Sänger intonieren jede längere Note so. 1 Bewegen Sie den Regler „LFO 1 EG“ in die obere Hälfte (Delay) und modulieren Sie im Router das Target „Pitch123“ durch die Source „LFO1“. 2 Belassen Sie es bei einer sehr dezenten Modulationsintensität. 3 Wählen Sie eine „Rate“ für LFO 1 von ungefähr 5 Hz. 4 Wählen Sie als Wellenform des LFO 1 die Dreieckwelle. Freie Rate für LFO 2 einstellen mm Wählen Sie einen Wert in der oberen Hälfte des Schiebereglerbereichs von „LFO 2 Rate“ aus, um LFO 2 frei zu betreiben. Die Rate wird in Hertz angezeigt. Rate für LFO 2 mit dem Song-Tempo synchronisieren mm Wählen Sie einen Wert in der unteren Hälfte des Schiebereglerbereichs von „LFO 2 Rate“ aus, um LFO 2 mit dem Host-Anwendungstempo zu synchronisieren. Die Geschwindigkeit (“Rate“) wird in rhythmischen Werten angezeigt (wenn die Synchronisation zum Projekttempo aktiviert ist). Der Wertebereich erstreckt sich von einer 64stel-Note bis hin zu 32 Takten. Triolische und punktierte Notenwerte sind ebenfalls verfügbar. ES2-Hüllkurven ES2-Hüllkurven – Übersicht Jede Stimme im ES2 verfügt über drei Hüllkurvengeneratoren. Diese werden auf der Bedienoberfläche und im Router als „ENV 1“, „ENV 2“ und „ENV 3“ angezeigt. Zusätzlich enthält der ES2 die ausgeklügelte Vector-Hüllkurve. Weitere Informationen finden Sie unter Verwenden der Vector-Hüllkurve. Die Herkunft des Begriffs „Hüllkurvengenerator“ und seine Funktionsweise sind unter Amplifier- Hüllkurve – Überblick auf Seite 452 erläutert. Kapitel 3 ES2 61 Die Parameter von ENV 2 und ENV 3 sind identisch. ENV 3 bestimmt stets den Pegelverlauf einer jeden Note. ENV 3 ist gewissermaßen mit dem Modulationsziel „AMP“ des Routers fest verdrahtet. ENV 2 regelt die Cutoff-Frequenz von beiden ES2-Filtern. Hinweis: Alle Hüllkurven können zum gleichzeitigen Regeln mehrerer Parameter verwendet werden. Hüllkurve 1 von ES2 Obwohl Hüllkurve 1 (ENV 1) einfach wirkt, ist sie für eine ganze Reihe von Synthesizer-Funktionen nützlich. Decay/Release Mode button Trigger Modes menu Attack via Velocity slider Parameter von Hüllkurve 1 •• Einblendmenü „Trigger Modes“: Wählen Sie einen Modus aus, um das Trigger-Verhalten von ENV 1 zu definieren. •• Poly: Der Hüllkurvengenerator verhält sich so, wie man es von einem modernen polyphonen Synthesizer erwartet: Jede Stimme hat ihre eigene Hüllkurve. •• Mono Ein einzelner Hüllkurvengenerator moduliert alle Stimmen auf dieselbe Weise. Alle Noten müssen abgesetzt werden, bevor die Hüllkurve neu ausgelöst (getriggert) werden kann. Beim Legato-Spiel oder wenn mindestens eine Taste gedrückt ist, wird der Hüllkurvenverlauf nicht neu gestartet. •• Retrig: Ein einzelner Hüllkurvengenerator moduliert alle Stimmen auf dieselbe Weise. Die Hüllkurve wird durch jede angeschlagene Note neu ausgelöst, auch wenn andere Noten gehalten werden. Alle bereits gehaltenen Noten sind von der neu ausgelösten Hüllkurve gleichermaßen betroffen. •• Schieberegler „Attack via Velocity“: Der Regler für die Attack-Zeit ist zweigeteilt. Der untere Schieberegler bestimmt die Attack-Zeit bei hartem Anschlag (Maximum). Der obere Schieberegler bestimmt die Attack-Zeit bei sanftem Anschlag (Minumum). Bewegen Sie den Zeiger bei gedrückter Maustaste im Bereich zwischen den Reglerhälften, um so beide Reglerhälften gleichzeitig zu bewegen. Wenn dieser Abschnitt zu klein ist, klicken Sie auf einen unbenutzten Bereich des Reglerwegs und verschieben Sie ihn vertikal. •• Modustaste „Decay/Release“: Schaltet ENV 1 zwischen einer Attack/Decay- oder einer Attack/ Release-Hüllkurve um. Die Tastenbezeichnung ändert sich, um den jeweils aktivierten Modus wiederzugeben (D=Decay, R=Release). •• Im Attack/Decay-Modus: Der Pegel fällt nach Ablauf der Attack-Phase auf Null ab, ganz gleich, ob die Note gehalten wird oder nicht. Dies erfolgt bei gleicher Geschwindigkeit, auch wenn die Taste losgelassen wird. Die Decay-Zeit wird mit dem Regler „D“ (Decay) bestimmt. •• Im Attack/Release-Modus: Die Hüllkurve verharrt nach Ablauf der Attack-Phase auf ihrem vollen Pegel, solange die Taste gehalten wird. Nach dem Loslassen der Taste fällt der Pegel über den Zeitraum ab, der mit dem Regler „R“ (Release) festgelegt ist. Kapitel 3 ES2 62 Hüllkurven ENV 2 und 3 des ES2 Die Ausstattung von ENV 2 und ENV 3 ist identisch, allerdings ist ENV 3 stets für den Pegelverlauf der Note zuständig, um die Dynamikstufe zu modulieren. ENV2 ist für das Regeln der Cutoff- Frequenz von beiden Filtern vorkonfiguriert. Sowohl ENV 2 als auch ENV 3 können auch gleichzeitig als Quellen im Router verwendet werden. Die Zeitparameter stehen auch als Modulationsziele (Targets) im Router zur Verfügung. Attack Time slider is divided into two halves that determine the attack time at maximum and minimum velocities. Click the center symbol to set the Sustain Time slider to its center value. Sustain Time and Sustain Level are set independently in the ES2. Parameter von Hüllkurve 2 und 3 •• Schieberegler „Attack“: Bestimmt die Zeit, in der der Pegel einer Note von der Amplitude Null bis zur eingestellten Amplitude ansteigt. Die Attack-Drehregler der Hüllkurven ENV 2 und ENV 3 sind zweigeteilt. •• Die untere Hälfte des Reglers bestimmt die Attack-Zeit bei hartem Anschlag (Velocity = 127). Die obere Hälfte des Reglers bestimmt die Einschwingzeit bei sanftem Anschlag (Velocity = 1). Bewegen Sie den Zeiger bei gedrückter Maustaste im Bereich zwischen den Reglerhälften, um so beide Reglerhälften gleichzeitig zu bewegen. Wenn dieser Abschnitt zu klein ist, klicken Sie auf einen unbenutzten Bereich des Reglerwegs und verschieben Sie ihn vertikal. •• Schieberegler „Decay“: Bestimmt die Zeit, in der der Pegel einer gehaltenen Note nach Beendung der Attack-Phase auf den Sustain-Pegel zurückfällt. •• Ist für „Sustain“ der maximale Wert gewählt, hat „Decay“ keinen Effekt. •• Ist für „Sustain“ der minimale Wert gewählt, definiert „Decay“ die Dauer oder Ausschwingzeit der Note. •• Schieberegler „Sustain“ und „Sustain Time“: Die zwei Sustain-Parameter beeinflussen sich gegenseitig. Der eine steuert den Sustain-Pegel, während der andere die Sustain-Dauer festlegt. Weitere Informationen finden Sie unter Sustain-Parameter von Hüllkurve 2 und 3 des ES2 auf Seite 63. •• Schieberegler „(R) Release Time“: Bestimmt die Zeit, in der der (Sustain-)Pegel nach dem Loslassen der Taste auf den Wert Null fällt. •• Schieberegler „Vel“ (Velocity Sensitivity): Bestimmt die Anschlagsdynamik der gesamten Hüllkurve. In der maximalen Einstellung gibt die Hüllkurve nur bei maximalem Anschlag ihren vollen Pegel aus. Bei weicherem Anschlag ändern sich die Hüllkurvenpegel proportional: Bei einer Anschlagsstärke von 50 % wird auch jeder Parameter für den Hüllkurvenpegel halbiert. Kapitel 3 ES2 63 Sustain-Parameter von Hüllkurve 2 und 3 des ES2 Wenn für den Schieberegler des Zeitparameters „Sustain Time“ der Mittelwert gewählt wurde, verhält sich der Sustain-Pegel-Schieberegler (S) wie der von ADSR-Hüllkurven anderer Synthesizer. In diesem Fall definiert der Sustain-Pegel-Schieberegler den Pegel, auf dem der Ton bis zum Loslassen der Taste verharrt, nachdem die Attack- und Decay-Phasen abgelaufen sind. Mit dem Regler „Sustain“ wird die Zeit bestimmt, die der Pegel benötigt, um vom Sustain-Pegel auf Null abzufallen oder wieder bis zum Maximum anzusteigen: •• Einstellungen in der unteren Hälfte des Reglers „Sustain Time“ (Fall) bestimmen die Zeit, die benötigt wird, bis der Pegel vom Sustain-Pegel auf Null abfällt. Je niedriger der Regler eingestellt ist, desto schneller fällt der Pegel ab. •• Einstellungen in der oberen Hälfte (Rise) bestimmen die Zeit, die benötigt wird, bis der Pegel vom Sustain-Level bis zum Maximum ansteigt. Je höher der Regler eingestellt ist, desto schneller steigt der Pegel an. Instrumentenverhalten über Decay-Modulation der Hüllkurve emulieren 1 Legen Sie das folgende Modulations-Routing fest: Modulationsziel „Env3Dec“, Quelle „Kybd“. 2 Vergewissern Sie sich, dass der Schieberegler „Intensity“ auf einen negativen Wert eingestellt ist. 3 Passen Sie die Einstellungen für Env3 an. Dieses Routing simuliert das Verhalten von Pianos und Zupfinstrumenten, bei denen hohe Noten schneller abfallen als niedrige Noten. Verwenden der Vector-Hüllkurve Bei der Vector-Hüllkurve handelt es sich um eine loopfähige Multipoint-Steuerquelle. Sie dient ausschließlich zur Echtzeitsteuerung der Zeigerbewegungen in der Oszillatoren-Mischstufe (Dreieck) sowie des Planar Pads. Die Vector-Hüllkurve nutzt ebenfalls den Platz, der durch den Modulations-Router in Anspruch genommen wird. Jede wiedergegebene Stimme verfügt über eine eigene Vector-Hüllkurve, die mit dem Beginn einer jeden Note neu ausgelöst (getriggert) wird. Möglicherweise ist die Vector-Hüllkurve – ebenso wie Planar Pad und Triagle – nicht gleich verständlich. Durch Experimentieren kann jedoch schnell herausgefunden werden, wie einfach diese Funktionen verwendet werden können. Durch die Kombination mit anderen Synthese-Optionen können Sie einzigartige Sounds erzeugen, die sich – im wahrsten Sinn des Wortes – bewegen. Vector Mode Planar Pad Targets Env Mode Loop Mode Loop Rate Time Scaling Solo Point Vector Envelope Curve Triangle Planar Pad Kapitel 3 ES2 64 Vector-Hüllkurve anzeigen mm Klicken Sie auf die Taste „Vector Envelope“ rechts neben dem Router, um die Vector-Hüllkurve anzuzeigen. Vector-Hüllkurve ein- oder ausschalten mm Aktivieren der Vector-Hüllkurve: Deaktivieren Sie die Taste „Solo Point“. mm Dektivieren der Vector-Hüllkurve: Aktivieren Sie die Taste „Solo Point“. Wenn „Solo Point“ aktiviert ist, sind nur die aktuell eingestellten Positionen für Triangle und Planar Pad aktiv. Planar Pad und Triangle mit der Vector-Hüllkurve regeln mm Wählen Sie im Einblendmenü „Vector Mode“ das Ziel für die Vector-Hüllkurve aus – Planar Pad, Triangle oder beide. •• Off: Die Vector-Hüllkurve steuert weder Triangle noch Planar Pad. Sie ist vollständig abgeschaltet. Sie können die Zeigersymbole für Triangle und Planar Pad manuell einstellen. •• Mix: Die Vector-Hüllkurve steuert Triangle, jedoch nicht Planar Pad. •• XY: Die Vector-Hüllkurve steuert Planar Pad, jedoch nicht Triangle. •• Mix+XY: Die Vector-Hüllkurve steuert sowohl Triangle als auch Planar Pad. Kontextmenü der Vector-Hüllkurve verwenden 1 Klicken Sie mit der rechten Maustaste bzw. bei gedrückter Taste „Ctrl“ auf eine beliebige Stelle in der Vector-Hüllkurve, um ein Kontextmenü mit Befehlen und Funktionen zu öffnen. 2 Wählen Sie eine beliebige Option in dem Menü, um den Vorgang auszuführen. Punkte, Zeiten und Loops der Vector-Hüllkurve Vector-Hüllkurvenpunkten verwenden Die Zeitachse der Vector-Hüllkurve verläuft von links nach rechts. Loop point is shown on row below time axis. Sustain point is shown on row above time axis. Vector Envelope time axis Point 1 Point time value shown in milliseconds (ms). Auf der Zeitachse können bis zu 16 Punkte dargestellt werden (in der Abbildung oben werden 10 angezeigt). Jeder Punkt kann die Positionen der Zeigersymbole in Triangle und Planar Pad steuern. Die Punkte sind von links nach rechts entlang der Zeitachse fortlaufend nummeriert. Es sind immer mindestens drei Punkte: Punkt 1 ist der Startpunkt, Punkt 2 ist als Sustain-Punkt definiert und Punkt 3 ist der Endpunkt. Kapitel 3 ES2 65 Jeder beliebige Punkt kann zum Sustain-Punkt erklärt werden. Wenn eine gespielte Note ausreichend lange gehalten wird und kein Loop aktiv ist, stoppt jede Hüllkurvenbewegung, sobald der Sustain-Punkt erreicht ist. Der Sustain-Punkt wird so lange gehalten, bis die Taste losgelassen wird (bis zum MIDI-Note-Off-Befehl). Jeder beliebige Punkt kann zum Loop-Punkt erklärt werden. Der geloopte Bereich ist der Bereich zwischen Sustain- und Loop-Punkt. Zwischen diesen Punkten können Sie weitere Punkte anlegen, welche die Bewegungen der Zeigersymbole im Planar Pad und Triangle beschreiben. Je mehr Punkte Sie definieren, desto komplexer können Sie den Hüllkurvenverlauf gestalten. Punkt auswählen mm Klicken Sie auf den Punkt, um ihn auszuwählen. Jetzt können Sie ihn bearbeiten. Neuen Punkt erzeugen mm Klicken Sie bei gedrückter Umschalttaste zwischen zwei Punkte. Dabei wird der Bereich zwischen den beiden bereits vorhandenen Punkten an der angeklickten Position geteilt. Die Summe der beiden neuen Segmentzeiten entspricht dabei der ursprünglichen Segmentzeit. Dies gewährleistet, dass alle nachfolgenden Punkte ihre absoluten Zeitpositionen beibehalten. Bereits angelegte Positionen der Zeigersymbole für Triangle und Planar Pad werden fixiert, wodurch sichergestellt ist, dass neu erzeugte Punkte keine Auswirkung auf bestehende Bewegungen haben. Punkt löschen mm Klicken Sie bei gedrückter Taste „Ctrl“ auf den Punkt. Zum Standardwert für einen Punkt zurückkehren Führen Sie einen der folgenden Schritte aus: mm Halten Sie die Wahltaste gedrückt und klicken Sie auf Triangle. Der Zeiger wird auf die Mittelposition von Triangle zurückgesetzt, wobei alle Oszillatoren auf demselben Pegel bleiben. mm Klicken Sie bei gedrückter Wahltaste auf Planar Pad. Der Zeiger wird auf die Mittelposition von Planar Pad zurückgesetzt. Die Werte für X und Y werden auf Null gesetzt. Solo- und Sustain-Punkte der Vector-Hüllkurve verwenden Sie verwenden die Taste „Solo Point“, um die Vector-Hüllkurve ein- oder auszuschalten. Wenn die Taste „Solo Point“ eingeschaltet ist, finden keine dynamischen Modulationen durch die Vector- Hüllkurve statt. In diesem Szenario sind die aktuell sichtbaren Zeigerpositionen in Triangle und Planar Pad dauerhaft aktiv. Dabei handelt es sich um die Zeigerpositionen des aktuell ausgewählten Punkts auf der Vector-Hüllkurve. Wenn Sie einen anderen Punkt der Vector-Hüllkurve durch Klicken auswählen, werden die Zeigerpositionen in Triangle und Planar Pad auf Ihre Auswahl aktualisiert. Wenn die Taste „Solo Point“ eingeschaltet ist, dann ist dieser neu ausgewählte Punkt der Solo-Punkt. Hinweis: Sie können die Vector-Hüllkurvenmodulation des Planar Pads unabhängig abschalten, indem Sie den Vector-Modus auf „off“ einstellen. Weitere Informationen finden Sie unter Verwenden der Vector-Hüllkurve. Kapitel 3 ES2 66 Jeder beliebige Punkt kann zum Sustain-Punkt erklärt werden. Wenn die Note ausreichend lang gehalten wird und kein Loop aktiviert ist, bleibt die Hüllkurve beim Sustain-Punkt stehen. Der Sustain-Punkt wird so lange gehalten, bis die Taste losgelassen wird (bis zum MIDI-Note-Off-Befehl). Punkt als Sustain-Punkt definieren mm Klicken Sie oberhalb des ausgewählten Punkts auf die türkise Leiste. Der Sustain-Punkt wird durch ein „S“ auf der türkisen Leiste zwischen Punkt und entsprechender Nummer angezeigt. Vector-Hüllkurven-Loops einrichten Die Vector-Hüllkurve kann im One-Shot-Modus durchlaufen, solange die Note gehalten wird. Alternativ kann sie so eingestellt werden, dass sie eine definierte Anzahl von Wiederholungen durchläuft oder unendlich wiederholt wird – ähnlich wie eine LFO-Modulation. Erzeugt werden diese Wiederholungen mit den Loop-Funktionen. Obwohl die Loop-Parameter möglicherweise an die Schleifenparameter erinnern, die Sie im Zusammenhang mit Samples kennengelernt haben, gibt es jedoch erhebliche Unterschiede. Die Vector-Hüllkurve gibt lediglich Steuersignale aus, die zur Bewegung der Zeigersymbole in Triangle und Planar Pad benutzt werden. Die Audiosignale des ES2 werden keinesfalls geloopt. Jeder beliebige Punkt kann zum Loop-Punkt erklärt werden. Vorausgesetzt die Note wird lange genug gehalten, können Abschnitte der Hüllkurve wiederholt oder geloopt werden. Der geloopte Bereich ist der Bereich zwischen Sustain- und Loop-Punkt. Zwischen diesen Punkten können Sie nun weitere Punkte definieren, welche die Bewegungen der Zeigersymbole in Triangle und Planar Pad beschreiben. Punkt als Loop-Punkt definieren mm Klicken Sie unterhalb des ausgewählten Punkts auf die türkise Leiste. Der Loop-Punkt wird durch ein L in der unteren Leiste angezeigt. Loop-Modus der Vector-Hüllkurve einstellen mm Wählen Sie einen der folgenden Loop-Modi für die Vector-Hüllkurve aus: „Off“, „Forward“, „Backward“ und „Alternate“. •• Off: Wenn „Loop Mode“ auf „Off“ steht, läuft die Vector-Hüllkurve ohne Wiederholung von Anfang bis Ende ab, insofern der Ton lang genug gehalten wird, um alle Hüllkurvenphasen zu durchlaufen. Die übrigen Loop-Parameter werden deaktiviert. Kapitel 3 ES2 67 •• Forward: Wenn „Loop Mode“ auf „Forward“ gesetzt ist, durchläuft die Vector-Hüllkurve all ihre Punkte vom Anfang bis zum Sustain-Punkt, um von dort den Bereich zwischen Sustain-Punkt und Loop-Punkt zyklisch von vorne zu wiederholen. •• Backward: Wenn „Loop Mode“ auf „Backward“ gesetzt ist, durchläuft die Vector-Hüllkurve all ihre Punkte vom Anfang bis zum Sustain-Punkt, um von dort den Bereich zwischen Sustain- Punkt und Loop-Punkt zyklisch von hinten zu wiederholen. •• Alternate: Wenn „Loop Mode“ auf „Alternate“ gesetzt ist, läuft die Vector-Hüllkurve vom Anfang bis zum Sustain-Punkt und schaltet dann periodisch vor zum Loop-Punkt und dann wieder zurück zum Sustain-Punkt – wobei die Bewegungsrichtung zwischen „Forward“ und „Backward“ wechselt. Click here to choose a Loop mode. Loop-Rate der Vector-Hüllkurve einstellen Führen Sie einen der folgenden Schritte aus: mm Verschieben Sie die grüne Markierung in der Mitte des Loop-Rate-Balkens nach links oder rechts. mm Verschieben Sie das Feld „as set“ vertikal (vgl. Abbildung unten). Der Loop der Vector-Hüllkurve kann mit definierter Geschwindigkeit den Zyklus durchlaufen. Er kann auch mit dem Tempo der Host-Anwendung synchronisiert werden. •• As set: Wenn Sie den Parameter „Loop Rate“ auf „as set“ setzen, entspricht die Länge der Schleife der Summe der Zeiten zwischen Sustain- und Loop-Punkt. Klicken Sie auf das Feld „as set“ unterhalb des Reglers „Rate“, um diese Funktion auszuwählen. •• Rhythmic: Wenn Sie den Parameter „Loop Rate“ auf einen rhythmischen Wert (sync) einstellen, indem Sie die Loop-Rate-Markierung in die linke Hälfte des Regelwegs verschieben, folgt die Loop Rate dem Projekttempo. Der Wertebereich erstreckt sich von 32 Takten bis zum Notenwert einer 64stel Triole. •• Free: Sie können auch eine freie Loop Rate einstellen, indem Sie die Loop-Rate-Markierung in die rechte Hälfte des Regelwegs (free) verschieben. Der Wert gibt an, wie viele Schleifendurchgänge pro Sekunde erfolgen. Hinweis: Wenn die Loop Rate nicht auf „as set“ steht, werden bei aktiviertem Loop Mode („Forward“, „Backward“ oder „Alternate“) die Zeiten der Segmente zwischen Loop- und Sustain-Punkt sowie ggf. die Zeit „Loop Smooth“ anstatt in Millisekunden in Prozent der Schleifendauer angezeigt. Weiche Loop-Übergänge für die Vector-Hüllkurve einstellen mm Wenn Sie für „Loop Mode“ den Wert „Forward“ oder „Backward“ gewählt haben, gibt es einen Übergang vom Sustain-Punkt zum Loop-Punkt. Aktivieren Sie „Loop Smooth“, um diesen Übergang auszugleichen und abrupte Positionsänderungen zu vermeiden. •• Wenn „Loop Rate“ auf „Sync“ oder „Free“ steht, wird die Loop-Smooth-Zeit in Prozent der Loop-Dauer angegeben. Kapitel 3 ES2 68 •• Wenn „Loop Rate“ auf „as set“ eingestellt ist, wird die Loop-Smooth-Zeit in Millisekunden (ms) angegeben. Loop-Anzahl für eine Vector-Hüllkurve festlegen mm Der Loop-Durchgang der Vector-Hüllkurve kann eine festgelegte Anzahl von Malen wiederholt werden. Gemäß der festgelegten Anzahl an Wiederholungen läuft die Vector- Hüllkurve vom Sustain-Punkt weiter. Mögliche Werte sind „1“ bis „10“ sowie „infinite“ für die unendliche Wiederholung. Verhalten der Release-Phase der Vector-Hüllkurve Im Menü „Env Mode“ stehen zwei Optionen für die Release-Phase zur Auswahl: „Normal“ und „Finish“. Wenn im Menü „Env Mode“ der Modus „Normal“ ausgewählt ist und Sie eine gehaltene Taste loslassen (Note-Off-Befehl), geht die Vector-Hüllkurve in die Release-Phase über (die Phase nach dem Sustain-Punkt). Das heißt, dieser Übergang in die Release-Phase erfolgt von dem Punkt der Vector-Hüllkurve aus, an dem Sie die Taste losgelassen haben. Daraus ergeben sich folgende Möglichkeiten: •• Ist die Loop-Funktion ausgeschaltet, wird der Sustain-Punkt bei Erreichen so lange gespielt, wie Sie eine Taste gedrückt halten. •• Ist die Loop-Funktion aktiviert und liegt der Loop-Punkt vor dem Sustain-Punkt, wird die Loop (Schleife) so lange gespielt, wie Sie eine Taste gedrückt halten. •• Ist die Loop-Funktion aktiviert und liegt der Loop-Punkt hinter dem Sustain-Punkt, wird der Vector-Hüllkurven-Loop so lange in der Schleife gespielt, bis die gesamte Release-Phase des Sounds abgeschlossen ist, die mit dem Parameter „ENV 3 Release“ festgelegt ist. Wenn für „Env Mode“ der Modus „Finish“ ausgewählt ist und Sie eine gedrückte Taste loslassen, geht die Vector-Hüllkurve nicht sofort in die Release-Phase über. Stattdessen vollzieht sie ihren eingestellten Verlauf bis zum Endpunkt, unabhängig davon, ob Sie die Taste loslassen oder halten. Daraus ergeben sich folgende Möglichkeiten: •• Ist die Loop-Funktion ausgeschaltet, wird der Sustain-Punkt ignoriert. Die Vector-Hüllkurve durchläuft unabhängig davon, ob Sie die Taste halten oder loslassen, alle Punkte bis zum Endpunkt. •• Ist die Loop-Funktion eingeschaltet, vollzieht die Vector-Hüllkurve ihren eingestellten Verlauf bis zum Erreichen des Loop-Punkts und spielt den Loop, bis der Endpunkt erreicht ist, unabhängig davon, ob Sie die Taste loslassen oder halten. Dabei spielt es keine Rolle, ob der Loop- Punkt vor oder hinter dem Sustain-Punkt liegt. •• Ist die Loop-Funktion eingeschaltet und „Loop Count“ auf einen anderen Wert als „infinite“ eingestellt, läuft die Vector-Hüllkurve bis zu den nachfolgenden Punkten – nachdem sie die eingestellten Loop-Schleifen absolviert hat. Ist „Loop Count“ hingegen auf „infinite“ gesetzt, werden die Punkte nach der Schleife ignoriert. Kapitel 3 ES2 69 Kurvenformen für die Übergangspunkte der Vector-Hüllkurve Mit „Curve“ können Sie die Kurvenform zwischen den einzelnen Punkten bestimmen. Wählen Sie aus neun konvexen und neun konkaven Kurvenformen aus, plus „hold+step“ und „step+hold,“ mit denen sprunghafte Modulationen möglich sind. •• step+hold: Der Sprung findet zu Beginn des eingestellten Übergangs statt. •• hold+step: Der Sprung findet zum Ende des eingestellten Übergangs statt. Hinweis: Mit „hold+step“ lassen sich rhythmische Modulationen mit bis zu 15 Schritten verwirklichen. Zeiten für die Vector-Hüllkurve festlegen Bis auf den ersten Punkt, der mit dem Beginn der Note (dem Note-On-Befehl) zusammenfällt, hat jeder Punkt einen Parameter „Time“. Dieser Parameter beschreibt die Dauer, in welcher die Positionsmarkierung vom vorherigen zum aktuellen Punkt läuft. Die Zeiten werden normalerweise in Millisekunden (ms) angegeben. Zeitwert einstellen mm Bewegen Sie den numerischen Wert bei gedrückter Maustaste in vertikaler Richtung. Hinweis: Durch die Änderung des Zeitwerts ändern sich die absoluten Zeitpositionen aller nachfolgenden Punkte. Zeitwert ohne Änderung der absoluten Zeitpositionen der nachfolgenden Punkte einstellen mm Verschieben Sie den Parameter „Time“ bei gedrückter ctrl-Taste, um die Laufzeit zum nächsten Punkt zu verkürzen oder zu verlängern. Die Zeiteinstellung des darauf folgenden Punkts wird gleichzeitig um den entsprechenden Betrag angepasst. Dies bedeutet, dass dieser und die nachfolgenden Punkte ihre absoluten Zeitpositionen beibehalten. Verwenden der Zeitskalierung für die Vector-Hüllkurve Sie können die gesamte Vector-Hüllkurve dehnen und stauchen. Um beispielsweise die Geschwindigkeit der Vector-Hüllkurve zu verdoppeln, stellen Sie für die Zeitskalierung 50 % ein, anstatt die Zeitwerte für jeden einzelnen Punkt zu halbieren. Click here to change the time scale. •• Der Wertebereich für „Time Scaling“ reicht von 10 % bis 1000 %. Die Werte sind logarithmisch skaliert. •• Wenn für „Loop Rate“ der Wert „as set“ gewählt ist, beeinflusst die Skalierung auch den Loop. •• Wenn für „Loop Rate“ ein freier oder gesyncter Wert gewählt wurde, nimmt der Parameter „Time Scaling“ keinen Einfluss auf diese Einstellung. Kapitel 3 ES2 70 Zeitskalierung und Loop-Rate mit „Fix Timing“ normalisieren mm Klicken Sie auf „Fix Timing“, um den Wert für die Zeitskalierung mit allen Zeitparametern zu multiplizieren. Die Zeitskalierung wird auf 100 % zurückgesetzt. Es gibt keinen hörbaren Unterschied. Dabei handelt es sich einfach um ein Normalisierungsverfahren. Wenn „Loop Rate“ auf einen gesyncten Wert gesetzt wurde, schalten Sie die „Loop Rate“ durch Klicken auf „Fix Timing“ auf „as set“, wodurch die absolute Rate erhalten bleibt. Verwenden von Planar Pad Das Planar Pad basiert auf den beiden Achsen X (horizontal) und Y (vertikal). Zwei benutzerdefinierte Parameter können mit den X- und Y-Werten moduliert werden, damit Sie die Maus wie einen Joystick verwenden können. Die Achsen X und Y haben positive und negative Wertebereiche. Während Sie den Zeiger (das Quadratsymbol) verschieben, werden permanent Werte für beide Achsen ausgegeben. Vector Mode menu Vector Intensity parameters Vector Target menus Planar Pad Über die Target-Menüs für „Vector X“ und „Vector Y“ bestimmen Sie, welcher Parameter über die Zeigerbewegungen im Planar Pad moduliert wird. Diese Modulationsziele sind mit den im Router verfügbaren Modulationszielen identisch. Weitere Informationen finden Sie unter Oszillator-Modulationsziele im ES2 auf Seite 71, Filter-Modulationsziele im ES2 und Weitere ES2-Modulationsziele. Die Position (Koordinaten) des Zeigers im Planar Pad steht auch im Router über die Einträge „Pad-X“ und „Pad-Y“ in den Quellen und den via-Optionen zur Verfügung. Weitere Informationen finden Sie unter Referenz der Modulationsquellen im ES2 auf Seite 75 und unter Steuern der Modulationsintensität des ES2 mit „via“-Quellen auf Seite 56. Die maximale Intensität, die Empfindlichkeit, aber auch die Polarität der Modulation bestimmen Sie mit „Vector X Int“ und „Vector Y Int“. Modulationsintensität festlegen mm Ziehen Sie vertikal in den Int-Feldern für „Vector X“ und „Vector Y“. Verwenden Sie einen negativen Wert, um die Polarität der Modulation umzukehren. Kapitel 3 ES2 71 Referenz der Modulationsziele im ES2 Oszillator-Modulationsziele im ES2 Die folgende Tabelle zeigt alle Oszillator-relevanten Modulationsziele. Target Anmerkungen Pitch123 Moduliert die Frequenz (also die wahrgenommene Tonhöhe) aller drei Oszillatoren. Ein LFO als Source führt bei diesem Target zu Vibratound Sireneneffekten. Eine Hüllkurvenmodulation mit der Einstellung Null für Attack, kurzem Decay, Null für Sustain und kurzem Release als Quelle wird für synthetische Tomtom- und Kickdrum-Sounds benötigt. Pitch 1 Moduliert die Frequenz (Tonhöhe) von Oszillator 1. Sehr dezente Hüllkurvenmodulationen führen dazu, dass sich das Ausmaß der Verstimmung gegenüber den anderen Oszillatoren mit der Zeit verändert, wenn Oszillator 1 zusammen mit einem anderen (nicht modulierten) Oszillator erklingt. Das gilt auch für andere Pitch-Ziele und ist besonders für Synthesizer-Bläserklänge empfehlenswert. Pitch 2 Moduliert die Frequenz (Tonhöhe) von Oszillator 2. Pitch 3 Moduliert die Frequenz (Tonhöhe) von Oszillator 3. Detune Moduliert das Ausmaß der Verstimmung zwischen allen drei Oszillatoren. Bitte beachten Sie, dass die Empfindlichkeit für alle Tonhöhen-Targets von der Modulationsintensität abhängt. Die Abstufungen sind in der Liste unten aufgeführt und erlauben es Ihnen, sehr dezente Vibrati im Cent-Bereich (1/100 Halbton) und große Tonhöhensprünge im Oktavbereich zu erzeugen. •• Modulationsintensität von 0 bis 8: Die Schrittweite beträgt 1,25 Cents. •• Modulationsintensität von 8 bis 20: Die Schrittweite beträgt 3,33 Cents. •• Modulationsintensität von 20 bis 28: Die Schrittweite beträgt 6,25 Cents. •• Modulationsintensität von 28 bis 36: Die Schrittweite beträgt 12,5 Cents. •• Modulationsintensität von 36 bis 76: Die Schrittweite beträgt 25 Cents. •• Modulationsintensität von 76 bis 100: Die Schrittweite beträgt 100 Cents. Daraus lassen sich folgende einfache Regeln für die Modulationsintensität ableiten: •• Eine Intensität von 8 entspricht einer Tonhöhenänderung von 10 Cent. •• Eine Intensität von 20 entspricht einer Tonhöhenänderung von 50 Cent (ein Viertelton). •• Eine Intensität von 28 entspricht einer Tonhöhenänderung von 100 Cent (ein Halbton). •• Eine Intensität von 36 entspricht einer Tonhöhenänderung von 200 Cent (zwei Halbtöne). •• Eine Intensität von 76 entspricht einer Tonhöhenänderung von 1.200 Cent (eine Oktave). •• Eine Intensität von 100 entspricht einer Tonhöhenänderung von 3.600 Cent (drei Oktaven). Kapitel 3 ES2 72 Target Anmerkungen OscWaves Je nachdem, welche Wellenformen in den einzelnen Oszillatoren gewählt wurden, modulieren Sie mit diesem Target: •• Pulsbreite der Rechteck- oder Pulswelle •• Intensität der Frequenzmodulation (nur Oszillator 1) •• Klangfarbe des Rauschens (nur Oszillator 3) •• Position der Digiwaves „OscWaves“ wirkt auf alle Oszillatoren gleichzeitig. Weitere Informationen zu den Effekten dieser Modulationen finden Sie unter Pulsbreitenmodulation im ES2 auf Seite 36, Frequenzmodulation im ES2 auf Seite 37, Verwenden des ES2-Noise-Generators auf Seite 39 und Verwenden von ES2-Digiwaves auf Seite 38. Osc1Wave Je nachdem, welche Wellenform für Oszillator 1 ausgewählt ist, können Sie die Impulsbreite von rechteckigen und Impulswellen, den Umfang der Frequenzmodulation oder die Digiwave-Position steuern. In klassischen FM-Synthesizern wird der FM-Umfang in Echtzeit von Velocity-empfindlichen Hüllkurvengeneratoren gesteuert. Wählen Sie hierfür eine der ENVs als Quelle. Osc2Wave Wie Osc1Wave, außer dass Oszillator 2 keine FM bietet. Bitte beachten Sie, dass die Pulsbreitenmodulation sogar mit der synchronisierten und mit der ringmodulierten Rechteckwelle funktioniert. Osc3Wave Siehe Osc1Wave und Osc2Wave; entsprechend für Oszillator 3, der weder Ringmodulation noch FM bietet. Dafür kann die Klangfarbe des Rauschens (Noise) von Oszillator 3 mit diesem Parameter moduliert werden. OscWaveB Die Übergänge zwischen Digiwaves während einer Wavetable- Modulation (bei der Sie zwischen verschiedenen Digiwaves umschalten) verläuft immer weich. Sie können die Form des Übergangs mithilfe des Ziels „OscWaveB“ dauerhaft zwischen weich und hart modulieren. Dieses Ziel gilt für alle Oszillatoren. Osc1WaveB Wenn die Wavetable-Modulation für Digiwaves aktiviert ist (und „Osc1Wav“ verwendet wird), können Sie die Art der Überblendung zwischen Digiwaves bei Oszillator 1 modulieren. Wenn Sie Oszillator 1 frequenzmodulieren, ergeben sich durch das Ziel „Osc1WaveB“ wesentlich höhere FM-Intensitäten als durch die Ziele „Osc1 FM“ oder „Osc1Wave“. Osc2WaveB Identisch wie oben für eine Digiwave, die das Ziel „ Osc2Wav“ nutzt. Osc3WaveB Identisch wie oben für eine Digiwave, die „Osc3Wav“ als Ziel nutzt. SineLev1 Mit „SineLevl“ (Sine Level) modulieren Sie den Pegel von Sine Wave von Oszillator 1. Der Parameter bestimmt die Grundtönigkeit des Klangs von Oszillator 1. Weitere Informationen finden Sie unter Optimierte ES2-Sounds mit Sine Level auf Seite 53. OscLScle Mit „OscLScle“ (Osc Level Scale) modulieren Sie den Pegel aller drei Oszillatoren gleichzeitig. Der Modulationswert 0 schaltet alle Oszillatoren stumm, während der Wert 1 den gesamten Mix um 12 dB anhebt. Diese Modulation erfolgt immer vor dem Drive-Verzerrer und eignet sich daher besonders für dynamisch verlaufende Verzerrungen. Osc1Levl Mit (Osc 1 Level) modulieren Sie den Pegel von Oszillator 1. Osc2Levl Mit (Osc 2 Level) modulieren Sie den Pegel von Oszillator 2. Osc3Levl Mit (Osc 3 Level) modulieren Sie den Pegel von Oszillator 3. Kapitel 3 ES2 73 Filter-Modulationsziele im ES2 Die folgende Tabelle enthält alle Filter-relevanten Modulationsziele. Target Anmerkungen Cutoff 1 Moduliert die Cutoff-Frequenz-Parameter von Filter 1. Weitere Informationen finden Sie unter Filter-Cutoff-Frequenz und Resonanz – Übersicht auf Seite 49. Resonance 1 (Reso 1) Moduliert die Resonance-Parameter von Filter 1. Cutoff 2 Moduliert die Cutoff-Frequenz-Parameter von Filter 2. Resonance 2 (Reso 2) Moduliert die Resonance-Parameter von Filter 2. LPF FM Bestimmt die Intensität der Frequenzmodulation für das Lowpass- Filter (LPF FM) in Filter 2 – mit einer Sinuswelle (mit gleicher Frequenz wie Oszillator 1). Dieser Parameter ist beschrieben unter Modulieren der Frequenz von Filter 2 des ES2 auf Seite 52. Cut 1+2 Moduliert die Cutoff-Frequenz beider Filter parallel. Das ist, als ob Sie die identische Modulation auf „Cutoff 1“ und „Cutoff 2“ in zwei Modulations-Routings anwenden. Cut1inv2 Mit „Cut1inv2“ (Cutoff 1 normal und Cutoff 2 invers) modulieren Sie gleichzeitig die Cutoff-Frequenzen der ersten und zweiten Filter gegenphasig (in unterschiedliche Richtungen). Wenn die Cutoff- Frequenz des ersten Filters durch die Modulation steigt, wird die Cutoff-Frequenz des zweiten Filters nach unten verschoben und umgekehrt. Wenn Sie Filter 1 als Hochpass einstellen und eine serielle Filterverschaltung für Filter 2 wählen, ergibt sich ein Bandpass. Eine Modulation des Cut1 inv 2-Targets sorgt in diesem Szenario für eine Modulation der Bandbreite des Bandpass-Filters. Filter Blend (FltBlend) moduliert den Parameter „Filter Blend“. Weitere Informationen finden Sie unter Überblenden zwischen ES2- Filtern auf Seite 47. Weitere ES2-Modulationsziele Die folgende Tabelle enthält alle weiteren Modulationsziele. Target Anmerkungen Amp Mit diesem Target modulieren Sie die Dynamikstufe, also den Pegel der Stimmen. Wenn Sie „Amp“ als Target wählen und es mit einem LFO als Source modulieren, schwankt der Pegel periodisch und Sie hören ein Tremolo. Pan Mit diesem Target modulieren Sie die Panoramaposition der Stimme im Stereo- oder Surround-Spektrum. Wenn Sie „Pan“ mit einem LFO modulieren, hören Sie ein Stereo- oder Surround-Tremolo (Auto-Panning). Im Unison-Modus werden die Panoramapositionen der einzelnen Stimmen automatisch über das gesamte Stereo- oder Surround-Spektrum verteilt. Dennoch kann „Pan“ moduliert werden. Dabei werden die einzelnen Positionen parallel verschoben. Der erweiterte Parameter „Surround Range“ bestimmt den Winkel aus den Modulationswerten. Wenn beispielsweise Pan mit dem Maximalwert eines LFO (der eine Sägezahnwelle nutzt) moduliert wird, führt der Wert 360 für die „Surround Range“ zu einer Kreisbewegung des Voice-Outputs. Kapitel 3 ES2 74 Target Anmerkungen Diversity Mit diesem Parameter (nur in den Surround-Instanzen des ES2 verfügbar) wird die Verteilungsstärke des Voice-Outputs über die Surround-Kanäle dynamisch gesteuert. Negative Werte reduzieren diesen Effekt. LFO1Asym (LFO1 Asymmetry) moduliert die ausgewählte Wellenform von LFO 1. Bei einer Rechteckwelle wird die Pulsbreite verändert. Bei einer Dreieckwelle werden Änderungen zwischen Dreieck und Sägezahn erzeugt. Bei einer Sägezahnwelle wird der Nulldurchgang angehoben. LFO1Curve Mit diesem Target modulieren Sie die Glättung von Rechteck- und Zufallswellen. Wenn der LFO eine Dreieck- oder Sägezahnwelle benutzt, wechselt er zwischen konvexen, linearen und konkaven Kurven. Skalierte ES2-Modulationsziele Die folgenden Modulationsziele sorgen für eine skalierte Modulation, was bedeutet, dass der Ziel-Parameterwert mit dem Modulationswert multipliziert wird. Beispiel: Bei einem Modulationswert von 0.0 tritt keine Änderung auf, ein Modulationswert von +1.0 entspricht einer Multiplikation mit dem Faktor 10, während ein Modulationswert von −1.0 einer Multiplikation mit dem Faktor 0.04 gleichkommt. Target Anmerkungen LFO1Rate Mit diesem Target modulieren Sie die Frequenz (Rate) des LFO 1. Sie können die Rate von LFO 1 automatisch beschleunigen oder verlangsamen, indem Sie das Ziel „LFO1Rate“ mit einem der Hüllkurvengeneratoren (ENCV) oder mit LFO 2 modulieren. Env2Atck (Envelope 2 Attack) moduliert die Attack-Zeit des zweiten Hüllkurvengenerators. Env2Dec (Envelope 2 Decay) moduliert die Decay-Zeit des zweiten Hüllkurvengenerators. Wenn Sie „Env2Dec“ als Target und „Velocity“ als Source wählen, können Sie mit der Anschlagsgeschwindigkeit die Dauer bestimmen, mit der die Noten abklingen. Wählen Sie „Keyboard“ als Source und hohe Noten klingen schneller (oder langsamer) ab als tiefe Noten. Env2Rel Mit „Env2Rel“ (Envelope 2 Release) modulieren Sie die Release-Zeit des zweiten Hüllkurvengenerators. Env2Time Mit Env2Time (Envelope 2 All Times) modulieren Sie alle Zeitparameter von ENV2: Attack-, Decay-, Sustainund Release-Zeiten. Env3Atck Mit „Env3Atck“ (Envelope 3 Attack) modulieren Sie die Attack-Zeit von ENV3. Env3Dec Mit „Env3Dec“ (Envelope 3 Decay) modulieren Sie die Decay-Zeit von ENV3. Env3Rel Mit „Env3Rel“ (Envelope 3 Release) modulieren Sie die Release-Zeit von ENV3. Env3Time Mit Env3Time (Envelope 3 All Times) modulieren Sie alle Zeitparameter von ENV3: Attack-, Decay-, Sustainund Release-Zeiten. Kapitel 3 ES2 75 Target Anmerkungen Glide Mit diesem Target modulieren Sie die Dauer des Portamentos (Glide). Wenn Sie „Glide“ modulieren, wobei „Velocity“ als Quelle ausgewählt ist, bestimmt die Anschlagsgeschwindigkeit die Dauer, in der die gespielte Note die Zieltonhöhe erreicht. Referenz der Modulationsquellen im ES2 Folgende Modulationsquellen sind verfügbar: Source Anmerkungen LFO1 LFO 1 wird als Quelle verwendet. LFO2 LFO 2 wird als Quelle verwendet. ENV1 Hüllkurvengenerator 1 wird als Quelle verwendet. ENV2 Hüllkurvengenerator 2 wird als Quelle verwendet. ENV3 Hüllkurvengenerator 3 wird als Quelle verwendet. Der dritte Hüllkurvengenerator bestimmt zugleich immer den Pegelverlauf jeder Note. Pad-X, Pad-Y Ordnet die Achsen des Planar Pads als Modulationsquellen für das gewählte Modulationsziel zu. Näheres hierzu finden Sie unter Verwenden von Planar Pad auf Seite 70 und Verwenden der Vector- Hüllkurve auf Seite 63. Max „Max“ setzt den Wert für diese Quelle auf +1. Dies ermöglicht interessante Optionen zur Steuerung der Modulationsintensität mit allen möglichen Werten für via. Kybd „Kybd“ (Keyboard) gibt den Wert für die Tastaturposition (die MIDI-Notennummer) aus. Der Bezugspunkt ist das C3 (ein Output-Wert von 0). Bei fünf Oktaven darüber oder darunter wird ein Output- Wert von –1 bzw. +1 ausgegeben. Moduliert das Ziel „Cut 1+2“ mit der Quelle „Kybd“, um die Cutoff- Frequenzen der Filter über die Tastaturposition zu steuern: Je nachdem, in welcher Lage Sie auf der Tastatur spielen, werden die Cutoff-Frequenzen entsprechend geändert. Eine Modulationsintensität von 0.5 skaliert die Cutoff-Frequenzen proportional zu den Tonhöhen der Tasten des Keyboards. Velo Die Anschlagsdynamik dient als Modulationsquelle. Bender (Pitch Bender) Das Pitch-Bend-Rad dient als bipolare Modulationsquelle. Dies gilt auch, wenn bei den Oszillatoren die Empfindlichkeit des Benders (Bend Range) auf 0 gesetzt ist. ModWhl Das Modulationsrad dient als Modulationsquelle. Bei den meisten Standardanwendungen verwenden Sie das Rad vermutlich als via-Regler. Üblicherweise dient es zur Steuerung der Intensität der periodischen LFO-Modulationen. In diesem Fall kann es für direkte, statische Modulationen benutzt werden wie zur Steuerung der beiden Filter-Cutoff-Frequenzen (Ziel = Cut 1+2). Kapitel 3 ES2 76 Source Anmerkungen Touch Die Druckdynamik dient als Modulationsquelle, wenn Sie für Source „Touch“ (After Touch) wählen. Der ES2 spricht auf Poly-Pressure (polyphones Aftertouch) an. Wenn Sie das Target auf „Cut 1+2“ einstellen, fallen und steigen die Cutoff-Frequenzen abhängig von der Stärke, mit der Sie eine Taste auf einem anschlagsempfindlichen MIDI-Keyboard – nach dem ersten Anschlagen der Note – drücken. Whl+To Sowohl das Modulationsrad als auch die Druckdynamik dienen als Modulationsquelle. MIDI-Controller A-F Im Router finden Sie die Felder „Ctrl A“ bis „Ctrl F“, die beliebigen Controller-Nummern zugewiesen werden können. Weitere Informationen finden Sie unter ES2-Makro- und Reglerzuweisungen – Überscht auf Seite 79. RndN01 „RndNO1“ (Note On Random1) gibt immer, wenn eine Note ausgelöst oder erneut ausgelöst wird, einen neuen Zufallswert zwischen –1,0 und 1,0 aus. Die (zufällige) Note-on-Modulation bleibt während der Notendauer bis zum nächsten Note-on-Trigger konstant. Beim Spielen von Legato im Legato-Modus gibt es keine Werteänderung. RndN02 „RndNO2“ (Note On Random 2) verhält sich grundsätzlich wie „Note On Random1“, mit dem Unterschied, dass der neue Zufallswert gleitend und nicht schrittweise erreicht wird. Die Gleitzeit wird durch den Parameter „Glide“ und dessen eventuelle Modulationen bestimmt. Ein weiterer Unterschied liegt darin, dass sich der Wert der Zufallsmodulation ändert, wenn Sie im Legato-Modus legato spielen. SideCh SideCh (Side-Chain-Modulation) verwendet ein Side-Chain-Signal als Modulationssignal (Trigger). Die Side-Chain-Quelle kann im Einblendmenü „Side Chain“ im oberen grauen Bereich des Plug-In-Fensters ausgewählt werden. Sie wird über den internen Hüllkurvenfolger gespeist, der eine Modulation auf Basis des aktuellen Eingangssignals im Side-Chain erzeugt. Referenz der via-Modulationsquellen im ES2 Die folgenden Sources können verwendet werden, um die Modulationsintensität zu steuern. via Source Anmerkungen LFO1 Die Modulation schwankt mit der Geschwindigkeit und Wellenform von LFO1, der die Modulationsintensität steuert. LFO2 Die Modulation schwankt mit der Geschwindigkeit und Wellenform von LFO2, der die Modulationsintensität steuert. ENV1 ENV1 regelt die Modulationsintensität. ENV2 ENV2 regelt die Modulationsintensität. ENV3 ENV3 steuert die Modulationsintensität. Kapitel 3 ES2 77 via Source Anmerkungen Pad-X, Pad-Y Die beiden Achsen des Planar Pad stehen ebenfalls als via-Quellen zur Verfügung, sodass Sie die Modulationsintensität damit regeln können. Kybd „Kybd“ (Keyboard) gibt den Wert für die Tastaturposition (die MIDI-Notennummer) aus. Der Bezugspunkt ist das C3 (ein Output-Wert von 0). Bei fünf Oktaven darüber oder darunter wird ein Output- Wert von –1 bzw. +1 ausgegeben. Wenn Sie „Pitch123“ als Ziel auswählen, es mit der Quelle „LFO1“ modulieren und „Keyboard“ als via-Wert wählen, ändert sich „Vibrato Depth“ abhängig von der Tastenposition. Das heißt, die Intensität des Vibratos ist dann bei höheren oder tieferen Noten eine andere als bei der angegebenen Keyboardposition. Velo Wenn Sie für „via“ die Option „Velo“ (Velocity) wählen, wird die Intensität der Modulation von der Anschlagsgeschwindigkeit geregelt, je nachdem wie fest bzw. schnell die Taste gedrückt wird. Bender (Pitch Bender) Das Pitch-Bend-Rad regelt die Modulationsintensität. ModWhl Wenn Sie „ModWhl“ (Modulation Wheel) für „via“ wählen, wird die Intensität der Modulation in Abhängigkeit vom Modulationsrad geregelt. Touch Wenn Sie für „via“ den Wert „Touch“ (Aftertouch) wählen, wird die Modulation in Abhängigkeit vom Druck geregelt, den Sie auf die Tastatur ausüben (Aftertouch wird auch als Druckempfindlichkeit bezeichnet). Whl+To Sowohl das Modulationsrad als auch Aftertouch (Druckdynamik) steuern die Modulationsintensität. MIDI-Controller A-F Die MIDI-Controller im Router werden als „Ctrl A–F“ bezeichnet, nicht als „Expression“, „Breath“ und „General Purpose 1–4“ (die MIDI-Controller 16 bis 19 sind auch unter der Bezeichnung „General Purpose Slider 1/2/3/4“ bekannt). Diese können mit den Einblendmenüs „Controller Assignment“ zufälligen Controller-Nummern zugewiesen werden. RndN01 „RndNO1“ (Note On Random1) gibt immer, wenn eine Note ausgelöst oder erneut ausgelöst wird, einen neuen Zufallswert für die Modulationsintensität zwischen –1,0 und 1,0 aus. Die (zufällige) Note-on- Modulation bleibt während der Notendauer bis zum nächsten Note-on-Trigger konstant.Hinweis: Beim Spielen von Legato im Legato-Modus gibt es keine Werteänderung. RndN02 „RndNO2“ (Note On Random 2) verhält sich grundsätzlich wie „Note On Random1“, mit dem Unterschied, dass der neue zufällige Intensitätswert gleitend und nicht schrittweise erreicht wird. Die Gleitzeit wird durch den Parameter „Glide“ und dessen eventuelle Modulationen bestimmt. Ein weiterer Unterschied liegt darin, dass sich der Wert der Zufallsmodulation ändert, wenn Sie im Legato-Modus legato spielen. Kapitel 3 ES2 78 via Source Anmerkungen SideCh SideCh (Side Chain-Modulation) verwendet ein Side- Chain-Signal als Signal für die Modulationsintensität (Trigger). Die Side-Chain-Quelle kann im Einblendmenü „Side Chain“ im oberen grauen Bereich des Plug-In-Fensters ausgewählt werden. Sie wird über den internen Hüllkurvenfolger gespeist, der eine Modulation auf Basis des aktuellen Eingangssignals im Side-Chain erzeugt. Integrierter Effektprozessor des ES2 Der ES2 verfügt über einen integrierten Effektprozessor. Alle Änderungen an den Parametern dieser Effekte werden innerhalb des jeweiligen Sound-Settings gespeichert. Intensity and Speed parameters are shared by the Chorus, Flanger, and Phaser effects. Click to choose Chorus, Flanger, or Phaser effect. Adjust to set the level of Distortion. Use the Tone parameter to alter the tonal color of the Distortion effect. Click to choose a hard or soft type of Distortion effect. Es können nur zwei Effekte gleichzeitig aktiv sein. •• Distortion •• Wählen Sie den Effekt „Chorus“, „Flanger“ oder „Phaser“ aus. Diese Effekte teilen sich dieselben Drehregler für „Intensity“ und „Speed“. Ein Chorus-Effekt beruht auf einem Delay, dessen Output mit dem Originalsignal (Dry- Signal) gemischt wird. Die kurze Delay-Zeit wird zyklisch moduliert. Dadurch entstehen Tonhöhenschwankungen im Effektsignal. Durch die Mischung des Signals schwankender Tonhöhe mit dem Originalsignal entsteht der Chorus-Effekt. Der Flanger funktioniert ähnlich wie der Chorus-Effekt, allerdings ist die Verzögerungszeit noch kürzer gewählt. Der Output des Effekts wird auf den Input zurückgekoppelt. Dadurch entstehen harmonische Resonanzen, die wegen der Modulation der Delay-Zeit zyklisch durch das Frequenzspektrum wandern und so den Sound „metallisch“ wirken lassen. Der Phaser mischt ein verzögertes Signal mit dem Originalsignal. Das verzögernde Element ist hier ein Allpass-Filter, dessen Verzögerungszeit frequenzabhängig ist. Die Verzögerungszeit kann deshalb als Phasenwinkel angegeben werden. Der Effekt beruht auf so genannten Kammfiltereffekten, die sich durch Frequenzauslöschungen anstelle von Resonanzen (wie beim Flanger) auszeichnen und auch durch das Frequenzspektrum wandern. Kapitel 3 ES2 79 Parameter „Distortion“ •• Taste „Soft“: Aktiviert den Soft-Modus des Verzerrungseffekts. Der Sound eines Verzerrers ist an Röhrenverzerrungen angelehnt. •• Taste „Hard“: Aktiviert den Hard-Modus des Verzerrungseffekts. Der Effekt erinnert an den Klang eines Transistorverzerrers. •• Drehregler „Distortion“: Stellen Sie durch Drehen den Wert für die Verzerrung ein. Wenn Sie diesen Drehregler auf Null setzen, ist der Effekt deaktiviert. •• Drehregler „Tone“ Stellen Sie durch Drehen des Reglers die hohen Töne des Verzerrungssignals ein. Parameter „Chorus“, „Flanger“ oder „Phaser“ •• Wenn „Chorus“ aktiviert ist: •• Drehregler „Intensity“: Stellen Sie durch Drehen die Effekttiefe ein (wie „umfassend“ die Modulation ist). Stellen Sie diesen Drehregler auf Null, um den Effekt zu deaktivieren. •• Drehregler „Speed“: Stellen Sie durch Drehen die Modulationsrate ein. •• Wenn „Flanger“ aktiviert ist: •• Drehregler „Intensity“: Stellen Sie durch Drehen die Effekttiefe ein (wie „schneidend“ die Modulation ist). Stellen Sie diesen Drehregler auf Null, um den Effekt zu deaktivieren. •• Drehregler „Speed“: Stellen Sie durch Drehen die Modulationsrate ein. •• Wenn „Phaser“ aktiviert ist: •• Drehregler „Intensity“: Stellen Sie durch Drehen die Tiefe des Sweep-Effekts ein (die Modulationsbreite). Stellen Sie diesen Drehregler auf Null, um den Effekt zu deaktivieren. •• Drehregler „Speed“: Stellen Sie durch Drehen die Modulationsrate ein. ES2-Makroregler und Reglerzuweisungen ES2-Makro- und Reglerzuweisungen – Überscht In diesem Abschnitt an der Unterseite der Bedienoberfläche des ES2 stehen drei Ansichten zur Verfügung: Macro control parameters Click here to choose a view. •• Macro: Klicken Sie zum Anzeigen einer Reihe von Makro-Parametern, die mehrere andere Parameter beeinflussen. •• MIDI: Klicken Sie zum Zuweisen von MIDI-Controllern zu bestimmten Modulationswegen. Weitere Informationen finden Sie unter Referenz der via-Modulationsquellen im ES2 auf Seite 76. •• Macro only: Klicken Sie, um die Bedienoberfläche des ES2 durch eine kleinere Ansicht zu ersetzen, die auf die Makro-Steuerungen begrenzt ist. Kapitel 3 ES2 80 Makro-Steuerungen im ES2 Über die Makro-Drehregler können Sie einfach auf mehrere verbundene und damit zusammenhängende Parameter zugreifen. Wenn Sie die Makro-Steuerungen drehen, verändert sich auch die ES2-Bedienoberfläche und es werden ein oder mehr Parameter angezeigt. Wenn Sie beispielsweise die Makro-Steuerung „Detune“ verändern, wirkt sich das gleichzeitig auf den Parameter „Analog“ und die Oszillator- Frequenz-Parameter „Coarse“ und „Fine“ aus. Die Makro-Parameter sind bezüglich der Einstellungen mit den ES2-basierten Instrumenten in GarageBand kompatibel. Das heißt, der ES2 und einige Synthesizer-Settings in GarageBand sind austauschbar. Wichtig: Die Wirkung jeder Makro-Steuerung hängt vollständig von den Parameterwerten der aktuellen Einstellung ab. Bei einigen Sounds haben einige Makro-Steuerungen eventuell keine Wirkung. ES2-Controller-Zuweisung Mit dem Bereich „Controller Assignments“ können Sie die Dreh- und Schieberegler sowie weiteren Regler Ihrer MIDI-Tastatur zuweisen, um als Steuerquellen für die ES2-Parameter zu dienen. Hier stehen sechs Menüs von Ctrl A bis Ctrl F zur Auswahl. Sie können einen beliebigen der MIDIController in den Menüs für diese Reglerquellen verwenden. Diese Parameter werden mit jedem Setting gesichert. Sie werden lediglich bei Verwendung der Standardeinstellung geändert, die bei der Initialisierung des Plug-Ins geladen wird oder wenn ein Setting mit einem Projekt gesichert wird. Dieser Ansatz erlaubt es Ihnen, die Parametersteuerung an Ihren MIDI-Controller anzupassen, ohne die entsprechende Einstellung separat für jedes Setting vornehmen und sichern zu müssen. Die Controller 0 und 32 sind für Bank-Select-Befehle reserviert, Controller 1 wird als Modulationsquelle im Router benutzt, Controller 33 bis 63 dienen als LSB für die Controller 1 bis 31, die Controller 64 bis 69 sind für Pedal-Befehle reserviert, die Controller 120 bis 127 sind für Channel-Mode-Befehle reserviert. In der MIDI-Spezifikation sind alle Controller von 0 bis 31 als Most Significant Bit (MSB) Controller- Definitionen vorgesehen. Jeder dieser Controller (0 bis 31) enthält zudem eine Least Significant Bit (LSB) Controller-Definition (32 bis 63). Durch Kombination des zweiten LSB-Controllers mit dem MSB-Controller lässt sich eine Auflösung von 14 anstatt von 7 Bit erzielen. Der ES2 kann diese Befehle, etwa den Breath- oder Expression-Controller, korrekt auswerten. Im Detail: •• 14-Bit-Controller sind Paare aus normalen Control-Change-Befehlen (CC), wobei die Nummer des zweiten CC-Befehls (LSB) um den Wert 32 über der des ersten CC-Befehls (MSB) liegt. Beispiele für gültige 14-Bit-Paare: CC1/33, CC7/39 und CC10/42. •• 14-Bit-Controller bieten eine Auflösung von 16.384 Schritten, wodurch sich Plug-In-Parameter sehr genau steuern lassen. Der erste CC-Befehl eines 14-Bit-Paares (MSB) hat eine grobe Auflösung von 128 Schritten. Jeder dieser Schritte kann nun mithilfe des zweiten CC-Befehls (LSB) in 128 weitere Schritte unterteilt werden. Es ergeben sich also 128 x 128 = 16.384 Schritte. Kapitel 3 ES2 81 •• Um 14-Bit-Controller zu verwenden, müssen Sie weder neue noch spezielle Datentypen erzeugen. Die feinere Auflösung wird einfach durch das Komplementieren des zugewiesenen CC-Befehls (MSB) mit seinem LSB erreicht. Der im ES2 zugewiesene CC-Befehl kann auch immer alleine ausgeführt werden, sofern Ihr MIDI-Controller keine 14-Bit-Befehle ausgibt, allerdings reduziert sich die Auflösung entsprechend auf 7 Bit = 128 Schritte. Die 14-Bit-Fähigkeit ist der Grund, warum die CC-Nummern 33–63 nicht in den Menüs Ctrl A–F zugewiesen werden können. Der Einsatz dieser (LSB) CC-Nummern würde dazu führen, dass 1/128 des Parameterbereichs (anders ausgedrückt: 128 zusammenhängende Schritte aus 16.384 Schritten) verändert würden. MIDI-Controller zuweisen 1 Klicken Sie auf die Taste „MIDI“ in der unteren linken Ecke, um die Controller-Zuweisungen anzuzeigen. 2 Klicken Sie auf ein beliebiges Menü (Ctrl A bis Ctrl F) und wählen Sie dann den Controller-Namen (bzw. dessen Nummer), den Sie verwenden möchten, aus der Liste. MIDI-Controller-Zuweisung anlernen 1 Klicken Sie auf die Taste „MIDI“ in der unteren linken Ecke, um die Controller-Zuweisungen anzuzeigen. 2 Wählen Sie den Eintrag „Learn“ aus einem Control-Menü (Ctrl A bis Ctrl F). 3 Bewegen Sie den ausgewählten Controller auf Ihrer MIDI-Tastatur oder Ihrem MIDI-Controller. Hinweis: Falls innerhalb von 20 Sekunden kein MIDI-Befehl empfangen wird, wird der ausgewählte Controller auf seinen ursprünglichen Wert/Zuweisung zurückgesetzt. Surround-Modus des ES2 Bei Surround-Instanzen des ES2 werden zwei zusätzliche Parameter in den erweiterten Parametern am unteren Rand der Bedienoberfläche angeboten: “Surround Range“ und „Surround Diversity“. Surround-Parameter •• Surround Range: Bestimmt den Bereich des Surround-Winkels (0 bis 360 Grad). Das heißt, der Parameter legt die Breite des Surround-Felds fest. Sie können die Bewegung der Sounds innerhalb der „Surround Range“ über das Pan-Ziel im Router steuern. •• Surround Diversity: Bestimmt die Verteilungsstärke des Output-Signals über Ihre Surround- Lautsprecher. Wenn Sie den Wert 0 wählen, geben nur diejenigen Lautsprecher das Signal aus, die am nächsten zur Position des Originalsignals liegen. Der Diversity-Wert 1 verteilt das Signal zu gleichen Teilen auf alle Lautsprecher. Sie können die Verteilung der Signale mit dem Ziel „Diversity“ im Router zwischen den Lautsprechern modulieren. Kapitel 3 ES2 82 ES2 – Erweiterte Parameter ES2 verfügt über zwei Parameter, auf die Sie durch Klicken auf das Dreiecksymbol links unten auf der Oberfläche zugreifen können. Erweiterte Parameter •• Einblendmenü „Midi Mono Mode“: Wählen Sie „Off“, „On“ (Common Base Channel 1) oder „On“ (Common Base Channel 16). In jedem der beiden Modi empfängt jede Stimme auf einem anderen Midi-Channel. Controller und Midi-Befehle, die auf dem Base Channel gesendet werden, haben Einfluss auf alle Stimmen. •• Einblendmenü „MIDI Mono Pitch Range“: Wählen Sie 0, 24 oder 48. Der ausgewählte Wert für den Pitch Bend Range hat Einfluss auf einzelne Note Pitch Bend- Befehle, die nicht auf dem Common Base Channel empfangen werden. Der Standard sind 48 Halbtonschritte, was mit der Musiktastatur von Mobile GarageBand im Pitch-Modus vergleichbar ist. Für den Einsatz einer MIDI-Gitarre sind 24 Halbtonschritte die bevorzugte Einstellung. Die meisten MIDI Converter haben dies als Standardeinstellung. Erzeugen von zufälligen Sound-Variationen im ES2 Verwenden der Zufalls-Parameter des ES2 Der ES2 bietet eine leistungsfähige Funktion, Soundeinstellungen zufällig zu variieren. Das Ausmaß der Variation können Sie selbst bestimmen, ebenso wie die zu beeinflussende Baugruppe. Die Zufallsfunktion wird Sie beim Programmieren neuer Sounds inspirieren und unterstützen. Sie können das Ausmaß der zufälligen Änderung der Parameter mit dem Schieberegler „Random Intensity“ festlegen. Die Zufallsfunktion variiert stets die aktuellen Einstellungen, nicht das Original-Setting. Wenn Sie mehrfach auf die Taste „RND“ klicken, entfernen Sie sich also immer weiter vom Original. Sound zufällig variieren mm Klicken Sie auf die Taste „Randomize“. Die Variation wird durch einmaliges Klicken ausgelöst und kann jederzeit wiederholt werden. Grad der Zufallsvariation anheben mm Bewegen Sie den Schieberegler „Randon Intensity“ weiter nach rechts. Mehrere dezente Abweichungen der aktuellen Einstellung erzeugen mm Laden Sie die Originaleinstellung nach jeder Zufallsvariation neu, wobei Sie diese unter einem neuen Namen speichern. Kapitel 3 ES2 83 Beschränkung der Random-Funktion Sie können mithilfe des Einblendmenüs „Randomize Section“ die Random-Funktion auf bestimmte Parametergruppen beschränken. Einige Aspekte Ihres Sounds sind vielleicht schon genau richtig eingestellt. Beispielsweise weist Ihr aktueller Sound eine schöne Perkussion auf und die Variation soll ebenso perkussiv klingen. Stattdessen ist eine Variation der Klangfarbe erwünscht. In diesem Fall bietet es sich an, die Variation auf die Einstellungen der Oszillatoren oder der Filter zu beschränken. Stellen Sie die „RND Destination“ entsprechend auf „Waves“ oder „Filters“ ein, wodurch die Hüllkurven- Parameter aus der Variation ausgeschlossen sind. Hinweis: Die Parameter „Master Level“, „Filter Bypass“ sowie die Parameter „Oscillator On/Off“ werden nie zufällig gewählt. Bei Zufallsvariationen der Vector-Hüllkurve wird der Parameter „Solo Point“ immer auf „off“ gesetzt. Sie können die Zufallsvariationen auf die folgenden Parametergruppen beschränken: Abschnitt „Randomize“ Anmerkungen All Alle Parameter mit Ausnahme der oben genannten werden variiert. Alle außer Router und Pitch Alle Parameter, mit Ausnahme der Router-Parameter und der Grundtonhöhe (Halbton-Einstellung der Oszillatoren), werden variiert. Die Feinstimmung des Oszillators wird allerdings zufällig variiert. Alle außer Vector Env Alle Parameter, mit Ausnahme der Vector- Hüllkurvenparameter, werden variiert. Dadurch bleibt das rhythmische Feeling eines vorgegebenen Settings erhalten. Waves Nur die Oszillator-Parameter „Wave“ und „Digiwave“ werden variiert. Andere Oszillatoren (Tuning, Mix und Modulationswege im Router) bleiben hiervon unberührt. Digiwaves Für alle Oszillatoren werden neue Digiwaves ausgewählt. Andere Oszillatoren (Tuning, Mix und Modulationswege im Router) bleiben hiervon unberührt. Filter Die folgenden Filter-Parameter werden variiert: „Filter Structure“ (seriell oder parallel), „Filter Blend“, „Filter Mode“, „Cutoff Frequency“ und „Resonance“ für Filter 1 und 2. Die Parameter „Fat(ness)“ und „Filter FM“ von Filter 2 werden ebenfalls variiert. Envs Alle Parameter der drei Hüllkurven (ENV 1, ENV 2 und ENV 3) werden zufällig variiert. Die Vector-Hüllkurve ist von der Variation ausgenommen. LFOs Alle Parameter beider LFOs werden variiert. Router Alle Router-Parameter – in allen Modulations-Routings – werden variiert (alle Intensitäten, Target-, via- und Source-Parameter werden verändert). FX Alle Effekt-Parameter werden zufällig variiert. Vector-Hüllkurve Alle Vector- Hüllkurvenparameter inklusive des X/YRoutings des Planar Pads werden variiert. Kapitel 3 ES2 84 Abschnitt „Randomize“ Anmerkungen Vector Env Mix Pad Die Mischpegel der Oszillatoren der Vector- Hüllkurvenpunkte werden verändert. Modulationsrhythmus und -geschwindigkeit (die Zeitparameter der Punkte) bleiben unberührt. Vector Env XY Pad Die Positionen des Zeigers im Planar Pad (die Vector-Hüllkurvenpunkte) werden zufällig variiert. Das X/Y-Routing wird allerdings nicht variiert. Modulationsrhythmus und -geschwindigkeit (die Zeitparameter der Punkte) bleiben ebenfalls unberührt. Sie können eine gemeinsame Variationsrichtung angeben, indem Sie eine der folgenden Optionen wählen: •• Vector Env XY Pad X only •• Vector Env XY Pad Y only Vec Env Times Nur die Zeitparameter der Punkte der Vector- Hüllkurve werden variiert. Vec Env Structure Nur der Aufbau der Vector-Hüllkurve wird variiert. Dies umfasst: Sämtliche Zeiten, Sustain-Punkt, Anzahl der Punkte und alle Loop-Parameter. Vec Env Shuffle Times Die Zufallszeiten der Vector-Hüllkurve (innerhalb der Loops) werden variiert. Dies umfasst den Wert „Loop Smooth“, wenn für den Loop-Modus die Einstellung „Forward“ oder „Backward“ eingestellt wurde. Tutorials zum ES2 Erzeugen von völlig neuen ES2-Sounds ES2-Sound-Design – Übersicht In diesem Tutorial werden Ihnen die Grundlagen der allgemeinen Klangprogrammierung auf vermittelt. Im zweiten Abschnitt des Tutorials ES2-Sound-Design mit Templates auf Seite 94 werden Sie durch den Prozess zur Sound-Erzeugung geführt, wobei Sie Vorlagen als Ausgangspunkt verwenden. Um die Einstellungen für diese Tutorials im ES2-Fenster darzustellen, öffnen Sie das Einblendmenü „Settings“ und wählen dort „Tutorial Settings“. Das Tutorial-„Setting Analog Saw Init“ soll als Ausgangspunkt für die Klangprogrammierung neuer Sounds dienen. Für die Programmierung völlig neuer Sounds greifen professionelle Sound-Designer gerne auf dieses Setting zurück, bei dem ein ungefilterter Sägezahn-Sound ohne Hüllkurven, Modulationen oder andere Besonderheiten zum Einsatz kommt. Auch zum Kennenlernen eines neuen Synthesizers ist dieses Setting hervorragend geeignet. Dadurch können Sie alle Parameter unbeeinflusst von Voreinstellungen ausprobieren. •• Beginnen Sie mit den Filtern, dem Herz des subtraktiven Synthesizers. Probieren Sie die vier Lowpass-Filtertypen „12 dB“, „18 dB“, „24 dB“ und „fat“ (Filter 2) mit verschiedenen Werten für „Cut“ (Cutoff Frequency) und „Res“ (Resonance) aus. Stellen Sie „Env 2“ als Filterhüllkurve ein. Die erforderliche Modulation im Routing ist voreingestellt. Kapitel 3 ES2 85 •• Stellen Sie „Filter Blend“ ganz nach links, sodass Sie Filter 1 isoliert hören können. In vielen Fällen werden Sie zwar dem wirkungsvolleren Filter 1 den Vorzug geben, aber auch das Filter 2 hat seine Vorzüge. Filter 1 bietet neben dem 12-dB-Lowpass-Filter (Lo) auch die Elemente Highpass, Peak, Bandpass (BP) und Bandsperre (BR). Im Lowpass-Bereich klingt Filter 2 im Vergleich zu Filter 1 „weicher“. Er eignet sich besonders gut für Klänge, bei denen die Filterwirkung nicht so deutlich wahrgenommen werden soll, z. B. bei Streichern oder FM-Sounds. Ebenso sind verzerrte Sounds, die an den Bass-Synthesizer TB303 erinnern, mit Filter 2 besser zu verwirklichen als mit Filter 2. •• Das Setting ist ebenfalls sehr gut geeignet, um mit verschiedenen Wellenformen der Oszillatoren zu experimentieren. Fette ES2-Sounds erzeugen Schon immer waren „fette“ Synthesizer-Sounds äußerst beliebt. Und dies gilt heute bei Musikstilen wie Trance, Techno, R & B umso mehr. Fette ES2-Sounds mit verstimmten Oszillatoren und dem Unison-Modus erzeugen Das Setting „Analog Saw 3 Osc“ umfasst drei gegeneinander verstimmte Oszillatoren und klingt schon recht fett. Es gibt aber Möglichkeiten, den Klang noch deutlich fetter zu formen. Bei vielen Werkseinstellungen ist der Unison-Modus bereits aktiviert. Dies erfordert sehr viel Rechenleistung. Wenn Ihr Computer nicht schnell genug ist, kann auf den Unison-Modus verzichtet werden und stattdessen z. B. der Ensemble-Effekt in einem Bus für mehrere Plug-Ins verwendet werden. Dies führt zu einer Systementlastung. Eine andere Möglichkeit ist, mehrere Software-Instrumentspuren einzufrieren (Freeze-Funktion) oder zu bouncen. Führen Sie die folgenden Schritte aus: mm Probieren Sie zunächst den 3-Oszillatoren-Basisklang mit unterschiedlichen Filter- und Envelope- Einstellungen aus. mm Probieren Sie den Chorus-Effekt mit verschiedenen Einstellungen für „Intensity“ und „Speed“ aus. mm Aktivieren Sie den Unison-Modus und wählen Sie einen höheren Wert für „Analog“. Da der polyphone Modus eingestellt ist, wird jede Note doppelt gespielt. Die Anzahl der gleichzeitig abspielbaren zehn Noten reduziert sich von 10 auf 5. Dafür erhalten Sie aber einen sehr dichten und breiten Klang. Durch das Kombinieren von „Unison“ und höheren Analog-Werten wird auch eine deutlich wahrnehmbare Spreizung über das Stereo- oder Surround-Spektrum erzeugt. Bei vielen Werkseinstellungen ist der Unison-Modus bereits aktiviert. Dies erfordert sehr viel Rechenleistung. Wenn Ihr Computer nicht schnell genug ist, kann auf den Unison-Modus verzichtet werden und stattdessen z. B. der Ensemble-Effekt in einem Bus für mehrere Plug-Ins verwendet werden. Dies führt zu einer Systementlastung. Eine andere Möglichkeit ist, mehrere Software-Instrumentspuren einzufrieren (Freeze-Funktion) oder zu bouncen. Verstimmte monophone Sounds und Effekte mit dem ES2 erzeugen Das Setting „Analog Saw Unison“ ist ein extrem verstimmter, ungefilterter Basis-Sound, der an Fatness kaum noch zu überbieten ist. Drei Sägezahn-Oszillatoren werden verwendet, die aber noch stärker gegeneinander verstimmt sind. Das Entscheidende ist die Kombination von „Unison“ und „Analog“ (auf einen hohen Wert gesetzt). Da der Modus „Mono“ eingestellt ist, werden zehn Stimmen gestackt. Alles in allem ergibt dies ohne zusätzliche Effekte einen unglaublich mächtigen Lead-Sound, wie er bei unzähligen Dance- und Trance-Produktionen eingesetzt wird. Bei entsprechenden Hüllkurveneinstellungen (Modulation des Filters!) können aus diesem Setting auch Elektro-Sounds abgeleitet werden, die ideal für Arpeggio- und Sequenzer-Sounds sind. Kapitel 3 ES2 86 Führen Sie die folgenden Schritte aus: mm Stellen Sie „Cutoff Frequency“ von Filter 2 auf „0“. Dadurch wird die voreingestellte Filter- Hüllkurve aktiviert. Probieren Sie auch andere Einstellungen aus. mm Schalten Sie „Osc 1“ eine (–12 s) oder zwei Oktaven (–24 s) tiefer. mm Erhöhen Sie „Drive“ oder „Distortion“. mm Für „Env 2“ sollte „Velocity“ eingestellt sein. Sie können jetzt das Filter mit der Anschlagsdynamik modulieren. mm Fügen Sie einen Delay-Effekt im Instrument-Channel-Strip des ES2 (oder einem Bus-Ziel) ein. ES2-Bass-Sounds erzeugen Nicht jeder Sound muss aus mehreren Oszillatoren zusammengesetzt sein. Es gibt auch sehr einfache, aber trotzdem wirkungsvolle Sounds mit nur einem Oszillator. Dies gilt z. B. für bestimmte Synthbässe, die auf Basis des Settings „Analog Bass Clean“ schnell erzeugt werden können. Saubere 1-Oszillator-Bass-Sounds erzeugen Im Setting „Analog Bass Clean“ ist der Basissound eine Rechteckwelle, die um eine Oktave nach unten transponiert wird. Der Sound wird durch Filter 2 gefiltert. Das Besondere an diesem Sound ist der Modus „Legato“ in Kombination mit „Glide“ (Portamento). Wenn Sie staccato spielen, hören Sie keinen Glide-Effekt. Der Glide-Effekt ist nur bei gebundener Spielweise (Legato) aktiv. Die Filter-Hüllkurve wird nur dann mit jeder Note neu ausgelöst, wenn alle Tasten vor dem Anschlagen einer neuen Note losgelassen werden. Führen Sie die folgenden Schritte aus: mm Probieren Sie verschiedene Filter- und Envelope-Einstellungen aus. mm Wählen Sie statt der Rechteckwelle die Sägezahnwelle. mm Stellen Sie andere Glide-Werte ein. Tipp: Die Bearbeitung funktioniert am besten bei einer laufenden Bass-Sequenz. Erzeugen oder spielen Sie eine monophone Basslinie, wobei Sie meistens staccato und nur einige wenige Noten legato spielen. Dabei kann auch eine sehr lange Glide-Zeit gut funktionieren. Verzerrte analoge Bässe erzeugen In der Einstellung Analog Bass Distorted wird Filter 1 in Verbindung mit hohen Drive- und Distortion-Werten eingesetzt. Das Filter 1 ist für verzerrte Analog-Sounds besser geeignet als Filter 2. Führen Sie die folgenden Schritte aus: mm Probieren Sie Filter 2 aus, indem Sie „Filter Blend“ ganz nach rechts stellen. Sie werden hören, warum Filter 1 für verzerrte Klänge besser geeignet ist. mm Bewegen Sie zur Steuerung der Filtermodulation die grünen Schieberegler der ersten Modulationsweiterleitung im Routing-Feld. Dadurch wird die Modulationsintensität gesteuert. ES2-FM-Sounds erzeugen Beim ES2 ist Oszillator 1 immer der „Träger“ und Oszillator 2 immer der „Modulator“. Das heißt, Oszillator 2 moduliert Oszillator 1. Das Setting „FM Start“ ist ein guter Ausgangspunkt, um die Synthese der linearen Frequenzmodulation (FM) kennenzulernen. Kapitel 3 ES2 87 ES2-Sounds über FM Intensity und Frequency erzeugen Laden Sie das Setting „FM Start“, um einen unmodulierten Sinusklang zu hören, der durch Oszillator 1 erzeugt wird. Oszillator 2 wird aktiviert und ebenfalls für die Erzeugung einer Sinus-Oszillation eingestellt, der Pegel wird jedoch auf 0 eingestellt: Bewegen Sie das kleine Rechtecksymbol in der obersten Ecke des Dreiecks, um die Einstellungen zu ändern. Führen Sie die folgenden Schritte aus: mm Stellen Sie die Intensität der Frequenzmodulation ein, indem Sie den Wave-Drehregler langsam von „Sine“ bis „FM“ drehen. Sie hören ein typisches FM-Spektrum bei gleicher Frequenz von Träger und Modulator. mm Ändern Sie die Modulatorfrequenz (Oszillator 2) durch Anpassen von „Fine Tune“ von 0 c auf 50 c. Sie hören dann eine sehr langsame Frequenzmodulation, die mit dem Effekt eines LFO verglichen werden kann. Die eigentliche Frequenzmodulation erfolgt jedoch im Audiospektrum. Sie wird mit der Frequenzwahltaste in Halbtonschritten eingestellt. Testen Sie den Bereich von –36 s bis +36 s für Oszillator 2. Sie hören jetzt bereits ein breites Spektrum an FM-Sounds. Einige Einstellungen werden Sie an Sounds klassischer FM-Synthesizer erinnern. mm Wählen Sie andere Wellenformen für Oszillator 2. Die Sinuswellenform ist zwar die klassische FM-Basiswellenform, aber auch andere Wellenformen können interessante Ergebnisse hervorbringen, insbesondere die Digiwaves. mm Noch außergewöhnlichere Ergebnisse erzielen Sie, wenn die Frequenz des Trägers (Oszillator 1) verändert wird. Testen Sie auch hier den Bereich von –36 s bis +36 s. Vor allem die ungeraden Werte sind äußerst interessant. Allerdings ist zu bedenken, dass sich dabei die Grundstimmung verändert. FM-Intensität im ES2 mit einer Hüllkurve und FM-Scaling steuern Im Setting „FM Envelope“ steuern Sie die FM-Intensität mit einer Hüllkurve durch Envelope 2. Das Modulationsziel ist der Bereich zwischen „Sine“ und „FM“ auf dem Wellenform-Drehregler der Oszillatoren. Für diesen Modulationsweg wird der erste Router-Kanal verwendet. Es ist aber mit weiteren Modulationswegen möglich, einen weitaus größeren Bereich abzudecken. Die weiteren Modulationswege sind bereits vorbereitet. Sie müssen lediglich die Werte einstellen. Da vorerst ohne „Velocity“ gearbeitet wird, können Sie die Werte in der Editor-Ansicht einstellen, indem Sie den unteren Fader zusammen mit dem oberen ganz nach oben schieben. Führen Sie die folgenden Schritte aus: mm Stellen Sie das zweite Modulations-Routing auf 1,0 ein. Sie hören deutlich, dass ein größeres Klangspektrum kontrolliert wird. mm Stellen Sie die Modulations-Routings 3 und 4 ebenfalls auf den Wert 1,0 ein. Der Klangbereich wird drastisch erweitert. mm Nach der drastischen Ausweitung des Modulationsbereichs ist der Klang über die gesamte Tastatur unausgewogen. Im unteren und mittleren Tastaturbereich ist der Klang optimal, während die FM-Intensität im oberen Bereich zu stark ist. Dies kann mit den ebenfalls bereits vorbereiteten Modulationswegen 5 und 6 kompensiert werden. Dabei wird das Modulationsziel „Osc 1 Wave“ von Tastaturposition „kybd“ gesteuert. So wird ein Scaling der FM-Intensität erzeugt. mm Da der Klangbereich aufgrund der vier Modulationen sehr groß ist, sind für dieses FM-Scaling zwei Modulationswege erforderlich. Bewegen Sie die unteren Hälften des Schiebereglers jeweils ganz nach unten. Das Scaling ist für die Spielbarkeit von FM-Sounds von fundamentaler Bedeutung! Kapitel 3 ES2 88 FM Drive und Filter FM zum Ändern der Tonfarbe verwenden Das Setting „FM Drive“ zeigt deutlich, wie sehr sich der Charakter von FM-Sounds verändert, wenn Sie „Drive“ und „Filter FM“ verwenden. Die Ergebnisse ähneln dem Feedback der klassischen FM-Synthese. Führen Sie die folgenden Schritte aus: mm Experimentieren Sie mit verschiedenen Einstellungen für „Drive“ und „Filter FM“. mm Setzen Sie die Cutoff-Frequenz von Filter 2 auf „0“ herab. Envelope 2 wirkt dann auch auf Filter 2. Die entsprechende Modulation ist in dem Setting bereits voreingestellt. FM-Sounds mit Digiwaves erzeugen Im Setting „FM Digiwave“ wird eine Digiwave als FM-Modulator eingesetzt. Dadurch können z. B. glockige Klänge aus nur zwei Operatoren programmiert werden. Bei der traditionellen FM-Synthese sind solche Sounds in der Regel nur mit einer Vielzahl an Sinuswellen möglich. Um einen schwebungsreicheren, atmosphärischen Grundklang zu realisieren, wurde der polyphone Unison-Modus aktiviert. Für die Klangformung wurden Filter- und Amplituden-Hüllkurven voreingestellt. Führen Sie die folgenden Schritte aus: mm Testen Sie die Wirkung unterschiedlicher Digiwaves als FM-Modulationsquellen. mm Probieren Sie verschiedene Intensitäten für den Parameter „Analog“ aus. FM-Sounds mit Wavetables erzeugen Äußerst lebendige FM-Klänge entstehen, wenn die Modulation durch ein Morphing zwischen Digiwaves (Wavetable-Scanning) erfolgt. Das Morphing im Setting „FM Digiwave“ wird durch den LFO 2 gesteuert. Die Geschwindigkeit des LFO 2 und deshalb auch das Morphing hängen vom Tempo des Host-Programms ab (hier zwei Takte). Führen Sie die folgenden Schritte aus: mm Stellen Sie für den LFO2 andere Wellenformen ein. Vor allem die Wellenform „Lag S/H“ (geglätteter Zufall) ist für Wavetables geeignet. mm Experimentieren Sie mit unterschiedlichen FM-Intensitäten und Oszillatorfrequenzen. mm Verändern Sie die Modulationsintensität des ersten Routings (LFO2 moduliert „Osc2 Wave“) und die LFO 2 Rate. Verzerrte FM-Sounds mit Monophonic Unison erzeugen Das Setting „FM Megafat“ eignet sich besonders für verzerrte Bässe oder gitarrenähnliche Sounds. Im oberen Bereich wird der Sound etwas kratzig. Dies ist hier auch mit noch so viel Keyscaling nicht aufzufangen – aber nicht jeder Sound muss über 5 Oktaven gut klingen! Führen Sie die folgenden Schritte aus: mm Probieren Sie eine extreme Verstimmung mit „Analog“ aus. mm Der Flanger passt gut zu diesem Sound. mm Aktivieren Sie die voreingestellte Filter-Hüllkurve, indem Sie die „Cutoff Frequency“ von Filter 2 auf „0“ herabsetzen. mm Für fette Lead-Sounds eignet sich etwas „Glide“. mm Und wie immer beim FM erzielen Sie drastische Klangveränderungen durch andere Frequenzeinstellungen der beiden Oszillatoren. Scheuen Sie keine krummen Intervalle. Kapitel 3 ES2 89 FM-Sounds mit unüblichen Spektren erzeugen Die interessantesten Ergebnisse lassen sich bei ungeraden Frequenzverhältnissen erzielen, wenn man zunächst einmal keine Rücksicht auf die Beibehaltung der Grundstimmung nimmt. Das Setting „FM Out of Tune“ bietet einen glockigen Klang, ähnlich wie der einer Ringmodulation. Es wurde durch ein Setting von 30 s 0 c erreicht, wobei der Modulator auf einen Wert von 0 s 0 c eingestellt wurde. Solche Klänge wurden häufig in der elektronischen Musik der achtziger Jahre verwendet und werden in den Musikrichtungen Ambient und Trance wieder populärer. Mithilfe von Filtern, Hüllkurven und Effekten kann der Sound weiterentwickelt werden. Allerdings gibt es ein kleines Problem: Der Sound ist verstimmt. Führen Sie die folgenden Schritte aus: mm Verwenden Sie Oszillator 3 als Referenz für die Stimmung des FM-Sounds, indem Sie den Zeiger im Triangle bewegen. mm Sie werden feststellen, dass der FM-Klang in F gestimmt ist, also 5 Halbtöne zu hoch bzw. 7 Halbtöne zu tief. mm Stellen Sie Oszillator 1 und 2 um jeweils fünf Halbtöne (500 ct) tiefer ein. Eine Höherstimmung kommt nicht in Frage, da Oszillator 1 dann auf „37 s 0 c“ stehen müsste, der Maximalwert aber „36 s 0 c“ beträgt. mm Wichtig ist bei diesem Vorgang, dass das Frequenzverhältnis (Intervall) zwischen Oszillator 1 und 2 beibehalten wird. Das heißt, Oszillator 1 = 25 s O c und Oszillator 2 = –5 s 0 c. ES2-PWM-Sounds erzeugen Die Pulsbreitenmodulation (Pulse Width Modulation, PWM) ist eine der wichtigsten Funktionen jedes Analogsynthesizers. Einfachen PWM-Sound einrichten mm Wählen Sie das Setting „PWM Start“ und bewegen Sie langsam den Wave-Drehregler zwischen den Symbolen für Rechteckwelle und Pulswelle hin und her. Beide Symbole sind grün markiert. Was Sie hören, ist eine manuelle Pulsbreitenmodulation. mm Wählen Sie das Setting „PWM Slow“. Der LFO 1 steuert in diesem Fall die Quelle der Pulsbreitenmodulation und nicht Ihre manuellen Bewegungen. Das Ergebnis dürfte sich ähnlich anhören. mm Heben Sie die „LFO 1 Rate“ vom voreingestellten Wert 0,230 auf 4,400 an. Das Ergebnis ist eine klassische, schnelle PWM. mm In diesem und im nächsten Schritt soll die PWM so eingestellt werden, dass die Modulation unten langsamer und oben zunehmend schneller wird. Dies ist für viele Sounds wünschenswert (z. B. Synth-Strings). Reduzieren Sie zunächst „LFO 1 Rate“ auf 3.800. mm Stellen Sie die Intensität der bereits vorbereiteten zweiten Modulation (Target = LFO1 Rate, Source = Kybd) auf 0,46. Die PWM wird dadurch anders skaliert und ist jetzt im oberen Bereich schneller als unten. Das Ergebnis können Sie auch im Setting „PWM Scaled“ hören. Tipp: Vermeiden Sie bei PWM-Sounds „Drive“ oder „Distortion“. Fettere Sounds mm Um den PWM-Klang fetter und dichter zu gestalten, nehmen wir Oszillator 3 zuhilfe, der ebenfalls PWM erzeugen kann. Tatsächlich kann sogar auch Oszillator 1 PWM liefern. Die Oszillatoren 2 und 3 sind im Setting „PWM 2 Osc“ relativ stark gegeneinander verstimmt. Ziel ist es, diesen PWMBasisklang zu typischen PWM-Strings weiterzuentwickeln. Hier ist Ihr eigener Geschmack gefragt. Kapitel 3 ES2 90 mm Stellen Sie den Chorus-Effekt mit „Intensity“ ein. Es bieten sich höhere Werte an, die den Sound recht breit machen. mm Programmieren Sie Envelope 3 nach Ihren eigenen Vorstellungen. Sie sollten zumindest die Zeiten für „Attack“ und „Release“ erhöhen. Wenn Sie mögen, stellen Sie „Velocity“ ein. Wenn Sie den Sound nicht nur als simples Pad einsetzen möchten, ist es auch sinnvoll, eine relativ kurze Decay-Zeit und einen niedrigeren Sustain-Pegel von etwa 80 % bis 90 % einzustellen. mm Reduzieren Sie die Werte von „Cutoff“ und „Resonance“ von Filter 1, um den Sound weicher zu gestalten. mm Sichern Sie den neu gestalteten Sound als Setting. mm Vergleichen Sie das Ergebnis mit dem Original-Setting von „PWM 2 Osc“. Sie werden überrascht sein, wie stark sich der Klang mit nur wenigen Einstellungen verändert hat. mm Vergleichen Sie Ihre eigenen PWM-Strings auch mit dem Setting „PWM Soft Strings“, das ebenfalls auf Basis der obigen Schritte entstand. Eine gewisse Ähnlichkeit sollte erkennbar sein. Ringmodulierte ES2-Sounds erzeugen Bei einer Ringmodulation werden die beiden Input-Signale des Ringmodulators so miteinander verknüpft, dass ihre Summen- und Differenzfrequenzen am Output des Ringmodulators zur Verfügung stehen. Beim ES2 gibt Oszillator 2 eine Ringmodulation aus, der von einer Rechteckwelle des Oszillators 2 und der Welle des Oszillators 1 gespeist wird, wenn „Ring“ als Wellenform von Oszillator 2 festgelegt ist. Dies ergibt bei ungeraden Intervallen (Frequenzverhältnissen) der Oszillatoren glockenähnliche Klänge, wie im Setting „Ringmod Start“. Der dritte Oszillator kann als Referenzoszillator für das Erhalten der korrekten Grundstimmung verwendet werden. Allerdings kann es auch reizvoll sein, den ringmodulierten Klang „Out of Tune“ beizubehalten, wenn dieses Signal als Oberton- und Harmonieanteil für eine andere Wellenform gesehen wird. Der Grundton kann dann von Oszillator 3 zugemischt werden. Atmosphärischen Glockenklang erzeugen Probieren Sie Folgendes mit dem Setting „Ringmod Start“: mm Um die Möglichkeiten der Ringmodulation kennenzulernen, sollten Sie zunächst ausgiebig mit den Frequenzeinstellungen der Oszillatoren 1 und 2 experimentieren. Vielleicht kehren Sie zu der vorgegebenen Einstellung „29 s 0 c/21 s 0 c“ zurück, die übrigens nicht verstimmt klingt Die Ringmodulation eignet sich nicht nur für glockige Klänge. Wenn Sie niedrigere Frequenzen einstellen, werden Sie auf recht experimentelle Klänge stoßen. Auch das Fine Tuning der Oszillatoren kann interessante Effekte ergeben. mm Probieren Sie einmal diese Einstellung für den Chorus-Effekt aus: „Intensity“ = 50 % und „Rate“ ca. 2/3 des Maximalwerts. mm Setzen Sie die Zeiten für „Attack“ und „Release“ von Envelope 3 nach Ihrem Geschmack. mm Wenn der Sound etwas rauer sein soll, versuchen Sie es mit „Drive“ und „Filter FM“. mm Alles andere bleibt Ihrer Kreativität und Phantasie überlassen. Kapitel 3 ES2 91 Sync-Sounds mit dem ES2-Oszillator erzeugen Durch die Verwendung der Sync-Wellenformen Rechteck und Sägezahn werden die Frequenzen der Oszillatoren 2 und 3 mit der Frequenz des Oszillators 1 synchronisiert. Im Setting „Sync Start“ klingt nur Oszillator 2. Oszillator 3 ist ausgeschaltet. Ein typischer Sync-Sound entsteht, wenn die Frequenz des Sync-Oszillators über einen großen Bereich dynamisch verändert wird. Diese Frequenzmodulationen (Sweeps) können auf unterschiedliche Weise erfolgen. Setting „Sync Start“ erweitern Führen Sie die folgenden Schritte aus: mm Probieren Sie zunächst die bereits vorprogrammierte Sync-Modulation mit dem Modulationsrad aus. mm Als zweite Modulation wurde die Steuerung mit der Envelope 1 voreingestellt (Target = Pitch 2, Source = Env 1). Wenn Sie den Minimumwert auf 1,0 setzen, hören Sie eine klassische Sync- Hüllkurve. Testen Sie auch kürzere Decay-Zeiten von Envelope 1. mm Damit der Sync-Sound (nach Ausklingen der Decay-Phase) nicht steril wird, kann zusätzlich eine Sync-Modulation mit dem LFO erfolgen. Verwenden Sie hierfür den dritten Router-Kanal und setzen Sie den Minimalwert der von LFO 1 erzeugten Modulation auf 0,50. mm Ersetzen Sie die synchronisierte Rechteckwelle durch eine synchronisierte Sägezahnwelle und entscheiden Sie, ob Ihnen das Ergebnis gefällt. Hinweis: Eine Pulsbreitenmodulation (PWM) ist auch mit der synchronisierten Rechteckwelle der Oszillatoren 2 und 3 möglich. Eine Modulation des jeweiligen Wave-Parameters resultiert in einer PWM, wenn die synchronisierte Rechteckwelle ausgewählt ist. Vector-Synthese im ES2 In den folgenden Beispiel-Settings erhalten Sie praktische Hilfe und Tipps zur Programmierung von Vector-Hüllkurven. Vector Envelope kennenlernen In dem Setting „Vector Start“ werden die Mischungsverhältnisse der drei Oszillatoren mit der Hüllkurve „Vector Envelope“ gesteuert. Für die Oszillatoren ist jeweils eine unterschiedliche Wellenform eingestellt. mm Wechseln Sie von der Router-Ansicht zur Vector-Ansicht. mm In der Basis-Einstellung verfügt die Vector-Hüllkurve über drei Hüllkurvenpunkte. Punkt 1 ist der Startpunkt, Punkt 2 ist der Sustain-Punkt, Punkt 3 ist der Endpunkt, der in der Release-Phase angefahren wird. Wenn Sie auf die Punkte klicken, können Sie im Triangle beobachten, dass dort das Mischungsverhältnis immer hundertprozentig auf Oszillator 1 eingestellt ist. mm Klicken Sie auf Punkt 2 und verschieben Sie den Zeiger im Triangle in Richtung Oszillator 2. Sie hören jetzt statt des vorherigen Sägezahnklangs (Oszillator 1) eine Rechteckwelle (Oszillator 2). mm Aktivieren Sie die Vector-Hüllkurve, indem Sie den Parameter „Solo Point“ ausschalten. Solange er eingeschaltet ist, hören Sie ausschließlich die für den markierten Punkt ausgewählte Klangeinstellung und keine dynamische Modulation. Nach dem Ausschalten von „Solo Point“ hören Sie nun mit jeder ausgelösten Note einen fließenden Übergang von Sägezahnzu Rechteckwelle. mm Verändern Sie die voreingestellte Zeit von 498 ms zwischen den Punkten 1 und 2. Kapitel 3 ES2 92 mm Klicken Sie bei gedrückter Umschalttaste auf den Bereich zwischen den Punkten 1 und 2. Ein neuer Punkt wird hinzugefügt und der bisherige Punkt 2 wird zu Punkt 3. Die vorherige Zeit zwischen Punkt 1 und 2 wird auf die beiden neuen Abschnitte (Punkt 1 und 2, Punkt 2 und 3) verteilt. Die Anteile hängen davon ab, wo der neue Punkt gesetzt wird. Wenn Sie ihn in der Mitte setzen, findet eine etwa gleiche Aufteilung statt. mm Klicken Sie auf den neu erzeugten Punkt 2 und verschieben Sie nun den zugehörigen Zeiger im Triangle in Richtung Oszillator 2. mm Klicken Sie auf Punkt 3 und verschieben Sie den zugehörigen Zeiger im Triangle in Richtung Oszillator 3. Sie hören jetzt ein Morphing zwischen den drei Oszillatoren, also den Wellenformen Sägezahn, Rechteck und Dreieck am Sustain-Punkt. mm Klicken Sie auf Punkt 4 (Endpunkt) und verschieben Sie den zugehörigen Zeiger im Triangle in Richtung Oszillator 1, wenn er nicht bereits dort steht. Stellen Sie Release (R) in Mittelposition. Sie hören jetzt, dass der Klang nach Loslassen der Taste zum Sägezahn von Oszillator 1 übergeht. Vector-Synthese mit dem Planar Pad Das Setting „Vector Envelope“ setzt dort an, wo das Setting „Vector Start“ endete. Es ist also eine einfache Vector-Hüllkurve vorhanden, die aus vier Punkten besteht und bisher ausschließlich das Mischungsverhältnis der Oszillatoren (das Dreieck) moduliert. Im vorliegenden Fall soll die Vector-Hüllkurve zusätzlich zwei weitere Parameter steuern: die „Cutoff Frequency“ von Filter 2 und „Panorama“. Diese sind als X- und Y-Ziele im Planar Pad voreingestellt. Ihre Intensität beträgt jeweils 0,50. Führen Sie die folgenden Schritte aus: mm Aktivieren Sie „Solo Point“, um die Einstellungen für die einzelnen Punkte besser hören zu können. mm Klicken Sie auf Punkt 1. Sie hören jetzt nur noch den Oszillator 1 (Sägezahnwelle). mm Verschieben Sie den Zeiger im Planar Pad ganz nach links, was zu einer tiefen Cutoff-Frequenz für Oszillator 2 führt. mm Klicken Sie auf Punkt 2. Sie hören jetzt nur noch den Oszillator 2 (Rechteckwelle). mm Verschieben Sie den Zeiger im Planar Pad ganz nach unten, um die Panorama-Position ganz nach rechts zu verschieben. mm Klicken Sie auf Punkt 3. Sie hören jetzt nur noch Oszillator 3 (Dreieckwelle). mm Verschieben Sie den Zeiger im Planar Pad ganz nach oben, um die Panorama-Position ganz nach links zu verschieben. mm Aktivieren Sie „Solo Point“. Der von der Vector-Hüllkurve gesteuerte Sound beginnt jetzt mit einer stark gefilterten Sägezahnwelle, die in eine ungefilterte Rechteckwelle übergeht. Der Ton beginnt rechts und endet schließlich bei einer Dreieckwelle auf der linken Seite. Nach Loslassen der Taste erklingt wieder der Sägezahn. Vector-Synthese-Loops verwenden Der Basisklang des Settings „Vector Loop“ (ohne die Vector-Hüllkurve) besteht aus drei Elementen: •• Osc 1 = Ein metallisches FM-Spektrum, das von dem im Oszillator 2 eingestellten Wavetable moduliert wird. •• Osc 2 = Ineinander übergehende Digiwaves, gesteuert durch den LFO 2, bilden einen so genannten „Wavetable“. •• Osc 3 = Ein PWM-Klang, der in der Modulationsgeschwindigkeit aufgrund des Rate-Scalings von LFO 1 ausgewogen ist. Kapitel 3 ES2 93 Die sehr unterschiedlichen Klangfarben sollen als Basis für die Vector Loop verwendet werden. „Unison“ und „Analog“ tragen dazu bei, dass der Sound fett und breit klingt. Eine sehr langsame Forward Loop ist bereits voreingestellt. Diese bewegt sich von Oszillator 3 (Punkt 1, PWM) zu Oszillator 1 (Punkt 2, FM), dann wieder zu Oszillator 3 (Punkt 3, PWM), danach zu Oszillator 2 (Punkt 4, Wavetable) und schließlich erneut zu Oszillator 3 (Punkt 5, PWM). Die Punkte 1 und 5 sind identisch, um so einen Übergang von Punkt 5 zu Punkt 1 in der Forward Loop zu vermeiden. Dieser Übergang ließe sich zwar durch den Parameter „Loop Smooth“ glätten, dies würde sich aber ungünstig bei der späteren rhythmischen Gestaltung auswirken. Die Abstände zwischen den Punkten der Vector-Hüllkurve wurden im Hinblick darauf auch bereits exakt gleich eingestellt. Bei aktivierter „Loop Rate“ werden die Hüllkurvenzeiten nicht in Millisekunden (ms), sondern in Prozent angegeben. Da vier Zeiten mit einer Länge von je 25 % vorhanden sind, bestehen optimale Voraussetzungen für eine Umwandlung in Notenwerte. Führen Sie die folgenden Schritte aus: mm Schalten Sie die Vector-Hüllkurve aus, indem Sie „Solo Point“ auf „on“ setzen. Hören Sie sich die einzelnen Bestandteile des Klangs zunächst einmal isoliert an. mm Nutzen Sie die Gelegenheit und ändern Sie die Positionen des Zeigers im Planar Pad nach Ihrem Geschmack. Die X/Y-Achsen des Planar Pads steuern die Cutoff-Frequenz von Filter 2 und die Panorama-Position. Änderungen an diesen Werten lassen den Sound noch lebendiger wirken. mm Aktivieren Sie die Vector-Hüllkurve, indem Sie „Solo Point“ auf „off“ setzen. Überprüfen Sie das Ergebnis und stellen Sie die Zeigerpositionen im Planar Pad fein ein. mm Verändern Sie die Loop Rate vom voreingestellten Wert 0,09 auf 2,00. Sie hören nun eine periodische Modulation wie die eines LFOs. Allerdings ist noch keine Temposynchronisation vorhanden. Um die Loop-Geschwindigkeit zum Projekttempo zu synchronisieren, bewegen Sie den Rate- Drehregler ganz nach links und wählen Sie dort einen Notenwert bzw. eine Taktanzahl. mm Sie können schnellere rhythmische Notenwerte erzeugen, indem Sie auf den Bereich zwischen zwei Punkten klicken und die Werte (entstehend aus der Rasterung) auf z. B. 12,5 % setzen. Erzeugen von Kickdrums mithilfe eines selbstoszillierenden Filters und der Vector-Hüllkurve Sie wissen vielleicht, dass mit oszillierenden Filtern wunderbare elektronische Kicks erzeugt werden können. Dies funktioniert auch mit dem ES2 hervorragend, insbesondere wenn die Vector-Hüllkurve zur Filtermodulation verwendet wird. Der Vorteil gegenüber den ADSRHüllkurven besteht darin, dass zwei voneinander unabhängige Decay-Phasen eingestellt werden können. Der Distortion-Effekt sorgt für den richtigen Druck, ohne dass der Basisklang seinen Charakter verliert. Hinweis: Damit das Setting auch richtig knallt, muss unbedingt „Flt Reset“ aktiviert sein, da alle Oszillatoren in diesem Setting ausgeschaltet sind und das Filter etwas Zeit braucht, bis es zu schwingen beginnt. „Flt Reset“ speist einen kurzen Impuls bei Notenbeginn in das Filter, sodass es von Anfang an schwingt. Mithilfe des Basis-Settings „Vector Kick“ werden Sie vermutlich für jede Dance-Produktion in kürzester Zeit den passenden Bassdrum-Sound finden. Ändern Sie die folgenden Parameter, um Klangvariationen zu erzeugen: mm Flankensteilheiten von Filter 2: 12 dB, 18 dB, 24 dB mm Distortion: „Intensity“ und „Soft“ oder „Hard“ mm Envelope 3 Decay-Zeit: (D) mm Vector-Hüllkurvenzeit 1 > 2 (= Preset 9,0) Kapitel 3 ES2 94 mm Vector-Hüllkurvenzeit 2 > 3 (= Preset 303) mm Vector Time Scaling Perkussive Synthesizer und Bässe mit zwei Filter-Decay-Phasen erzeugen Wie beim Setting „Vector Kick“ verwendet auch hier das Setting „Vector Perc Synth“ die Vector- Hüllkurve zur Steuerung der Filter-Cutoff-Frequenz mit zwei voneinander getrennt einstellbaren Decay-Phasen. Dies wäre mit einer normalen ADSR-Hüllkurve nicht realisierbar. Versuchen Sie, mit einer Modifikation dieser Parameter weitere perkussive Synthesizersounds oder Synthesizerbässe zu programmieren: mm Vector-Hüllkurvenzeit 1 > 2 (= Decay 1) mm Vector-Hüllkurvenzeit 2 > 3 (= Decay 2) mm Vector Time Scaling mm Punkte 1, 2, und 3 (= Cutoff-Frequenz) im Planar Pad mm Wellenformen (andere Wellenformen wählen) Erzeugen von ES2-Sounds mit Templates ES2-Sound-Design mit Templates Es gibt eine Reihe von Templates für das Tutorial, die Sie über das Einblendmenü „Settings“ öffnen können (wählen Sie den Ordner „Tutorial Settings“). Diese Programmierübung mit dem ES2 wurde als Teil der „Werkzeuge“ eingebaut, um Ihnen den Aufbau des ES2 durch praktische Übungen näherzubringen. Wenn Sie sich mit dem ES2 und seinen Funktionen und Parametern in dieser Weise vertraut machen, erzeugen Sie auch Settings, die als Vorlage und Ausgangspunkt für weitere Klangschöpfungen dienen. Slapped StratENV-Setting im ES2 Ziel dieses Settings war es, den Sound einer Stratocaster nachzubilden, bei dem sich der Pickup-Schalter in der Mittelposition für den mittleren und den Stegpickup (in Phase) befindet. Besonderes Augenmerk wurde dabei auf das nasale, für diesen Sound typische „Twäng“ gelegt. Das Ergebnis ist ein recht brauchbares Template für Saiteninstrumente, Cembalos, Clavinets oder Ähnliches. Der Aufbau: Die Oszillatoren 1 und 3 bestimmen die grundlegende Wellenform im Bereich der Digiwaves. Die Veränderung beider Digiwaves in Abstimmung miteinander liefert bereits eine umfangreiche Anzahl an Grundvariationen. Manche erfüllen ihren Zweck auch recht gut für E-Piano-ähnliche Keyboardsounds. Oszillator 2 fügt in seiner synchronisierten Einstellung Obertöne hinzu, daher sollten Sie hier lediglich seine Frequenz oder die Sync-Wellenform verändern. Daher gibt es einige Werte, die ein wesentlich stärkeres, ausgewogeneres Signal erzielen. Es wurde ein alter Trick verwendet, der eine kraftvolle Attack gewährleistet. Dadurch wurde ein Effekt erzeugt, den die Verwendung einer bloßen Welle selbst mit den besten und schnellsten Filtern nicht ermöglichen würde: Sie verwenden eine Hüllkurve (in diesem Fall Env 1) für einen kurzen „Ruck“ des Fensters einer Wavetable (oder aller Wavetables gemeinsam, falls dies sinnvoll ist). Kapitel 3 ES2 95 Die Decay-Zeit von Envelope 1 erzeugt diesen kurzen Ruck, indem die Wave-Drehregler sämtlicher Oszillatoren bewegt werden. (Obwohl es nicht wirklich sinnvoll ist, diesen Hüllkurventrick auch auf den gesyncten Sägezahn-Oszillator Osc2 anzuwenden, sollten Sie es trotzdem einmal versuchen.) Sie können daher die Qualität des „Knacks“ variieren zwischen: •• Hüllkurve 1 nimmt Einfluss auf den Attack-Noise und ändert die Decay-Länge – ein kurzes Decay sorgt für eine Pegelspitze, ein langes Decay führt dagegen zu einem Grollen (Growl), da Hüllkurve 1 mehrere Wellen aus der Wavetable ausliest. •• Modulationsziel – Sie können es jedem Oszillator separat zuweisen. •• Startpunkt – Sie variieren den Start des Wellenfensters mit der minimalen und maximalen Regelung der Modulation von EG1/Osc.waves: Negative Werte für eine Startwelle vor der ausgewählten Welle, positive Werte für eine Startwelle von einer Position hinter der ausgewählten Welle, die die Tabelle zurückrollt. Experimentieren Sie mit der Wellenmodulation. Der „Growl“-Effekt eignet sich für Brass-Sounds und so manche Orgel profitiert vom Klick des kurzen Wavetable-Schubs. Envelope 2, die für die Filterangelegenheiten verantwortlich ist, kommt mit einem leichten Attack für den Slap-Charakter hinzu. Allerdings können Sie Attack genauso gut auf den schnellsten Wert setzen, um das Wah-Wah-Attack herauszunehmen. Dabei bleibt genug Knack erhalten. LFO 2 wird zu Spielzwecken als Echtzeitquelle für ein Vibrato verwendet. Im vorliegenden Beispiel ist das Filter „Modwheel“ und „Pressure“ zugewiesen. Sie können jederzeit die Einstellungen für Rad und Druck ändern. Die Anschlagsdynamik ist sehr sensibel gewählt, da viele Synthesizer-Spieler die Tasten nicht so stark anschlagen wie Klavierspieler. Spielen Sie die Strat also sanft, da sich sonst der Slap ein wenig zirpig verhalten könnte. Oder aber passen Sie einfach den Velocity-Wert der Filtermodulation Ihrer eigenen Spielweise an. Sie können bei Bedarf auch den Wert für die Stimmenanzahl (Voices) auf den Maximalwert erhöhen. Sechs Saiten sollten für eine Gitarre genügen, jedoch können sich ein paar zusätzliche Stimmen bei gehaltenen Noten als nützlich erweisen. ES2-Wheelrocker-Setting Dieser gewöhnliche Orgel-Patch offenbart keine tiefgreifenden Geheimnisse fortgeschrittener Programmierkünste: Er besteht lediglich aus einer Kombination dreier Oszillatoren mit gemischten Wave-Pegeln. Sie finden sicherlich eine andere Kombination, die Ihren Vorstellungen von einem Orgelklang eher entspricht. Experimentieren Sie einfach mit den Digiwaves. Beachten Sie den Effekt des Modulationsrads: Halten Sie einen Akkord und bewegen Sie das Rad langsam bis ganz nach oben. Das Programm simuliert einen beschleunigenden Leslie-Rotor-Lautsprecher. Die Modulationseinrichtungen erfüllen folgende Aufgaben: •• Die Modulation 1 weist Envelope 2 dem Filter 1 zu (das einzige, das in diesem Patch Verwendung findet), um von der Hüllkurve einen kleinen Orgelklick zu erhalten. Im Diskant wird das Filter durch den Maximum-Drehregler „Keyboard as via“ weiter geöffnet. •• Die Modulationen 2 und 3 erzeugen ein gegenphasiges Vibrato der Oszillatoren durch LFO 1. •• Das Modulations-Routing 4 muss nicht eingestellt werden, aber Sie können es natürlich dennoch einstellen. Es wurde so konfiguriert, dass es ENV1 nutzt, um die Wavetable zu „pushen“. Stellen Sie „ENV1 Decay“ ein, um den Sound mehr wie eine Kirchenorgel klingen zu lassen. Stellen Sie „ENV1 Attack“ ein, um durch die Wavetable zu sweepen. Kapitel 3 ES2 96 •• Die Modulation 5 reduziert die Gesamtlautstärke, damit sich der Gesamtpegel nicht allzu drastisch erhöht, wenn sich die Modulationen in Richtung des Maximalwerts bewegen. •• Die Modulationen 6 und 7 verstimmen die Oszillatoren 2 und 3 mit symmetrischen Werten gegeneinander, sodass sich die Gesamtstimmung nicht ändert. Auch dies erfolgt gegenphasig zu den Modulationen 2 und 3. Oszillator 1 behält seine Stimmung bei. •• Die Modulation 8 bringt LFO 1 als Modulator für die Panoramabewegung ins Spiel. Das Patch verändert sich von Mono zu Stereo. Sollten Sie den Stereo-Effekt auch in Ruheposition des Leslies bevorzugen, belegen Sie einfach das Minimum mit einem Wert, um eine permanente, langsame Rotationsbewegung zu erzielen. Eine andere Modifikation kann in einer stärkeren Kanaltrennung durch einen höheren Maximum-Wert bestehen. •• Die Modulation 9 beschleunigt die Modulationsfrequenz von LFO 2. •• Modulation 10: Zur Verstärkung der Modulationsintensität wurde die Cutoff-Frequenz auf Filter 1 ein wenig angehoben. Passen Sie diese Einstellungen Ihren eigenen Vorstellungen an. Beachten Sie dabei allerdings, dass es Modulationspaare gibt, die symmetrisch verändert werden sollten: Die Modulations- Routings 2 und 3 arbeiten ebenso wie die Modulations-Routings 6 und 7 als Paar. Wenn Sie also den Maximalwert von Pitch 2 auf einen Minuswert setzen, beachten Sie bitte, dass der Maximalwert von Pitch 3 auf denselben positiven Wert gesetzt werden muss (das Gleiche gilt für das Modulationspaar 6 und 7). Sie können auch LFO 2 verwenden, um die Pitch-Diffusion gegen die Pitch- und Pan- Bewegungen von LFO 1 zu erhöhen. Tauschen Sie ihn dazu einfach gegen LFO 1 auf den Modulationen 2 und 3 aus. Beachten Sie, dass es keine Modulationsquelle für die Leslie- Beschleunigung gibt, daher müssen Sie diese auf statische Weise durch Einblenden verwenden. Als Alternative müssen Sie eine der anderen Modulationen zugunsten eines zweiten Twirl opfern. Um eine weitere Stereo-Modifikation zu erzielen, können Sie das Patch im Unison-Modus mit einer leichten Verstimmung verwenden. Passen Sie hierfür den Parameter „Analog“ an. Crescendo-Blechbläser-Setting im ES2 Die Oszillatoren werden für die folgenden Vorgänge verwendet: •• Oszillator 1 spielt die für klassische, synthetische Blechbläser-Sounds typische Sägezahnwelle. •• Oszillator 2 fügt dem eine nicht sehr nach Blechbläsern klingende Pulswelle für den Ensemble- Effekt hinzu: Sie wird von LFO 1 (Modulation 4) in der Pulsbreite moduliert. Hinweis: Bei jeder Modifikation sollte der folgende wichtige Punkt beachtet werden. Es gibt vier Parameter, die schwer zu handhaben sind, da sie sich recht unterschiedlich verhalten, wenn einer von ihnen verändert wird. Deshalb müssen immer alle vier Parameter angepasst werden, sobald einer verändert wird. •• Sie können die mittlere Pulsbreite mit dem Wave-Parameter von Oszillator 2 einstellen. Im vorliegenden Beispiel wurde eine Art „fette“ Position gewählt, die sich nahe an der idealen Rechteckwelle befindet, da das Ziel ein voller, voluminöser Synthbrass-Sound ist. •• Die Modulation 4 steuert die Modulationsintensität, d. h. wie weit sich die Pulsbreite von „weit“ zu „eng“ bewegt, wenn sie durch den LFO moduliert wird. Variieren Sie den Minimum-Parameter. •• Die Geschwindigkeit der Pulsbreitenmodulation wird von der „LFO 1 Rate“ bestimmt. Für dieses Patch wurden beide LFOs eingesetzt, um eine stärkere Diffusion mit unterschiedlichen Modulationsgeschwindigkeiten zu erzielen. Kapitel 3 ES2 97 Tipp: Es empfiehlt sich, den LFO1 für alle permanenten, automatisierten Modulationen zu verwenden, da seine Intensität mit seinem eigenen EG-Parameter verzögert werden kann. LFO 2 eignet sich mehr für alle Echtzeitmodulationen, die Sie während der Wiedergabe per Modulationsrad, Pressure oder andere Controller in Echtzeit steuern. •• Eine Keyboard-Zuweisung wurde als Quelle für Modulations-Routing 4 angelegt, da alle Tonhöhen- oder Pulsbreitenmodulationen eine stärkere Verstimmung in den tieferen Tastaturlagen zu bewirken scheinen, während mittlere und hohe Lagen durchaus den Diffusionseffekt liefern können. Daher sollten Sie die tieferen Lagen zuerst abstimmen, um eine akzeptable Modulation zu erzielen. Überprüfen Sie, ob die Modulationen im oberen Tastaturbereich für Sie zufriedenstellend klingen. Passen Sie Intensität (Maximum) und Tastaturbelegung (Minimum) an. Oszillator 3 erzeugt eine Digiwave, die im Wellenmix „blechern“ genug ist. Es hätte ebenso gut eine weitere Pulsbreitenmodulation angelegt werden können, um den Ensemble-Effekt zu unterstützen, oder ein weiterer Sägezahn, der gegen den auf Oszillator 1 hätte verstimmt werden können, um den Sound noch fetter zu gestalten. Außerdem wird durch einen kurzen „Ruck“ des Wavetables ein wenig „Growl“ hinzugemischt, wie bereits unter Slapped StratENV-Setting im ES2 auf Seite 94 beschrieben. Diese Anordnung befindet sich in Modulation 3 (Oszillator 3 Wave wird durch das Decay von Envelope 1 bewegt). Andere Regler haben verschiedene Funktionen: •• Envelope 1 moduliert die Frequenz von Oszillator 2 und invers die von Oszillator 3. Reibungen der beiden Oszillatoren sind die Folge. Auch die stabile Frequenz von Oszillator 1 ist davon in der Attack-Phase des Sounds betroffen. •• Die Filterhüllkurve schließt impulsiv in der Attack-Phase, um danach mit einem etwas langsameren Crescendo wieder zu öffnen. •• Das Modulationsrad erzeugt in Echtzeit bei Bedarf ein weiteres Crescendo, das die allgemeine Frequenzmodulation durch LFO2 auslöst. •• „Pressure“ wiederum schließt als eine dagegen wirkende Echtzeitmodulation das Filter. Daher können Sie mit einem zusätzlichen Decrescendo spielen, das über Druck gesteuert wird. Probieren Sie es aus, um ein Gefühl für das Verhalten des Patches zu bekommen. Sie werden feststellen, dass es eine ganze Palette von Ausdrucksmöglichkeiten liefert: Velocity, Pressure nach dem Note On und Pressure vorweg. Drücken Sie einmal mit der linken Hand bereits angeschlagene Tasten, bevor Sie mit der rechten Hand einen neuen Akkord anschlagen. ES2-MW-Pad-Creator-Setting Hiermit wird versucht, ein Patch zu entwickeln, das selbst in der Lage ist, neue Patches zu entwickeln. Oszillator 2 ist in der Pulsbreite moduliert, um einen starken Ensemble-Effekt hervorzurufen (weitere Informationen finden Sie unter Crescendo-Blechbläser-Setting im ES2 auf Seite 96). Die Oszillatoren 1 und 3 sind innerhalb ihrer Wavetables auf eine Art Startkombination eingestellt. Diese können nach Belieben verändert werden. Das Modulationsrad auf Modulation 3 regelt eine Wavetable-Bewegung aller drei Oszillatoren. Das heißt, Sie scrollen durch die Wavetables der Oszillatoren 1 und 3, während sich die Pulsbreite des Oszillators 2 durch Bewegen des Modulationsrads verändert. Kapitel 3 ES2 98 Bewegen Sie das Modulationsrad sehr langsam und Sie werden drastische Veränderungen innerhalb der Wellenanordnung wahrnehmen. Jede Position des Rads erzeugt einen anderen, digitalen Flächenklang. Vermeiden Sie hektische Bewegungen, sonst hören Sie Geräusche wie bei einem AM-Radio. Spielen Sie mit der Modulationsintensität der Wellenformen der Oszillatoren 1, 2 und 3 durch das Modulationsrad. Dieser Parameter regelt sowohl Schrittweite als auch Bewegungsrichtung durch die Wavetables. Experimentieren Sie mit positiven und negativen Werten. Ein interessanter Nebeneffekt der FM-Zuweisung zu Filter 2 (Modulations-Routing 4 – Lowpass-Filter FM) tritt auf, wenn das Modulationsrad in höhere Positionen bewegt wird: Die Frequenzmodulation des Filters wird erhöht, was eine Betonung aller zyklischen Beats (vibrierende Tonhöhen, Verstimmungen, Pulsbreite) bewirkt. So wird der gesamte Soundcharakter rauer und rauschiger. Von daher bietet FM ein umfangreiches Experimentierfeld, wobei Sie zwischen folgenden Optionen wählen können: •• Festeingestellte Frequenzmodulation mit dem entsprechenden Regler des Filters 2. Abschwächen der Intensität über das Modulationsrad: Definieren Sie als Maximum der Modulation 4 einen negativen Wert. •• Alternativ können Sie eine permanente Frequenzmodulation wählen, wobei Sie einen Modulationskanal einsparen. Sie können „FM“ auch ausschalten, wenn es zu unrein klingt. Als Spielhilfe ist die Druckdynamik (Pressure/Aftertouch) für das Vibrato angelegt (Modulation 10)* sowie eine leichte Anhebung der Cutoff-Frequenz, um die Modulation etwas zu betonen (Modulation 9). ES2-Wheelsyncer-Setting Es gibt Sounds die nie aus der Mode kommen: Sounds mit synchronisierten Oszillatoren. „Wheelsyncer“ ist ein 1-Oszillator-Lead-Sound, alle anderen Oszillatoren sind ausgeschaltet. Obwohl Oszillator 2 der einzige ist, der einen Klang von sich gibt, hängt sein Ausgangssignal vom stummgeschalteten Oszillator 1 ab. Ändern Sie die Frequenz oder Verstimmung des Oszillators 1, wird die gesamte Tonhöhe transponiert oder verstimmt. Die Tonhöhe von Oszillator 2 definiert die Klangfarbe (oder die Obertöne) des synchronisierten Sounds. Seine Veränderungen werden durch Modulation 7 geregelt, in der die Frequenz von Oszillator 2 vom Modulationsrad gesteuert wird. Wenn Sie das Modulationsrad drehen, können Sie durch das Spektrum von Obertönen scrollen, die für Echtzeitveränderungen programmiert wurden. Jede Modifikation beginnt mit Oszillator 2, der 3 Halbtöne unterhalb der Gesamtstimmung liegt. Probieren Sie andere Werte aus. Eine Änderung wird die Gesamtstimmung nicht beeinflussen. Die nächste Modifikation kann in der Veränderung der Intensität von Modulation 7 liegen (bzw. in ihrem Intervall). Wir haben den größtmöglichen Wert ausgewählt. Wenn er für Ihre Anwendung zu extrem ist, können Sie ihn natürlich reduzieren. Eine weitere Modifikation liegt in der Klangfarbe des Lead-Sounds selbst. Oszillator 1 ist stummgeschaltet, da das Ergebnis bereits zufriedenstellend ist. Wenn Sie ihn aktivieren, ist die gesamte Bandbreite seiner Wellenformen verfügbar. Von Digiwaves über die standardisierten Synthesizerwellen bis zum Sinus, den Sie obendrein noch frequenzmodulieren können. Kapitel 3 ES2 99 Die gesamte Echtzeitsteuerung erfolgt über das Modulationsrad, das zum Öffnen der Filter im Modulations-Routing 6, für eine Panning-Bewegung im Modulations-Routing 8 und zur Beschleunigung der Panning-Bewegung im Modulations-Routing 9 benutzt wird. Wenn Sie intensivere Modulationsmöglichkeiten suchen, wird ein ähnliches Setup für eine Leslie-Speaker- Simulation im Setting „Wheelrocker“ benutzt (vgl. ES2-Wheelrocker-Setting auf Seite 95.). 4 100 EFM1 – Übersicht Der 16-stimmige EFM1 ist ein einfacher, aber leistungsstarker FM-Synthesizer. Er erzeugt obertonreiche, glockige Digital-Sounds – Sounds, mit denen die FM-Synthese berühmt wurde. Wenn Sie mit Synthesizer nicht vertraut sind, finden Sie weitere Informationen unter Synthesizer- Grundlagen – Übersicht auf Seite 440. Hier werden grundlegende Begriffe erläutert und verschiedene Klangerzeugungssysteme und ihre Funktionsweise im Überblick dargestellt. Output parameters Extended parameters Modulation parameters Randomize parameters Output parameters Carrier parameters Global parameters Modulation parameters Global parameters Modulator parameters EFM1 ist in mehrere Bereiche unterteilt. •• Globale Parameter: Im oberen Bereich finden sich Parameter für die Gesamtstimmung des EFM1. Weitere Parameter erlauben das Einstellen der Glide-Zeit (Portamento), das Beschränken der maximalen Stimmenzahl und Andicken des Klangs mittels Unison. Weitere Informationen finden Sie unter EFM1-Globalparameter auf Seite 105. •• Modulator- und Carrier-Parameter: Zu der FM-Bedieneinheit gehören die Parameter des Modulators, des Carriers (hervorgehobene, dunklere Bereiche) und der Drehregler für die FM-Intensität (im Zentrum). Diese Parameter sind wesentlich für den grundlegenden Klang von EFM1. Weitere Informationen finden Sie unter Modulator- und Carrier-Überblick auf Seite 101. EFM1 Kapitel 4 EFM1 101 •• Modulationsparameter: Die Modulationshüllkurve und der LFO, oben und unten in dem pilzförmigen mittleren Bereich dienen dazu, Bewegung in den