RSS Twitter Facebook
DTM / シンセサイザー / VST / WebMusic 関係の技術情報を発信しています

Products : ユーロラックモジュラー「RedLine」販売中

ユーロラック・モジュラーシンセサイザー「RedLine」を販売開始しました!

ユーロラック「RedLine」



2018/11/27 (2018年11月 のアーカイブ)

シンセビルダーズサミットとHTML5カンファレンス

Twitter Google+ Facebook

11月24日(土)は北の丸公園の科学技術館でシンセビルダーズサミット、11月25日(日)は HTML5カンファレンスが北千住の東京電機大で開催されました。

こちらは 24日のシンセビルダーズサミットの様子。

展示会場の様子です。会場のキャパ的にはかなり限界に近いという事で開催場所をどうするかというのも課題になりつつあります。

ブース配置図。自分のブースの写真を撮っていませんでした。まあ大体いつも通りなんですけど。

武田さんのリボンコントローラ演奏。ここ数年参加されていなかったのですが復帰したらしいです。

sigboost さんの midiglue。今年6月に KickStarter での人気ぶりでも話題になったブツです。筐体も少しバージョンアップしている模様。

こちらはDigiLogさんの新作。猫モジュール CAT。ユーロラックフォームファクターですね。ソフトの書き換えでシーケンサーになったりオシレータになったりするようです。

せんとれさんのカセットテープ型のガジェット。全容を理解していないけど DJ 的な操作ができるらしい。

山下さんのユーロラックシンセ。今年の新作はフリケンシーシフターという事で、音が濁らないリングモジュレータのようなものです。これって RF 的な見方で言えばリングモッドが DSB 発生器なのに対してスペクトルの片側だけを取り出す SSB 発生器という理解だけど、構成がなかなか巧妙で面白い。

sugaさんのユークリッドシーケンストレモロ。ユーロラックシンセでは時々登場するユークリッドシーケンサーでトレモロパターンを作り出しています。

公生32+さんのフリケンシーシフター。山下さんのモジュールを追検証中。片面基板だけど美しい仕上がり。

(NIの)Massive みたいなシンセをハードで作りたいという野望を持つうーえさんの基板。VCO x 24、SVF x 8、VCA x 72、EG x 32、LFO x 32 って凄すぎる構成。製作進行中のようです。

へやのスミスさん。こちらも凄いアナログポリフォニックシンセを開発中。フルアナログの音源をCPUで制御する感じかな。今は音源部分のみという事だけど美しい仕上り。

常連原田さんのLEDバッジ群。「怪電波野郎」というノイズガジェットも基板化して展示しています。

ねや楽器さんの狂気のソルダリングシンセ。半田ごてでパターンをショートさせながら演奏します。この会場では許可が出なかったみたいだけど、実際のライブではバーナーを使ったりする模様。凄いな。

シンセサイザーコミックを出展していた帝国音楽堂さん。シンセサミットでは書籍の出展は初めてかな。

Quxさん。各種アナログシンセキットなんかがきれいにパッケージされています。








一方、翌25日の HTML5カンファレンスの様子です。ちなみに展示会場に入り浸りなのでカンファレンス自体は全然聞いてません。

北千住の東京電機大の建物入口にあるガラス張りの部屋が展示会場です。ここはどうも明るすぎて照明系には不利なんだけど。

という事でこんな展示にしています。一応レーザースキャナーが新規のブツなのだけど、HTML5との関係はあまりない。細かい事は気にしない。

webaudio.tokyo の LT からスカウトしてきた佐竹さんの楽譜をサクサク書けるIME。SFC の学生さんです。将来有望ですね。(あっきーな@dorayaki0

まあ色々と噂は聞くのだけど、なんか ZOZO スーツを配っていたので貰ってきました。

恒例のお菓子配布。

ブラウザ上で動作するクラウド型 WebGL ゲームエンジン PlayCanvas。こういうちゃんとした感じのを作っている人には頭が下がる。

サイバーエージェントブースでやっていたアンケート。IE に悩まされている人というのも相変わらずいらっしゃるようで、ご愁傷様です。

HTML5カンファレンスとは関係ないのですが、打ち上げ時に突然現れた公認資格を持っているらしいサンタ。フィンランドから来たようです。




この時期のイベントラッシュをなんとか乗り切って取り合えず一息つきました。

Posted by g200kg : 6:51 AM : PermaLink

2018/11/20 (2018年11月 のアーカイブ)

モジュラーフェスティバル TFoM 開催

Twitter Google+ Facebook

11月17日(土)-18日(日) に渋谷の東京コンタクトおよびスタジオミッションで東京モジュラーフェスティバル (TFoM) が開催されました。
昨年は展示がレッドブルスタジオでコンサートがコンタクトと少し離れていたのですが、今年はコンタクトのあるビルの上の階のスタジオが展示会場になっています。ビル内の移動で済むのは良いですね。

展示会場の様子。展示は12時~18時ですが、16時過ぎくらいから急に人が多くなりました。展示を1~2時間見た後、コンサートに突入というパターンですね。

g200kgブースはこのところ相変わらずの照明系ですが、予想外の鏡張りの壁のためレーザーをどっちに向けるべきか悩んだ末に適当なセッティング。

モジュラーシンセの体験コーナーが入口近くに設置されています。

中古モジュールのトレードコーナーもあります。

すっかりモジュラーイベントの顔になっている福産起業のモジュラー壁。

同じく大規模展示を行っている ClockFace Modular。

Hikari Instruments の新作。ガジェット風にまとめられたノイズマシンです。なかなか面白い。

ROLI ブースには Seaboard と Blocks が並べられています。

もうひとつガジェット系では Teenage Engineering の OP-Z。この小さな筐体で音と映像と照明をシーケンス制御できます。照明に関しては OP-Z が USB ホストとして動作し ENTTEC の DMX I/F 等を経由して DMX 接続するようです。

Diligent ブースの Pack Joue。楽器フェアにも出てました。パッドを載せ替え可能な MIDI コントローラですが、ゴム素材のパッドに RFID が仕込んであるようです。

こういう造形物があると目を引きます。なかなかの存在感。La Voix du Luthier。特殊スピーカーというかレゾネータと紹介していました。オンドマルトノの出力装置みたいなものですかね。

BASTL Instruments の缶たたき系のヤバイ奴。BASTL の製品としてはサーボモーターやソレノイドのドライバモジュールがあり、その応用例を示すための客寄せパンダマシンという事らしいですが、なかなか目立ってました。

1010 Music ブースにあったのですが、Teensy の IoT モジュールをユーロラック化するシールド。右上にのっかっている小さな基板が Teensy で、MIDI および Analog の入出力があり、何をさせるかは Teensy で勝手にやって、という事です。これは良いものだ。

さて、展示と並行してレクチャーなども行われました。こちらは各国の PowWow アンバサダーへのインタビュータイム。

モジュラーシンセをターゲットにした新著 Patch & Tweak の著者 Kim Bjørn さんへのインタビュー。

こちらは 4ms からのレクチャー。一つのモジュールで高機能のものが増えてきたので巨大システムよりも小さな筐体でまとめる方向への流れなんじゃないかというような話で、小さめのフレームをプッシュ。

展示の後は、地下の東京コンタクトでライブの時間です。前回と同じく Phew さん出演。

こちらは DMX を駆使する PowWow インドネシアの Bagus Pandega さん。DMX Box を使っていただきました。




とまあ、2日展示をやると体力は消耗しましたけど、なかなか興味深いものが見れました。
そして今週末もイベント続きで 24日(土) シンセビルダーズサミット@科学技術館、25(日) HTML5Conference@東京電機大がありますので、参加される方はまた会場で。

Posted by g200kg : 10:40 AM : PermaLink

2018/11/20 (2018年11月 のアーカイブ)

InterBEEとかWebAudio.tokyoとか

Twitter Google+ Facebook

この時期、各種イベントが集中しています。とりあえず先週分です。

11月15日、幕張メッセで InterBEE が開催されました。InterBEEは 今まであまり見に行ってなかったのだけど、今回はたまたま近所に用事ができたりで覗いてきました。

入口の看板はこんな感じ。

基本的に放送機器関連なので tc electronic もラウドネスメーターとかをプッシュしています。

これも tc electronic。ビンテージデジタルリバーブを再現するプラグインと専用のインターフェース。ハードウェアがソフトウェアになって、更に一部をハードウェアに戻した感じ。そういう流れはあるかもな。

Cubase 10 が出たばかりだけど、ヤマハも InterBEE では Cubase じゃなくて Nuendo なんだね。

ヤマハブースでやっていたセミナー。Dante が凄くプッシュされている感じがする。ここ数年でもうみんな Dante でネットワーク化しようぜっていう圧力が高まったようです。

こちらはハイエンドオーディオI/FのAntelope Audio。ギタリスト ichika さんのデモ。

MI7ブースでは音楽制作系でお馴染みの Softube や Zynaptiq の展示。

最近ちょっと照明系も気になったりするのだけど、流石に InterBEE に展示されているのはでかくて個人でどうこうするようなものではない。

照明系でちょっと目をひいたレーザーを少し拡散する感じの拡散ビーム砲的な奴。面白そうだけどこういうのはフォグ併用が前提だろうな。

これは同時開催の DCExpo の方だったかな。黒柳徹子アンドロイドが新AI を搭載して自律応答するようになったらしいです。AI がメディアを征服するまで頑張ってほしい。

内容はチェックしてませんが VTuber ハッカソンなるイベントも行われていたようです。


さて、そして11月15日夕方からは目黒で WebAudio.tokyo の LT大会 #6 です。

会場は目黒のアルコタワー Drecom 様です。

演目はこんな感じ。W3C TPAC AudioWG の報告や密かに局所的なブームになっているかも知れない演奏情報のABCノーテーションの話など。私からは WebAudioAPI CR 版について少し話しました。

こちらは飛び込み LT で紹介された 楽譜 IME 的な奴。なかなか興味深かったです。これは今週末に北千住で開催される HTML5カンファレンスの展示にも持ってきてくれる事になりましたので是非。


さて、そして先週末 17日、18日は渋谷 Contact で モジュラーフェスティバル TFoM が開催され、更に今週末は 24日シンセビルダーズサミット@科学技術館、25日は HTML5カンファレンス@北千住、東京電機大があります。

なんかうまい事週末が隙間なく埋まってしまって体力的に厳しい。

Posted by g200kg : 5:11 AM : PermaLink

2018/10/23 (2018年10月 のアーカイブ)

楽器フェアが開催されました

Twitter Google+ Facebook

先週の10月19日(金)~21日(日)の3日間、東京ビッグサイトで楽器フェア2018が開催されました。いつもは見に行くだけなんですが、今年はシンセフェスタの TFoM ブース内に出展してきました。しかしまあ、3日間は結構つらいな。

ビッグサイトの入口の看板はこんな感じ。

シンセフェスタ内にある TFoM ブースです。

ブースにはMIDI/CVから制御できる照明を並べました。今回は ILDA インターフェースのレーザースキャナーを投入しましたが壁が黒いのでいまいち派手にならない。スクリーン的なものが必要だったか。

隣には生方ノリタカさんのThereSyn。テルミンとシンセが融合した楽器です。この木製の筐体が目を引きます。

お向かいにはいつもの福産起業のモジュール壁があります。

Dirigent のコーナーにはシリコン製のパッドを好きなように入れ替えられるMIDIコントローラ、Pack Joue が置いてありました。KickStarter で人気だった奴ですね。まあまあそれなりのお値段かも知れない。

キッコサウンドさんの mi.1e。bluetooth 接続で CV 制御ができるユーロラックモジュールです。

シンセフェスタのステージ上で iPad から mi.1e を操作するデモ

4ms の WAV Recorder。ユーロラックモジュールに差し込んだ microSD カードに録音できるようです。

こちらはミュージックエアポートさんのLOOM-649、無限音階シンセサイザーです。上昇/下降の切り替えやスピード等が切り替えられますが連続変化音を出すためのかなりピンポイントな機器です。

シンセフェスタブース内では Fairlight III が稼働していました。ステージ上でこれを使ったデモもあったようですが見てなかった。残念。

スリックさんの手回しオルゴールインターフェース。鍵盤オルゴールの CANADEON は別のブースで出しているみたいですが、こちらは iPhone に記録されたシーケンスを手回しで動かす形のインターフェースになっています。

REON さんのブースに鎮座する MOOG IIIC レプリカ。これも発売するという話があったような気がするけど値段が想像つかない。

REON さんのブースではこんなのも。ユーロラックモジュールをパッチケーブルレスで接続できるモジュール。パネルの裏のコネクタがバスになっている模様で、「Wizlink」と名付けられています。

NUX (ニューエックス) というのは中国深圳のメーカーらしいですが、今年日本上陸という事のようです。深圳が本気で楽器を作り始めるとかなり脅威になるんじゃないですかね。

シンセフェスタステージでやっていたボーカロイドキーボードのデモ。歌う系の楽器は歌詞をあらかじめ入力して置く必要があるのがどうしてもネックな気がします。色々と工夫はしているようではあるのですが。

超絶ドラムパフォーマンスで有名なゆるキャラ「にゃんごすたー」の出番待ちの図。たまたま出くわした。横から見るとそういう体形なのね。

にゃんごすたー in ローランドブース。いや、凄い人気だ。近づけない。V-Drums のデモやドラム教室をやっていたようです。

BOSSのブースにあったコンパクトエフェクターの中身が見える展示。往年の名器ではなく WAZA Craft シリーズとしてアップグレードされた最近のモデルです。

スーパーオーバードライブ SD-1 のアップグレード品、SD-1W の中身。外観はあまり変わらないけど、スルーホール、ディスクリート、片面基板みたいな作りだったのが、流石に中身は最近のものっぽい作りになっているのだね。

そういえば、楽器フェアと並行して ROLI Blocks ハッカソンが 20-21日に開催されていて、審査結果発表が 3 日目のシンセフェスタステージで行われました。て、優勝をかっさらったのは sigboost さんじゃないですか。おめでとう。

マッキーのブースにあった iPad 上で動作するデジミキのインターフェースです。手探りで操作できないのは不便じゃないのかなあと思うのだけど、こういう方向に行くんですかね?

Aerodrums。これ結構前からあったのかな。光を反射するボールを付けたスティックでエアドラムをするとドラムの音が鳴るというもの。加速度センサー的なものではなく光を当てて高速度カメラで撮った映像から処理するらしい。

頭だけを突っ込むという意外すぎるスタイルで少し前に話題になっていた簡易防音ボックス、ISOVOX。宮地楽器ブースにありました。頭を突っ込んでみるとやっぱり隙間がすかすかなので、防音性能をメインに訴求するのはどうだろうと思わなくもないけど、防音カーテンやらよりは直接的に効きそうではある。

Posted by g200kg : 8:05 PM : PermaLink

2018/10/16 (2018年10月 のアーカイブ)

ABC2018A in KAWASAKI

Twitter Google+ Facebook

先週の土曜日の話になってしまいますが、2018年10月13日、川崎市産業振興会館で ABC 2018A (Android Bazaar and Conference 2018 Autumn) が開催され、展示の方に一応 Web Music Developers JP 名義でブースを出してきました。

と言っても、照明をびかびかに光らせて音関係は恒例の缶叩き機が鳴るという内容で、大半の時間は説明する人も不在という暴挙により、良くわからない展示になっていましたけど。そもそも Android とはほとんど関係がない代物だしね。

展示全体としては、開催地が川崎というやや微妙な感じもあって人は少なめではないですかね。コンファレンスと同時開催なのでコンファレンス中は人が来ないというのもありますが、見に来る人も常連的でかなり内輪な感じになってしまっているかも知れません。

Android を取り巻く環境として Android Things だの Kotlin だのという新しめのものはあるのだけど Android 全体の雰囲気がもう枯れた技術的なものになっていて、バージョンが上がる度にお祭り的な雰囲気があった初期の頃とはだいぶ違ってきている気もします。今後 Android 関係はどうなって行くんでしょうか。枯れた技術で安定して使えるという意味では悪い事でもないのかも知れませんが。

あまり写真を撮っていないのだけど取り合えず目についたものとか...:

あるものを適当に並べた感じですが、ブースの様子です。

私が持ち込んだのは照明関係ばかりですが、適当に置いています。

流しそうめんを掴むゲーム。

モーションキャプチャーを入力とする Mixed Reality 的な奴。映画のプリビズなんか向けぽい。

大き目のドローン。組み立ての講習とかあるらしい。

Posted by g200kg : 2:39 AM : PermaLink

2018/10/03 (2018年10月 のアーカイブ)

WebAudioAPI CR 日本語訳公開

Twitter Google+ Facebook

Web Audio API の日本語訳を 2018年9月18日の CR (Candidate Recommendation) 版に更新しました。

6月の WD からそれほど大きくは変わっていないので、大雑把にペタペタとコピペして簡単に作れるかと思ったのだけど、そう甘くはないようだ。文章が微妙に変わったりしているので、やっぱりちゃんとチェックしながらじゃないと作れない。

6月のワーキングドラフト以降の変更点は 変更履歴 - 2018年6月19日ワーキングドラフト以降 のあたりを見てください。

https://g200kg.github.io/web-audio-api-ja/

Posted by g200kg : 12:40 PM : PermaLink

2018/09/30 (2018年09月 のアーカイブ)

KiCad : Pythonスクリプトでガーバーをまとめる

Twitter Google+ Facebook
今年 7 月に基板 CAD の KiCAD が 1 年ぶりくらいに 5.0 にバージョンアップして以来、はじめてちゃんと使ってみたのですが、なかなか良いです。レンダリングを OpenGL にすると動かない機能があるとかいう中途半端な感じがなくなってるし、ライブラリもかなり整備されました。個人的にはワイヤーを削除した時にジャンクションだけが取り残されたりしなくなったのでフラストレーションが激減しました。

KiCad

それでもうひとつ気になる機能があって Action Plugins という奴なんですが、これは Python で書いたプラグインでメニューからマクロ操作的な事ができるというもので 5.0 から使える予定だったのですが、これの動かし方がわからない。

という事で色々調べた結果、今公開されている 5.0.0 では何かの手違いで無効にしたまま公開してしまったようです。そのうちアップデートされると思いますが、今すぐ使ってみるには安定版の 5.0.0 ではなくて Nightly Build の方を入れれば試せます。

以前のバージョンでも Python スクリプト自体は使えたのですが、呼び出し方にいまいち問題があって、Python コンソールを開いてコマンド名を打ち込む必要がありました。これだと、ちょっとした便利コマンドみたいなものをせっかく作っても、いざ使おうとした時にはもう使い方を覚えていないとか、存在そのものを覚えていないという事になりがちです。 で、これをメニューに登録できるようにした、とまあそれだけの事ではあるんですけど、使い勝手はかなり違うと思います。



ただこの Python スクリプト周りはまだドキュメンテーションが行き届いていないので、どうやればやりたい事ができるのか調べるのには結構手探りの試行錯誤が必要そうです。とりあえず、ガーバーファイルを FusionPCB とか Elecrow スタイルにリネームして ZIP にまとめるスクリプトを書いてみました。

動かすには Linux の場合、http://docs.kicad-pcb.org/doxygen/md_Documentation_development_pcbnew-plugins.html にあるように、このファイル ( action_menu_gerber_zip.py ) を /usr/share/kicad/scripting/plugins/ あたりに置けば動くようです。ただし Windows の場合はこの説明が怪しくて色々やった所どうやら、

C:\Users\ユーザー名\AppData\Roaming\kicad\scripting

に置けば動作するようです(このあたりの挙動はまだ確定かどうかわからない)。

スクリプトの中身ですが、FusionPCB や Elecrow を使っている人なら何度もやる事になるガーバーをリネームしてZIPで固めるという作業を自動的に行います。出力はプロジェクトのあるフォルダ下に 'Gerber' というサブフォルダを作成してそこに納めます。

FusionPCB と Elecrow は必要とするファイルの拡張子は同じなのですが推奨する条件が多少違っているので、一応切り替えやすいように先頭の方にまとめています。ダイアログを出して設定したりできるようにするべきかも知れませんが、まあそのうち KiCad 安定版で動作するようになったら...

設定説明FusionPCBElecrow
merge_npthドリルファイルのメッキなしとありを1ファイルにまとめるかまとめるのが推奨 (多分別ファイル xxx-NPTH.TXT を添付でもやってくれるとは思う)別ファイル推奨。まとめた時はメッキありになっちゃうかも
use_aux_origin補助座標 AuxOrigin を使うかどうかどちらかと言うと KiCad 側のドリルファイルの補助座標を Python から扱うやり方が正しいかどうか多少曖昧な所があるけど多分どちらでも大丈夫
excellon_formatドリルファイルの数値のフォーマットサプレスリーディング推奨推奨は不明だけど、DECIMAL_FORMAT で発注している人が多そう


動作は Windows 10 + KiCad (6.0.0-rc1-dev-536-g40a3b4a53) 環境でしか確認していません。

# file : action_menu_gerber_zip.py
#
# (gerber_zip)
#
# Copyright (C) 2018 g200kg
#   Released under MIT License
#

import pcbnew
from pcbnew import *
import wx
import os
import zipfile

#
# Setup params
#

gerber_subdir = "Gerber"
merge_npth = False
use_aux_origin = True
excellon_format = EXCELLON_WRITER.DECIMAL_FORMAT
#excellon_format = EXCELLON_WRITER.SUPPRESS_LEADING

#
#
#

class GerberZip( pcbnew.ActionPlugin ):
    '''
    Make Gerber Zip-file for Elecrow / FusionPCB
    '''
    layers = [
        [ F_Cu,     'GTL', None ],
        [ B_Cu,     'GBL', None ],
        [ F_SilkS,  'GTO', None ],
        [ B_SilkS,  'GBO', None ],
        [ F_Mask,   'GTS', None ],
        [ B_Mask,   'GBS', None ],
        [ Edge_Cuts,'GML', None ],
        [ In1_Cu,   'GL2', None ],
        [ In2_Cu,   'GL3', None ],
        [ In3_Cu,   'GL4', None ],
        [ In4_Cu,   'GL5', None ],
    ]
    max_layer = 7

    def defaults( self ):
        self.name = "Make Gerber-Zip (Elecrow/FusionPCB style)"
        self.category = "Plot"
        self.description = "Make Gerber-Zip-file for Elecrow / FusionPCB"

    def forcedel( self, fname ):
        if os.path.exists(fname):
            os.remove(fname)

    def forceren( self, src, dst ):
        self.forcedel(dst)
        os.rename(src, dst)

    def Run( self ):
        board = pcbnew.GetBoard()
        board_fname = board.GetFileName()
        board_dir = os.path.dirname(board_fname)
        board_basename = (os.path.splitext(os.path.basename(board_fname)))[0]
        gerber_dir = '%s/%s' % (board_dir, gerber_subdir)
        drill_fname = '%s/%s.TXT' % (gerber_dir, board_basename)
        npth_fname = '%s/%s-NPTH.TXT' % (gerber_dir, board_basename)
        zip_fname = '%s/%s.zip' % (gerber_dir, board_basename)
        if not os.path.exists(gerber_dir):
            os.mkdir(gerber_dir)

        max_layer = board.GetCopperLayerCount() + 5
# PLOT
        pc = pcbnew.PLOT_CONTROLLER(board)
        po = pc.GetPlotOptions()

        po.SetOutputDirectory(gerber_dir)
        po.SetPlotValue(True)
        po.SetPlotReference(True)
        po.SetExcludeEdgeLayer(False)
        po.SetLineWidth(FromMM(0.1))
        po.SetSubtractMaskFromSilk(True)
        po.SetUseAuxOrigin(use_aux_origin)

        for layer in self.layers:
            targetname = '%s/%s.%s' % (gerber_dir, board_basename, layer[1])
            self.forcedel(targetname)
        self.forcedel(drill_fname)
        self.forcedel(npth_fname)
        self.forcedel(zip_fname)

        for i in range(max_layer):
            layer = self.layers[i]
            pc.SetLayer(layer[0])
            pc.OpenPlotfile(layer[1],PLOT_FORMAT_GERBER,layer[1])
            pc.PlotLayer()
            layer[2] = pc.GetPlotFileName()
        pc.ClosePlot()

        for i in range(max_layer):
            layer = self.layers[i]
            targetname = '%s/%s.%s' % (gerber_dir, board_basename, layer[1])
            self.forceren(layer[2],targetname)
# DRILL
        ew = EXCELLON_WRITER(board)
        ew.SetFormat(True, excellon_format, 3, 3)
        offset = wxPoint(0,0)
        if(use_aux_origin):
            offset = board.GetAuxOrigin()
        ew.SetOptions(False, False, offset, merge_npth)
        ew.CreateDrillandMapFilesSet(gerber_dir,True,False)
        if merge_npth:
            self.forceren('%s/%s.drl' % (gerber_dir, board_basename), drill_fname)
        else:
            self.forceren('%s/%s-PTH.drl' % (gerber_dir, board_basename), drill_fname)
            self.forceren('%s/%s-NPTH.drl' % (gerber_dir, board_basename), npth_fname)
# ZIP
        with zipfile.ZipFile(zip_fname,'w') as f:
            for i in range(max_layer):
                layer = self.layers[i]
                targetname = '%s/%s.%s' % (gerber_dir, board_basename, layer[1])
                f.write(targetname, os.path.basename(targetname))
            f.write(drill_fname, os.path.basename(drill_fname))
            if not merge_npth:
                f.write(npth_fname, os.path.basename(npth_fname))

        wx.MessageBox('GerberZip Complete.\n\n%s' % zip_fname, 'Gerber Zip', wx.OK|wx.ICON_INFORMATION)

GerberZip().register()

Posted by g200kg : 1:45 PM : PermaLink



...更に以前の記事...


g200kg