GithubHelp home page GithubHelp logo

easyabc's Introduction

EasyABC logo

EasyABC

An open source ABC editor for Windows, OSX and Linux. It is published under the GNU Public License.

Features

  • Good ABC standard coverage thanks to internal use of abcm2ps and abc2midi
  • Syntax highlighting
  • Zoom support
  • Import MusicXML, MIDI and Noteworthy Composer files.
  • Export to MIDI, SVG, PDF (single tune or whole tune book).
  • Select notes by clicking on them and add music symbols by using drop-down menus in the toolbar.
  • Play the active tune as midi (using SoundFont)
  • See which notes are currently playing (Follow score)
  • Contextual guidance (ABC Assist)
  • Record songs from midi directly in the program (no OSX support at the moment).
  • Just press Rec, play on your midi keyboard and then press Stop.
  • The musical score is automatically updated as you type in ABC code.
  • Support for unicode (utf-8) and other encodings.
  • Transpose and halve/double note length functionality (using abc2abc)
  • An abcm2ps format file can easily be specified in the settings.
  • ABC fields in the file header are applied to every single tune in a tune book.
  • Automatic alignment of bars on different lines
  • Available in Italian, French, Danish, Swedish, Dutch and English
  • Functions to generate incipits, sort tunes and renumber X: fields.
  • Musical search function - search for note sequences irrespectively of key, etc.

Credits - software components used by EasyABC

  • abcm2ps for converting ABC code to note images (developed/maintained by Jean-François Moine)
  • abc2midi for converting ABC code to midi (by James Allwright, maintained by Seymour Shlien)
  • xml2abc for converting from MusicXML to ABC (by Willem Vree)
  • abc2xml for converting from ABC to ABC (by Willem Vree)
  • nwc2xml for converting from Noteworthy Composer format to ABC via XML (by James Lee)
  • wxPython cross-platform user-interface framework
  • scintilla for the text editor used for ABC code
  • python midi package for the initial parsing of midi files to be imported
  • pygame (which wraps portmidi) for real-time midi input
  • FluidSynth for playing using SoundFonts
  • Many thanks to the translators: Valerio Pelliccioni (italian), Bendix Rødgaard (danish), Frédéric Aupépin (french). Universal binaries of abcm2ps and abc2midi for OSX are available thanks to Chuck Boody.

Links

Keyboard shortcuts

  • F5 Refresh
  • F6 Play current song
  • F7 Stop song
  • Ctrl-Shift-F Find in Files (or show entire collection)

easyabc's People

Contributors

aupfred avatar bwl21 avatar hkiel avatar jwdj avatar kmarty avatar marcstober avatar mist13 avatar yetist avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

easyabc's Issues

Horizontal alignment flag error

I am running easyABC from the latest github source code on OpenSuse Linux and when attempting to open the abc settings, the settings box would not appear and I would get an error:
File "/usr/share/easyabc/easy_abc.py", line 2630, in __init__ btn_box.Add(self.reset, flag=wx.ALIGN_RIGHT) wx._core.wxAssertionError: C++ assertion "!(flags & wxALIGN_RIGHT)" failed at ./src/common/sizer.cpp(2133) in DoInsert(): Horizontal alignment flags are ignored in horizontal sizers

Please use github releases and tags

It makes it easier to track changes for packagers.

Also would you consider changing the orientation of CHANGES file to be most recent releases first to last ? It makes it easier parsing the file.

titletrim

%%titletrim 1 seems to be ignored if the last word is more than 5 characters. The ABC converter at http://www.mandolintab.net/abcconverter.php does not have this issue.

It would also be nice if this feature worked for groups of more than 1 word. For example
T:Montreal, Reel de
would be read as
Reel de Montreal

abc-include fails

The directives %%abc-include and I:abc-include seem to be implemented (in abc2xml.py), but fail badly (for me, at least).
Any used of these directives causes havoc with the parser. For example:

stdin:33:16: error: Bad length
  33 "_Rubato Intro"F2 {c}F3 FAB | B/c3/2 {e}c3 FAc | {Bc}B2 {c}B3 FAB | F8 |
                     ^
