Code Monkey home page Code Monkey logo

mingus's People

Contributors

bspaans avatar

Watchers

 avatar

mingus's Issues

Instrument transpose attribute

To deal with transposing instruments (eg. saxophones playing in Eb) we need
an transpose attribute.

Planned for version 0.3

Original issue reported on code.google.com by [email protected] on 7 Sep 2008 at 4:27

Lilypond output lacks one octave

What steps will reproduce the problem?

from mingus.containers.Bar import Bar
from mingus.containers.Note import Note
from mingus.extra import LilyPond
import mingus.core.value as value
b = Bar()
for i in range(10):
    b.place_notes(Note().from_int(40+i), 16)

print LilyPond.from_Bar(b)



What is the expected output? What do you see instead?
I think it should be:

{ \time 4/4 \key c \major e 16 f 16 fis 16 g 16 gis 16 a 16 ais 16 b 16
c'16 cis'16 }

Instead there is a jump over one octave:

{ \time 4/4 \key c \major e,16 f,16 fis,16 g,16 gis,16 a,16 ais,16 b,16
c'16 cis'16 }

if you run lilypond over that you see a gap over one octave:

It should be
a,,, a,, a,  a  a' a'' a'''

mingus skips the notes without quotes and kommas.

What version of the product are you using? On what operating system?

3.9.0.1 ubuntu 64bit


Original issue reported on code.google.com by [email protected] on 28 Feb 2009 at 12:56

LilyPond extention get confused with filenames with spaces

What steps will reproduce the problem?
1. use the LilyPond extention like that:
track = ...
output_file = os.path.join ('goal path', 'img')
LilyPond.to_png(track, output_file)
2.
3.

What is the expected output? What do you see instead?
expected:  files in path 'goal path/img/'

instead something like that:
Executing: lilypond -fpng -o media/songs/Bruder Jakob/media/images/Bruder
Jakob0.img media/songs/Bruder Jakob/media/images/Bruder Jakob0.img.ly
GNU LilyPond 2.10.33
aktuelles Verzeichnis kann nicht zu »media/songs« geändert werden


What version of the product are you using? On what operating system?
Ubuntu 8.10 64bit
mingus 0.3.9.1

Please provide any additional information below.
Using apostrophes '<filename>' around the files in the execution-string
should fix that

Original issue reported on code.google.com by [email protected] on 25 Feb 2009 at 2:29

failed to load "soundfont.sf2"

What steps will reproduce the problem?
1. Install Mingus on Windows XP

2. Change line 27 of pyFluidSynth

_fl = CDLL(find_library('fluidsynth'))

to

_fl = CDLL(find_library('libfluidsynth'))

3. Run pygame-drum example on command line

What is the expected output? What do you see instead?

fluidsynth: error: Unable to open file "soundfont.sf2"

What version of the product are you using? On what operating system?
Mingus0.4, WindowsXP SP3

Please provide any additional information below.

I don't really know what .sf2 files are but I found one in qsynth folder. I 
renamed it soundfont.sf2 and placed it in the same folder as pygame-drum. 
The program ran this time, but I don't get the same result I saw on the 
video when clicking on the green squares.

Original issue reported on code.google.com by [email protected] on 1 Mar 2009 at 6:39

Bar needs more helper functions

And they need to be described in the tutorial.

augment, diminish, to_minor, to_major, transpose , is_full, empty, get_range,
change_note_duration

Original issue reported on code.google.com by [email protected] on 7 Sep 2008 at 4:40

Save as mid

It should be possible to save all the containers as a midi file.

Original issue reported on code.google.com by [email protected] on 16 Dec 2008 at 1:23

midi support

From midi file to NoteContainers, Bars, Tracks and Compositions.

Should be doable, but not easy.


Exporting to MIDI should be easier, but I'm not the biggest expert on the
subject. 

Original issue reported on code.google.com by [email protected] on 7 Sep 2008 at 4:47

scales.determine needs to be better

scales.determine can currently only determine scales that contain exactly
the same notes as the ones that are known. It should return all the
possible scales; eg:

['A', 'C', 'E', 'G'] 

should return something like ['A minor pentatonic', 'A natural minor'].

Original issue reported on code.google.com by [email protected] on 16 Dec 2008 at 1:21

MIDI loading needs to be better

Loading a MIDI that was generated by mingus works fine, but it sometimes
chokes and throws unnecessary exceptions when parsing files generated by
other programs.

