User:Contribution/Chanopif Project: Difference between revisions

Contribution (talk | contribs)
No edit summary
Contribution (talk | contribs)
 
(48 intermediate revisions by the same user not shown)
Line 46: Line 46:


=== Exemple ===
=== Exemple ===
An example line might be:
An example line might be:


Line 62: Line 63:


=== File identification and version declaration ===
=== File identification and version declaration ===
The first line of a Chanopif file must declare the format and version to ensure compatibility:
The first line of a Chanopif file must declare the format and version to ensure compatibility:
  <code>chanopif version ?.?.?</code>
  <code>chanopif version ?.?.?</code>


=== Metadata support ===
=== Metadata support ===
Metadata is optional but, if included, should appear on the second line for quick identification without needing to scan the entire file. YAML is used, and fields are open-ended.
Metadata is optional but, if included, should appear on the second line for quick identification without needing to scan the entire file. YAML is used, and fields are open-ended.
  <code><meta>
  <code><meta>
Line 72: Line 75:


=== Comments ===
=== Comments ===
Use # to insert a comment. Comments are ignored by the parser and do not affect the file's execution. They can be used to provide explanations or annotations within the file.
Use # to insert a comment. Comments are ignored by the parser and do not affect the file's execution. They can be used to provide explanations or annotations within the file.


Line 78: Line 82:


=== Tuning control ===
=== Tuning control ===
As described above:
As described above:
  <code>channel_base10  noteNumber_base16  pitch_base16.fractionalPitch_base32</code>
  <code>channel_base10  noteNumber_base16  pitch_base16.fractionalPitch_base32</code>


Upon loading a Chanopif file, all notes start in an inactive state. As each line is read, the specified note on the given channel becomes active (or is updated if already active) with its assigned pitch and fractional pitch. After the entire file is processed, any notes that have not been defined remain inactive.
Upon loading a Chanopif file, all notes start in an inactive state. As each line is read, the specified note on the given channel becomes active with its assigned pitch and fractional pitch, or is updated if already active. After the entire file is processed, any notes that have not been defined remain inactive.


To calculate frequencies, the parser uses this formula:
To calculate frequencies, the parser uses this formula:
Line 91: Line 96:
== Examples ==
== Examples ==


Here is a Chanopif file coding for a [[380zpi]] scale ([[72edo#Zeta peak index|72-EDO Zeta stretch]]) spanning eight pseudo-octaves:
{| class="wikitable"
|+Examples of Chanopif files coding for a variety of tunings
!Scale
!Equave steps (channel shift)
!Range
!File link
|-
|[[Carlos Alpha]]
|9 (3/2)
|F0-F8 (8 octaves)
|
|-
|[[68edo|3\68]] ([[Quartkeenlig]])
|23 (pseudo 2/1)
|F0-F8 (8 octaves)
|
|-
|[[127zpi]] ([[31edo#Zeta peak index|31-EDO Zeta stretch]])
|31 (pseudo 2/1)
|F0-F8 (8 octaves)
|
|-
|[[96ed5|96-ED5/1]]
|96 (5/1)
|F0-F8 (8 octaves)
|
|-
|[[380zpi]] ([[72edo#Zeta peak index|72-EDO Zeta stretch]])  
|72 (pseudo 2/1)
|F0-F8 (8 octaves)
|
|-
|[[270edo|270-EDO]]
|90, 180, 270 (1\3, 2\3, 2/1)
|F0-F8 (8 octaves)
|
|-
|[[311edo|311-EDO]]
|128, 256, 311
|F0-F8 (8 octaves)
|
|-
|[[Orwell|Orwell[5], Orwell[9], Orwell[13], Orwell[22], Orwell[31], Orwell[53]]]
|Parallel tunings (1\1)
|Various
|
|}


Here is another Chanopif file describing a [[Carlos Alpha]] scale covering fourteen [[Equave|fifth-equivalences]]:
{{todo|Generate the eight files|inline=1|comment=Upload the files and insert their respective links here.}}


{{todo|Generate both files|inline=1|comment=Upload the files and insert their respective links here.}}
== Implementation ==


== Purpose and Implementation ==
=== Purpose ===


Chanopif’s primary objective is to facilitate '''unambiguous, universal microtonal tunings''' within the MIDI 2.0 ecosystem. By standardizing on [[Tuning per channel|'''tuning per channel''']] and '''[[402653184edo|402,653,184-EDO]]''', Chanopif ensures that any tuning, any note pitch, can be represented consistently in <code>.cnpf</code> files. Key goals and benefits include:
Chanopif’s primary objective is to facilitate '''unambiguous, universal microtonal tunings''' within the MIDI 2.0 ecosystem. By standardizing on '''[[402653184edo|402,653,184-EDO]]''' and '''[[Tuning per channel|tuning per channel]]''', Chanopif ensures that any note pitch, any tuning, can be represented consistently in <code>.cnpf</code> files. Key goals and benefits include:


* '''Overcoming 128-Note Limitations''': By combining multiple channels (up to 256 in MIDI 2.0), each with fully customized tuning for every note, composers can effectively bypass the traditional 128-note limitation of MIDI. This is especially beneficial for large-scale works requiring extensive microtonal ranges.
* '''Overcoming 128-Note Limitations''': By combining multiple channels (up to 256 in MIDI 2.0), each with fully customized tuning for every note, composers can effectively bypass the traditional 128-note limitation of MIDI. This is especially beneficial for large-scale works requiring extensive microtonal ranges.
* '''Flexibility''': By assigning independant tuning configurations per channel, it becomes possible to create scales with a large number of notes, even those that do not rely on octave equivalences.
* '''Flexibility''': By assigning independant tuning configurations per channel, it becomes possible to create scales that do not rely on octave equivalence.
* '''High Precision''': At around 1.49 × 10^-6 cents per step, the resolution far exceeds what the human ear can typically discern, making it suitable for studio recording, live performance, or any scenario requiring advanced microtonal control. At 20000 Hz, the phase difference between two adjacent pitches is approximately 16 hours.
* '''High Precision''': At around 1.49 × 10^-6 cents per step, the resolution far exceeds what the human ear can typically discern, making it suitable for studio recording, live performance, or any scenario requiring advanced microtonal control. At 20,000 Hz, the maximum phase deviation caused by Chanopif’s rounding occurs only once every 16 hours.
* '''Data Efficiency''': By using the most concise syntax possible, compressing 7-bit words in hexadecimal and 25-bit words into 5 letters of 5-bit (base 32), it ensures optimal space savings in storage and transmission.
* '''Data Efficiency''': By using the most concise syntax possible, compressing 7-bit words in hexadecimal and 25-bit words into 5 letters of 5-bit (base 32), it ensures optimal space savings in storage and transmission.
* '''Compatibility''': The format complies with the MIDI 2.0 standard, fully supporting the 7.25 pitch attribute for enhanced musical expression and precision.
* '''Compatibility''': The format complies with the MIDI 2.0 standard, fully supporting the 7.25 pitch attribute for enhanced musical expression and precision.


== Significance ==
=== Significance ===


* '''Standardized Microtonal Implementation''': By adopting a consistent '''402,653,184-EDO''' approach, Chanopif eliminates ambiguity over how fractional pitches are interpreted.
* '''Standardized Microtonal Implementation''': By adopting a consistent '''402,653,184-EDO''' approach, Chanopif eliminates ambiguity over how fractional pitches are interpreted.
* '''Widespread Applications''': Chanopif can be used to compose music that extends '''beyond the standard 128-note limit''', allowing for large tuning systems, such as a full eight-octave [[72edo|72-EDO]] scale (576 notes required) with [[The Riemann zeta function and tuning|optimal Riemann Zeta stretch]] (no-octave equivalence multi-channel required). It also enables the development of new instruments, encourages experimentation with alternative scales, and supports hyper-accurate tuning for classical, jazz, electronic, and many other musical styles.
* '''Widespread Applications''': Chanopif can be used to compose music that extends '''beyond the standard 128-note limit''', allowing for large tuning systems, such as a full eight-octave [[72edo|72-EDO]] scale (576 notes required) with [[The Riemann zeta function and tuning|optimal Riemann Zeta stretch]]. It also enables the development of new instruments, encourages experimentation with alternative scales, and supports hyper-accurate tuning for classical, jazz, electronic, and many other musical styles.
* '''Future-Proof''': Chanopif is designed to scale with evolving MIDI technology, leveraging the expanded channel range (up to 256) and high-definition capabilities of MIDI 2.0.
* '''Future-Proof''': Chanopif is designed to scale with evolving MIDI technology, leveraging the expanded channel range (up to 256) and high-definition capabilities of MIDI 2.0.


== Development and Adoption ==
=== Simple Chanopif generator, validator, and parser in Python ===
Below is a minimal example demonstrating how to create, parse, and validate Chanopif (<code>.cnpf</code>) files using Python. It’s not intended as a complete or professional-grade solution—the author doesn’t have much time and isn’t a full-time developer. However, this sample code can serve as a helpful starting point for those who wish to explore Chanopif or refine it into a more robust implementation.
 
{{todo|Implement a basic Chanopif generator, validator, and parser in Python|inline=1|comment=Share the completed code here.}}
 
== Roadmap ==
 
=== Build and Grow the Chanopif Community ===
 
* '''Complete this Article''': Provide a variety of Chanopif file examples to help users understand the format, and offer a basic Python-based generator, validator, and parser as an initial toolkit. This will serve as a practical foundation for anyone who wishes to explore, customize, or contribute to Chanopif.
* '''Publish this Article''': Make the current article widely available, showcasing the Chanopif format and inviting readers to join or start development efforts. By engaging passionate developers, students, and hobbyists worldwide, Chanopif can evolve into a fully-realized standard without requiring the originator to singlehandedly manage its technical progress.
* '''Establish a Public Repository''': Create a GitHub (or GitLab) organization for Chanopif to host reference implementations, issue tracking, and collaboration.
* '''Set Up Communication Channels''': Launch a dedicated forum, Discord server, or Discord forum channel where developers, composers, and enthusiasts can discuss ideas, share feedback, and coordinate efforts.
* '''Encourage Contributions''': Label starter issues or provide small, well-defined tasks for new contributors. Offer guidance to foster a welcoming environment for learners and seasoned coders alike.
* '''Host Community Events''': Organize virtual meetups, hackathons, or discussion sessions, enabling live collaboration on new features, bug fixes, or creative applications of Chanopif.
* '''Seek Partnerships''': Reach out to existing open-source projects, educational institutions, and commercial partners, inviting them to support or integrate Chanopif into their products and curricula.
 
=== Open-Source Development ===
 
* '''Open-Source Libraries and Community Involvement''': Since the primary initiator of Chanopif may lack the time and expertise to manage every aspect of development, the project relies on volunteer contributors for core coding tasks. An open-source Python library would be ideal, allowing the community to generate and manipulate Chanopif files. Contributors can create examples for tasks like building <code>.cnpf</code> files, and tools to generate 7.25 multi-channel tunings, ensuring the format’s long-term growth and maintenance.
* '''Generator''': Create a well-documented Python library that allows users to generate and manipulate Chanopif files with minimal effort. This library should be free to use, encourage community contributions, and include examples demonstrating common tasks like creating new <code>.cnpf</code> files and adjusting note pitches.
* '''Validator''': A validator ensures correctness of <code>.cnpf</code> files and data consistency, validates each line against the Chanopif format, reports errors or warnings, and helps maintain interoperability across various implementations. Community contributors can maintain and improve these tools, checking for valid channel ranges, note numbers, and fractional pitch values.
* '''Parser''': Develop a parser capable of reading <code>.cnpf</code> files and extracting tuning data for each MIDI channel and note. The parser should process the data to create a table that lists all frequency information associated with each MIDI channel and note as 64-bit floating-point values.
* '''Multi-Language Expansion''': In the future, volunteers might create libraries or wrappers in additional languages (C++, Rust, Java, etc.) to extend Chanopif’s reach. Different expertise levels can contribute, ensuring a broader user base and more robust integrations.
* '''Continuous Integration and Testing''': Relying on community input, the project can implement automated testing to maintain reliability and compatibility as the codebase grows. This includes unit tests and integration tests to verify core functionality and stability.
* '''Roadmap and Milestones''': A flexible roadmap would clarify and prioritize goals while welcoming contributions from diverse skill sets. Key milestones could include: completing and documenting a basic Python MVP ; supporting advanced features (real-time <code>.cnpf</code> creation, editing, GUI tools) ; collaborating with open-source communities and commercial developers to broaden adoption.
 
=== Adoption ===


# '''Integration into Open-Source Virtual Synthesizers''': To promote broad accessibility, Chanopif aims for direct support in open-source and free virtual synthesizers such as '''Surge XT'''. This would allow users worldwide to experiment with advanced tunings in a no-cost, community-driven environment.
* '''Integration into Open-Source Virtual Synthesizers''': To promote broad accessibility, Chanopif aims for direct support in open-source and free virtual synthesizers such as '''Surge XT'''. This would allow users worldwide to experiment with advanced tunings in a no-cost, community-driven environment.
# '''Implementation in Free Tuning Generation Platforms''': Encouraging tools like '''Scale Workshop''' to incorporate Chanopif would enable users to create, edit, and export complex tuning files effortlessly. By making this functionality available in a freely accessible platform, the community can explore and share custom scales more readily.
* '''Implementation in Free Tuning Generation Platforms''': Encouraging tools like '''Scale Workshop''' to incorporate Chanopif would enable users to create, edit, and export complex tuning files effortlessly. By making this functionality available in a freely accessible platform, the community can explore and share custom scales more readily.
# '''Collaboration with Oddsound''': Working with '''Oddsound''' to include Chanopif compatibility in both the free '''MTS-ESP Mini''' plugin and the premium '''MTS-ESP Suite''' would significantly expand the format’s reach. Musicians could load Chanopif files directly into Oddsound’s microtuning ecosystem, fostering seamless integration across diverse digital audio workstations.
* '''Collaboration with Oddsound''': Working with '''Oddsound''' to include Chanopif compatibility in both the free '''MTS-ESP Mini''' plugin and the premium '''MTS-ESP Suite''' would significantly expand the format’s reach. Musicians could load Chanopif files directly into Oddsound’s microtuning ecosystem, fostering seamless integration across diverse digital audio workstations.
# '''Adoption by Commercial Virtual Instrument Developers''': Proprietary software synthesizers and samplers are a significant part of the modern music production landscape. Inviting commercial developers to adopt Chanopif in their products would bring multi-channel high-resolution microtonal flexibility to a wide audience, ensuring robust industry support and consistent user experiences.
* '''Adoption by Commercial Virtual Instrument Developers''': Proprietary software synthesizers and samplers are a significant part of the modern music production landscape. Inviting commercial developers to adopt Chanopif in their products would bring multi-channel high-resolution microtonal flexibility to a wide audience, ensuring robust industry support and consistent user experiences.
# '''Partnerships with Hardware Manufacturers''': Finally, collaborating with companies that produce MIDI controllers and synthesizer hardware would open the door to advanced, real-time microtonal control. By incorporating Chanopif into hardware devices, musicians can harness ultra-precise tunings and extended note ranges in both studio and live performance contexts.
* '''Promotion through Official MIDI Organizations''': Collaborate directly with the '''MIDI Association''' and other standardization bodies to advocate the inclusion of Chanopif specifications in official MIDI documentation. By partnering with recognized industry groups, the format can gain greater visibility, formal support, and ultimately become a seamless part of the evolving MIDI ecosystem.
* '''Partnerships with Hardware Manufacturers''': Finally, collaborating with companies that produce MIDI controllers and synthesizer hardware would open the door to advanced, real-time microtonal control. By incorporating Chanopif into hardware devices, musicians can harness ultra-precise tunings and extended note ranges in both studio and live performance contexts.


== Education ==
=== Education ===


* '''Video Tutorials''': Develop a series of in-depth YouTube videos to guide users through every aspect of Chanopif. These tutorials could range from basic introductions—covering the format’s structure and how to load <code>.cnpf</code> files—up to advanced sessions on microtonal composition and precision tuning.
* '''Video Tutorials''': Develop a series of in-depth YouTube videos to guide users through every aspect of Chanopif. These tutorials could range from basic introductions—covering the format’s structure and how to load <code>.cnpf</code> files—up to advanced sessions on microtonal composition and precision tuning.
* '''Online Documentation and Guides''': Provide well-structured web pages or a wiki dedicated to Chanopif, offering clear, step-by-step explanations on file creation, parsing, and integration into popular DAWs and virtual instruments. This resource would serve as a central hub for both beginners and experienced users.
* '''Online Documentation and Guides''': Provide well-structured web pages or a wiki dedicated to Chanopif, offering clear, step-by-step explanations on file creation, parsing, and integration into popular DAWs and virtual instruments. This resource would serve as a central hub for both beginners and experienced users.
* '''Educational Outreach''': Collaborate with music schools, universities, and audio engineering programs to include Chanopif in their curricula. By integrating <code>.cnpf</code> format instruction into music technology courses, students and future professionals gain hands-on experience in cutting-edge tuning techniques.
* '''Educational Outreach''': Collaborate with music schools, universities, and audio engineering programs to include Chanopif in their curricula. By integrating <code>.cnpf</code> format instruction into music technology courses, students and future professionals gain hands-on experience in cutting-edge tuning techniques.
* '''Artistic Outreach''': Encourage musicians—whether they have large or modest followings—to experiment with Chanopif in their compositions, performances, or online content. Their demonstrations can help educate wider audiences, spark curiosity, and inspire fellow artists to explore microtonal possibilities via Chanopif files.
* '''Workshops and Webinars''': Host virtual and in-person events, such as webinars or local workshops, where participants can learn about Chanopif from experts. These interactive sessions would allow direct engagement, Q&A discussions, and real-time demonstrations.
* '''Workshops and Webinars''': Host virtual and in-person events, such as webinars or local workshops, where participants can learn about Chanopif from experts. These interactive sessions would allow direct engagement, Q&A discussions, and real-time demonstrations.
* '''Community Engagement''': Encourage community-driven projects and user groups to explore Chanopif’s potential. Through forums, social media channels, and collaborative spaces, musicians, developers, and audio enthusiasts can share files, exchange tips, and push the boundaries of microtonal music creation.
* '''Community Engagement''': Encourage community-driven projects and user groups to explore Chanopif’s potential. Through forums, social media channels, and collaborative spaces, musicians, developers, and audio enthusiasts can share files, exchange tips, and push the boundaries of microtonal music creation.
Line 133: Line 213:
[https://amei.or.jp/midistandardcommittee/MIDI2.0/MIDI2.0-DOCS/M2-104-UM_v1-0_UMP_and_MIDI_2-0_Protocol_Specification.pdf MIDI 2.0 Specification] – Official documentation covering new controllers, higher resolution, and enhanced expressiveness.
[https://amei.or.jp/midistandardcommittee/MIDI2.0/MIDI2.0-DOCS/M2-104-UM_v1-0_UMP_and_MIDI_2-0_Protocol_Specification.pdf MIDI 2.0 Specification] – Official documentation covering new controllers, higher resolution, and enhanced expressiveness.


MIDI Tuning Standard (MTS) – Precursor to Pitch 7.25, offering microtuning capabilities in MIDI 1.0.
[https://midi.org/midi-tuning-updated-specification MIDI Tuning Standard (MTS)] – Precursor to Pitch 7.25, offering microtuning capabilities in MIDI 1.0.


MTS-ESP
[https://github.com/ODDSound/MTS-ESP MTS-ESP] – A C/C++ library that coordinates microtuning across multiple audio plugins, enabling a single master plugin to dynamically retune any connected client plugins in real time.


Disclaimer : Chanopif is a proposed format. Implementation details may vary based on hardware and software support for MIDI 2.0 Pitch 7.25. For the most accurate and up-to-date technical specifications, consult official MIDI 2.0 documentation.
''Disclaimer : Chanopif is a proposed format. Implementation details may vary based on hardware and software support for MIDI 2.0 Pitch 7.25. For the most accurate and up-to-date technical specifications, consult official MIDI 2.0 documentation.''