stdin:33:22: error: Bad length
  33 "_Rubato Intro"F2 {c}F3 FAB | B/c3/2 {e}c3 FAc | {Bc}B2 {c}B3 FAB | F8 |
                           ^
stdin:33:31: error: Bad length divisor
  33 "_Rubato Intro"F2 {c}F3 FAB | B/c3/2 {e}c3 FAc | {Bc}B2 {c}B3 FAB | F8 |
                                    ^

Also, a much more minor issue: The file location of the included .ABH file is not relative to the source file that issues the abc-include directive - I have to specify fully qualified path names.

Was this directive intended to be implemented? (For me, this is a key feature, since all my .abc files refer to a common .ABH that specifies layout, so I can accommodate many different output formats).

Mismatched new line characters

I found another issue with easyabc, but this one is a lot more minor and hopefully should be an easier fix. By default, easyabc uses EOL to start a new line when displaying the music with abcm2ps, while abc2xml uses the dollar sign. This results in the lines not being properly formatted when using xml export. On the command line, -b needs to be passed to abc2xml to switch from dollar sign to EOL.

Thank you so much for maintaining this program!

Error importing MIDI file in Python 3.x

Steps to reproduce:

  1. Start EasyABC under Python3
  2. File > Import and Add...
  3. Select a MIDI file

ERROR: "TypeError: It is not a valid midi file!"
2020-12-16

Note: I was using Windows 10.

(I will submit a pull request to fix.)

Can't seem to get Midi Playback to go to Midi device

It started out when I ran the binary of EasyABC, it wouldn't see my USB Devices at all. So I got the sources here for EasyABC and set up a dev environment to run from source. I got everything running, and it recognized my USB device from the Settings/Midi devic e settings tab. But when I load a file and press the play button the music is played through my computer speakers and not my midi device. Any ideas?

Follow score does not work

Enabled "Follow score", but on the score the current note is not marked.
It seems that the mark starts outside the visible window and is shifted to a wrong position.

some German translation is awkward

Dear JW!

Some of the German translation seems to be translated by google. I went through the German .po file and corrected things that felt awkward.

Here is the result, if you like to include it.
easyabc.po.txt
(i renamed it .txt in order to be able to attach it)

ABC code errors not reported to user

I was not aware of my errors until I pasted my ABC into a web-based editor that highlighted my errors. I later discovered that the Messages window displayed these errors.

It would be helpful to have the error positions highlighted in the score window and/or code editor window, or at least show an indicator to have the user check the Messages window for error details.

Line numbers would help in the editor

Line numbers would help in the editor.

The line number is given in the error message, however, linen umbers are not visible in the source window.

(EasyABC Version 1.3.5 on OS X 10.14.6 Mojave)

svg renderer needs to pass proper ints to some wx APIs

Otherwise score rendering is broken on Ubuntu 22.04 (python3.10)

This diff fixes that:

  diff --git a/svgrenderer.py b/svgrenderer.py
  index f229d7e..8b54329 100644
  --- a/svgrenderer.py
  +++ b/svgrenderer.py
  @@ -620,7 +620,7 @@ class SvgRenderer(object):
                       #     wxpen.Style(wx.USER_DASH)
                       wxpen.Join(wx.JOIN_MITER)
                   else:
  -                    wxpen = wx.Pen(wx_colour(svg_stroke), line_width)
  +                    wxpen = wx.Pen(wx_colour(svg_stroke), int(line_width))
                       if linecap == 'butt':
                           wxpen.SetCap(wx.CAP_BUTT)
                       elif linecap == 'round':
  @@ -810,7 +810,7 @@ class SvgRenderer(object):
                       elif fi == 'italic':
                           font_style = wx.FONTSTYLE_ITALIC
                       elif fi.endswith('px'):
  -                        font_size = float(fi[0:-2])
  +                        font_size = int(float(fi[0:-2]))
                       elif fi in ['serif','sans-serif','monospace','bookman']:
                           svg_font_family = fi

MIDI devices not detected on Windows 10.

Hello, and thank you for the great software.

I am unable to get EasyABC to recognize any MIDI devices. When I click Settings > Midi Device Settings, the only option is None for both Input device and Output device.

I have seen that others are experiencing the same issue.

I am hoping to use my MIDI keyboard to input notes into EasyABC. I am currently using my keyboard to input into TablEdit, and then exporting the ABC from there.

I am running EasyABC 1.3.8.6 on Windows 10 Home 20H2, but I have tried several versions of EasyABC from the last 8 years and I get the same results.

Any help appreciated. Thanks.

Screenshot 2022-01-02 110912

Segmentation fault

Thank you for fixing the my last issue. However, after I finally got around to updating easyabc to the latest version, the program no longer starts. It instead gives an error:

fluidsynth: warning: SDL2 not initialized, SDL2 audio driver won't be usable /usr/bin/easyabc: line 2: 9134 Segmentation fault (core dumped) python3 /usr/share/easyabc/easy_abc.py

Thank you very much for your help

Missing FluidSynth

Hi, I'm trying to run the source code, but I'm getting the error "ImportError: Couldn't find the FluidSynth library in the program directory." It looks like FluidSynth is a dependency that has been added since the last release of EasyABC on SourceForge. Can I get a certain DLL from somewhere? Or should I use an older version of the source code? (I'm not clear what FluidSynth does, was it suppose to fix something or add a new feature?) Thanks!

feature request - play from selected note

The Play position bar is difficult to use. It's not very precise and the position follows the play position, which makes it tedious for repeatedly playing a specific part.

I think it would be nice to have the Play button automatically start from the selected note. If multiple notes are selected, then the Play button could play only the selection.

confusing initial gs location

Getting the following bug upon loading in Linux Mint 20.3

Linux tut 5.15.0-60-generic #66~20.04.1-Ubuntu SMP Wed Jan 25 09:41:30 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

image

Although it's easy to fix manually thought it would help to find the cause.

MIDI support on macOS 10.15 Catalina

It looks like playing MIDI isn't working on macOS 10.15 (Catalina) anymore. Everything was fine until macOS 10.14. I think, the problem is, that QuickTime itself doesn't support MIDI anymore, which is set as default backend for WxMediaPlayer. At least I couldn't open any MIDI file with QuickTime, but with VLC for example. I made some local tests with pygame.mixer, which were sucessful.

You have to create a MIDI device on macOS according to this guide: https://stackoverflow.com/a/49543687

Then you can use pygame like this:

import pygame.midi as pypm
import pygame.mixer
pypm.init()
pygame.mixer.init()
pygame.mixer.load("PATH_TO_MIDI")
pygame.mixer.play()
pygame.mixer.stop()

Maybe you can create another backend out of this.

To fix the errors to show the MIDI settings dialog, I had to change:

diff --git a/easy_abc.py b/easy_abc.py
index cf979f8..98200b9 100644
--- a/easy_abc.py
+++ b/easy_abc.py
@@ -2724,11 +2724,11 @@ class MidiSettingsFrame(wx.Dialog):
         outputDevices = [_('None')]
         outputDeviceIDs = [None]
         if 'pypm' in globals():
-            n = pypm.CountDevices()
+            n = pypm.get_count()
         else:
             n = 0
         for i in range(n):
-            interface, name, input, output, opened = pypm.GetDeviceInfo(i)
+            interface, name, input, output, opened = pypm.get_device_info(i)
             if input:
                 inputDevices.append(name)
                 inputDeviceIDs.append(i)

macOS 10.15 Catalina
Python 2.7.17
pygame 1.9.6

Playing part of a tune not working OpenSUSE 15.4 Python 3.6

I describe my setup here
#63 (comment)
It will play tunes OK

I understand how loop play is meant to work from this
https://sourceforge.net/p/easyabc/discussion/general/thread/d7ad9cfe95/
When I do that I get

Traceback (most recent call last):
  File "/usr/lib64/python3.6/site-packages/wx/core.py", line 3407, in <lambda>
    lambda event: event.callable(*event.args, **event.kw) )
  File "/home/david/Documents/concertina/abc/easyABC/easyabc_source_1.3.8.6/easy_abc.py", line 7327, in PlayMidi
    tune, abc = self.GetAbcToPlay()
  File "/home/david/Documents/concertina/abc/easyABC/easyabc_source_1.3.8.6/easy_abc.py", line 4285, in GetAbcToPlay
    notes = get_notes_from_abc(text)
  File "/home/david/Documents/concertina/abc/easyABC/easyabc_source_1.3.8.6/easy_abc.py", line 487, in get_notes_from_abc
    abc = abc.encode()
AttributeError: 'bytes' object has no attribute 'encode'

The offending code in easy-abc.py 1.3.8.6:

486    if not isinstance(abc, str):
487        abc = abc.encode()

I tried commenting that out but it then fell over this:

    abc = abc.replace('\r', '\n')
TypeError: a bytes-like object is required, not 'str'

EasyABC .deb is lacking a shortcut and icon

I'm not an ABC user myself, just installing it for a friend.

I don't know where he downloaded the .deb from (probably source forge?) but one issue is it lacked an application shortcut /usr/share/applications/easyabc.desktop and an application icon /usr/share/icons/easyabc.png

I had to manually create a shortcut and icon for him so he doesn't need to launch if from the command line.

It really should have the shortcut and icon in the deb, makes it a lot easier for the likes of him.

Add Note Durations documentation confusing, not working

This is an issue with the feature than can be enabled by going to Settings > ABC Typing Assistance > Add note durations.

The documentation at https://www.nilsliberg.se/ksp/easyabc/ says:

Add note durations - when you hit the [Space] key and no explicit durations has been specified for the preciding group of notes EasyABC will try to add durations in order to make the notes add up to the length of a quater note. Let's assume that we have a tune with L:1/8. Then EasyABC will perform these subsitutions:

A + [Space] → A4
AB + [Space] → A2B2
ABC + [Space] → A2BC
ABCD + [Space] → ABCD

Since this behaviour is not always desirable, it is deactivated by default.

First of all, I am not sure if this documentation is correct. If the tune has L:1/8 then I'd expect to get A2, not A4. (Side note: this seems to be documentation for an older version at the previous maintainer's site.)

Second, the feature does not seem to be working. From a little debugging, this seems to be at least in part because internally, the meter is stored using the Fraction class from Python, and, at least in Python 3.6, meters like 4/4 are reduced to 1/1. Musical meters aren't really fractions even though they kind of look similar, so it might make sense to make an internal change so that the meter isn't stored as a fraction.

I may be able to work on a patch for this but I want to confirm that my understanding of how this is supposed to work is correct first.

EasyABC .deb didn't declare it was dependent on wxgtk packages

When I installed the easyabc .deb at a friends house, it stated that all dependencies were satisfied, but upon launching the program it wanted some python3-gtk4wx packages which I had to install manually.

It should declare these packages as dependencies.

Linux package

This isn't an issue, more like an announcement that others might find useful.

Like many others, I wanted to run EasyABC on Linux, and found it difficult to get the right version of each component, config, etc.
So I packaged EasyABC with Nix.
This package includes abcmidi, ghostscript, python, fluidsynth, soundfont, everything. And they will all be preconfigured when EasyABC starts, no need for the user to set the paths in config.

All a Linux user has to do to run EasyABC from Nix is:

  1. Install Nix
  2. Run nix run github:nixos/nixpkgs/644fed2285c00e2b232f271773b2c1d0d26e7234#easyabc

I've tested this on NixOS and on Ubuntu 22.04.

Choppy MIDI playback

I am not sure how to describe this issue, but internal MIDI playback through the tool (not via Timidity) is frequently choppy. I am working on Linux Mint 20.3, however for testing I tried more up to date and plain Debian distribution and got equally bad playback. Periodically when I switch between various sound fonts and clear cache it improves slightly, but it is still bad overall nevertheless. If someone else could confirm or propose how to address it that would be great. Switching to Windows is not an option for me.

Running EasyABC on OpenSUSE 15.5 - and 2 minor issues

I had to rebuild EasyABC when I upgraded to OpenSUSE 15.5. I tried various versions of EasyABC, starting with the modified 1.3.8.6 that partly worked before (see #64) and various versions of python. I eventually got it working better than before because it will now play part of a tune.

I used a copy of 1.3.8.7 Master as at 12-AUG-23.
I have:
python 3.6 (which is still the system version in SUSE 15.5)
wx 4.1.1
FluidSynth 2.3.0
(Not using JACK, though I tried it.)

I also have python 3.10 and I tried that in a venv but couldn't get wx to install.

I installed these packages in addition to the ones I already had. They may not all be necessary.
python3-wxPython and uninstalled python-wxwidgets which was installed previously
fluid-soundfont-gm (I was previously using another soundfont.)
gstreamer-plugin-python
gstreamer-plugins-bad-fluidsynth

In ABC Settings > File settings I leave midiplayer path blank and only add
Soundfont: /usr/share/sounds/sf2/FluidR3_GM.sf2

To stop it segfaulting (#28) I added into fluidsynth.py the extra code from here:
#28 (comment)
I inserted it after these lines:

class Synth:            # interface for the FluidSynth synthesizer
    def __init__(self, gain=0.2, samplerate=44100.0, bsize=64, output_path=None):

I made 2 minor changes - both to suppress warnings:

1 To get rid of the frequent gstreamer error popups I deleted the line
self.mc.Load('NONEXISTANT_FILE____.mid')
from wxmediaplayer.py

This was noted in #28 & #54 and originally on sourceforge:
https://sourceforge.net/p/easyabc/discussion/general/thread/524f3f9c/

I note that the 1.3.8.7 changelog includes
"Fixed: Removed loading of NONEXISTANT_FILE for all players except wxmediaplayer"
Why not that one too?

2 After a cold restart it displayed a warning popup and set the gs path to a b'/usr/bin/gs'.
In easy_abc.py I changed:
settings['gs_path'] = unicode(gs_path[0:-1]) to
settings['gs_path'] = gs_path.decode()[:-1]
That makes it consistent in the file settings.

Edit: I see that change was identified by sudobash1 in #66

I note in the changelog:
"Fixed: Some users could not export a PDF because the ghostscript path was a byte string instead of a unicode string..."
The pdf export still works.

Runtime error with wxPython 4.2.1

Traceback (most recent call last):
  File "/nix/store/s0xx7shngbbkydwbm2g0vv34rj8dzx96-easyabc-1.3.8.6/share/easyabc/easy_abc.py", line 8771, in OnInit
    self.frame = self.NewMainFrame(options)
  File "/nix/store/s0xx7shngbbkydwbm2g0vv34rj8dzx96-easyabc-1.3.8.6/share/easyabc/easy_abc.py", line 8710, in NewMainFrame
    frame = MainFrame(None, 0, self.app_dir, self.settings, options or {})
  File "/nix/store/s0xx7shngbbkydwbm2g0vv34rj8dzx96-easyabc-1.3.8.6/share/easyabc/easy_abc.py", line 3954, in __init__
    self.setup_menus()
  File "/nix/store/s0xx7shngbbkydwbm2g0vv34rj8dzx96-easyabc-1.3.8.6/share/easyabc/easy_abc.py", line 6177, in setup_menus
    append_menu_item(transpose_menu, _('Up %d semitones') % i, '', lambda e, i=i: self.OnTranspose(i))
  File "/nix/store/s0xx7shngbbkydwbm2g0vv34rj8dzx96-easyabc-1.3.8.6/share/easyabc/wxhelper.py", line 32, in append_menu_item
    menu_item = wx.MenuItem(menu, -1, label, description, kind)
TypeError: MenuItem(): argument 2 has unexpected type 'int'

Works fine with wxPython 4.2.0
First reported in NixOS/nixpkgs#243561

Segmentation fault in fluidsynth.py and other problems on Ubuntu 22.04.1 LTS

I think the problem occurs since upgrading to Ubuntu 22.04.1 LTS from Ubuntu 20.04.5 LTS (I'm not sure if the last number was 5.)

Is there anyone using EasyABC on Ubuntu 22.04.1 LTS?
Or is there anyone using EasyABC with libfluidsynth.so.3 on any Linux?

When I start easy_abc.py, it is terminated with Segmentation fault.

Using pdb I traced it down to this Python call stack:
F.fluid_settings_setnum(self.settings, c_char_p(b(name)), c_double(value)) in fluidsynth.py:85
self.setting_setnum('synth.gain', gain) in fluidsynth.py:62
self.fs = F.Synth(gain=1.0, bsize=2048) # make a synth in fluidsynthplayer.py:17
self.mc = FluidSynthPlayer(init_soundfont_path) in easy_abc.py:3976

On my system it uses libfluidsynth.so.3 which is

lrwxrwxrwx 1 root root     22 Feb  3  2022 /usr/lib/x86_64-linux-gnu/libfluidsynth.so.3 -> libfluidsynth.so.3.0.5
-rw-r--r-- 1 root root 551240 Feb  3  2022 /usr/lib/x86_64-linux-gnu/libfluidsynth.so.3.0.5

I don't know if this is a problem of libfluidsynth or the Python wrappers.
In Ubuntu 20.04.5 LTS, libfluidsynth.so.3 was not yet available, only libfluidsynth.so.2, which is a link to libfluidsynth.so.2.3.1.

There are incompatible changes between libfluidsynth.so.3 and libfluidsynth.so.2. I don't know if they affect thy Python interface.
See https://www.fluidsynth.org/api/RecentChanges.html#NewIn2_2_0

Additional research:
After installing libfluidsynth2_2.1.1-2_amd64.deb from the Ubuntu FocalFossa repository and changing the order of the library versions in fluidsynth.py to prefer libfluidsynth.so.2 does not change the behavior. With libfluidsynth.so.2 I get a segmentation fault at the same Python code line.

The fluidsynth command line program which uses libfluidsynth.so.3 is able to play a MIDI file without crash.

image file .../img/v.png not found when current directory is different from the location of easy_abc.py

When I run python3 path/to/easy_abc.py on Ubuntu 20.04.2 LTS, I get an error message window Failed to load image from file "/current/working/directory/img/v.png". and

Traceback (most recent call last):
  File "jwdj/EasyABC/easy_abc.py", line 8402, in OnInit
    self.frame = self.NewMainFrame()
  File "jwdj/EasyABC/easy_abc.py", line 8361, in NewMainFrame
    frame = MainFrame(None, 0, self.app_dir, self.settings)
  File "jwdj/EasyABC/easy_abc.py", line 3684, in __init__
    self.setup_menus()
  File "jwdj/EasyABC/easy_abc.py", line 5711, in setup_menus
    self.popup_ornaments = self.create_symbols_popup_menu(ornaments)
  File "jwdj/EasyABC/easy_abc.py", line 5649, in create_symbols_popup_menu
    append_menu_item(menu, ' ', description, self.OnInsertSymbol, bitmap=image.ConvertToBitmap())
  File "/usr/lib/python3/dist-packages/wx/core.py", line 752, in _Image_ConvertToBitmap
    bmp = wx.Bitmap(self, depth)
wx._core.wxAssertionError: C++ assertion "image.IsOk()" failed at ../src/gtk/bitmap.cpp(581) in wxBitmap(): invalid image
OnInit returned false, exiting...

Apparently, EasyABC contains relative paths to the image files like "img/v.png" which are interpreted relative to the current directory instead of relative to the location of the program.

The problem occurs both with the master version from https://github.com/jwdj/EasyABC and the fix_layout_issues branch in https://github.com/mmehl/EasyABC.

I think it is a problem with the value of variable cwd. I will try to prepare a fix. (And there seems to be a confusion between "current working directory" and "program directory" which is not necessarily the same, depending on how the program is started.)

Background information: I started EasyABC this way because I cloned both repositories mentioned above and wanted to check if a different problem occurs in both version.

Clicking on graphical notes only works for page 1

Clicking on graphical notes only works for page 1 when a score is longer than one page.

In the attached example:
When page one is selected, clicking on the C4 on any of the first 13 staffs correctly selects the corresponding line in the abc file. The same works for selecting any of the first 13 C4s and the respective C4 is selected in the staff (with page 1 selected).

However, clicking on the 14th C4 in the abc file only properly highlights the respective C4 in the staff when page 2 is active (instead of page 1).
Likewise, when clicking on any of the first 13 C4s while page 2 is active, nothing happens.

Suggested solution would be to automatically select the respective page when clicking anywhere in the abc file.

(EasyABC Version 1.3.5 on OS X 10.14.6 Mojave)

Loop does not work

I did the following:

  • enabled "Loop"
  • then started playing
    No looping happens.
    If I did no enable "Loop", than the "Play"-button is not reset.

GStreamer errors despite having libfluidsynth

Hi
Thank you very much for resolving my last issue. I've been having another problem with easyABC as well: The program gives me Gstreamer errors despite the fact that I have GStreamer and wxwidgets (along with its media class) installed. I have also added libfluidsynth to the same directory as easyABC and added a soundfont in the settings. Despite this, I continue to get the GStreamer errors. How do I make GStreamer or FluidSynth work? Do I have to install another package, or am I missing something in the settings?

Thank you very much.

Configuration of executables for midi2abc, abc2midi ?

I tried the default configuration of function midi2abc, but it doesn't give the same results as the existing .exe files do in Windows. Can anyone help me with the config of two functions midi2abc and abc2midi used in the latest executables?

unsupported tick*.wav formats under wx_sound

I'm getting the following errors when trying to use MIDI function

10:39:12 AM: Sound file '/media/avetik/SdCard/bin/EasyABC/sound/tick1.wav' is in unsupported format.
10:39:12 AM: Sound file '/media/avetik/SdCard/bin/EasyABC/sound/tick2.wav' is in unsupported format.

System: Kernel: 5.4.0-137-generic x86_64 bits: 64 compiler: gcc v: 9.4.0 Desktop: Xfce 4.16.0
tk: Gtk 3.24.20 wm: xfwm4 dm: LightDM Distro: Linux Mint 20.3 Una
base: Ubuntu 20.04 focal

EasyABC 1.3.8.7

python3-wxgtk-media4.0 Version: 4.0.7+dfsg-2build1

No sound on Linux ... and how to fix it.

I am running Ubuntu 20.04.2 LTS and there is no sound when using fluidsynth on a fresh install.

I fixed this by editing fluidsynthplayer.py line 16 which I changed from self.fs.start() to self.fs.start('pulseaudio')

This is obviously not the correct solution for other OS's but it worked for me as no default output driver was being set. I am not sure where the default output driver should be set.

By the way the prefered audio driver on Ubuntu should be pulseaudio rather than alsa because if alsa is used it locks the sound output and then no other apps can use the sound output.

I hope that is useful to others who have the same problem.

Error msg window auto resize affects editor: Confusing

The error message window below the abc source text automatically resizes to accommodate the error message, messing up the abc source text just above.

It would be desirable to keep the error message window at a constant height, so as not to affect the source code above.

(EasyABC Version 1.3.5 on OS X 10.14.6 Mojave)

PDF printing in Linux (Mint 20) does not produce a file due to incorrect detection of gs_path

No PDF export was possible for me, so I tried to print the contents of the line 937 of easy_abc.py

cmd2 = [gs_path, '-sDEVICE=pdfwrite', '-sOutputFile=%s' % pdf_file, '-dBATCH', '-dNOPAUSE', ps_file]

Here's the output I got

[b'/usr/bin/gs', '-sDEVICE=pdfwrite', '-sOutputFile=/home/avetik/.EasyABC/cache/temp.pdf', '-dBATCH', '-dNOPAUSE', '/home/avetik/.EasyABC/cache/temp.ps']
Note the first 'b'

The error messages contained the following:


 File "/media/avetik/SdCard/bin/EasyABC/easy_abc.py", line 5533, in export_tunes
    success = self.export_tune(tune, file_type, extension, convert_func, path, show_save_dialog=individual_save_dialog)
  File "/media/avetik/SdCard/bin/EasyABC/easy_abc.py", line 5458, in export_tune
    if convert_func(tune, filepath):
  File "/media/avetik/SdCard/bin/EasyABC/easy_abc.py", line 5203, in export_pdf
    pdf_file = AbcToPDF(self.settings, tune.abc, tune.header, self.cache_dir, self.settings.get('abcm2ps_extra_params', ''),
  File "/media/avetik/SdCard/bin/EasyABC/easy_abc.py", line 944, in AbcToPDF
    execmessages += '\nAbcToPDF\n' + " ".join(cmd2)
TypeError: sequence item 0: expected str instance, bytes found

Note 'bytes found'

Next, hard-coding the first parameter to /usr/bin/gs string solves for me the problem of not ever printing any PDF.

cmd2 = ['/usr/bin/gs', '-sDEVICE=pdfwrite', '-sOutputFile=%s' % pdf_file, '-dBATCH', '-dNOPAUSE', ps_file]

As the result I am getting the file printed nicely. I conclude that gs_path does not get detected properly.

fonts not displayed correctly on macOS

See the example with super-huge title and advanced coda sign:

%%titlefont Times-Bold 100
%%beginps
/codac{ 1 SLW 2 add 2 copy M 0 20 RL
        2 copy M -10 10 RM 20 0 RL 1.1 SLW stroke
        exch -7 add exch (O) 3 1 roll /Times-Bold 18 selectfont 4 add M show
}!
%%endps
%%deco codac 3 codac 20 10 10
X:1
T:New Coda Symbol
K:C
Z !codac! | Z !coda! |

The svg is now bigger and reserves space for the bigger title, but is still displayed with small letters (and not even bold). Windows version works (though the pixels still differ if you create the SVG and view it with a dedicated SVG viewer)

Automatic alignment of bars on different lines not working

EasyABC is a very nice program. I have been using an online service for my ABC notation, but it doesn't have a play feature, and I cannot easily expand the display.

However the "Automatic alignment of bars on different lines" feature is not working. I am using v1.3.5 on a Windows 7 system. I have included a screen capture to illustrate the problem.

Thank you.

Alvin
20200515 EasyABC Capture

Warning when starting Python version in Windows minimized

I start the Python version in Windows from a shortcut on my desktop set to run it minimized. I thus am only a click onto the taskbar away from running EasyABC with the black Python window tucked away on said bar.

Everything is running fine, only the minimized Python window on the taskbar gives me this:

Warning: FluidSynth library not found. Playing using a SoundFont (.sf2) is disabled.Traceback (most recent call last):
File "C:\Users\Michi\AppData\Roaming\Python\Python38\site-packages\wx\lib\agw\aui\framemanager.py", line 8917, in OnSize
self.Repaint()
File "C:\Users\Michi\AppData\Roaming\Python\Python38\site-packages\wx\lib\agw\aui\framemanager.py", line 8773, in Repaint
client_dc = wx.BufferedDC(wx.ClientDC(self._frame), wx.Size(w, h))
wx._core.wxAssertionError: C++ assertion "m_buffer && m_buffer->IsOk()" failed at ....\src\common\dcbufcmn.cpp(134) in wxBufferedDC::UnMask(): invalid backing store

AbcToPS error

Got the following error when trying to export to PDF, but not sure how to handle or fix. Any suggestions?

File "/usr/share/easyabc/easy_abc.py", line 5529, in export_tunes
success = self.export_tune(tune, file_type, extension, convert_func, path, show_save_dialog=individual_save_dialog)
File "/usr/share/easyabc/easy_abc.py", line 5454, in export_tune
if convert_func(tune, filepath):
File "/usr/share/easyabc/easy_abc.py", line 5199, in export_pdf
pdf_file = AbcToPDF(self.settings, tune.abc, tune.header, self.cache_dir, self.settings.get('abcm2ps_extra_params', ''),
File "/usr/share/easyabc/easy_abc.py", line 940, in AbcToPDF
execmessages += '\nAbcToPDF\n' + " ".join(cmd2)
TypeError: sequence item 0: expected str instance, bytes found

cx_Freeze Error?

pyerror

Hi, sorry y'all, I'm not a programmer, just a user, but this started happening to me the other day out of the blue, and hasn't resolved with removing and reinstalling EasyABC. Literally, it was working just fine, then I opened the next .abc and it did this. Any insights would be appreciated, I enjoy this program.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.