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

Arpeggiator extended #2130

Merged
merged 1 commit into from Sep 10, 2016

Conversation

Projects
None yet
4 participants
@zonkmachine
Member

zonkmachine commented Jun 23, 2015

Se issue: #2080
Here are some of the new arpeggiator functions.


New functions:

  • Skip - Skips notes. Full on 1% of the notes are played.
  • Miss - Miss notes. Full on this is the same as having 'Random' setting in direction.
@zonkmachine

This comment has been minimized.

Show comment
Hide comment
@zonkmachine

zonkmachine Jun 25, 2015

Member

I couldn't make the original 'Skip' function work as I intended it and I'm not sure it's my coding that's the problem this time. It could be some other bug that's being exposed here.
Anyway. I let the Skip function mute notes last in the arpeggiator function instead and that's a bit wasteful compared to the earlier method of actually skipping over notes but now it works.

Member

zonkmachine commented Jun 25, 2015

I couldn't make the original 'Skip' function work as I intended it and I'm not sure it's my coding that's the problem this time. It could be some other bug that's being exposed here.
Anyway. I let the Skip function mute notes last in the arpeggiator function instead and that's a bit wasteful compared to the earlier method of actually skipping over notes but now it works.

@Wallacoloo Wallacoloo referenced this pull request Sep 17, 2015

Open

New arpeggiator functions #2080

3 of 7 tasks complete
@zonkmachine

This comment has been minimized.

Show comment
Hide comment
@zonkmachine

zonkmachine Sep 17, 2015

Member

Toggle switch removed + Squashed.

Member

zonkmachine commented Sep 17, 2015

Toggle switch removed + Squashed.

@tresf

This comment has been minimized.

Show comment
Hide comment
@tresf

tresf Sep 17, 2015

Member

👍

Member

tresf commented Sep 17, 2015

👍

@zonkmachine

This comment has been minimized.

Show comment
Hide comment
@zonkmachine

zonkmachine Feb 24, 2016

Member

@Fastigium
With the fix in #2603 this hack got one step closer to merge.
I rebased it to the latest master and reverted/commented out, a workaround to counter for the base notes hanging which got especially annoying at higher randomness. With #2603 this is fixed but not for the single streamed instruments. The workaround unfortunately leaves lb302 totally untouched by the effect. There is a muted lb302 track in the BBTrack of the demo.
arpextendeddemo.mmp.zip

Member

zonkmachine commented Feb 24, 2016

@Fastigium
With the fix in #2603 this hack got one step closer to merge.
I rebased it to the latest master and reverted/commented out, a workaround to counter for the base notes hanging which got especially annoying at higher randomness. With #2603 this is fixed but not for the single streamed instruments. The workaround unfortunately leaves lb302 totally untouched by the effect. There is a muted lb302 track in the BBTrack of the demo.
arpextendeddemo.mmp.zip

@Fastigium

This comment has been minimized.

Show comment
Hide comment
@Fastigium

Fastigium Feb 25, 2016

Contributor

@zonkmachine Woah there, I'm not sure I get everything you're saying/asking. Let me see...
You're talking about your new Skip function, right? I'm actually not sure why #2603 fixed the base notes hanging for certain instruments. Normally, the NotePlayHandle that was originally sent to an instrument with stacking/arpeggio enabled gets muted because it gets child NotePlayHandles. You can see this here. NotePlayHandle::isMasterNote() returns true if the NotePlayHandle has subnotes or has had them in the past.
So that means that if you skip the first arpeggio note, the original note (base note?) does not get muted that way. Perhaps it gets muted some other way for non-single-streamed instruments now? Weird stuff.

As for the muted lb302 track in the BBTrack, I can't seem to find it. The B&B Editor only shows a kick and a snare, and the lb302 track under the BBTrack is not muted. That one does leave the original NotePlayHandle hanging though, probably for the reason I outlined above. To prevent it, you could add a method setMasterNote() to NotePlayHandle that sets m_hadChildren to true. That'd allow you to mute the base note without actually instantiating a child note.

Contributor

Fastigium commented Feb 25, 2016

@zonkmachine Woah there, I'm not sure I get everything you're saying/asking. Let me see...
You're talking about your new Skip function, right? I'm actually not sure why #2603 fixed the base notes hanging for certain instruments. Normally, the NotePlayHandle that was originally sent to an instrument with stacking/arpeggio enabled gets muted because it gets child NotePlayHandles. You can see this here. NotePlayHandle::isMasterNote() returns true if the NotePlayHandle has subnotes or has had them in the past.
So that means that if you skip the first arpeggio note, the original note (base note?) does not get muted that way. Perhaps it gets muted some other way for non-single-streamed instruments now? Weird stuff.

