Requirements for Audio channel support
Open, WishlistPublic

Description

Priority 1

  1. Saving and loading audio channel into .kra file
    • embed the file into .kra
    • link the file using the relative path
    • when loading linked file allow searching the file manually
  2. Play sound with constant 100% speed when the animation is shown in Drop Frames mode. Use QAudioOutput for that.
  3. Play sound examples (100-200ms) when the user scratches the surface of the timeline. The user should understand what sound in at the specific position of the timeline.
  4. GUI to show waveframe of the sound channel. Take care that the waveframe should be cached, because the timeline supports panning and zooming.
  5. GUI for everything else: integrate with the timeline docker.

Priority 2

  1. Playing sound with a particular fixed speed chosen by the user. Drop Frames mode is still needed to make the video in sync.
  2. If the video goes too much out of sync with sound, drop audio frames or just make pauses.
  3. Use some external library to compress audio, like SoundTouch (preferrable) or RubberBand.

Priority 3

  1. Dynamically adjust the speed of the audio according to the animation playback speed.

Related Objects

dkazakov created this task.Apr 27 2016, 1:40 PM
Restricted Application added a subscriber: woltherav. · View Herald TranscriptApr 27 2016, 1:40 PM
rempt added a subscriber: rempt.Apr 27 2016, 2:56 PM

You cannot just drop frames in audio -- audio doesn't have frames. And if you want to make audio play back at a different speed, you need to change the pitch as well. There are libraries that do that, but I'm not sure how portable they are.

woltherav triaged this task as Wishlist priority.Jun 29 2016, 12:12 PM
woltherav edited projects, added Krita: Longterm Features; removed Krita.

pitch doesn't need to be changed ,I think. It's much more useful to have undistorted sound

Some time ago I did a draft of the GUI for the audio channel support. It consists of two parts: 1) the waveframe (what is basically mentioned in this task); 2) the scratchpad capability, which is not covered by this bug, but would be nice to be implemented in the future

I like this draft, and yes the scratchpad line would be a useful addition in the future.

About click-drag on the waveform to move it, that would be useful, though user shouldn't be able to move it accidentally, I guess that's why you asked if right-click would be better. I would say, make it normal left-click, but add a lock button enabled by default to prevent moving it accidentally.

I pretty much just converted Dmitry's notes into a cleaner wireframe. For the scratchpad brush color, I thought selecting the brush color might be a little easier on the left with the other options. It might even be more intuitive if it just uses the current foreground color. That will be for the animators to decide

Nice convertion, it looks clean. Just about volume that goes to 200%, I know VLC does this but that's quite dangerous. (I even heard some speaker manufacturer void the warranty if they learn VLC was used..)

It's much more secure to leave the maximum at 100%. If someone has to edit the audio file to increase the volume, better do this in a controlled way in a proper audio editor.

Deevad added a subscriber: Deevad.Sep 4 2016, 4:21 PM
Bollebib added a comment.EditedSep 5 2016, 8:50 AM

It's a solid design.

For souns maybe the load button should be an allpurpose button instead. Load sound,remove sound ,move sound to 'insert frame number" ,and a way to choose between different loaded sounds by showing each loaded sound title. Unless we will have only one sound loaded at all times.

Same for the 'clear' button on the scratchpad. having clear like that is very dangerous,if there is no undo.

So Clear button could be allpurpose dropdown button with multiple options . Potentially also options to influence how the contents of the scratchpad are shown on the canvas (if that will be implemented)

The mute button should perhaps be next to the sound slider for more logical placement.

And it probably should be possible to increase the height of the scratchpad (maybe also sound?) to have more space to draw (or read the waves)