+
+ {
+ setDownloadName(e.target.value);
+ }}
+ onChange={(v) => {
+ setDownloadName(v);
+ }}
+ disabled={exporting}
+ placeholder="Leave empty to use current date"
+ className={cx('placeholder:opacity-50', exporting && 'opacity-50 border-opacity-50')}
+ value={downloadName ?? ''}
+ />
+
+
+
+ {
+ let v = parseInt(e.target.value);
+ v = isNaN(v) ? 0 : Math.max(0, v);
+ setStartCycle(v);
+ }}
+ onChange={(v) => {
+ v = parseInt(v);
+ setStartCycle(v);
+ }}
+ type="number"
+ placeholder=""
+ disabled={exporting}
+ className={cx(exporting && 'opacity-50 border-opacity-50', 'w-full')}
+ value={startCycle ?? ''}
+ />
+
+
+ {
+ let v = parseInt(e.target.value);
+ v = isNaN(v) ? Math.max(startCycle + 1, parseInt(v)) : v;
+ setEndCycle(v);
+ }}
+ onChange={(v) => {
+ v = parseInt(v);
+ setEndCycle(v);
+ }}
+ type="number"
+ placeholder=""
+ disabled={exporting}
+ className={cx(exporting && 'opacity-50 border-opacity-50', 'w-full')}
+ value={endCycle ?? ''}
+ />
+
+
+
+
+ {
+ let v = parseInt(e.target.value);
+ v = isNaN(v) ? 1 : Math.max(1, v);
+ setSampleRate(v);
+ }}
+ onChange={(v) => {
+ v = parseInt(v);
+ setSampleRate(v);
+ }}
+ type="number"
+ placeholder=""
+ disabled={exporting}
+ className={cx(exporting && 'opacity-50 border-opacity-50')}
+ value={sampleRate ?? ''}
+ />
+
+
+ {
+ let v = parseInt(e.target.value);
+ v = isNaN(v) ? Math.max(1, parseInt(v)) : v;
+ setMaxPolyphony(v);
+ }}
+ onChange={(v) => {
+ v = Math.max(1, parseInt(v));
+ setMaxPolyphony(v);
+ }}
+ type="number"
+ placeholder=""
+ disabled={exporting}
+ className={cx(exporting && 'opacity-50 border-opacity-50')}
+ value={maxPolyphony ?? ''}
+ />
+
+
+
+ {
+ const val = cbEvent.target.checked;
+ setMultiChannelOrbits(val);
+ }}
+ disabled={exporting}
+ value={multiChannelOrbits}
+ />
+
+
+
+