As for the muted lb302 track in the BBTrack, I can't seem to find it. The B&B Editor only shows a kick and a snare, and the lb302 track under the BBTrack is not muted. That one does leave the original NotePlayHandle hanging though, probably for the reason I outlined above. To prevent it, you could add a method setMasterNote() to NotePlayHandle that sets m_hadChildren to true. That'd allow you to mute the base note without actually instantiating a child note.

@zonkmachine zonkmachine changed the title from [WIP] Arpeggiator extended to Arpeggiator extended Sep 7, 2016

@zonkmachine

This comment has been minimized.

Show comment
Hide comment
@zonkmachine

zonkmachine Sep 7, 2016

Member

@Fastigium Thank you so very much! I'm sorry for not replying earlier but I fell out of coding a bit. My post wasn't very clear and the demo project was ill labelled, but you managed to get what I was after.
Anyway, this was precisely what I needed to stomp out the hanging notes bug and by doing so finishing a coding project that's been following me for over two years.

To prevent it, you could add a method setMasterNote() to NotePlayHandle that sets m_hadChildren to true. That'd allow you to mute the base note without actually instantiating a child note.

Worked like a charm... together with setUsesBuffer( false );

@LMMS/developers The new arpeggiator functions for randomisation skip and miss are now ready for testing. Also, a new range limiting function is under development.

Member

zonkmachine commented Sep 7, 2016

@Fastigium Thank you so very much! I'm sorry for not replying earlier but I fell out of coding a bit. My post wasn't very clear and the demo project was ill labelled, but you managed to get what I was after.
Anyway, this was precisely what I needed to stomp out the hanging notes bug and by doing so finishing a coding project that's been following me for over two years.

To prevent it, you could add a method setMasterNote() to NotePlayHandle that sets m_hadChildren to true. That'd allow you to mute the base note without actually instantiating a child note.

Worked like a charm... together with setUsesBuffer( false );

@LMMS/developers The new arpeggiator functions for randomisation skip and miss are now ready for testing. Also, a new range limiting function is under development.

@zonkmachine zonkmachine removed the in progress label Sep 8, 2016

@zonkmachine zonkmachine modified the milestones: 1.2.0, 1.3.0 Sep 8, 2016

@zonkmachine

This comment has been minimized.

Show comment
Hide comment
@zonkmachine

zonkmachine Sep 8, 2016

Member

Since the 'hanging note bug' is fixed I'm now switching this back to 1.2

Member

zonkmachine commented Sep 8, 2016

Since the 'hanging note bug' is fixed I'm now switching this back to 1.2

@zonkmachine

This comment has been minimized.

Show comment
Hide comment
@zonkmachine

zonkmachine Sep 9, 2016

Member

@jasp00 I've complied with all of your suggestions. 🐶

Member

zonkmachine commented Sep 9, 2016

@jasp00 I've complied with all of your suggestions. 🐶

@jasp00 jasp00 merged commit a4f5834 into LMMS:master Sep 10, 2016

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details
@zonkmachine

This comment has been minimized.

Show comment
Hide comment
@zonkmachine

zonkmachine Sep 10, 2016

Member

🎉

Thanks for meticulous scrutiny and merge!

Member

zonkmachine commented Sep 10, 2016

🎉

Thanks for meticulous scrutiny and merge!

@zonkmachine zonkmachine deleted the zonkmachine:arpeggiator-extended-squashed branch Sep 10, 2016

sambler pushed a commit to sambler/lmms that referenced this pull request Sep 19, 2016

sambler sambler
Merge branch 'master' into jackmidi
* master: (213 commits)
  Update Pattern and AutomationPattern length (#3037)
  Refresh i18n strings
  Hint text update
  Drop notes with length zero (#3031)
  Background tweak
  Background
  Update Flanger
  Exclude .ts files from the Github linguist
  Redesign Multitap echo (#3008)
  Update i18n source strings
  Extended arpeggiator functions (#2130)
  Fix sample track playback in BB tracks (#3023)
  Sort plug-in embedded resources (#3014)
  Implement version major.minor.release-stage.build (#3011)
  Fix regressions on loading broken projects (#3013)
  Improved file input validation. (#2523)
  Fix sample track view in BB editor (#3002)
  Request change in model when dropping a track (#3000)
  Add LocklessAllocator and use it in LocklessList (#2998)
  Drop forceStep in AutomatableModel (#3010)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment