Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Features Loop Recorder #45

Closed
wants to merge 152 commits into from

Conversation

cpill0789
Copy link
Member

This pull request is for my GSoC 2013 Loop Recorder Project.
Design document: http://mixxx.org/wiki/doku.php/loop_recorder
Launchpad Blueprint: https://blueprints.launchpad.net/mixxx/+spec/loop-recorder

Test skins are available at https://github.com/cpill0789/mixxx/tree/loop_recorder_skins

In order to activate you need to add a --loopRecord (or --loopRecorder) when you run Mixxx.

@ghost ghost assigned ywwg Jul 13, 2013
@@ -382,7 +390,7 @@ void EngineMaster::process(const CSAMPLE *, const CSAMPLE *pOut, const int iBuff
// Mix all the enabled headphone channels together.
m_headphoneGain.setGain(chead_gain);
mixChannels(headphoneOutput, maxChannels, m_pHead, iBufferSize, &m_headphoneGain);

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick -- make sure your text editor is set to remove excess whitespace

@ywwg
Copy link
Member

ywwg commented Jul 30, 2013

Questions:

Why wait until the file is open to start recording? Why not record to memory until the file is open, then empty the buffer and write to disk from then on? like writetobuffer(); if (isfileopen()) { flushbuffer to file() }

I gave you some hints about better ways to figure out deck selection. Let me know what you think

@cpill0789
Copy link
Member Author

I like the idea of writing to a buffer while the file is opening. That should help a lot with the performance issues. The deck selection is next on my list. Thanks for the suggestions.

m_filesRecorded << m_recordingLocation;

// TODO(carl) is this thread safe?
m_pConfig->set(ConfigKey(LOOP_RECORDING_PREF_KEY, "Path"), m_recordingLocation);
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would prefer to not use the config API to notify enginelooprecorder.cpp of the loop location, since it's not technically thread-safe and not the great option for performance. I don't think I can connect the manager to a slot in enginelooprecorder.cpp though since we've subclassed QThread.


// Read config and check radio button
QString loopFormat = m_pConfig->getValueString(ConfigKey(LOOP_RECORDING_PREF_KEY,"Encoding"));
if(loopFormat == ENCODING_WAVE)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

always use braces, even if there's only one item in the branch.

@ywwg
Copy link
Member

ywwg commented Dec 24, 2013

When I push the record button in the Deere-looprecord skin, nothing happens. Can you add directions at the top of this pull for how to test?

@cpill0789
Copy link
Member Author

It's currently partially broken since I haven't had time to fully integrate
the master sync engine code. In order to activate you need to add a
--loopRecord (or --loopRecorder) when you run Mixxx.

On Monday, December 23, 2013, Owen Williams wrote:

When I push the record button in the Deere-looprecord skin, nothing
happens. Can you remind me how to test this?


Reply to this email directly or view it on GitHubhttps://github.com//pull/45#issuecomment-31158111
.

@daschuer
Copy link
Member

What is the state of this PR? Is it possible to keep it mergeable (resolve conflicts)?

@cpill0789
Copy link
Member Author

It's drifted pretty far away from being mergeable. The effects branch changed a bunch of stuff in the engine that conflicts with this branch so it will take some significant effort to get it back to being mergeable. I'm moving soon, so I won't have time to work on it in the next month or so, but I intend on revisiting at some point this fall. I'd be fine closing this and reopening a new PR when I have something that works with the newer changes to the engine.

@daschuer
Copy link
Member

Thank you for the updates and for still being on board. Lets leave it open as reminder.

@ywwg ywwg added this to the 1.13 milestone Aug 14, 2014
@daschuer daschuer mentioned this pull request Dec 28, 2014
@Be-ing
Copy link
Contributor

Be-ing commented Dec 31, 2015

@cpill0789 , are you interested in reviving this for 2.1? I'd love to play with this :)

@Be-ing Be-ing removed this from the 2.1.0 milestone Dec 27, 2017
@Be-ing
Copy link
Contributor

Be-ing commented Apr 18, 2018

This pull request has not been updated in years so I am closing it to reduce the clutter of open PRs. I'm also not convinced that having the loop recorder as a separate entity in the UI rather than integrated into decks is a good idea because this does not fit with the design of any controller other than the NI Traktor Kontrol S4. Notably NI has not put controls for the loop recorder on any of their other controllers.

@Be-ing Be-ing closed this Apr 18, 2018
@daschuer daschuer mentioned this pull request Jun 11, 2018
11 tasks
@anuejn
Copy link

anuejn commented Dec 19, 2018

i would love to see a looper happening in mixxx :)

ronso0 referenced this pull request in ronso0/mixxx Nov 18, 2019
LateNight / Tango: collapse unconfigured Mic/Aux units, add Setup button
m0dB pushed a commit to m0dB/mixxx that referenced this pull request Jan 21, 2024
…mobile

Fix issue where hamburger menu can be scrolled to
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants