# SPDX-License-Identifier: GPL-2.0-only
config SND_SEQUENCER
	tristate "Sequencer support"
	select SND_TIMER
	select SND_SEQ_DEVICE
	help
	  Say Y or M to enable MIDI sequencer and router support.  This
	  feature allows routing and enqueueing of MIDI events.  Events
	  can be processed at a given time.

	  Many programs require this feature, so you should enable it
	  unless you know what you're doing.

if SND_SEQUENCER

config SND_SEQ_DUMMY
	tristate "Sequencer dummy client"
	help
	  Say Y here to enable the dummy sequencer client.  This client
	  is a simple MIDI-through client: all normal input events are
	  redirected to the output port immediately.

	  You don't need this unless you want to connect many MIDI
	  devices or applications together.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-seq-dummy.

config SND_SEQUENCER_OSS
	tristate "OSS Sequencer API"
	depends on SND_OSSEMUL
	select SND_SEQ_MIDI_EVENT
	help
	  Say Y here to enable OSS sequencer emulation (both
	  /dev/sequencer and /dev/music interfaces).

	  Many programs still use the OSS API, so say Y.

	  To compile this driver as a module, choose M here: the module
	  will be called snd-seq-oss.

config SND_SEQ_HRTIMER_DEFAULT
	bool "Use HR-timer as default sequencer timer"
	depends on SND_HRTIMER
	default y
	help
	  Say Y here to use the HR-timer backend as the default sequencer
	  timer.

config SND_SEQ_MIDI_EVENT
	tristate

config SND_SEQ_MIDI
	def_tristate SND_RAWMIDI
	select SND_SEQ_MIDI_EVENT

config SND_SEQ_MIDI_EMUL
	tristate

config SND_SEQ_VIRMIDI
	tristate

endif # SND_SEQUENCER
