Tutorials:

How to create songs for karaoke with Ultrastar-Creator and Yass.

So, you want to sing your own songs at karaoke and have decided to add them yourself, good choice! What you need: Once you've managed to install everything, here's what you need to time a song from scratch:

You'll want all of these (except for the lyrics) in the same, otherwise empty folder so USC can detect them.

So, you've got all the essential parts? Now, open up USC, tell the tutorial mammoth to leave and never come back, then open up the .mp3 file, and fill in the tags on the left. Next, paste the lyrics into the middle box, and make sure they're formatted correctly:

An example of correctly formatted lyrics:  
            A+i ta sa wo ne+ga+u ta+bi
            
            Hi+ka+ri wo to+ki ha+na+tsu wa
            
            Hi+to+ri ki+ri wo na+ge+i ta
            
            A+no hi no ho+ta+ru no yo+u ni
Examples of incorrect formatting:
            Ai ta sa wo negau tabi (No “+” between syllables)
            Hi_ka_ri wo to_ki ha_na_tsu wa Hi_to_ri ki_ri wo na_ge_i ta (Those are underscores, not plusses. This isn't Composer.)

Delightful, you're ready to time the song! Press the big play button to start, then use spacebar to time the lyrics! You can hold down spacebar if the syllable is particularly long, but it's easier to do this afterwards in Yass.
Press X to go back a syllable, this will skip back in the song as well.

 

NOTE: You can change the playback speed for better timing accuracy!

Once you're satisfied with the rough timing, save the file, and open it in YASS (there's a handy button for that in USC) for fine-tuning

Now it's testing time! Open up Performous and sing your song. Are the lyrics timed correctly? Go over them again with Yass and edit any errors you made, export again and sing! Repeat that process until you're happy with the timing.

When done, upload it somewhere and post the link in the #karaoke channel on discord!

How to make duets:

Add a dummy syllable (can be anything, I suggest a ‘~’) at the start of both sets of lyrics, and time it at the very start of the song (this should result in a GAP of 0, which makes merging them a lot easier) Time both sets of lyrics into separate files, then:

Duet example
            #ARTIST
            #MP3
            ⁞
            P1
            - 0 1 0 blah
            ⁞
            P2
            - 0 3 0 blah
            ⁞
            E
            

Update (sept 2022): Yass now supports duet files! Yay! Haven't tried it myself, but check the changelog on the Yass website for details

How to rip (some of) the required files from YouTube (and most other sites).

Use yt-dlp (https://github.com/yt-dlp/yt-dlp/releases/latest) with the following config file (save it somewhere as a .conf file, then use it with --config-location, ex.: yt-dlp --config-location ytdl-karaoke.conf )
--ignore-config
--compat-options no-live-chat
--concurrent-fragments 4
#!!! UNCOMMENT AND CHANGE
#--ffmpeg-location '   '
--no-playlist
--no-mark-watched
--downloader native
--hls-use-mpegts
--no-part
#replace this with whatever browser you use
--cookies-from-browser chrome
--check-formats
--format 'bv*,ba'
--format-sort 'res~720,+vcodec:h264,+hasaud,acodec:opus'
--keep-video
--write-subs
--no-write-auto-subs
--sub-format 'srt/best'
--sub-lang all
--extractor-args 'youtube:skip=translated_subs'
--write-thumbnail
--convert-thumbnails jpg
--extract-audio
--audio-format mp3
--audio-quality 128K
--ignore-errors
#!!! UNCOMMENT AND CHANGE
#--paths '   ' #base folder for your karaoke projects
--output '%(artist|.)S/%(artist|)S%(artist& - |)S%(track,title)S/%(track,title)S (%(format)S).%(ext)s'
--output 'thumbnail:%(artist|.)S/%(artist|)S%(artist& - |)S%(track,title)S/%(track,title)S (THUMB).%(ext)s'
--output 'subtitle:%(artist|.)S/%(artist|)S%(artist& - |)S%(track,title)S/%(track,title)S.%(ext)s'
Grab FFmpeg from https://github.com/BtbN/FFmpeg-Builds/releases/tag/latest (select the master-latest-[OS]-gpl-shared version)