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

ABC to MB Parser #3925

Merged
merged 7 commits into from
Sep 13, 2024
Merged

Conversation

abhijeetsingh0401
Copy link
Contributor

Converts ABC file to Music Blocks

@abhijeetsingh0401
Copy link
Contributor Author

abhijeetsingh0401 commented Jun 30, 2024

image
@pikurasa @walterbender there is grace notes which in the code have note taken in consideration could you let me know how we could denote the grace notes(not sure if its hammer on or not ) in MB
https://abcnotation.com/tunePage?a=richardrobinson.tunebook.org.uk/static/tunebook/00526
Line where its breaking due to grace notes
Uploading image.png…

@walterbender
Copy link
Member

The easiest thing to do is to ignore them. But what we have done in the past is to put them inside of the note block that they attach to.

@pikurasa
Copy link
Collaborator

@pikurasa @walterbender there is grace notes which in the code have note taken in consideration could you let me know how we could denote the grace notes(not sure if its hammer on or not ) in MB
https://abcnotation.com/tunePage?a=richardrobinson.tunebook.org.uk/static/tunebook/00526
Line where its breaking due to grace notes
Uploading image.png…

Those are slur and staccato ornaments.

The third full measure should be translated to the following in MB:

Screenshot from 2024-06-30 16-33-29

Reference on planet (with scalar transpose, which you may ignore for now): https://musicblocks.sugarlabs.org/index.html?id=1719779740193723&run=True

@walterbender
Copy link
Member

A few comments re the code itself:
please use spaces around operators for consistency with the rest of the code base.
Please flag console messages with:
// eslint-disable-next-line no-console

@pikurasa
Copy link
Collaborator

@nathannnie this branch would be a good one for you to experiment with.

@abhijeetsingh0401
Copy link
Contributor Author

@walterbender @pikurasa i have fixed the formatting, could you review this PR

@abhijeetsingh0401
Copy link
Contributor Author

@walterbender could suggest ways to restructure the code so if we need to consider notation for other things side and pull offs we don't need to write whole thing and debug again

@walterbender
Copy link
Member

@abhijeetsingh0401 sorry. I somehow missed this comment. I don't understand what you are asking when you refer to "side and pull offs ". Could you explain with an example?

@abhijeetsingh0401
Copy link
Contributor Author

Yes I was asking could you let me know is there anyway we could format the could in way that it is to easy handle other edge cases ABC conversion to MB for example in the current PR ABC cases does not handle the cases for slides and pull offs since if we need to handle this whole code needs to be changed and the index of everything is getting changed so it is tough to handle other edge cases

@walterbender
Copy link
Member

I don't think it is worthwhile handling some of these corner cases. If there is a slide, we can just render the notes in the slide (and maybe add a "comment" block indicating we are ignoring the slide. I am not familiar with "pull-off" (investigating).

@pikurasa
Copy link
Collaborator

I am not familiar with "pull-off" (investigating).

A pull-off is a slur where we go from a higher pitch to a lower pitch. Its opposite is a hammer-on. Those terms are specific to certain string instruments, like guitar, because that's the technical motion required to execute a slur on those instruments.

So, for MB, we should use a legato clamp in those instances.

That being said, I think @abhijeetsingh0401 's question is how to structure the code better to handle conversion of such instances.

@abhijeetsingh0401 abhijeetsingh0401 changed the title ABC Parser ABC to MB Parser Aug 30, 2024
@pikurasa
Copy link
Collaborator

I think this PR is at a good enough stage in terms of functionality.

We can tackle other functionality improvements in the future.

@walterbender walterbender merged commit 30b5c47 into sugarlabs:master Sep 13, 2024
3 checks passed
walterbender added a commit that referenced this pull request Sep 24, 2024
* fixes #3913

* fix:resolves grid position on hamburger opening(#3914) (#3924)

* fix:resolves hamburger opening(#3914)

* fix:fixes #3914(suggested changes done)

* adjust size of grid element repositioning when using aux toolbar

---------

Co-authored-by: Walter Bender <walter@sorcero.com>

* Fix input boxes (#3927)

* bump version

* enhancement: scale on hover (#3926)

Co-authored-by: anas2357 <141234155+anas2357@users.noreply.github.com>

* calculate frequencies from ratio

* Add close button to extended-menu pie menu (fixes #3933) (#3934)

* Bump braces and gulp (#3903)

Bumps [braces](https://github.com/micromatch/braces) to 3.0.3 and updates ancestor dependency [gulp](https://github.com/gulpjs/gulp). These dependencies need to be updated together.


Updates `braces` from 2.3.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/commits/3.0.3)

Updates `gulp` from 4.0.2 to 5.0.0
- [Release notes](https://github.com/gulpjs/gulp/releases)
- [Changelog](https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md)
- [Commits](gulpjs/gulp@v4.0.2...v5.0.0)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
- dependency-name: gulp
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* add support for solfege accidentals in phrasemaker

* Add support for cents (#3937)

* add support for cents through semi-tone transposition

* add 50 cents macro

* add cents example

* add output frequencies

* fix issue with ratio cents

* add a ratio-cents example

* Ratio transpose and Ratio interval (#3936)

* use processPitch for all pitch types

* Add support for cents (#3937)

* add support for cents through semi-tone transposition

* add 50 cents macro

* add cents example

* add output frequencies

* fix issue with ratio cents

* add a ratio-cents example

* use processPitch for all pitch types

* convert freq to note before scalar step

* fix note convert

* remove extra comma throwing off indexing

* Hyperscore link update (#3939) (#3947)

* Update Hyperscore example link in guide.html (#3944)

* Update README.md (#3943)

* left_and_back_images (#3950)

* Updated Dockerfile  (#3949)

* Update README.md

* Update dockerfile

* remove yjs and socket.io dependecies

* Fixed #3956 Auto increasing and decreasing input block (#3957)

* fixes #3941

* fixes #3958

* Fixes collapsed state of note block (#3961)

* fixes issue with extra line number in JavaScript Editor (#3962)

* fixes sample block duplication issue (#3965)

* fixes sample block duplication issue

* changed error message

* updated error message

* updated planet image on documentation (#3971)

* updated planet image on documentation

fixes issue number: 3968

* updated images

* removed overlap between two images

* fix 1MB file size limit on audio sample imports (#3976)

* enforce 1MB limit on audio sample imports

* update sampler.js

* updated error msg

* update wheelnav.js (#3977)

* Fixes #3972 Highlight should not activate when code is being run (#3975)

* Fixes #3972 Highlight should not activate when code is being run

* optimized the code by using existing flag

* optimized the code by using existing flag

* fixes #3972

* removed extra code (#3980)

* Fixes #3973 Right click menu only opens in the advanced mode (#3978)

* Contextmenu only opens in advanced mode

* Added indentation and changed the if condition

* FIXES ISSUE #3895 Add alphabet "G" as a block found in easy mode  (#3979)

* FIXES ISSUE #3895 Add alphabet "G" as a block found in easy mode 

The requirement of this bug is to add the pitch G4 nad Alphabet G block in pitch menu of the beginner mode.

* FIXES ISSUE #3895 Add alphabet "G" and Sol as a block found in easy mode 

It adds the sol pitch block in the pitch menu of beginner's mode

* AI BLOCK and Documentation on How to add widget in MB (#3964)

* clean code , added comments

* added abc lib

* added debug statement

* fix : Formatting , Function method & method Func

* add function description

* added AI BLOCKS and DOCS

* change canvas to editor text

* changed canvas to edit text,added hint

* Fix: suggestion in AI Block & AI block structure

* added groq api

* Added midi support to MB (#3904)

* added midi support

* made corrections

* added note approximations

* added action blocks to start block

* added action block to start blk

* made corrections

* break also into multiple action block when noteblock count exceeds 24

* added break statement in case of no of  tracks more than 1

* added start blocks corresponding each track

* added meter and tempo information

* added scaling factor and load as midi feture

* added default timesignatures

* added drum mapper

* removed set instrument in case of percussion

* added an extra condtion when the new note start is less than previous note

* added minor changes

* removed the scaling factor earlier added

* added names to start blocks

* modifications for clarity

* add abacus example

* Rhythm block doesn't repeat issue update (#3982)

* Rhythm block doesn't repeat issue update

* removed console log messages

* added console log message for testing

* fixes #3931 Rhythm block doesn't repeat when outside of PhraseMaker

* add more steps to new palette instructions

* fix: remove redundant code to achieve DRY consistency (#3988)

* removed extra code

* update block.js

* update block.js (#3989)

* refactor: Simplify note processing logic, remove an empty file (#3991)

* Update drum block setup to make it more compact (#3992)

* refactor: update indexOf () === -1 to ! includes (#3993)

* update activity.js

* update block.js

* update activity.js

* Revert "update activity.js"

This reverts commit c61110f.

* update activity.js

* update blocks.js

* update piemenu.js

* update musicutils.js

* update blockfactory.js

* update turtle-singer.js

* update lilypond.js

* update logo.js

* update macros.js

* update palette.js

* update notation.js

* update DrumBlocks.js

* update GraphicsBlocks.js

* update PenBlocks.js

* used regex to shrink code (#3996)

* introduced a setupFunctions array to group all the setup function call, add uses export statements for BACKWARDCOMPATIBILIYDICT and initBasicProtoBlocks, instead of comments to indicate exports (#3994)

* Revert "introduced a setupFunctions array to group all the setup function call, add uses export statements for BACKWARDCOMPATIBILIYDICT and initBasicProtoBlocks, instead of comments to indicate exports (#3994)"

This reverts commit a6f3514.

* move all saved state into a single object (#3998)

* move all saved state into a single object, remove unnecessarya variable declarations

* re-add some variable names to avoid breaking code, and remove singer.notesPlayed

* refactor: update indexOf () === -1 to ! includes (#4001)

* update PitchBlocks.js

* update ProgramBlocks.js

* update VolumeBlocks.js

* update WidgetBlocks.js

* update IntervalsActions.js

* update PitchActions.js

* update RhythmActions.js

* update ToneActions.js

* update VolumeActions.js

* update utils.js

* update arpeggio.js

* update musickeyboards.js

* update phrasemaker.js

* update rhythmruler.js

* update generate.js

* update interface.js

* update mathutils.js

* update synthutils.js

* update help.js

* update helper.js

* ABC to MB Parser (#3925)

* clean code , added comments

* added abc lib

* added debug statement

* fix : Formatting , Function method & method Func

* add function description

---------

Co-authored-by: Walter Bender <walter@sugarlabs.org>

* clean up javascript formatting

* Feat/add record button and playback button in sampler widget (#3813)

* added recording and playback button

* upd

* added recording started,completed msg and button disabled when no url

* updated icons

* added sample for waveform

* upd

* added the required changes,play sample pitch,create sample with setinstrument

* FIXES ISSUE #4000 Regression: 'Set Default Instrument' Block Converts to 'Unknown' Block (#4006)

By this commit the set default instrument block is working fine.

* Add More Frequent "RUN LIVE" Links to Music Blocks Programming Guide (#3999)

* Added RUN LIVE option

* Added RUN LIVE option

* Added new RUN LIVE links

* use object lookup for convertDuration instead of switch (#4003)

* Streamline Drumname for early return of drum post http match, use object lookup (#4008)

* drum returns quicker post http match, use object lookup instead of a for loop

* add value matches

* chore: add textMsg-on-disconnect

* FIXES ISSUE #3921 Reexamine our default temperament list (#4010)

* Updating musicutils.js in order to change the name of the temperament name list 

FIXES ISSUE #3921 Reexamine our default temperament list

* Updating piemenus.js

FIXES ISSUE #3921 Reexamine our default temperament list
In order to fix all the names perfectly in the menu i increased the size of the basic pie menu for the temperament name block

* chore: remove $ operator

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Walter Bender <walter@sorcero.com>
Co-authored-by: Nikhil <154296996+BeNikk@users.noreply.github.com>
Co-authored-by: Anas <141234155+Anas-2357@users.noreply.github.com>
Co-authored-by: anas2357 <141234155+anas2357@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Walter Bender <walter@sugarlabs.org>
Co-authored-by: Harshit Verma <therealharshit014@gmail.com>
Co-authored-by: Geeten Parab <147247925+GeetenParab@users.noreply.github.com>
Co-authored-by: akilesh1706 <126157319+akilesh1706@users.noreply.github.com>
Co-authored-by: Khadar vali <124120102+khadar1020@users.noreply.github.com>
Co-authored-by: Muhammad Haroon <104259212+haroon10725@users.noreply.github.com>
Co-authored-by: AnupamGaur <86046454+AnupamGaur@users.noreply.github.com>
Co-authored-by: omsuneri <142336291+omsuneri@users.noreply.github.com>
Co-authored-by: abhijeet <102318826+abhijeetsingh0401@users.noreply.github.com>
Co-authored-by: Mubashir  Shariq <103755591+Mubashirshariq@users.noreply.github.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: dubeanant <147899880+dubeanant@users.noreply.github.com>
walterbender added a commit that referenced this pull request Sep 27, 2024
…nd `Load project from file` events (#4014)

* fixes #3913

* fix:resolves grid position on hamburger opening(#3914) (#3924)

* fix:resolves hamburger opening(#3914)

* fix:fixes #3914(suggested changes done)

* adjust size of grid element repositioning when using aux toolbar

---------

Co-authored-by: Walter Bender <walter@sorcero.com>

* Fix input boxes (#3927)

* bump version

* enhancement: scale on hover (#3926)

Co-authored-by: anas2357 <141234155+anas2357@users.noreply.github.com>

* calculate frequencies from ratio

* Add close button to extended-menu pie menu (fixes #3933) (#3934)

* Bump braces and gulp (#3903)

Bumps [braces](https://github.com/micromatch/braces) to 3.0.3 and updates ancestor dependency [gulp](https://github.com/gulpjs/gulp). These dependencies need to be updated together.


Updates `braces` from 2.3.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/commits/3.0.3)

Updates `gulp` from 4.0.2 to 5.0.0
- [Release notes](https://github.com/gulpjs/gulp/releases)
- [Changelog](https://github.com/gulpjs/gulp/blob/master/CHANGELOG.md)
- [Commits](gulpjs/gulp@v4.0.2...v5.0.0)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
- dependency-name: gulp
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* add support for solfege accidentals in phrasemaker

* Add support for cents (#3937)

* add support for cents through semi-tone transposition

* add 50 cents macro

* add cents example

* add output frequencies

* fix issue with ratio cents

* add a ratio-cents example

* Ratio transpose and Ratio interval (#3936)

* use processPitch for all pitch types

* Add support for cents (#3937)

* add support for cents through semi-tone transposition

* add 50 cents macro

* add cents example

* add output frequencies

* fix issue with ratio cents

* add a ratio-cents example

* use processPitch for all pitch types

* convert freq to note before scalar step

* fix note convert

* remove extra comma throwing off indexing

* Hyperscore link update (#3939) (#3947)

* Update Hyperscore example link in guide.html (#3944)

* Update README.md (#3943)

* left_and_back_images (#3950)

* Updated Dockerfile  (#3949)

* Update README.md

* Update dockerfile

* remove yjs and socket.io dependecies

* Fixed #3956 Auto increasing and decreasing input block (#3957)

* fixes #3941

* fixes #3958

* Fixes collapsed state of note block (#3961)

* fixes issue with extra line number in JavaScript Editor (#3962)

* fixes sample block duplication issue (#3965)

* fixes sample block duplication issue

* changed error message

* updated error message

* updated planet image on documentation (#3971)

* updated planet image on documentation

fixes issue number: 3968

* updated images

* removed overlap between two images

* fix 1MB file size limit on audio sample imports (#3976)

* enforce 1MB limit on audio sample imports

* update sampler.js

* updated error msg

* update wheelnav.js (#3977)

* Fixes #3972 Highlight should not activate when code is being run (#3975)

* Fixes #3972 Highlight should not activate when code is being run

* optimized the code by using existing flag

* optimized the code by using existing flag

* fixes #3972

* removed extra code (#3980)

* Fixes #3973 Right click menu only opens in the advanced mode (#3978)

* Contextmenu only opens in advanced mode

* Added indentation and changed the if condition

* FIXES ISSUE #3895 Add alphabet "G" as a block found in easy mode  (#3979)

* FIXES ISSUE #3895 Add alphabet "G" as a block found in easy mode 

The requirement of this bug is to add the pitch G4 nad Alphabet G block in pitch menu of the beginner mode.

* FIXES ISSUE #3895 Add alphabet "G" and Sol as a block found in easy mode 

It adds the sol pitch block in the pitch menu of beginner's mode

* AI BLOCK and Documentation on How to add widget in MB (#3964)

* clean code , added comments

* added abc lib

* added debug statement

* fix : Formatting , Function method & method Func

* add function description

* added AI BLOCKS and DOCS

* change canvas to editor text

* changed canvas to edit text,added hint

* Fix: suggestion in AI Block & AI block structure

* added groq api

* Added midi support to MB (#3904)

* added midi support

* made corrections

* added note approximations

* added action blocks to start block

* added action block to start blk

* made corrections

* break also into multiple action block when noteblock count exceeds 24

* added break statement in case of no of  tracks more than 1

* added start blocks corresponding each track

* added meter and tempo information

* added scaling factor and load as midi feture

* added default timesignatures

* added drum mapper

* removed set instrument in case of percussion

* added an extra condtion when the new note start is less than previous note

* added minor changes

* removed the scaling factor earlier added

* added names to start blocks

* modifications for clarity

* add abacus example

* Rhythm block doesn't repeat issue update (#3982)

* Rhythm block doesn't repeat issue update

* removed console log messages

* added console log message for testing

* fixes #3931 Rhythm block doesn't repeat when outside of PhraseMaker

* add more steps to new palette instructions

* fix: remove redundant code to achieve DRY consistency (#3988)

* removed extra code

* update block.js

* update block.js (#3989)

* refactor: Simplify note processing logic, remove an empty file (#3991)

* Update drum block setup to make it more compact (#3992)

* refactor: update indexOf () === -1 to ! includes (#3993)

* update activity.js

* update block.js

* update activity.js

* Revert "update activity.js"

This reverts commit c61110f.

* update activity.js

* update blocks.js

* update piemenu.js

* update musicutils.js

* update blockfactory.js

* update turtle-singer.js

* update lilypond.js

* update logo.js

* update macros.js

* update palette.js

* update notation.js

* update DrumBlocks.js

* update GraphicsBlocks.js

* update PenBlocks.js

* used regex to shrink code (#3996)

* introduced a setupFunctions array to group all the setup function call, add uses export statements for BACKWARDCOMPATIBILIYDICT and initBasicProtoBlocks, instead of comments to indicate exports (#3994)

* Revert "introduced a setupFunctions array to group all the setup function call, add uses export statements for BACKWARDCOMPATIBILIYDICT and initBasicProtoBlocks, instead of comments to indicate exports (#3994)"

This reverts commit a6f3514.

* move all saved state into a single object (#3998)

* move all saved state into a single object, remove unnecessarya variable declarations

* re-add some variable names to avoid breaking code, and remove singer.notesPlayed

* refactor: update indexOf () === -1 to ! includes (#4001)

* update PitchBlocks.js

* update ProgramBlocks.js

* update VolumeBlocks.js

* update WidgetBlocks.js

* update IntervalsActions.js

* update PitchActions.js

* update RhythmActions.js

* update ToneActions.js

* update VolumeActions.js

* update utils.js

* update arpeggio.js

* update musickeyboards.js

* update phrasemaker.js

* update rhythmruler.js

* update generate.js

* update interface.js

* update mathutils.js

* update synthutils.js

* update help.js

* update helper.js

* ABC to MB Parser (#3925)

* clean code , added comments

* added abc lib

* added debug statement

* fix : Formatting , Function method & method Func

* add function description

---------

Co-authored-by: Walter Bender <walter@sugarlabs.org>

* clean up javascript formatting

* Feat/add record button and playback button in sampler widget (#3813)

* added recording and playback button

* upd

* added recording started,completed msg and button disabled when no url

* updated icons

* added sample for waveform

* upd

* added the required changes,play sample pitch,create sample with setinstrument

* FIXES ISSUE #4000 Regression: 'Set Default Instrument' Block Converts to 'Unknown' Block (#4006)

By this commit the set default instrument block is working fine.

* Add More Frequent "RUN LIVE" Links to Music Blocks Programming Guide (#3999)

* Added RUN LIVE option

* Added RUN LIVE option

* Added new RUN LIVE links

* use object lookup for convertDuration instead of switch (#4003)

* Streamline Drumname for early return of drum post http match, use object lookup (#4008)

* drum returns quicker post http match, use object lookup instead of a for loop

* add value matches

* FIXES ISSUE #3921 Reexamine our default temperament list (#4010)

* Updating musicutils.js in order to change the name of the temperament name list 

FIXES ISSUE #3921 Reexamine our default temperament list

* Updating piemenus.js

FIXES ISSUE #3921 Reexamine our default temperament list
In order to fix all the names perfectly in the menu i increased the size of the basic pie menu for the temperament name block

* new strings

* string repair

* new strings

* feat: add event for exit-collaboration

* feat: add flag to indicate exit of user

* feat: function to remove mouses, set the flag and disconnect

* feat: emit exit-collaboration event on new-project, load-project-from-file

* feat: emit exit-collaboration event on new-project in planet

* feat: listen exit-collaboration event and exit the collaboration

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Walter Bender <walter@sorcero.com>
Co-authored-by: Nikhil <154296996+BeNikk@users.noreply.github.com>
Co-authored-by: Anas <141234155+Anas-2357@users.noreply.github.com>
Co-authored-by: anas2357 <141234155+anas2357@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Walter Bender <walter@sugarlabs.org>
Co-authored-by: Harshit Verma <therealharshit014@gmail.com>
Co-authored-by: Geeten Parab <147247925+GeetenParab@users.noreply.github.com>
Co-authored-by: akilesh1706 <126157319+akilesh1706@users.noreply.github.com>
Co-authored-by: Khadar vali <124120102+khadar1020@users.noreply.github.com>
Co-authored-by: Muhammad Haroon <104259212+haroon10725@users.noreply.github.com>
Co-authored-by: AnupamGaur <86046454+AnupamGaur@users.noreply.github.com>
Co-authored-by: omsuneri <142336291+omsuneri@users.noreply.github.com>
Co-authored-by: abhijeet <102318826+abhijeetsingh0401@users.noreply.github.com>
Co-authored-by: Mubashir  Shariq <103755591+Mubashirshariq@users.noreply.github.com>
Co-authored-by: amrit <iamamrit27@gmail.com>
Co-authored-by: dubeanant <147899880+dubeanant@users.noreply.github.com>
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.

3 participants