🚧 Fade in menu
This commit is contained in:
		
					parent
					
						
							
								d8e671d5ca
							
						
					
				
			
			
				commit
				
					
						d175360362
					
				
			
		
					 2 changed files with 81 additions and 18 deletions
				
			
		
							
								
								
									
										71
									
								
								app/fade.go
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								app/fade.go
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,71 @@ | |||
| package app | ||||
| 
 | ||||
| import ( | ||||
| 	"os" | ||||
| 	"strconv" | ||||
| 
 | ||||
| 	"codeberg.org/danjones000/strip-beats/media" | ||||
| 	"github.com/rivo/tview" | ||||
| ) | ||||
| 
 | ||||
| func validateNumber(input string, lastChar rune) bool { | ||||
| 	num, err := strconv.ParseFloat(input, 64) | ||||
| 	if err != nil { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	if num < 0 { | ||||
| 		return false | ||||
| 	} | ||||
| 
 | ||||
| 	if file == nil { | ||||
| 		return true | ||||
| 	} | ||||
| 
 | ||||
| 	st := file.WantedAudioStream() | ||||
| 	if st == nil { | ||||
| 		return true | ||||
| 	} | ||||
| 
 | ||||
| 	return num <= st.Duration | ||||
| } | ||||
| 
 | ||||
| func fadeFile() error { | ||||
| 	tmp, err := os.CreateTemp("", "audio.*.mka") | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	tmp.Close() | ||||
| 
 | ||||
| 	var start, stop, up, down float64 | ||||
| 
 | ||||
| 	cont := tview.NewApplication() | ||||
| 	form := tview.NewForm(). | ||||
| 		AddInputField("Beginning time?", "0", 0, validateNumber, func(input string) { | ||||
| 			start, _ = strconv.ParseFloat(input, 64) | ||||
| 		}). | ||||
| 		AddInputField("Ending time? (leave 0 for full time)", "0", 0, validateNumber, func(input string) { | ||||
| 			stop, _ = strconv.ParseFloat(input, 64) | ||||
| 		}). | ||||
| 		AddInputField("Fade in duration?", "0", 0, validateNumber, func(input string) { | ||||
| 			up, _ = strconv.ParseFloat(input, 64) | ||||
| 		}). | ||||
| 		AddInputField("Fade out duration?", "0", 0, validateNumber, func(input string) { | ||||
| 			down, _ = strconv.ParseFloat(input, 64) | ||||
| 		}). | ||||
| 		AddButton("Start", func() { | ||||
| 			cont.Stop() | ||||
| 		}) | ||||
| 
 | ||||
| 	form.SetBorder(true).SetTitleAlign(tview.AlignLeft) | ||||
| 	if err := cont.SetRoot(form, true).EnableMouse(true).Run(); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 
 | ||||
| 	err = media.TrimWithFade(*file, tmp.Name(), start, stop, up, down) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	SetTmpFile(tmp.Name()) | ||||
| 	return nil | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue