ã«ã¹ã¿ã ããŒãäœæããã¥ã¢ã«¶
ãã®ã»ã¯ã·ã§ã³ã§ã¯ãmidiglueããã«ã«ã¹ã¿ãã€ãºããæ¹æ³ã§ãããã«ã¹ã¿ã ããŒãã®ããã°ã©ãã³ã°ã«ã€ããŠåŠã³ãŸãã
ã«ã¹ã¿ã ããŒãäœææ©èœã¯ãããçšåºŠããã°ã©ãã³ã°ã®çµéšãããæ¹ã察象ãšããæ©èœã§ãã
midiglue Editorã«ã€ããŠã¯ããŸããšãã£ã¿ããã¥ã¢ã«ãåç §ããŠãã ããã
Warning
ã«ã¹ã¿ã ããŒããäœæããæ©èœã¯ããŠãŒã¶ãŒã®çæ§ã«æ倧émidiglueãããã¯ããŠããã ãããã«å ¬éããæ©èœã§ãã
ãã®æ©èœã§ã¯C++ã®ãã«æ©èœã䜿ãããšãã§ããéåžžã«èªç±åºŠãé«ããªã£ãŠãããŸãããããã£ãŠèªäœã®ã«ã¹ã¿ã ããŒãçã«èµ·å ããåé¡ã«é¢ããŠã¯ããŒãµããŒããšãããŠããã ããŸããäºããäºæ¿ãã ããã
Visual Studio Codeã䜿ã£ãŠã¿ãŸããã
VSCodeåãã®ã·ã³ã¿ãã¯ã¹ãã€ã©ã€ããå
¬éãããŠããŸãã®ã§ããã²ãå©çšãã ããã
VSCodeã®ã€ã³ã¹ããŒã«åŸãExtensions
ããmidiglue
ãšæ€çŽ¢ããŠã€ã³ã¹ããŒã«ã§ããŸãã
ãŸããVSCodeãã·ã¹ãã ã«ã€ã³ã¹ããŒã«ãããŠããã°ãã€ã³ã¹ãã¯ã¿ã®ãã¡ã€ã«ã¢ã€ã³ã³ããNodeã®ãœãŒã¹ã³ãŒããçŽæ¥é²èŠ§&ç·šéã§ããŸãã(MacOSã®å Žåã¯PATHãžã®è¿œå ãå¿
èŠã§ããVSCodeäžã§command
+shift
+p
ãæŒããshell
ãæ€çŽ¢ããŠã€ã³ã¹ããŒã«ããŸãã)
ã«ã¹ã¿ã ããŒããšã¯¶
midiglue Editorã«ãããããŒãã¯å
¥åºåãæã€æ©èœãããã¯ã§ããããŒãã¯.node
ãšããæ¡åŒµåã®ãã¡ã€ã«ã«ãã£ãŠå®çŸ©ãããŠããŸãã
ããã¯C++ãå°ãæ¡åŒµããDSLãšãªã£ãŠããŸãã
äŸãã°ã2ã€ã®å€ã足ãç®ããadd.node
ã®ãœãŒã¹ã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
<Comment>
Copyright (c) 2018-2020, sigboost, inc., All Rights Reserved.
This file is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license.
<I/O>
input Number : Left operand, triggers the calculation
input Number : Right operand, stored
output Number : Result
<Description>
Calculate Left + Right.
Output is triggered only by Left input.
<Parameter>
parameter Right = 0.0 : Default right value
<Code>
static number_t right = ${Right};
if (@in0) {
out0 = in0 + right;
}else if (@in1){
right = in1;
}
Note
add.nodeã¯ãå·Šã®ããŒãã«å ¥åãå ¥ã£ãæã«å³ã®ããŒãã«å ¥åãããŠããæ°åãšè¶³ãåãããæ°ãåºåããŸãã
ãã®ãããª.node
ãã¡ã€ã«ãèªåã§äœæããŠãmidiglue Editorã§å©çšããããšãã§ããŸãã
.node
ãã¡ã€ã«ãäœæãã¶
ã³ãŒãã¯ããã€ãã®ã»ã¯ã·ã§ã³ã«åãããŠããŸãã å¿ é ã®ã»ã¯ã·ã§ã³ãšããªãã·ã§ã³ã®ã»ã¯ã·ã§ã³ããããŸãã
.nodeãã¡ã€ã«ã§ã¯ASCII以å€ã®æåã䜿ãããšã¯ã§ããŸããã
Commentã»ã¯ã·ã§ã³ (ãªãã·ã§ã³)¶
ä»»æã®ã³ã¡ã³ããèšè¿°ããŸãã
ãã®ã»ã¯ã·ã§ã³ã«èšè¿°ãããã®ã¯ãmidiglue Editoräžã§äœã®åœ±é¿ãäžããŸããã
I/Oã»ã¯ã·ã§ã³ (å¿ é )¶
ããŒãã®å ¥åºåãå®çŸ©ããŸãã ïŒè¡ã«å¯ŸããŠ1ã€ã®ããŒãã宣èšããŸãã
Example
input Int : Delay time
Syntax¶
(direction) (type) : (description)
direction¶
input
output
type¶
Int
Float
MidiPacket
MidiSysEx
String
IntList
FloatList
MidiPacketList
StringList
Any
: 以äžå šãŠã®åList
:IntList
ãFloatList
ãMidiPacketList
ãStringList
ã®ããããã®åNumber
:Int
ãFloat
ã®ããããã®å
Any
ãList
ãNumber
ã¯nodeã®I/Oã»ã¯ã·ã§ã³ã®ã¿ã§äœ¿ãããšãã§ããŸãããããã¯nodeã®æ¥ç¶ç¶æ
ã«ãã£ãŠæ£ããåãæšè«ãããŸãã
äŸãã°ãããNumber
åã®å
¥åããŒãã«Float
åã®åºåããŒããæ¥ç¶ããå Žåããã®Numberåã®å
¥åããŒãã¯Floatåã®å
¥åããŒããšããŠãµããŸããŸãã
ãã®æ©èœã¯ãadd.node
ã®ããã«è€æ°ã®åã§åããããªåäœãããnodeãäœæããããšãã«åœ¹ç«ã¡ãŸã
(ãã®å ŽåãInt
ãFloat
ã足ãç®ã®ä»æ¹ã¯åããªã®ã§ãNumber
åã䜿ãããšã§Int
å士ã®è¶³ãç®ãFloat
å士ã®è¶³ãç®ãè¡ããŸã)ã
äžæ¹ãåæšè«ã«å€±æãããšã³ãŒãçæã®éã«ãšã©ãŒãšãªããŸãã
äŸãã°ãããNumber
åã®å
¥åããŒãã«Float
åã®åºåããŒããšInt
åã®åºåããŒããäž¡æ¹æ¥ç¶ããå Žåã
ãã®ããŒãã®åãInt
åã«æ±ºããããšãFloat
åã«æ±ºããããšãã§ããªãããããšã©ãŒãšãªããŸãã
ãŸãã1ã€ã®Nodeäžã§è€æ°ã®Any
åã䜿ãããŠããå Žåããã®å
šãŠã®ããŒãã®åã¯åãã«ãªããŸãã
äŸãã°2ã€ã®Any
åã®ããŒããããããã®å
ã®äžæ¹ã«StringList
åã®ããŒããæ¥ç¶ããå Žåãããäžæ¹ã®ããŒããStringList
åã®ããŒãã«ãªããŸãã
ããã¯List
ãNumber
ã§ãåæ§ã§ãã
äŸãã°ãadd.node
ã§å·Šã«Float
åãå³ã«Int
åã®åºåããŒããæ¥ç¶ããããšã¯ã§ããŸããïŒFloat
ãšInt
ã足ãç®ããå ŽåããŸãitof
ããŒãã§Int
ãFloat
ã«å€æããããšã«ãªããŸãïŒã
Note
ãããåã®å®äœã¯midiglue API reference - Typesãåç §ããŠãã ããã
String
ãIntList
ãFloatList
ãMidiPacketList
ãStringList
ã¯ãã€ã³ã¿ãªã®ã§ãã¡ãœããã«ã¯ã¢ããŒæŒç®åã§ã¢ã¯ã»ã¹ããŸãã
ãããã¯std::shared_ptr
ã®ãããdelete
ãåŒã¶å¿
èŠã¯ãããŸããã
description¶
ããŒãã®èª¬æãšãªãæååãèšè¿°ããŸãã midiglue Editorã§ããŒãã«ããŠã¹ãªãŒããŒãããšãã®æååã衚瀺ãããŸãã
Descriptionã»ã¯ã·ã§ã³ (å¿ é )¶
ããŒãã®æ©èœã®èª¬æãèšè¿°ããŸãã
ãã®ã»ã¯ã·ã§ã³ã«èšè¿°ãããã®ã¯ãmidiglue Editoräžã«ããã¥ã¡ã³ããšããŠè¡šç€ºãããŸãã
Parameterã»ã¯ã·ã§ã³ (ãªãã·ã§ã³)¶
ããŒãã®ãã©ã¡ãŒã¿ãèšè¿°ããŸãã
Example
parameter Max = 127 : Max value
parameter Str = "hello world" : Strings for display
parameter Port = ["MIDI_IN_0", "MIDI_IN_1"] : MIDI port
Syntax¶
parameter (name) = (value) : (description)
name¶
ãã©ã¡ãŒã¿ã®ååã§ããããã§ååãã€ãããã©ã¡ãŒã¿ã¯ã<Code>
ã»ã¯ã·ã§ã³ã§
${name}
ã®ãããªæ§æã§åç
§ããããšãã§ããŸãã
å€ãã®å Žåããããã®ãã©ã¡ãŒã¿ã¯nodeã®åäœãåãæ¿ããããåæå€ãèšå®ããããã«çšããŸãã
value¶
ãã®é ç®ã«ãã£ãŠãmidiglue Editoräžã«ããããã©ã¡ãŒã¿ã®åãšåæå€ã決å®ãããŸãã
"strings"
: æååãã©ã¡ãŒã¿ãšããŠèªèãããŸããèšè¿°ãããæååãåæå€ãšãªããŸãã0
: æŽæ°ãã©ã¡ãŒã¿ãšããŠèªèãããŸããèšè¿°ãããæ°åãåæå€ãšãªããŸãã0.0
: æµ®åå°æ°ç¹æ°ãã©ã¡ãŒã¿ãšããŠèªèãããŸããèšè¿°ãããæ°åãåæå€ãšãªããŸãã["hoge", "fuga"]
: ãªã¹ããã©ã¡ãŒã¿ãšããŠèªèãããŸããããããã®èŠçŽ ã¯""
ã§å²ãããå¿ èŠããããŸãããšãã£ã¿äžã§ã¯ããªã¹ãã®èŠçŽ ã®ãã¡ã©ãããéžæããããšãã§ãã0çªç®ã®èŠçŽ ãåæå€ãšãªããŸãã
Requirementsã»ã¯ã·ã§ã³ïŒãªãã·ã§ã³ïŒ¶
ããŒããŠã§ã¢æ©èœãèŠæ±ããããŒããçšããŸãã
ãã®ã»ã¯ã·ã§ã³ãäžè¬ã®ãŠãŒã¶ãŒãå©çšããããšã¯æšå¥šãããŠããŸããã
Setupã»ã¯ã·ã§ã³ïŒãªãã·ã§ã³ïŒ¶
midiglue ãã¢ããªãèªã¿èŸŒãã åŸãæåã«äžåºŠã ãå®è¡ããåŠçãèšè¿°ããŸãã
${name}
ã§ãã©ã¡ãŒã¿ã«ã¯ã¢ã¯ã»ã¹ã§ããŸãããCodeã»ã¯ã·ã§ã³å
ã®å€æ°çã«ã¯ã¢ã¯ã»ã¹ã§ããŸããã
Codeã»ã¯ã·ã§ã³ (å¿ é )¶
ããŒããäœãããã®ããŒãããå
¥åãåãããã³ã«åŒã³åºãããã³ãŒããèšè¿°ããŸãã
.node
ãã¡ã€ã«ã®äžã§æãéèŠãªéšåã§ãã
ã³ãŒãã¯C++ã§èšè¿°ããŸãããããã€ãã®äºçŽèªããããŸãã Editorã®ããŒãµãŒã¯ãããã®äºçŽèªãããŒã¹ããåŸã«ãC++ã®ã³ã³ãã€ã©ãŒã«åŠçãåãæž¡ããŸãã
äºçŽèª¶
outN
inN
@inN
@setup
any_t
list_t
number_t
@jackinN
@button
@knob
outN / inN¶
Nã¯0-9ã®1æ¡ã®æ°åã§ãããã®ä»æ§äžãããŒãã®æ倧ããŒãæ°ã¯10ïŒæ倧ã€ã³ããã¯ã¹ã¯9ïŒã§ãã
äŸãã°ãout0
ãžã®ä»£å
¥ã¯åºåããŒã0ããã®åºåã«ãªããŸããin0
ã«ã¯å
¥åããŒã0ããããå
¥åã®å€ãå
¥ã£ãŠããŸãã
@inN¶
@inN
ã¯ãã³ãŒãã»ã¯ã·ã§ã³ã§ããŒãããšã«åŠçãifæã§åãåãããšãã«äœ¿ããŸãã
if (@in0){
/* Code */
}
äžã®ããã«æžãããšã§0çªç®ã®ããŒãã«å€ãå ¥åããããšãã«Codeãå®è¡ãããŸãã
@setup¶
@setup
ã¯ç¹æ®ãªäœ¿ãæ¹ãããŸãã
if (@setup){
/* Code */
}
Setupã»ã¯ã·ã§ã³ã«${this}(&(Midiglue::__bang) , Midiglue::SETUP);
ãšèšè¿°ããŠãããšã
ã¢ããªã±ãŒã·ã§ã³èµ·åæã«äžåºŠã ãCodeãå®è¡ãããŸãã
any_t / list_t / number_t¶
any_t
, list_t
, number_t
ã¯ãI/Oã»ã¯ã·ã§ã³ã§èª¬æããåæšè«ã®çµææšè«ãããååã«å®éã«ã¢ã¯ã»ã¹ããéã«çšããŸãã
äŸãã°ããããŒããAny
åã®ããŒããæã¡ããã®ããŒãã«Float
åã®ããŒããæ¥ç¶ãããŠãããšããŸãã
ãã®ãšãany_t variable;
ãšå®£èšãããšFloat
åã®å€æ°variable
ã宣èšãããŸãã
Int
åã®ããŒããæ¥ç¶ãããå Žåã«ã¯ãã¡ããvariable
ã¯Int
åã®å€æ°ã«ãªããŸãã
@jackinN / @button / @knob¶
@jackinN
ã@button
ã@knob
ã¯äžè¬ãŠãŒã¶ãŒã䜿çšããããšã¯æšå¥šãããŠããŸããã
ãã©ã¡ã¿ã©ã€ãº¶
<Parameter>
ã»ã¯ã·ã§ã³ã§äœæãããã©ã¡ãŒã¿ã䜿ãããšãã§ããŸãã${Name}
ã®ããã«ã³ãŒãäžã«åã蟌ã¿ãŸãã
ãã®å€ã¯ãã³ã³ãã€ã«æã«ããããã®ããŒãã«èšå®ãããŠãããã©ã¡ãŒã¿ãšçœ®ãæããããŸãã
äœæããã«ã¹ã¿ã .node
ãã¡ã€ã«ã䜿ã¶
- midiglueã®å®è¡ãã¡ã€ã«ããããã£ã¬ã¯ããªã®
nodes
以äžã«ãäœæãã.node
ãã¡ã€ã«ãé 眮ããŸãã
ã³ãŒãã£ã³ã°ã®ãã³ã¶
ããããã®ããŒãã¯ãæçµçã«ããŒãµãŒã«ãã£ãŠäžã€ã®ãŠããŒã¯ãªC++é¢æ°ãšããŠã³ãŒãçæãããŸãã Codeã»ã¯ã·ã§ã³ã«èšè¿°ããã®ã¯ãã®ãã³ãã¬ãŒãã§ãã
midiglue Editorãå®éã«çæããã³ãŒãã¯ã
å·Šäžã¡ãã¥ãŒã¢ã€ã³ã³ > Show app_main.cpp
ããèŠãããšãã§ããŸãã
Staticå€æ°ã®æŽ»çš
Codeã»ã¯ã·ã§ã³å ã®ã³ãŒãã¯ãäœãããã®ããŒãããå ¥åããããã³ã«åŒã³åºãããŸãã ãã®ãããããŒã«ã«å€æ°ã¯1åã®åŒã³åºãããšã«åæåãããŸãã
äŸãã°ãadd.node
ã§static number_t right
å€æ°ããstatic
ãåãé€ããšãright
å€æ°ã®äžèº«ã¯å³ã®ããŒãã«å
¥ã£ãå€ãåŠçãããåŸã«æ¶ããŠããŸãã
å·Šã®ããŒãã«å€ãå
¥ã£ãæã«ã¯äžèº«ãäžå®ã«ãªããŸããåŸã£ãŠããããã«ãããã°ã®åå ãšãªããŸãã
äžã€ã®ããŒãã®äžã§ä¿æãããå€æ°ã«ã¯staticããŒã¯ãŒããã€ããŸãã ããã«ãããå€æ°ã¯ããã°ã©ã å®è¡äžåžžã«ä¿æãããããã«ãªããŸãã
static
ãã€ããªãããŒã«ã«å€æ°ã¯ãCodeã»ã¯ã·ã§ã³å
ã§äžæçã«äœ¿çšããå€æ°ã®ã¿ã«äœ¿ãããã«ããŸãã
è¿·ã£ããããšããããstatic
ãä»ããŠããããšããå§ãããŸãã
Bang
åºåããŒãããå€ãåºåããã®ã§ã¯ãªããåçŽã«æ¥ç¶ãããå
¥åããŒããããªã¬ãŒãããã ãã®å ŽåããããŸãã
ãã®å Žåã«æå¹ãªã®ãMidiglue::__bang
ã§ãã
ããã¯ç¹æ®ãªInt
åã®å€æ°ã§ãå
¥åããŒããããªã¬ãŒããçšéã§ã¯Int
åã®åºåããŒãããMidiglue::__bang
ãåºåããããšãæšå¥šãããŠããŸãã
Caution
midiglueã¢ããªã±ãŒã·ã§ã³ã¯ãäžåºŠã«1ã€ã®åŠçããè¡ããŸããã nodeäžã«waitãããç®æãååšãããšããã®éã¢ããªã±ãŒã·ã§ã³ã®åŠçãæ¢ãŸã£ãŠããŸããŸã (æ£ç¢ºã«ã¯ãã·ã¹ãã ã®éèŠéšåã¯åãç¶ããŸãããmidiglue Editorã§èšè¿°ãããããŒã¿åŠçã¯åæ¢ããŸã)ã
nodeãå®è£ ããéã«ã¯ãwaitãããªãããã«èšèšããŠãã ããã æéé ããæ±ãå Žåã¯Event APIã䜿çšããŸãã
ã©ã ãåŒãå©çšãã
ã³ãŒãã»ã¯ã·ã§ã³ã§äœ¿ãããšã®ã§ããC++ã®ããŒãžã§ã³ã¯C++14ã§ãã ããããªããC++ã䜿ãããšã«æ £ããŠããã®ãªããã©ã ãåŒã䜿ããšäŸ¿å©ã§ãããã
ã©ã ãåŒã䜿ãå ŽåãåŒäžã§ããŒã«ã«å€æ°ããã£ããã£ããªãããã«æ³šæãå¿ èŠã§ãã ããã¯ã³ã³ãã€ã«ãšã©ãŒã«ãªãããå®è¡æãšã©ãŒãšãªããŸãã ãã®åé¡ã®ãããã°ã¯éåžžã«å°é£ã§ãã
å¿ ãstaticå€æ°ã®ã¿ããã£ããã£ããŠäœ¿ãããã«ããŠãã ããã
ããªããã©ã ãåŒãšããèšèãç¥ããªããªãããã®Tipsã¯ç¡èŠããŠãã ããã
ãããã°ã®ãã³ã¶
ã³ã³ãã€ã«ã«å€±æããå Žå
midiglue Editorã®ãã°ãåç §ããŠãmidiglue Editorãã³ã³ãã€ã©ãŒããã§ãã¯ããŠã¿ãŸãããã
æå³ããåäœãšãªããªãå Žå
midiglueã®ã€ãã³ããã¬ãŒã«åºåãè¡ãæ¹æ³ãæå¹ã§ãã
midiglueããšã©ãŒç»é¢ã衚瀺ããå Žå
åé¡ã®ããããã°ã©ã ãå®è¡ããŠããŸããšãmidiglueã¯åèµ·åããšã©ãŒç»é¢ã衚瀺ããŸãã
ãšã©ãŒç»é¢ã§ã¯ãšã©ãŒã®åå ããŸãã¯ãšã©ãŒæã®ã¬ãžã¹ã¿ç¶æ ã衚瀺ãããŠããŸãã
ãšã©ãŒç»é¢ã«"Unknown Error"ãšè¡šç€ºãããŠããå Žåã¯åå äžæã®ãšã©ãŒã§ãã åå äžæã®ãšã©ãŒã®å€ãã¯ç¡éã«ãŒãçã§midiglueãããªãŒãºããããšã«ãããã®ã§ãã
ã«ã¹ã¿ã ããŒãã®Codeã»ã¯ã·ã§ã³ã§äœ¿ããmidiglueã®APIã«ã€ããŠã¯ãAPI Referenceãåç §ããŠãã ããã