Some refinements:
* Midi events between 0 and 7 of which I have now documentation should be
allowed, but ignored.
* SysEx events should also be parsed but ignored.
* Can we parse type 2 midi files? Need to find some examples...
* We currently have no way to save changing instruments and bpm. We could
save that information on individual Notes but this would complicate all
sequencing algorithms considerably. Maybe it would be best if we had a
separate control track, since I would guess not every MIDI program outputs
tempo change events on every channel.

That's it, I hope.

Original issue reported on code.google.com by [email protected] on 29 Dec 2008 at 1:01

MusicXML support

It would be nice to be able to export to MusicXML and/or import it.

Over 100 applications -both commercial and open source- will be able to use
it: http://www.musicxml.org/xml.html

Original issue reported on code.google.com by [email protected] on 28 Dec 2008 at 6:12

Incorrect output in diatonic.int_to_note

What steps will reproduce the problem?

The function diatonic.int_to_note is not correct:
>>>import mingus.core.diatonic as diatonic
>>>diatonic.int_to_note(0, "D")
'C#b'
>>>diatonic.int_to_note(0, "B")
'C#b'
The outputs shown in tutorialDiatonic are not all correct too.


What version of the product are you using? On what operating system?
mingus Version 0.4.0.1
Python 2.5.4


Please provide any additional information below.

The intervals should be fixed and not shifted among different keys.
I suggest commenting out known_intervals and use the original intervals. 
The calculation will be correct then.

#known_intervals = map(lambda x: (x + current) % 12, intervals)
intervals = known_intervals

Original issue reported on code.google.com by [email protected] on 5 Jun 2009 at 8:02

make one-liners out of meter functions

These sort of things:

if is_valid(meter) and meter[0] % 3 == 0:
        return True
else:
        return False


should be rewritten to 

return is_valid(meter) and meter[0] % 3 == 0

Original issue reported on code.google.com by [email protected] on 10 Feb 2009 at 11:08

Lilypond output is wrong with most float length values

What steps will reproduce the problem?

from mingus.containers.Bar import Bar
from mingus.containers.Note import Note
from mingus.extra import LilyPond
import mingus.core.value as value
b = Bar()
b.place_notes(Note().from_int(50), 16)
b.place_notes(Note().from_int(50), 16.0)
print value.dots(16)
b.place_notes(Note().from_int(50), value.dots(16))
print LilyPond.from_Bar(b)

What is the expected output? What do you see instead?

output:
10.6666666667
{ \time 4/4 \key c \major d'16 d'16.0 d'16. }

what i would expect:
10.6666666667
{ \time 4/4 \key c \major d'16 d'16 d'16. }


What version of the product are you using? On what operating system?
3.9.0.1 ubuntu 64bit


Please provide any additional information below.

if you set 10.6666667 as length the lilypond output is 16+ a point (1/16 +
1/32 length thats right) but the lilypond string dont supports 16.0 as length.

part solution would be: if you hit no exact length with points -> round to
a full int value

perfekt solution would be: rounding to point values 16... as example if
input would be 10.5 its closer to 10.66666667 as to 10 or 11.

Original issue reported on code.google.com by [email protected] on 1 Mar 2009 at 10:05

Some example programs

It would be nice to have a sample directory with a couple of simple python
files showcasing mingus' uses.

Original issue reported on code.google.com by [email protected] on 7 Sep 2008 at 4:12

more about chords: chord object, transposition of single and multiple chords

I suggest to add a containers.chord object, that would expose all of the nice 
functions of chords, 
but additionally the "base name" ("C" for "Cmaj7") to able able to transpose 
that.

  >>> c = containers.chords('Am')
  >>> c.base_name
  'A'
  >>> c.from_shorthand
  ['A', 'E', 'C']
  >>> d = c.transpose('D')
  >>> d.common_name
  'Dm'
  >>> d.from_shorthand
  ['D', 'F', 'A']

c.transpose could also work with integers as half steps like this:

  >>> d = c.transpose(1)
  >>> d.common_name()
  'Bm'

The method should perhaps also take a second parameter for the scale, like 
other functions.

I guess this is a very simple extension for you, since most of the parts are 
already in place.

That would lead to transposition of whole accompaniment lines like this:

  >>> line = 'C Am / Dm G'
  >>> accompaniments.transpose(line, 'D')
  'D Bm / Em A'
  >>> accompaniments.transpose(line, 3)
  'D# Cm / Fm Bb'

I'd like to use such a function in the Python-based successor of my song 
collection (see 
http://angerweit.tikon.ch/lieder/lied.php?src=folk-nl/naarisland)

Original issue reported on code.google.com by [email protected] on 24 Oct 2008 at 5:17

Loading MIDI files

MIDI files can now be saved, but I would be nice if we could load them back
into mingus.containers as well. This way we would also have a (kind of
crude) way to interact with other programs.

Original issue reported on code.google.com by [email protected] on 25 Dec 2008 at 8:46

LilyPond needs to use new value module

To be able to print more complex note values than whole, halve, quarter,
eight, etc. notes. All the prerequisites in the value module are there;
probably need to look up some lilypond notation.

Original issue reported on code.google.com by [email protected] on 19 Jan 2009 at 2:07

Guitar tabs: extra.tablature

Generate tablature in text format. The hardest part is probably finding out
which fingering to use. This functionality could also be used in a graphic
representation of a guitar (to show chords, etc.).

Original issue reported on code.google.com by [email protected] on 7 Sep 2008 at 4:22

midi modules not useable if fluidsynth is not installed

In Python 2.5, when I try 'import mingus.midi.MidiFileOut', I get the 
following:

   import mingus.midi.MidiFileOut
  File "C:\Python25\Lib\site-packages\mingus\midi\__init__.py", line 28, in 
<module>
    import fluidsynth
  File "C:\Python25\Lib\site-packages\mingus\midi\fluidsynth.py", line 43, 
in <module>
    import pyFluidSynth as fs
  File "C:\Python25\Lib\site-packages\mingus\midi\pyFluidSynth.py", line 
27, in <module>
    _fl = CDLL(find_library('fluidsynth'))
  File "C:\Python25\lib\ctypes\__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
TypeError: expected string or Unicode object, NoneType found

I don't have fluidsynth installed, but shouldn't the midi file classes work 
without it?



Original issue reported on code.google.com by [email protected] on 7 Jan 2009 at 10:10

Take a look at Aubio

As suggested by James McDermott in
http://groups.google.com/group/mingus-python/browse_thread/thread/92bfdcb4902928
58

Original issue reported on code.google.com by [email protected] on 28 Jun 2009 at 4:42

substitute in progressions

A function that can find substitutions for chords in progressions.

For instance:

  The chord progression is A, D, A, E7

  Now we ask substitute for a substitute of E7

  It returns a list containing a couple of harmonically equivallent
substitutions, like G#dim, etc.

Added bonus:

  If it can return a list of chords and lists of chords. The lists of
chords should be a valid progression substituting for the chord. 

  Maybe a max_chord argument? eg.

  substitute(chord, progression, key, max_chord_in_answer)

  substitute("E7", ["A", "D", "A", "E7"], "A", 2)
  ["G#dim", ["F", "E7"], .....]

Original issue reported on code.google.com by [email protected] on 7 Sep 2008 at 4:38

Adding triplets, etc. to Bars

We need a way to represent triplets, quintuplets, etc. 
It's probably easiest to do this with a tuple; eg. (4/3) and (4/5) for
quarter triplets and quarter quintuplets. This probably doesn't play too
well with the floating point stuff in Bar, thus changing the is_full method
among others would probably be necessary.

Planned for version 0.4

Original issue reported on code.google.com by [email protected] on 7 Sep 2008 at 4:16

General purpose midi sequencer

A general purpose midi sequencer in the midi package, so that we can have
one to interface with fluidsynth, one to route midi messages, etc. Can
probably easily be extracted from midi.fluidsynth. 

Also think about and look into integrating some kind of observer pattern,
so that you can add listeners instead of subclassing. The notify method
could become pretty complex anyway so it might be redundant. 


Original issue reported on code.google.com by [email protected] on 19 Jan 2009 at 2:05

Change "eight" to "eighth"

May I request changing all instances of "eight" to "eighth" in the
core.value module? "eight" is a misprint, and it is an error since eight =
8 and eighth = 1/8. (There is no such thing as an "eight note.")

This includes fixing hundred_twenty_eight as well as the documentation.

Sorry to be nit-picky, but this error is certain to confuse programmers.
Many thanks for your excellent work.

Original issue reported on code.google.com by [email protected] on 4 Jun 2009 at 9:57

Generate chords from other scales

Would it be possible to have a choice in the scale function that is used in
the natural triads and sevenths generators in core.chords?

Original issue reported on code.google.com by [email protected] on 19 Jan 2009 at 1:57

value.dots can be a one liner

The series partly generated by value.dots is the geometric series with the
common ratio 1/2 (http://en.wikipedia.org/wiki/Geometric_series). Which can
be written as 
(1.0 - 0.5 ** nr) / 0.5

The whole function thus becomes:
return value / ((1.0 - 0.5 ** nr) / 0.5)

Original issue reported on code.google.com by [email protected] on 11 Feb 2009 at 3:37

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.