Robert Bendun
973fbd62f7
Vectorized note creation
2022-09-22 18:12:17 +02:00
Robert Bendun
34eb56ac50
Removed unused tests
2022-09-21 16:40:40 +02:00
Robert Bendun
1384e5f96e
Eliminated unimplemented() that ware missing error reporting
2022-09-21 13:37:06 +02:00
Mateusz Piątkowski
a8ee488010
Operators reference
2022-09-19 21:14:12 +02:00
Mateusz Piątkowski
ae5a9294eb
Operators reference
2022-09-19 21:13:58 +02:00
Robert Bendun
a217a09aec
Recognize creators of used libraries
2022-09-18 16:52:44 +02:00
Robert Bendun
2f101fdccf
call builtin; release builder; documentation from docs repo
2022-09-18 16:34:43 +02:00
Robert Bendun
ddf9cc8f8c
New declaration syntax x := foo
instead of var x = foo
...
Additionaly moving into multiparameter binary operations
2022-09-18 14:50:20 +02:00
Robert Bendun
7665ea0b53
sim builtin & proper chord notation behaviour
2022-09-17 17:47:14 +02:00
Robert Bendun
676f41909f
Overhaul of chord call semantics to support easy sequencing
2022-09-17 13:10:24 +02:00
Robert Bendun
98a88c3acc
";" input does not raise an error anymore. Missing '=' precedanse
2022-09-17 11:49:09 +02:00
Robert Bendun
cb13dc9591
Refactored operators, loosing binary requirements due to them
...
Due to addition of turning binary operators into functions, they can now
be called with more or less then 2 arguments, which would trigger
assertions. Not all were converted to support new call syntax though
2022-09-17 00:34:41 +02:00
Robert Bendun
96c96ef2b0
fold
buultin. Operators can be quoted
...
By prepending ' to operator you can use it as function
2022-09-11 20:10:44 +02:00
Robert Bendun
0743a9b7c4
Added pause
...
It's faking to be a note, but does not play anything when played
2022-09-11 16:19:10 +02:00
Robert Bendun
91f401a13a
builtin mix; fixed vectorized equality
2022-09-05 23:52:26 +02:00
Robert Bendun
d77f844c81
Hashing functions; builtins hash, uniq and unique
2022-09-05 23:17:40 +02:00
Robert Bendun
ab0ba8d4c8
Algorithms like min don't flatten all the way
...
To restore previous behaviour one can use `min (flat x)`
2022-09-05 22:30:11 +02:00
Robert Bendun
eb822a4a6e
'&' operator can merge arrays; 'down' builtin works
2022-09-05 20:47:15 +02:00
Robert Bendun
de92564cc1
Error reporting improvement for number operations; added power operator
2022-09-04 19:44:33 +02:00
Robert Bendun
497a4bcc6a
Improvement of builtin functions; added try builtin
...
Including moving functions from lambdas into global scope, adding
documentation, improvement of error reporting
2022-09-04 17:46:04 +02:00
Robert Bendun
421f8111f0
builtin_for now reports nice error message when given wrong arguments
2022-09-04 14:11:06 +02:00
Robert Bendun
aabcc42625
Error reporting when too many closing parens at the end
2022-09-04 13:48:06 +02:00
Robert Bendun
f2a78cd331
Index operator now reports when given unindexable lhs
2022-09-04 13:25:55 +02:00
Robert Bendun
1597b678e1
Report error when index is too large
2022-09-04 13:16:40 +02:00
Robert Bendun
3b1500313c
Operators associate to the left now
...
This should be default behaviour but somehow we missed it.
2022-09-04 12:04:19 +02:00
Robert Bendun
00b11087b4
When playing empty chord user gets pause with default length
2022-08-29 21:48:35 +02:00
Robert Bendun
7b5e43293a
For as builtin and new example that plays primes
2022-08-29 21:38:15 +02:00
Robert Bendun
1fa2ec6b76
Vectorized equality and index operations
2022-08-29 21:22:46 +02:00
Robert Bendun
2b29522293
New operator: modulo operator '%'
2022-08-29 20:37:11 +02:00
Robert Bendun
b8feb4043e
New builtin: n primes generator
2022-08-29 20:29:45 +02:00
Robert Bendun
5c53bb9e9f
Nicer undefiend operator message
2022-08-21 20:39:35 +02:00
Robert Bendun
43555cbc1c
Improved interactive mode interaction with errors
2022-08-21 20:24:49 +02:00
Robert Bendun
cb5eedb2a5
Unexpected empty source error improved
2022-08-21 20:01:59 +02:00
Robert Bendun
183907a0ed
Improved error location reporting
2022-08-21 19:24:33 +02:00
Robert Bendun
99482d4c7c
Improved examples; multiplication = repeat operator
2022-08-21 17:34:03 +02:00
Robert Bendun
b9eb3f957d
play
as evaluation operator
2022-08-21 16:49:54 +02:00
Robert Bendun
5c47b7b808
par
improvement: allow actions like octave changes inside
...
This is implemented with default action idea. During evaluation of
expresions sequence all but return expressions is passed to
default_action. Par sets default action to `action_play` which plays
given value if it's musical value.
2022-08-21 15:52:54 +02:00
Robert Bendun
2452b95a90
Par now accepts arrays
2022-08-21 14:49:39 +02:00
Robert Bendun
e3164395de
Range function for Musique language
2022-08-21 13:45:34 +02:00
Robert Bendun
da1ac0dcf7
{floor, ceil, round} available in Musique language
2022-08-21 13:19:16 +02:00
Robert Bendun
617fbac98f
Unified rounding implementation
2022-08-21 12:26:45 +02:00
Robert Bendun
eb36ad2c93
Implemented Number::{ceil, floor, round, pow, inverse}
...
Except that pow only accepts integer exponents, since nth root is not
that quick to implement and simple blind implementation may have
performance issues.
2022-08-21 00:43:04 +02:00
Robert Bendun
ab6ed8f45c
Report nice error when without MIDI connection
2022-08-19 16:06:33 +02:00
Robert Bendun
7fb6df219c
Successfully separated small portion of include/musique.hh
2022-08-18 22:48:11 +02:00
Robert Bendun
0b3dc2bb57
Move src/musique.hh to include/musique.hh
...
This is preparation for separation of public musique interface and
implementation details shared across files.
2022-08-18 22:44:04 +02:00
Robert Bendun
81f512d69d
Builtin function handlers definition now in separate file
...
Same as in commit before, we try to cleanup src/interpreter.cc from all
of builtin function noise.
2022-08-18 22:37:40 +02:00
Robert Bendun
831de5abe5
Builtin operator handlers definiton now in separate file
...
Interpreter constructor and file in general is very unreadable
and busy now. To limit noise separate builtin operators from
src/interpreter.cc into their own file src/builtin_operators.cc
This also allows to see which functions are used as implementation
detail of which operations.
2022-08-18 22:21:04 +02:00
Robert Bendun
a3d0a942e4
Ensure when adding new operators we add them right
...
Operators not only are needed to be defined by their implementation in
Interpreter constructor, but also are needed to be included in
precedense resolution.
To prevent partial definition we predefine number of builtin operators
as numeric constant and test against it in all relevant places.
2022-08-18 22:07:13 +02:00
Robert Bendun
e090778db9
Added '&' operator that joins chords together.
...
For example 'c & g' makes chord 'chord c g'
2022-08-18 22:07:13 +02:00
Robert Bendun
881dc8975a
Missing variable error implementation
2022-08-18 22:07:13 +02:00