@@ -29,8 +29,8 @@ Textbeat is a new project, but you can already do lots of cool things:
29
29
- Strumming
30
30
- Arpeggiation
31
31
- Tuplets and polyrhythms
32
- - CC automation
33
- - Vibrato, pitch, and mod wheels
32
+ - MIDI CC automation
33
+ - Vibrato, pitch, and mod wheel control
34
34
- Dynamics
35
35
- Accents
36
36
- Velocity
@@ -46,6 +46,8 @@ Textbeat is a new project, but you can already do lots of cool things:
46
46
You can use the shell with General Midi out-of-the-box on windows, which is great for learning,
47
47
but sounds bad without a decent soundfont.
48
48
49
+ I'm currently working on headless VST rack generation.
50
+
49
51
If you want to use VST instruments, you'll need to route the MIDI out to something that hosts them, like a DAW.
50
52
51
53
For windows, you can use a virtual midi driver, such as [ loopMIDI] ( http://www.tobias-erichsen.de/software/loopmidi.html ) for usage with a VST host or DAW.
@@ -321,9 +323,9 @@ Unlike accents, volume changes persist.
321
323
322
324
Interpolation is not yet impl
323
325
324
- ## Articulation
326
+ ## Vibrato, Pitch, and Mod Wheel
325
327
326
- The vibrato symbol is a tilda (~ ).
328
+ To add vibrato to a note, suffix it with a tilda (~ ).
327
329
328
330
Vibrato uses the mod wheel right now, but will eventually use pitch wheel oscillation.
329
331
@@ -332,7 +334,7 @@ In the future, articulation will be programmable, per-track or per-song.
332
334
## Arpeggio Modulation
333
335
334
336
Notes of arpeggios can be modified as they're running,
335
- by having effects in a grid space, for example:
337
+ by having effects in the grid space they occur , for example:
336
338
337
339
```
338
340
maj7&
@@ -347,7 +349,7 @@ maj7&
347
349
348
350
maj7& starts a repeating 4-note arpeggio, and we indent to show this.
349
351
350
- Certain notes of the sequence are modulated with short/staccato '.', soft '?' and accent '!'
352
+ Certain notes of the sequence are modulated with short/staccato '.', soft '?', and accent '!'
351
353
352
354
For staccato usage w/o a note name, an extra dot is required since '.' is simply a placeholder.
353
355
@@ -367,7 +369,7 @@ The dots are placeholders.
367
369
. 1''
368
370
```
369
371
370
- Columns can be detected in some cases, but you'll probably want to
372
+ Columns can be detected ( in some cases) , but you'll probably want to
371
373
specify the column width manually at the top,
372
374
which allows vim to mark the columns.
373
375
@@ -386,7 +388,8 @@ For best view in an editor, it is recommended that you offset the first column b
386
388
## Patches
387
389
388
390
Another useful global var is 'p', which sets midi patches by name or number
389
- across the tracks. The midi names support partial case-insensitive matches.
391
+ across the tracks. The midi names support both patch numbers and partial case-insensitive
392
+ matches of GM instruments.
390
393
391
394
```
392
395
%t120 x2 p=piano,guitar,bass,drums c8,-2
@@ -396,17 +399,18 @@ For a full list of GM names, see [def/gm.yaml](https://github.com/flipcoder/text
396
399
397
400
## Tuplets
398
401
399
- Very early support for this. See tuplet example.
400
- The 't' command spreads a set of notes across a tuplet grid,
401
- starting at the first occurence of t in that group.
402
+ The 'T' (tuplet) gives us access to the musical concept of tuplets (called triplets in cases of 3).
403
+ which allows note timing and durations to fall along a ratio instead of the usual note subdivisions.
404
+
405
+ Tuplets are marked by 'T' and have an optional value at the first occurence in that group.
402
406
Ratios provided will control expansion. Default is 3:4.
403
407
If no denominator is given, it will default to the next power of two
404
408
(so 3:4, 5:8, 7:8, 11:16).
405
- So in other words if you need a 5:6, you'll need to write t5 :6. :)
406
- The ratio of the beat saves. You only need to specify it once per group .
409
+ So in other words, T5 is the same as T5:8, but if you need a 5:6, you'll need to write T5 :6.
410
+ The ratio of the tuplet persists for the rest of the grouping .
407
411
For nested tripets, group those by adding an extra 'T'.
408
412
409
- Consider the 2 tracks:
413
+ The two tracks below are a basic usage of triplets :
410
414
411
415
```
412
416
1 1T
@@ -419,8 +423,14 @@ Consider the 2 tracks:
419
423
4
420
424
```
421
425
422
- The spacing is not even between the sets, but the 'T' value stretches them
423
- to make them line up in a default ratio of 3:4.
426
+ The first column is playing notes along the grid normally, while the
427
+ 2nd column is playing 3 notes in the space of the others' 4 notes.
428
+
429
+ Even though there is visual spacing between the triplet groups, the 'T' value effective
430
+ stretches the notes so they occur along a slower grid according to that ratio.
431
+
432
+ The spaces that occur after (and between) tuplet groupings should remain empty,
433
+ since they are spacers to make the expansion line up.
424
434
425
435
## Picking
426
436
@@ -435,7 +445,7 @@ to make them line up in a default ratio of 3:4.
435
445
# to set a relative key, this will go from a major scale to relative minor scale
436
446
%k+6
437
447
438
- # you can also go down to relative minor below
448
+ # you can also go downwards
439
449
%k-6
440
450
441
451
# scale names are supported, this changes the scale shape to dorian
@@ -447,10 +457,10 @@ to make them line up in a default ratio of 3:4.
447
457
448
458
## Chords (Advanced)
449
459
450
- Slash chords do not imply inversions,
451
- but are for stacking across octaves. Additionally, note names alone do no imply chords.
460
+ In textbeat, slash (/) chords do not imply inversions,
461
+ but are for spanning chord voicings across octaves. Additionally, note names alone do no imply chords.
452
462
For example, C/E means play a C note with an E in a lower octave, whereas a musician might
453
- interpret this as a specific chord voicing. ( Inversions use shift operator (maj> for first inversion))
463
+ interpret this as a specific chord voicing. Inversions in textbeat uses shift operator (>) instead ( maj> for maj first inversion))
454
464
455
465
```
456
466
b7maj7#4/sus2/1
@@ -468,7 +478,7 @@ Check out the examples/ folder. Play them with textbeat from the
468
478
command line:
469
479
470
480
```
471
- ./textbeat.py examples/jazz
481
+ ./txbt examples/jazz.txbt
472
482
```
473
483
474
484
# Advanced
@@ -635,7 +645,7 @@ Example: 1~ is fine, but 1v is not. Use 1@v You only need one to combine: 1@v5e5
635
645
Note: Fractional values specified are formated like numbers after a decimal point:
636
646
Example: 3, 30, and 300 all mean 30% (read like .3, .30, etc.)
637
647
638
- CC mapping is customizable inside [def/cc.yaml](https://github.com/flipcoder/textbeat/blob/master/def/default.yaml).
648
+ CC mapping is customizable inside [def/cc.yaml](https://github.com/flipcoder/textbeat/blob/master/textbeat/ def/default.yaml).
639
649
640
650
```
641
651
@@ -659,9 +669,9 @@ CC mapping is customizable inside [def/cc.yaml](https://github.com/flipcoder/tex
659
669
660
670
A majority of the music index is contained in inside these files:
661
671
662
- - Default: [ def/default.yaml] ( https://github.com/flipcoder/textbeat/blob/master/def /default.yaml ) .
663
- - Informal: [ def/informal.yaml] ( https://github.com/flipcoder/textbeat/blob/master/def/informal.yaml ) .
664
- - Experimental: [ def/exp.yaml] ( https://github.com/flipcoder/textbeat/blob/master/def/exp.yaml ) .
672
+ - Default: [ def/default.yaml] ( https://github.com/flipcoder/textbeat/blob/master/textbeatdef /default.yaml ) .
673
+ - Informal: [ def/informal.yaml] ( https://github.com/flipcoder/textbeat/blob/master/textbeat/ def/informal.yaml ) .
674
+ - Experimental: [ def/exp.yaml] ( https://github.com/flipcoder/textbeat/blob/master/textbeat/ def/exp.yaml ) .
665
675
666
676
These lists does not include certain chord modifications (add, no, drop, etc.).
667
677
0 commit comments