CHON: from Physical Simulation to Musical Gesture

Total Page:16

File Type:pdf, Size:1020Kb

CHON: from Physical Simulation to Musical Gesture UNIVERSITY OF CALIFORNIA, SANTA BARBARA CHON: From physical simulation to musical gesture by Rodney DuPlessis Proje ! do umen!#!ion submi!!ed in $#r!i#l ful&llmen! %or !'e de(ree o% )#s!er of S ien e in )edi# Ar!s #nd Te 'nolo(y Co""i!!ee* Professor Cur!is Ro#ds, Ch#ir Professor +oAnn ,u 'er#-)orin Dr. ,#rl Yerkes April 0102 CHON* From $'ysi #l simul#!ion !o musi #l (es!ure Co$yri('! © 0102 by Rodney DuPlessis ACKNOWLEDGMENTS I 5ould like !o !'#nk my ommi!!ee for !'eir su$$or! #nd (uid#n e over !'e ourse of my !ime in !'e )edi# Ar!s 7 Te 'nolo(y $ro(r#". I #lso !'#nk Andres Cabrer# #nd !'e Allos$'ere Rese#r ' 8rou$ for !'eir 5ork on Allolib, 5'i ' $rovided # solid found#!ion for C3ON. I #m (r#!eful !o my o'or! #nd olle#(ues for our oun!less s!imul#!in( onvers#!ions #nd for 'oldin( s$# e for ins$ir#!ion #nd re#!i6i!y !o 9ouris'. I 5#n! !o e:$ress my dee$ (r#!i!ude !o my 5ife for su$$or!in( me !'rou(' !'e lon( d#ys #nd l#!e ni('!s of %ren;ied odin( #nd e:$erimen!#!ion. Fin#lly, I !'#nk Suki #nd A$$# %or !'eir unders!#!ed "or#l su$$or!. ABSTRACT CHON* From $'ysi #l simul#!ion !o musi #l (es!ure by Rodney DuPlessis Physi #l me!#$'or $rovides # vis er#l #nd univers#l lo(i #l fr#me5ork for o"$osin( musi #l (es!ures. Physi #l simul#!ions #n #id !'e o"$oser !o re#!e musi #l (es!ures b#sed in o"$lex $'ysi #l me!#$'ors. CHON <Cou$led 3#rmoni Os ill#!or Ne!wor/= is # ross-$l#!%orm #$$li #!ion for simul#!in( "#ss-s$rin( ne!works #nd sonifyin( !'e mo!ion of indi6idu#l $#r!i les. CHON is #n in!er# !ive ins!rumen! !'#! #n $rovide o"$lex, ye! !#n(ible #nd $'ysi #lly b#sed, on!rol d#!# for syn!'esis, sound $ro essin(, #nd musi #l s ore (ener#!ion. This sys!e" builds on !'e ide# of !'e !r#di!ion#l LFO by ou$lin( !'e movemen! of mul!i$le on!rol si(n#ls usin( $'ysi #l $rin i$les. Contents 1 Introduction 1 1.1 Overview . .1 1.2 Related work . .2 2 Physical metaphor in music 6 2.1 Logical Framework . .6 2.2 Universal . .8 2.3 Visceral . 10 2.4 Physical Metaphor in Music . 10 3 Physics 12 4 Software implementation 19 4.1 Libraries . 19 4.2 Physics computation . 20 4.3 Sound engine . 21 4.4 OSC . 23 5 Interface 24 5.1 Visual interface . 24 5.2 GUI . 26 5.3 Interaction . 31 6 Applications and Limitations 33 6.1 Applications . 33 6.1.1 Continuous control data . 33 6.1.2 Trigger control data . 34 6.1.3 Generating musical scores . 34 6.2 Limitations . 35 7 Future directions 38 Bibliography 40 Appendix A: Timeline 43 Chapter 1 Introduction 1.1 Overview Coupled Harmonic Oscillator Network (CHON) is a real-time, interactive application for generating sonic gestures and textures using a simulation of a physical dynamical system as a musical interface. The physical system is a network of particles connected by a spring-like force. The user sets the system into motion by displacing a particle, which causes a chain reaction governed by Newtonian mechanics. The user can intervene in the evolving system, dragging and moving particles at will. The system generates complex yet tangible control data that can be used to drive parameters for sound synthesis and other purposes. CHON is part of a larger interest of mine in using physical metaphor in music. I have previously used intuitive and algorithmic methods to express physical metaphor in my music. CHON represents a hybrid approach, allowing intuitive interaction with the algorithmically generated simulation in real-time. The musical gestures that CHON can create are chaotic, but they seem nonetheless intelligible because of their connection to the physical world. The coupled harmonic oscillator is a fundamental model in physics that has applications in many areas of research. It is an extension of the simple harmonic oscillator, which can be represented by a mass on a spring. The simple harmonic oscillator moves sinusoidally, but when coupled via a spring-like force to another harmonic oscillator (or many), complex superpositions of sinusoidal waves emerge. CHON goes further, allowing the masses in the coupled harmonic oscillator network to move in 3 dimensions and to be arranged in a 1 2-dimensional grid. The application is written in C++ and uses the Allolib framework extensively. It is open source1, under a GPLv3 license, and runs on Linux, MacOS, and Windows. It uses an explicit numerical method to solve the discretized equations of motion of the particles. The visual interface is a 3D rendering of the particle system. The user interacts directly with the particles in the visual simulation using a computer mouse. A 2D graph can also be displayed which visualizes the displacement of each particle along a given axis. CHON has an internal synthesis engine that allows the user to sonify the movement of the particles. The instrument also generates a stream of OSC data from each particle, making it a versatile tool for generating up to 100 control signals that are linked by physical laws. I have used CHON to generate sounds using the internal sound engine as well as using the OSC data it broadcasts to control external synthesis and notation software. For example, I used CHON to write a score for two pianists. The piece, Pandæmonium, was premiered by HOCKET in August 2020. I am still exploring the musical possibilities afforded by CHON, and the possibilities of extending and improving CHON. I will discuss some of these future directions at the end of this paper. 1.2 Related work Physical modeling is a massive interdisciplinary field of research spanning industrial, scientific, and artistic applications. In music, the vast majority of physical modeling is used for re-synthesizing believable facsimiles of real instruments[1][2]. The same technology that allows these recreations has also been applied to create fantastical virtual instruments of unreal proportions or configurations[3][4]. The first example of physical modeling synthesis of instruments was demonstrated in 1971 by Hiller and Ruiz[5]. Today, physical modeling synthesis, driven by increasingly powerful computers, can achieve very convincing results. On the other hand, physical modeling interfaces often suffer from problems of control and complexity; the high number of parameters in a given simulation may be overwhelming for performance purposes[6, p. 288][7]. There are many approaches to the design of systems for physical modeling synthesis including modal synthesis, waveguide schemes, source-filter models, and mass-spring 1The source code can be accessed at https://github.com/rodneydup/CHON 2 methods[8]. CHON falls into the realm of mass-spring methods. Mass-spring methods use Newtonian mechanics to simulate the dynamics of particles with mass and inertia connected by spring-like forces[6, p. 271]. This is the type of simulation that drives CHON. The goal of most mass-spring applications is to simulate a physical body that can be described as a network of coupled masses. This, like every physical model, is a simplification of reality. Nevertheless, many types of physical bodies fit well into this model. The mass-spring model does a good job at representing the way that waves propagate through solid media such as strings and vibrating surfaces (like drums). The mass-spring model suffers from scalability issues, however. The cost of computation can increase quickly as more particles are used in a given simulation. Considering that physical modeling synthesis often needs to run at audio rate (updating 44,100 times per second) and that higher particle density generally results in a more realistic simulation, this is a difficult problem. The focus of most mass-spring simulations is on the object that the system simulates. In other words, the aim is that the gestalt of the movements of the particles generates sound that resembles the sound of the object being modeled. This is where CHON differs from other mass-spring applications (and indeed the majority of physical modeling synthesis projects in general). Rather than create a sound object from an amalgam of particle interactions, CHON was designed with the goal of exploring interconnected particles as sound objects unto themselves. I am also interested in larger-scale gestures, phrases, and forms that can arise from the overlapping undulations of the coupled particles, but the foundation of CHON remains the individual sound-particles themselves. Claude Cadoz and others at ACROE (Association pour la Création et la Recherche sur les Outils d’Expression) in Grenoble pioneered the use of the mass-spring model in physical modeling synthesis and musical creation. They generalized mass-spring models into what they call a mass-interaction scheme, where, in addition to more standard mass-spring situations, particles may be lumped into strange configurations and the forces connecting them may be non-linear[9]. ACROE’s CORDIS-ANIMA system was one of the first digital synthesis applications for physical modeling, paving the way for future research. CORDIS-ANIMA is a sophisticated and technical modular system for simulation and sonification/visualization of mass-interaction models[9]. In CORDIS-ANIMA, the user can specify many physical parameters of each particle, including how and which particles are coupled to each other, their initial position and velocity, their mass, whether they are fixed or can move.
Recommended publications
  • Multithreaded Rendering for Cross-Platform 3D Visualization Based on Vulkan Api
    The International Archives of the Photogrammetry, Remote Sensing and Spatial Information Sciences, Volume XLIV-4/W1-2020, 2020 3rd BIM/GIS Integration Workshop and 15th 3D GeoInfo Conference, 7–11 September 2020, London, UK MULTITHREADED RENDERING FOR CROSS-PLATFORM 3D VISUALIZATION BASED ON VULKAN API C. Ioannidis, A.-M. Boutsi* Laboratory of Photogrammetry, School of Rural and Surveying Engineering, National Technical University of Athens, Greece; [email protected], [email protected] KEY WORDS: Computer graphics, 3D visualization, graphics API, Vulkan, geospatial data ABSTRACT: The visualization of large-sized 3D geospatial models is a graphics intensive task. With ever increasing size and complexity, more computing resources are needed to attain speed and visual quality. Exploiting the parallelism and the multi-core performance of the Graphics Processing Unit (GPU), a cross-platform 3D viewer is developed based on the Vulkan API and modern C++. The proposed prototype aims at the visualization of a textured 3D mesh of the Cultural Heritage by enabling a multi-threaded rendering pipeline. The rendering workload is distributed across many CPU threads by recording multiple command buffers in parallel and coordinating the host and the GPU rendering phases. To ensure efficient multi-threading behavior and a minimum overhead, synchronization primitives are exploiting for ordering the execution of queues and command buffers. Furthermore, push-constants are used to send uniform data to the GPU and render passes to adapt to the tile-based rendering of the mobile devices. The proposed methodology and technical solution are designed, implemented and tested for Windows, MacOS and Android on Vulkan-compatible GPU hardware by compiling the same codebase.
    [Show full text]
  • 3.2.1 Opengl Context and Window Creation
    OpenGL Context and Window Stefano Markidis and Sergio Rivas-Gomez Four Key-points • OpenGL does not include window creation and management. You will need separate libraries to manage the windows • As window creation and management, we suggest that you use either GLUT/FreeGLUT or GLFW • GLUT/FreeGLUT are easy to use and likely already installed on your systems, GLFW is the future but you need to install it • When using OpenGL, it is better to install and use a library for OpenGL function pointer management. We will install and use GLAD OpenGL Initialization … Without OpenGL! • We initialize OpenGL, by creating an OpenGL context, which is essentially a state machine that stores all data related to the rendering of our application. • Problem: Creating a window and an OpenGL context is not part of the OpenGL specification. • The reason that this is done differently on different platforms and OpenGL can’t guarantee portability. • There are libraries, not included in OpenGL, out there that supports window creation and management. Typical Program Flow with Window Management Libraries Every application making use of real-time graphics will have a program flow that comes down to this render loop Suggested Libraries to Create/Manage Windows • GLUT: OpenGL Utility Toolkit (GLUT) library • Easiest to use • Already installed on lab machines and likely on your laptop. • Not designed for core-profile OpenGL • Free-GLUT newly developed version of GLUT, supported and new license type • GLFW: • Little more difficult to use than GLUT • Most modern and best integration with modern OpenGL. • It doesn’t support deprecated immediate-mode legacy OpenGL Create a Window with GLUT / Free GLUT • We first initialize window with glutInit, glutInitWindowSize(), glutCreateWindow() • We tell GLUT what is the function responsible for the rendering and define it.
    [Show full text]
  • Opengl! ! Where It fits! ! What It Contains! ! How You Work with It
    11(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL! ! where it fits! ! what it contains! ! how you work with it 11(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL! ! The cross-platform graphics library!! ! Open = Open specification! ! Runs everywhere - Linux, Mac, Windows...! ! Any language! ! Three branches:! ! OpenGL - ordinary computers! OpenGL ES - phones and tablets! WebGL - web browsers 12(40)12(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL and Related APIs application program GLUT! GLX,! SDL! X, OSX, WGL,! GLFW GLU Win32 etc CGL,! NSOpenGL GL drivers, hardware 13(40)13(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL parts:! ! GL = Graphics Library (core lib)! ! GLU = GL Utilities (no longer supported)! ! GLX, WGL, CGL, NSOpenGL = System dependent libraries! ! ! ! GLUT = GL Utility Toolkit (optional)! ! FreeGLUT, MicroGlut! ! Also note: SDL (Simple Directmedia Layer)! ! GLFW (similar to GLUT) 14(40)14(40) Information Coding / Computer Graphics, ISY, LiTH OpenGL versions OpenGL 1-2: Old OpenGL. Avoid! Big leap here! OpenGL 3.2 and up: Modern OpenGL! Latest version 4.5. Even hotter (but harder): Vulkan (released 2016) 15(40)15(40) Information Coding / Computer Graphics, ISY, LiTH Simple OpenGL example! ! A single triangle! ! • upload to the GPU once! ! • draw any time you want! ! but also! ! • upload shader to specify transformations and colors 16(40)16(40) Information Coding / Computer Graphics, ISY, LiTH Vital concepts! ! • VAO, VBO! ! • Vertex shader! ! • Fragment shader 17(40)17(40)
    [Show full text]
  • Advanced Graphics Opengl and Shaders I
    Advanced Graphics OpenGL and Shaders I 1 Alex Benton, University of Cambridge – [email protected] Supported in part by Google UK, Ltd 3D technologies today Java OpenGL ● Common, re-usable language; ● Open source with many well-designed implementations ● Steadily increasing popularity in ● Well-designed, old, and still evolving industry ● Fairly cross-platform ● Weak but evolving 3D support DirectX/Direct3d (Microsoft) C++ ● Microsoft™ only ● Long-established language ● Dependable updates ● Long history with OpenGL Mantle (AMD) ● Long history with DirectX ● Targeted at game developers ● Losing popularity in some fields (finance, web) but still strong in ● AMD-specific others (games, medical) Higher-level commercial libraries JavaScript ● RenderMan ● WebGL is surprisingly popular ● AutoDesk / SoftImage 2 OpenGL OpenGL is… A state-based renderer ● Hardware-independent ● many settings are configured ● Operating system independent before passing in data; rendering ● Vendor neutral behavior is modified by existing On many platforms state ● Great support on Windows, Mac, Accelerates common 3D graphics linux, etc operations ● Support for mobile devices with ● Clipping (for primitives) OpenGL ES ● Hidden-surface removal ● Android, iOS (but not (Z-buffering) Windows Phone) ● Texturing, alpha blending ● Android Wear watches! NURBS and other advanced ● Web support with WebGL primitives (GLUT) 3 Mobile GPUs ● OpenGL ES 1.0-3.2 ● A stripped-down version of OpenGL ● Removes functionality that is not strictly necessary on mobile devices (like recursion!) ● Devices ● iOS: iPad, iPhone, iPod Touch OpenGL ES 2.0 rendering (iOS) ● Android phones ● PlayStation 3, Nintendo 3DS, and more 4 WebGL ● JavaScript library for 3D rendering in a web browser ● Based on OpenGL ES 2.0 ● Many supporting JS libraries ● Even gwt, angular, dart..
    [Show full text]
  • P5 Documentation Release 0.7.0
    p5 Documentation Release 0.7.0 Abhik Pal Aug 31, 2020 Contents 1 Installation3 1.1 Prerequisites: Python...............................3 1.2 Prerequisites: GLFW...............................3 1.3 Installing p5...................................4 1.4 Troubleshooting.................................4 2 Tutorials7 2.1 Coordinate System and Shapes.........................7 2.2 Color....................................... 10 2.3 Objects...................................... 15 2.4 Interactivity.................................... 22 2.5 Typography.................................... 47 2.6 Strings and Drawing Text............................ 61 2.7 Arrays...................................... 77 2.8 Images and Pixels................................ 91 2.9 Curves...................................... 99 2.10 2D Transformations............................... 106 2.11 PShape...................................... 122 2.12 Data........................................ 131 2.13 Trigonometry Primer............................... 154 2.14 Two-dimensional Arrays............................. 158 2.15 Electronics.................................... 162 2.16 Network..................................... 184 2.17 Vector....................................... 191 3 Examples 221 3.1 Structure..................................... 221 3.2 Transform.................................... 227 3.3 Color....................................... 231 3.4 Arrays...................................... 236 3.5 Input....................................... 239 3.6 Form......................................
    [Show full text]
  • CSE 328 & 528 (Spring 2021) Recitation 01 --Opengl Tutorial
    CSE 328 & 528 (Spring 2021) Recitation 01 --OpenGL Tutorial Xi Han Department of Computer Science, Stony Brook University [email protected] Your TA & Assignment Info Introduction to OpenGL Contents OpenGL Environment Setup: CMake + GLFW + GLAD on ubuntu OpenGL Examples & Explanation Some Tips 2 Your TA: Xi Han Please reach me by email [email protected] Online Office Hours: Tu Th 20:00 – 22:00 via zoom: https://stonybrook.zoom.us/j/93231831459?pwd=cEZ1YVY4VjIvRUF Your TA vNE14WTVmdnVYQT09 Meeting ID: 932 3183 1459 Passcode: 670454 If you are coming, please email your TA in advance! 3 Please compress your assignment in a .zip file <your_sbuid>_pa1.zip and submit via Blackboard. Please include: A README file explaining what your files do, what functionalities you have implemented and what you have not, how to compile/run your program (including dependencies), and with any other information you would like to include. Assignments Your source code A Linux64 executable Please do NOT include: Temporary files, IDE-specific configuration files, etc. All assignments should be done using C/C++ and OpenGL. The build system of your program can be makefile or CMake. 4 Structure of your submission: <your_subid>_pa<x> ├── CMakeLists.txt ├── README.md ├── bin │ └── pa<x> Assignments ├── include │ ├── bar.h │ └── foo.h └── src ├── bar.cpp ├── foo.cpp └── main.cpp 5 Open Graphics Library (OpenGL) is mainly considered a 3D rendering API that we can use to manipulate graphics and images. Introduction to However, OpenGL by itself is NOT an API, but merely a standard OpenGL specification developed and maintained by www.khronos.org.
    [Show full text]
  • Getting Started with Opengl ES 3+ Programming
    Getting Started with OpenGL ES 3+ Programming Learn Modern OpenGL Basics Hans de Ruiter Getting Started with OpenGL ES 3+ Programming Hans de Ruiter Version 1.1 – 5 April 2017 Copyright © 2017 by Kea Sigma Delta Limited, all rights reserved. Distribute the Link, Not the Book It takes a lot of time and effort to produce resources like this, and we think it’s great when people find it useful and want to share. However, please share the following link instead of distributing (illegal) copies. That way they get a legitimate copy and we’re able to continue producing quality content: https://keasigmadelta.com/gles3-sdl2-tutorial We’ve done everything we can to make the contents of this book as accurate as possible. However, due to the complex nature of the topics and possible human error, we cannot guarantee absolute accuracy. Also, continual research and development means that things are ever changing. No liability is assumed for losses or damages due to the information provided. You are responsible for your own choices, actions, and results. 2 Table of Contents Introduction..............................................................................................................................................5 Who is this For?...................................................................................................................................5 Why OpenGL ES 3+ and SDL2?........................................................................................................5 How to Get the Most Out of These Tutorials......................................................................................6
    [Show full text]
  • Open Source Solutions for Multiplatfrom Graphics Programming
    Lappeenranta University of Technology Faculty of Industrial Engineering and Management Degree Program in Information Technology Master’s thesis Mikko Kaistinen OPEN SOURCE SOLUTIONS FOR MULTIPLATFROM GRAPHICS PROGRAMMING Examiners: Associate Professor Uolevi Nikula D.Sc. (Tech.) Jussi Kasurinen Supervisors: Associate Professor Jouni Ikonen D.Sc. (Tech.) Jussi Kasurinen ABSTRACT Lappeenranta University of Technology Faculty of Industrial Engineering and Management Degree Program in Information Technology Mikko Kaistinen Open source solutions for multiplatform graphics programming Master’s thesis 24.11.2015 59 page, 9 figures, 5 tables, 3 appendices Examiners: Associate Professor Uolevi Nikula D.Sc. (Tech.) Jussi Kasurinen Supervisors: Associate Professor Jouni Ikonen D.Sc. (Tech.) Jussi Kasurinen Keywords: OpenGL, WebGL, computer graphics New emerging technologies in the recent decade have brought new options to cross platform computer graphics development. This master thesis took a look for cross platform 3D graphics development possibilities. All platform dependent and non real time solutions were excluded. WebGL and two different OpenGL based solutions were assessed via demo application by using most recent development tools. In the results pros and cons of the each solutions were noted. ii TIIVISTELMÄ Lappeenrannan teknillinen yliopisto Tuotantotaloudellinen tiedekunta Tietotekniikan koulutusohjelma Mikko Kaistinen Avoimen lähdekoodin tarjoamat mahdollisuudet monialusta grafiikkaohjelmointiin Diplomityö 24.11.2015 59 sivua, 9 kuva,
    [Show full text]
  • GLFW Users Guide API Version 2.7 Page 1/40
    GLFW Users Guide API version 2.7 July 3, 2012 c 2002-2006 Marcus Geelnard c 2006-2010 Camilla Berglund Summary This document is a users guide for the GLFW API that gives a practical introduction to using GLFW. For a more detailed description of the GLFW API you should refer to the GLFW Reference Manual. Trademarks OpenGL and IRIX are registered trademarks of Silicon Graphics, Inc. Microsoft and Windows are registered trademarks of Microsoft Corporation. Mac OS is a registered trademark of Apple Computer, Inc. Linux is a registered trademark of Linus Torvalds. FreeBSD is a registered trademark of Wind River Systems, Inc. Solaris is a trademark of Sun Microsystems, Inc. UNIX is a registered trademark of The Open Group. X Window System is a trademark of The Open Group. POSIX is a trademark of IEEE. Truevision, TARGA and TGA are registered trademarks of Truevision, Inc. IBM is a registered trademark of IBM Corporation. All other trademarks mentioned in this document are the property of their respective owners. i Contents 1 Introduction 1 2 Getting Started 2 2.1 Including the GLFW header................................2 2.2 Initializing GLFW.....................................2 2.3 Opening An OpenGL Window...............................3 2.4 Using Keyboard Input....................................4 2.5 Putting It Together: A Minimal GLFW Application....................4 3 Window Operations7 3.1 Setting Window Properties.................................7 3.2 Getting Window Properties.................................9 3.3 Buffer Swapping...................................... 12 3.4 Querying Video Modes................................... 12 4 Input Handling 14 4.1 Event Polling........................................ 14 4.2 Keyboard Input....................................... 14 4.2.1 Key state...................................... 15 4.2.2 Character input..................................
    [Show full text]
  • The GLFW Library Lecture 3
    The GLFW Library Lecture 3 Robb T. Koether Hampden-Sydney College Fri, Aug 25, 2017 Robb T. Koether (Hampden-Sydney College) The GLFW Library Fri, Aug 25, 2017 1 / 16 Outline 1 Graphics Libraries 2 Programming with GLFW 3 GLFW Callback Functions 4 Using the Key Callback Function 5 Assignment Robb T. Koether (Hampden-Sydney College) The GLFW Library Fri, Aug 25, 2017 2 / 16 Outline 1 Graphics Libraries 2 Programming with GLFW 3 GLFW Callback Functions 4 Using the Key Callback Function 5 Assignment Robb T. Koether (Hampden-Sydney College) The GLFW Library Fri, Aug 25, 2017 3 / 16 Device Independence Definition (Device-independent) A library is device-independent if it provides a common API, regardless of the hardware on which it is used. The OpenGL API for Windows is identical to the OpenGL API for the Macintosh. Of course, the library must be compiled separately for each hardware system. Robb T. Koether (Hampden-Sydney College) The GLFW Library Fri, Aug 25, 2017 4 / 16 Windows-Based Programming We will use the Graphics Library Frameworks (GLFW) library. The GLFW library contains functions that Manage the graphics window (size, position, etc.) Handle user-initiated events (mouse clicks, keystrokes, etc.) Robb T. Koether (Hampden-Sydney College) The GLFW Library Fri, Aug 25, 2017 5 / 16 Outline 1 Graphics Libraries 2 Programming with GLFW 3 GLFW Callback Functions 4 Using the Key Callback Function 5 Assignment Robb T. Koether (Hampden-Sydney College) The GLFW Library Fri, Aug 25, 2017 6 / 16 Programming with GLFW Programming with GLFW int main(int argc, char* argv[]) { glfwInit(); GLFWwindow* window = glfwCreateWindow(width, height, title, NULL, NULL); glfwMakeContextCurrent(window); gl3wInit(); while(!glfwWindowShouldClose(window)) { display(); glfwSwapBuffers(window); glfwPollEvents(); } glfwDestroyWindow(window); glfwTerminate(); } Robb T.
    [Show full text]
  • Towards Left Duff S Mdbg Holt Winters Gai Incl Tax Drupal Fapi Icici
    jimportneoneo_clienterrorentitynotfoundrelatedtonoeneo_j_sdn neo_j_traversalcyperneo_jclientpy_neo_neo_jneo_jphpgraphesrelsjshelltraverserwritebatchtransactioneventhandlerbatchinsertereverymangraphenedbgraphdatabaseserviceneo_j_communityjconfigurationjserverstartnodenotintransactionexceptionrest_graphdbneographytransactionfailureexceptionrelationshipentityneo_j_ogmsdnwrappingneoserverbootstrappergraphrepositoryneo_j_graphdbnodeentityembeddedgraphdatabaseneo_jtemplate neo_j_spatialcypher_neo_jneo_j_cyphercypher_querynoe_jcypherneo_jrestclientpy_neoallshortestpathscypher_querieslinkuriousneoclipseexecutionresultbatch_importerwebadmingraphdatabasetimetreegraphawarerelatedtoviacypherqueryrecorelationshiptypespringrestgraphdatabaseflockdbneomodelneo_j_rbshortpathpersistable withindistancegraphdbneo_jneo_j_webadminmiddle_ground_betweenanormcypher materialised handaling hinted finds_nothingbulbsbulbflowrexprorexster cayleygremlintitandborient_dbaurelius tinkerpoptitan_cassandratitan_graph_dbtitan_graphorientdbtitan rexter enough_ram arangotinkerpop_gremlinpyorientlinkset arangodb_graphfoxxodocumentarangodborientjssails_orientdborientgraphexectedbaasbox spark_javarddrddsunpersist asigned aql fetchplanoriento bsonobjectpyspark_rddrddmatrixfactorizationmodelresultiterablemlibpushdownlineage transforamtionspark_rddpairrddreducebykeymappartitionstakeorderedrowmatrixpair_rddblockmanagerlinearregressionwithsgddstreamsencouter fieldtypes spark_dataframejavarddgroupbykeyorg_apache_spark_rddlabeledpointdatabricksaggregatebykeyjavasparkcontextsaveastextfilejavapairdstreamcombinebykeysparkcontext_textfilejavadstreammappartitionswithindexupdatestatebykeyreducebykeyandwindowrepartitioning
    [Show full text]
  • GLFW Reference Manual API Version 2.7 Page 1/64
    GLFW Reference Manual API version 2.7 July 3, 2012 c 2002-2006 Marcus Geelnard c 2006-2010 Camilla Berglund Summary This document is primarily a function reference manual for the GLFW API. For a description of how to use GLFW you should refer to the GLFW Users Guide. Trademarks OpenGL and IRIX are registered trademarks of Silicon Graphics, Inc. Microsoft and Windows are registered trademarks of Microsoft Corporation. Mac OS is a registered trademark of Apple Computer, Inc. Linux is a registered trademark of Linus Torvalds. FreeBSD is a registered trademark of Wind River Systems, Inc. Solaris is a trademark of Sun Microsystems, Inc. UNIX is a registered trademark of The Open Group. X Window System is a trademark of The Open Group. POSIX is a trademark of IEEE. Truevision, TARGA and TGA are registered trademarks of Truevision, Inc. All other trademarks mentioned in this document are the property of their respective owners. i Contents 1 Introduction 1 2 GLFW Operation Overview2 2.1 The GLFW Window....................................2 2.2 The GLFW Event Loop...................................2 2.3 Callback Functions.....................................3 2.4 Threads...........................................3 3 Function Reference5 3.1 GLFW Initialization and Termination...........................5 3.1.1 glfwInit.......................................5 3.1.2 glfwTerminate...................................6 3.1.3 glfwGetVersion...................................6 3.2 Window Handling......................................8 3.2.1 glfwOpenWindow.................................8
    [Show full text]