A system (100, 400) for use by a user to program a neurostimulator (104, 204, 404) configured to deliver neurostimulation to a patient, comprising: a first storage device configured to store waveform building blocks; and a first user interface including a first display screen, a first user input device, and a first interface control circuit coupled to the first display screen and the first user input device, the first interface control circuit including a waveform composer (320, 720, 820, 1920, 2020) configured to allow for composition of one of more building blocks of the waveform building blocks and composition of a pattern of neurostimulation pulses using one of more building blocks selected from the waveform building blocks, the waveform composer including: a library controller (748, 848, 2048) configured to display a library management area on the first display screen, the displayed library management area allowing the user to manage the waveform building blocks stored in the storage device; and a plurality of waveform building block editors (750, 850, 2050) each configured to allow the user to compose a type of the waveform building blocks of a plurality of types of the waveform building blocks, the plurality of waveform building block editors including: a pulse editor (852, 2052) configured to display a pulse composition area on the first display screen in response to a user selection for access to the pulse editor, the pulse composition area allowing the user to compose a pulse of the waveform building blocks; and a burst editor (854, 2054) configured to display a burst composition area on the first display screen in response to a user selection for access to the burst editor, the burst composition area allowing the user to compose a burst of the waveform building blocks, the burst including a group of pulses of the waveform building blocks. a first storage device configured to store waveform building blocks; and a first user interface including a first display screen, a first user input device, and a first interface control circuit coupled to the first display screen and the first user input device, the first interface control circuit including a waveform composer (320, 720, 820, 1920, 2020) configured to allow for composition of one of more building blocks of the waveform building blocks and composition of a pattern of neurostimulation pulses using one of more building blocks selected from the waveform building blocks, the waveform composer including: a library controller (748, 848, 2048) configured to display a library management area on the first display screen, the displayed library management area allowing the user to manage the waveform building blocks stored in the storage device; and a plurality of waveform building block editors (750, 850, 2050) each configured to allow the user to compose a type of the waveform building blocks of a plurality of types of the waveform building blocks, the plurality of waveform building block editors including: a pulse editor (852, 2052) configured to display a pulse composition area on the first display screen in response to a user selection for access to the pulse editor, the pulse composition area allowing the user to compose a pulse of the waveform building blocks; and a burst editor (854, 2054) configured to display a burst composition area on the first display screen in response to a user selection for access to the burst editor, the burst composition area allowing the user to compose a burst of the waveform building blocks, the burst including a group of pulses of the waveform building blocks. a pulse editor (852, 2052) configured to display a pulse composition area on the first display screen in response to a user selection for access to the pulse editor, the pulse composition area allowing the user to compose a pulse of the waveform building blocks; and a burst editor (854, 2054) configured to display a burst composition area on the first display screen in response to a user selection for access to the burst editor, the burst composition area allowing the user to compose a burst of the waveform building blocks, the burst including a group of pulses of the waveform building blocks.