That's cool. Could you please have a look at my previous mail regarding
WaveformRenderMark's parent?
2015-01-16 18:41 GMT+01:00 RJ Ryan <russelljr...@gmail.com>:
> Nope, any number. And we support 37 hotcues in the engine (which is
> totally arbitrary but we have to pre-instantiate the COs for now so we have
> to have some limit).
>
> On Fri, Jan 16, 2015 at 9:35 AM, Ferran Pujol Camins <
> ferranpujolcam...@gmail.com> wrote:
>
>> Also, is there a limit on how many saved cues (not hotcues but cues) a
>> track can have?
>>
>> 2015-01-16 15:56 GMT+01:00 Ferran Pujol Camins <
>> ferranpujolcam...@gmail.com>:
>>
>>> Thank you RJ, I have a first working version, however,
>>> WaveformRenderMark now inherits from QObject. Who should its parent be?
>>>
>>> 2015-01-13 16:59 GMT+01:00 RJ Ryan <russelljr...@gmail.com>:
>>>
>>>> Hi Ferran,
>>>>
>>>> You should follow the waveform renderers and overload
>>>> WaveformWidgetRendererAbstract::onSetTrack():
>>>>
>>>> https://github.com/mixxxdj/mixxx/blob/master/src/waveform/renderers/glslwaveformrenderersignal.cpp#L218
>>>>
>>>> This is called every time a track is loaded. BaseTrackPlayer signals
>>>> are hooked to WWaveformViewer::onTrackLoaded/Unloaded which calls
>>>> WaveformWidgetRenderer::setTrack which calls
>>>> WaveformRendererAbstract::onSetTrack for every renderer in the widget's
>>>> render stack.
>>>>
>>>> Note that loadTexture then calls m_waveformRenderer->getTrackInfo() to
>>>> get the TrackPointer for the newly loaded track.
>>>>
>>>> https://github.com/mixxxdj/mixxx/blob/master/src/waveform/renderers/glslwaveformrenderersignal.cpp#L86
>>>>
>>>> You can use this to hook the cuesUpdated signal and to re-generate the
>>>> cue pixmaps for the track's current cues.
>>>>
>>>> Cheers,
>>>> RJ
>>>>
>>>> On Tue, Jan 13, 2015 at 10:46 AM, Ferran Pujol Camins <
>>>> ferranpujolcam...@gmail.com> wrote:
>>>>
>>>>> Ok, so this is what I got now:
>>>>>
>>>>> WaveformRenderMark::setup connects BaseTrackPlayer::newTrackLoaded
>>>>> signal to a new WaveformRenderMark::slotTrackLoaded.
>>>>>
>>>>> Every time a track is loaded, WaveformRenderMark::slotTrackLoaded
>>>>> connects its TrackInfoObject::cuesUpdated signal to a new
>>>>> WaveformRenderMark::slotCuesUpdated, who updates the marks text.
>>>>>
>>>>> WaveformRenderMark::setup also checks if a track is already loaded in
>>>>> the player and if so, calls WaveformRenderMark::slotCuesUpdated in order
>>>>> to
>>>>> show the cue labels on a skin change.
>>>>>
>>>>> The problem I have is that I don't know where the instance of
>>>>> BaseTrackPlayer I should query is, neither how to acces it. I've seen
>>>>> BaseTrackPlayer pointers in Mixxx, SkinLoader and LegacySkinParser
>>>>> Classes.
>>>>> Where should I look at?
>>>>>
>>>>> 2015-01-12 20:40 GMT+01:00 RJ Ryan <russelljr...@gmail.com>:
>>>>>
>>>>>> On mobile, sorry for brevity. Setup is only done once at skin
>>>>>> creation time. The cue text can change at track load time or when user
>>>>>> edits the text e.g. via the track properties dialog. So you need to check
>>>>>> if the text has changed on every draw. (Or listen to track signals for
>>>>>> cue
>>>>>> updates)
>>>>>>
>>>>>> On Mon, Jan 12, 2015, 11:34 AM Ferran Pujol Camins <
>>>>>> ferranpujolcam...@gmail.com> wrote:
>>>>>>
>>>>>>> Also, I've further understood this code (thanks for your hints RJ!).
>>>>>>> I don't feel comfortable setting the text of the WaveformMarks in
>>>>>>> WaveformMarkRenderer. WaveformMarkRenderer already does it's job of
>>>>>>> painting whatever text a WaveformMark happens to have. Doesn't it make
>>>>>>> more
>>>>>>> sense to modify WaveformMarkSet::setup to construct the hotcue marks
>>>>>>> already with the desired text?
>>>>>>>
>>>>>>> It makes more sense to me, but I'm not 100% sure because I don't
>>>>>>> understand how information about cues reaches these classes: what are
>>>>>>> all
>>>>>>> those QDomNodes? ALso, what is the default mark?
>>>>>>>
>>>>>>> 2015-01-12 20:21 GMT+01:00 Ferran Pujol Camins <
>>>>>>> ferranpujolcam...@gmail.com>:
>>>>>>>
>>>>>>>> One question: if WaveformMark::setKeyAndIndex(const ConfigKey& key,
>>>>>>>> int i), is called a second time, doesn't this forget to deallocate the
>>>>>>>> old
>>>>>>>> instance of ControlObjectThread?
>>>>>>>>
>>>>>>>> 2015-01-10 0:19 GMT+01:00 RJ Ryan <russelljr...@gmail.com>:
>>>>>>>>
>>>>>>>>> Hi Ferran,
>>>>>>>>>
>>>>>>>>> The waveforms are a little twisty-turny. Here are some hints to
>>>>>>>>> get you started:
>>>>>>>>>
>>>>>>>>> WaveformMark represents the skin's definition of what the hotcue
>>>>>>>>> should be rendered as (an image from file, an auto-generated image,
>>>>>>>>> the
>>>>>>>>> text to show, etc.). WaveformRenderMark is a WaveformRendererAbstract
>>>>>>>>> class
>>>>>>>>> that takes a WaveformMark and draws it to the screen when its turn
>>>>>>>>> comes.
>>>>>>>>>
>>>>>>>>> A waveform widget has a stack of WaveformRendererAbstract classes
>>>>>>>>> in a list that are drawn one after the other -- they're like layers. A
>>>>>>>>> typical waveform widget's render stack looks like this:
>>>>>>>>>
>>>>>>>>> * background (WaveformRenderBackground)
>>>>>>>>> * end of track highlight (WaveformRendererEndOfTrack)
>>>>>>>>> * preroll drawing (WaveformRendererPreroll)
>>>>>>>>> * mark range (green loop highlight) rendering
>>>>>>>>> (WaveformRenderMarkRange)
>>>>>>>>> * signal rendering (the waveform itself -- a class named something
>>>>>>>>> like WaveforRenderXXXSignalXXX depending on the widget)
>>>>>>>>> * beat rendering (WaveformRenderBeat)
>>>>>>>>> * hotcue / cue / loop in-out point rendering (WaveformRenderMark)
>>>>>>>>>
>>>>>>>>> So WaveformRenderMark uses WaveformMark as a description of what
>>>>>>>>> to draw. WaveformMark doesn't have access to the track that's loaded
>>>>>>>>> while
>>>>>>>>> WaveformRenderMark can get access. Here's an example from
>>>>>>>>> WaveformRenderBeat:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> https://github.com/mixxxdj/mixxx/blob/master/src/waveform/renderers/waveformrenderbeat.cpp#L41
>>>>>>>>>
>>>>>>>>> One tricky bit is that WaveformRenderMark pre-generates a pixmap
>>>>>>>>> that is drawn during the render step as a performance optimization.
>>>>>>>>> In the
>>>>>>>>> draw method of WaveformRenderMark you should set the text of the
>>>>>>>>> currently
>>>>>>>>> loaded cue point's label (you can fetch the cues from the track with
>>>>>>>>> TrackInfoObject::getCues) on the WaveformMark (via some new method you
>>>>>>>>> add). If the label changed since the last render then you'll need to
>>>>>>>>> re-generate the pixmap.
>>>>>>>>>
>>>>>>>>> Hope that gets you started,
>>>>>>>>> RJ
>>>>>>>>>
>>>>>>>>> On Fri, Jan 9, 2015 at 6:02 PM, Ferran Pujol Camins <
>>>>>>>>> ferranpujolcam...@gmail.com> wrote:
>>>>>>>>>
>>>>>>>>>> Now I want the hotcue marks to show their cue's name. I see in
>>>>>>>>>> WaveformMark::setKeyAndIndex that m_text place marker is replaced by
>>>>>>>>>> the
>>>>>>>>>> hotcue number so I could just append the cue's label there. But I
>>>>>>>>>> have no
>>>>>>>>>> clue about how to bring the hotcue name to this function. Some quick
>>>>>>>>>> guidance with the waveform rendering system will help a lot :)
>>>>>>>>>>
>>>>>>>>>> 2015-01-09 20:31 GMT+01:00 Ferran Pujol Camins <
>>>>>>>>>> ferranpujolcam...@gmail.com>:
>>>>>>>>>>
>>>>>>>>>>> Thank you both I have a better picture now. :)
>>>>>>>>>>>
>>>>>>>>>>> 2015-01-09 19:55 GMT+01:00 RJ Ryan <russelljr...@gmail.com>:
>>>>>>>>>>>
>>>>>>>>>>>> This doc is a bit out of date now (doesn't cover
>>>>>>>>>>>> ControlObjectSlave) but it gives the overview of what the heck
>>>>>>>>>>>> ControlObject is used for in Mixxx:
>>>>>>>>>>>>
>>>>>>>>>>>> http://mixxx.org/wiki/doku.php/developer_guide_control
>>>>>>>>>>>>
>>>>>>>>>>>> See also: http://mixxx.org/wiki/doku.php/developer_guide
>>>>>>>>>>>>
>>>>>>>>>>>> On Fri, Jan 9, 2015 at 6:19 AM, Daniel Schürmann <
>>>>>>>>>>>> dasch...@mixxx.org> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>> Hi Ferran,
>>>>>>>>>>>>>
>>>>>>>>>>>>> do not know what exactly you need.
>>>>>>>>>>>>>
>>>>>>>>>>>>> ControlDoublePrivate is th container that holds the double
>>>>>>>>>>>>> data value for atomic read and writes (also on 32 bit targets).
>>>>>>>>>>>>> The ControlObject is the interface, you can use from your code
>>>>>>>>>>>>> that holds a reference to the ControlDoublePrivate.
>>>>>>>>>>>>>
>>>>>>>>>>>>> ControlObject should be used to create a new
>>>>>>>>>>>>> ControlDoublePrivate and should only be used from one object (You
>>>>>>>>>>>>> will find
>>>>>>>>>>>>> exceptions in the legacy engine code)
>>>>>>>>>>>>>
>>>>>>>>>>>>> All other Objects should use the ControlObjectSlave to access
>>>>>>>>>>>>> the underlying ControlDoublePrivate.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Hope that helps.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Kind regards,
>>>>>>>>>>>>>
>>>>>>>>>>>>> Daniel
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2015-01-09 11:16 GMT+01:00 Ferran Pujol Camins <
>>>>>>>>>>>>> ferranpujolcam...@gmail.com>:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hello, could someone give me a short explanation about how
>>>>>>>>>>>>>> ControlObject and ControlDoublePrivate interact? I'm quite
>>>>>>>>>>>>>> confused right
>>>>>>>>>>>>>> now and it would help me digest the code quicker.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>>> Dive into the World of Parallel Programming! The Go Parallel
>>>>>>>>>>>>>> Website,
>>>>>>>>>>>>>> sponsored by Intel and developed in partnership with Slashdot
>>>>>>>>>>>>>> Media, is your
>>>>>>>>>>>>>> hub for all things parallel software development, from weekly
>>>>>>>>>>>>>> thought
>>>>>>>>>>>>>> leadership blogs to news, videos, case studies, tutorials and
>>>>>>>>>>>>>> more. Take a
>>>>>>>>>>>>>> look and join the conversation now.
>>>>>>>>>>>>>> http://goparallel.sourceforge.net
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
>>>>>>>>>>>>>> http://mixxx.org
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Mixxx-devel mailing list
>>>>>>>>>>>>>> Mixxx-devel@lists.sourceforge.net
>>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> ------------------------------------------------------------------------------
>>>>>>>>>>>>> Dive into the World of Parallel Programming! The Go Parallel
>>>>>>>>>>>>> Website,
>>>>>>>>>>>>> sponsored by Intel and developed in partnership with Slashdot
>>>>>>>>>>>>> Media, is your
>>>>>>>>>>>>> hub for all things parallel software development, from weekly
>>>>>>>>>>>>> thought
>>>>>>>>>>>>> leadership blogs to news, videos, case studies, tutorials and
>>>>>>>>>>>>> more. Take a
>>>>>>>>>>>>> look and join the conversation now.
>>>>>>>>>>>>> http://goparallel.sourceforge.net
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Get Mixxx, the #1 Free MP3 DJ Mixing software Today
>>>>>>>>>>>>> http://mixxx.org
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> Mixxx-devel mailing list
>>>>>>>>>>>>> Mixxx-devel@lists.sourceforge.net
>>>>>>>>>>>>> https://lists.sourceforge.net/lists/listinfo/mixxx-devel
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Ferran Pujol Camins
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Ferran Pujol Camins
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Ferran Pujol Camins
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Ferran Pujol Camins
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Ferran Pujol Camins
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Ferran Pujol Camins
>>>
>>
>>
>>
>> --
>> Ferran Pujol Camins
>>
>
>
--
Ferran Pujol Camins
------------------------------------------------------------------------------
New Year. New Location. New Benefits. New Data Center in Ashburn, VA.
GigeNET is offering a free month of service with a new server in Ashburn.
Choose from 2 high performing configs, both with 100TB of bandwidth.
Higher redundancy.Lower latency.Increased capacity.Completely compliant.
http://p.sf.net/sfu/gigenet
_______________________________________________
Get Mixxx, the #1 Free MP3 DJ Mixing software Today
http://mixxx.org
Mixxx-devel mailing list
Mixxx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mixxx-devel