the invention can be implemented in numerous ways , including as a process , an apparatus , a system , a composition of matter , a computer readable medium such as a computer readable storage medium or a computer network wherein program instructions are sent over optical or communication links . in this specification , these implementations , or any other form that the invention may take , may be referred to as techniques . a component such as a processor or a memory described as being configured to perform a task includes both a general component that is temporarily configured to perform the task at a given time or a specific component that is manufactured to perform the task . in general , the order of the steps of disclosed processes may be altered within the scope of the invention . a detailed description of one or more embodiments of the invention is provided below along with accompanying figures that illustrate the principles of the invention . the invention is described in connection with such embodiments , but the invention is not limited to any embodiment . the scope of the invention is limited only by the claims and the invention encompasses numerous alternatives , modifications and equivalents . numerous specific details are set forth in the following description in order to provide a thorough understanding of the invention . these details are provided for the purpose of example and the invention may be practiced according to the claims without some or all of these specific details . for the purpose of clarity , technical material that is known in the technical fields related to the invention has not been described in detail so that the invention is not unnecessarily obscured . reduced flicker intensity changing for digitally - controlled lighting is disclosed . digital commands from an external source specify desired light source intensities . transitions between commanded intensities are performed with reduced flicker by setting the light source intensity to progressive intermediate values over time until the newly commanded value is reached . the intermediate intensity values and the time intervals between them are selected to minimize stepping visibility to the human eye , or flicker , by adjusting the intensity according to a non - linear curve . the non - linear curve includes an average slope of the ramp that is steepest at the beginning of the transition and reduced towards the end of the transition . in some embodiments , the shape of the non - linear curve can be adjusted by a command or a control panel . in some embodiments , the shape of the non - linear curve can be set to approximate the response time of a different light source . if a new command is received before the light source has reached the previously - commanded intensity , the previous command is abandoned and the light source is adjusted from its current intensity to the newly - commanded intensity . in some embodiments , an indication is transmitted back to the external command source when the transition is complete . reduction of flicker may be disabled for sequential changes to command intensity which are larger than a threshold , allowing the light source to turn on or off quickly when desired . reduction of flicker can also be enabled or disabled by means of an external command or switch . fig1 is a block diagram illustrating an embodiment of a lighting system capable of a reduced flicker intensity change . in the example shown , command source 100 issues digital commands for desired intensities to controller 102 , which is capable of using electronic driver 104 to set intensity for light source 106 in the range of 0 to 100 % of its maximum . in some embodiments , command source 100 comprises a lighting control panel that includes one or more controls ( e . g ., switches , slides , dimmers , value selectors , etc .) for setting the intensities of one or more lights . in some embodiments , command source 100 comprises a computer system including software that creates a virtual lighting control panel that enables one or more virtual controls ( e . g ., virtual switches , virtual slides , virtual dimmers , virtual value selectors , etc .) for setting the intensities of one or more lights . in some embodiments , command source 100 comprises a computer system with a pre - programmed set of commands that are output to a controller such as controller 102 . in some embodiments , command source 100 comprises a human interface device . in some embodiments , command source 100 provides commands via a data interface . in some embodiments , controller 102 is a processor that calculates one or more intensity step values and times corresponding to when the step values are to be taken to achieve a reduced flicker intensity change for light source 106 . in some embodiments , controller 102 uses look up tables to determine intensity step values and times corresponding to when the step values are to be taken . in some embodiments , the look up table entry that is relevant for determining the intensity step value change and the step times depends on the current intensity value and the target intensity value . in some embodiments , controller 104 is a pulse width modulated current source that is used to drive light source 106 , where light source 106 is a light emitting diode ( led ). in some embodiments , the current source is a constant current source in various embodiments , light source 106 comprises a single led , multiple led &# 39 ; s , is driven by a single controller unit or multiple controller units , or any other appropriate controller / light source configuration . in various embodiments , light source 106 comprises an incandescent lamp , a florescent lamp , a high intensity discharge lamp , or any other light source technologies in any combination . fig2 a is a graph illustrating an embodiment of a low - resolution linear transition ramp as seen in the prior art . in the example shown , vertical axis 200 shows light source intensity and horizontal axis 202 corresponds to time . ramp 204 consists of roughly uniform steps starting at point 206 corresponding to previous intensity i 0 at starting time t 0 , and ending at point 208 corresponding to newly - commanded intensity i 1 at ending time t 1 . these steps include steps in intensity that are visible as flicker , particularly at low intensity levels . fig2 b is a graph illustrating an embodiment of a high - resolution linear transition ramp as sometimes used in the prior art in an attempt to reduce flicker . in the example shown , vertical axis 220 shows light source intensity and horizontal axis 222 corresponds to time . ramp 224 consists of roughly uniform steps starting at point 226 corresponding to previous intensity i 0 at starting time t 0 , and ending at point 228 corresponding to newly - commanded intensity i 1 at ending time t 1 . while these the steps are more subtle than those of the low - resolution ramp 204 in fig2 a , it can be seen that the ramps have the same shape . further , the intensity steps include steps in intensity that are visible as flicker , particularly at low intensity levels similar to the situation as depicted in fig2 a . note that many more intensity commands must be issued to generate the high - resolution ramp . one problem that arises is that the maximum rate of intensity commands supported by the physical hardware can constrain the maximum resolution . for example , the ramp may have to skip over some of the intermediate values in order to reach the final intensity within the desired amount of time . fig3 a is a graph illustrating an embodiment of a non - linear transition ramp between two intensities . in the example shown , the intensity is changed at high resolution using constant time intervals between steps . vertical axis 300 shows light source intensity and horizontal axis 302 corresponds to time . ramp 304 consists of steps with decreasing height starting at point 306 corresponding to previous intensity i 0 at starting time t 0 , and ending at point 308 corresponding to newly - commanded intensity i 1 at ending time t 1 . because the steps get smaller as the transition proceeds the human eye perceives a reduced flicker during the intensity change . in some embodiments , the steps with decreasing height are determined using pre - calculated values , where the pre - calculated values depend on the previous intensity i 0 and the newly - commanded intensity i 1 . in some embodiments , a second new intensity is received before the first new intensity , the newly - commanded intensity i 1 , is reached . in this case , the second new intensity becomes the target intensity ( e . g ., intensity i 1 ) and the current intensity becomes the starting intensity ( e . g ., intensity i 0 ). in various embodiments , the time interval between the steps is a predetermined value , a number of different values , a set of increasing or decreasing values , or any other appropriate time interval for reducing flicker . in various embodiments , the intensity step values and the time intervals at which the steps occur are selected to follow a predetermined pattern , where the predetermined pattern appears to be visually similar to a type of incandescent lamp , a theater lamp , a strobe lamp , a spot lamp , or any other appropriate lamp type . in various embodiments , the predetermined patterns are selected using a human interface device ( e . g ., a control panel , a switch , a graphical user interface , etc . ), a command via a data interface ( e . g ., a digital interface , an analog interface , a fiber optic interface , an electrical interface , a wireless interface , a wired interface , an infrared interface , etc .). fig3 b is a graph illustrating an embodiment of a non - linear transition ramp between two intensities . in the example shown , the intensity is changed by constant increments at low resolution using variable time intervals between steps . vertical axis 320 shows light source intensity and horizontal axis 322 corresponds to time . ramp 324 consists of steps with increasing width starting at point 326 corresponding to previous intensity i 0 at starting time t 0 , and ending at point 328 corresponding to newly - commanded intensity i 1 at ending time t 1 . comparing ramp 324 near point 328 in fig3 b to ramp 304 near point 308 in fig3 a , it can be seen that the vertical increments are larger and the time intervals grow longer towards the end of the ramp . both ramps of fig3 a and 3b describe transitions that appear to have reduced flicker as compared to the linear ramps of fig2 a and 2b . note that ramp 304 of fig3 a requires higher resolution intensity control than ramp 324 of fig3 b . in some embodiments , because lower resolutions are generally easier to calculate than higher resolutions , a less expensive controller can be used with the lower resolution required by fig3 b as compared with the higher resolution required by fig3 a . fig3 c is a graph illustrating an embodiment of a non - linear transition ramp between two intensities . in the example shown , the intensity is changed by variable increments using variable time intervals between steps . vertical axis 340 shows light source intensity and horizontal axis 342 corresponds to time . ramp 344 consists of steps with both decreasing height and increasing width starting at point 346 corresponding to previous intensity i 0 at starting time t 0 , and ending at point 348 corresponding to newly - commanded intensity i 1 at ending time t 1 . comparing ramp 344 in fig3 c to ramp 304 in fig3 a and ramp 324 in fig3 b , it can be seen that the resolution along both intensity and time axis is reduced . all ramps of fig3 a , 3 b , and 3 c describe transitions that appear to have reduced flicker as compared to the linear ramps of fig2 a and 2b . in some embodiments , changing both height and width for each step creates transitions that appear to have further reduced flicker as compared to step changes that occur only on one axis . in some embodiments , changing both height and width for each step permits the use of lower intensity resolutions and lower time resolutions for a given degree of reduced flicker . in some embodiments , because lower resolutions are generally easier to calculate than higher resolutions , a less expensive controller can be used with the lower resolution required by fig3 c as compared with the higher intensity resolution required by fig3 a or the higher time resolution required by fig3 b . fig4 is a flow chart illustrating an embodiment of a process for controlling an intensity change . in some embodiments , the process of fig4 is executed by controller showing an overview of controller operation . in the example shown , in 400 a new intensity command is received . in some embodiments , the command is received from a lighting control panel or computer that includes a control panel in software for lighting . in 402 , a non - linear transition ramp between the current light source intensity and the newly - commanded intensity is created . in various embodiments , the ramp is created using a table , a mathematical formula , a piece - wise linear approximation for a curve , or any other appropriate manner of creating a ramp . in 404 , the ramp is output to the electronics driver . the driver drives the light source ( e . g ., an led light source ) to change the intensity of the light source . control passes back to 400 . in some embodiments , the process completes when a command is received to shut down . in some embodiments , the transition ramp will be generated in parallel with outputting it to the driver ; for example , one or more of the steps within the ramp will be computed and output to the driver before the steps for the entire ramp is calculated . in some embodiments this output step will be terminated early if a new intensity command is available . fig5 is a block diagram illustrating an embodiment of state data that is maintained by the controller . in some embodiments , the state data of fig5 is used by a controller such as controller 102 of fig1 in conjunction with determining a control signal ( e . g ., a ramp of steps ) for a light source ( e . g ., a led ). in the example shown , command_intensity 500 stores the last received intensity command using an 8 bit value . in some embodiments , a command_intensity is stored using a different number of bits as appropriate for the light controlling system . current_intensity 502 stores the intensity most recently output to the driver using 12 bits , and represents one of the intermediate values in the non - linear ramp . in some embodiments , the number of bits used to store current_intensity is selected to allow the transition ramp to be of a higher resolution than the resolution of the command intensity . scale_factor 504 affects the shape of the non - linear ramp . the time required for the ramp to change the intensity from the current intensity to the command intensity will depend on scale_factor 504 . in some embodiments , scale_factor 504 is a constant . in some embodiments , scale_factor 504 can be changed dynamically by a command as indicated using a switch or otherwise on a physical or software control panel or from another command source to change the shape of the non - linear ramp . the shape of the non - linear ramp can range from very slow and smooth , to moderately fast and more abrupt , to an immediate transition to the command_intensity . in some embodiments , a new command intensity is received that causes an immediate ( e . g ., strobe is selected ) light source intensity change to the new command intensity . in some embodiments , if the magnitude of the difference between the new command intensity and the current intensity exceeds a threshold , then the intensity change is set to take place without a ramp ( e . g ., strobe is selected ). fig6 is a flow chart illustrating an embodiment of a process for controlling an intensity change . in the example shown , in 600 data structures are initialized . in some embodiments , the data structures include the state variables of fig5 . in the example shown , in 601 a new intensity command is received . in some embodiments , the command is received from a lighting control panel or computer that includes a control panel in software for lighting . in 602 , the difference ( i . e ., delta ) between the current actual intensity of the light source and the desired value most recently commanded is calculated . in 603 , it is determined if the delta is zero . in some embodiments , delta is determined to be zero when the current intensity is substantially equal to the command intensity . if delta is zero , then control passes to 601 . if delta is not zero , then in 604 it is determined if strobe is selected . if strobe is selected , then in 608 current_intensity is set to command_intensity . selecting strobe indicates a sudden change in intensity . if strobe is not selected , in 606 scale delta and set current_intensity to current_intensity plus scaled delta . in some embodiments , delta is scaled using a scale factor in the data structure ( e . g ., scale_factor 504 of fig5 ). in some embodiments , the scaled value is adjusted to be never less than one . in 610 , current_intensity is output to the light source driver and control passes to 601 . since the first delta of a transition ramp is the largest for that ramp , the first intermediate step calculated by scaling will also be the largest . subsequent differences will be progressively smaller as will the corresponding intensity steps until the ramp is complete . these decreasing differences result in the desired non - linear ramp . in some embodiments , the intensity step remains constant and the time interval between intensity changes is scaled to grow longer with each step . in some embodiments , the intensity and time steps are scaled or changed in setting the ramp to a command intensity from a current intensity . although the foregoing embodiments have been described in some detail for purposes of clarity of understanding , the invention is not limited to the details provided . there are many alternative ways of implementing the invention . the disclosed embodiments are illustrative and not restrictive .